some cool things

This commit is contained in:
2026-06-25 18:57:53 +10:00
parent fa2c205f33
commit 9bb083a6f8
19 changed files with 4288 additions and 1 deletions

45
src/Stringify/Arg.c Normal file
View File

@@ -0,0 +1,45 @@
#include "../../include/ground.h"
char* _GroundStringifyArg(GroundArg* arg) {
if (arg->type == GroundArg_Value) {
return Ground.Stringify.Value(&arg->as.value);
} else {
char* buf = malloc(strlen(arg->as.ref->string) + 2); // add 2 for sigil + null byte
if (buf == NULL) {
Ground.Flags.error = true;
Ground.Log.Error("malloc failed in Ground.Stringify.Arg");
return NULL;
}
switch (arg->type) {
case GroundArg_ValueRef: {
buf[0] = '$';
break;
}
case GroundArg_DirectRef: {
buf[0] = '&';
break;
}
case GroundArg_LineRef: {
buf[0] = '%';
break;
}
case GroundArg_Label: {
buf[0] = '@';
break;
}
case GroundArg_FunctionRef: {
buf[0] = '!';
break;
}
case GroundArg_TypeRef: {
buf[0] = '-';
break;
}
case GroundArg_Value: {
break;
}
}
memcpy(buf + 1, arg->as.ref->string, strlen(arg->as.ref->string) + 1);
return buf;
}
}