From 2da11f854d32550631f6b2ae8f86e2c4950912fb Mon Sep 17 00:00:00 2001 From: Maxwell Jeffress Date: Sat, 24 Jan 2026 16:23:01 +1100 Subject: [PATCH] Struct and object printing --- src/types.c | 43 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 41 insertions(+), 2 deletions(-) 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; } }