Struct and object printing
This commit is contained in:
43
src/types.c
43
src/types.c
@@ -149,8 +149,47 @@ void printGroundValue(GroundValue* gv) {
|
|||||||
printf("<function>");
|
printf("<function>");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: {
|
case STRUCTVAL: {
|
||||||
printf("FIXME");
|
printf("<struct fields: { ");
|
||||||
|
for (size_t i = 0; i < gv->data.structVal->size; i++) {
|
||||||
|
if (i != 0) {
|
||||||
|
printf(", ");
|
||||||
|
}
|
||||||
|
printf("%s: ", gv->data.structVal->fields[i].id);
|
||||||
|
if (gv->data.structVal->fields[i].value.type == STRING) {
|
||||||
|
printf("\"");
|
||||||
|
printGroundValue(&gv->data.structVal->fields[i].value);
|
||||||
|
printf("\"");
|
||||||
|
} else {
|
||||||
|
printGroundValue(&gv->data.structVal->fields[i].value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(" }>");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case CUSTOM: {
|
||||||
|
printf("<object fields: { ");
|
||||||
|
for (size_t i = 0; i < gv->customType->size; i++) {
|
||||||
|
if (i != 0) {
|
||||||
|
printf(", ");
|
||||||
|
}
|
||||||
|
printf("%s: ", gv->customType->fields[i].id);
|
||||||
|
GroundObjectField* field = findField(*gv->data.customVal, gv->customType->fields[i].id);
|
||||||
|
if (field == NULL) {
|
||||||
|
printf("<missing>");
|
||||||
|
} else {
|
||||||
|
printGroundValue(&field->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf(" }>");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case ERROR: {
|
||||||
|
printf("<error type: %s, what: %s>", gv->data.errorVal.type, gv->data.errorVal.what);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case NONE: {
|
||||||
|
printf("<none>");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user