diff --git a/src/types.c b/src/types.c index bbf5c36..b8adf83 100644 --- a/src/types.c +++ b/src/types.c @@ -149,8 +149,47 @@ void printGroundValue(GroundValue* gv) { printf(""); break; } - default: { - printf("FIXME"); + case STRUCTVAL: { + printf("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("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(""); + } else { + printGroundValue(&field->value); + } + } + printf(" }>"); + break; + } + case ERROR: { + printf("", gv->data.errorVal.type, gv->data.errorVal.what); + break; + } + case NONE: { + printf(""); break; } }