some cool things
This commit is contained in:
45
src/Stringify/Arg.c
Normal file
45
src/Stringify/Arg.c
Normal 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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user