Fix type conversions

This commit is contained in:
2026-01-24 16:36:37 +11:00
parent 2da11f854d
commit 1570177de1
3 changed files with 20 additions and 20 deletions

View File

@@ -75,7 +75,7 @@ build
- [x] String operations - [x] String operations
- [x] Maths - [x] Maths
- [x] Comparisions - [x] Comparisions
- [ ] Type conversions - [x] Type conversions
- [x] Functions - [x] Functions
- [x] Define functions - [x] Define functions
- [x] Call functions - [x] Call functions
@@ -83,7 +83,7 @@ build
- [x] Arguments for functions - [x] Arguments for functions
- [x] Jumping within functions - [x] Jumping within functions
- [x] Custom data structures - [x] Custom data structures
- [ ] Working with external libraries - [x] Working with external libraries
## Debugger ## Debugger

View File

@@ -1107,7 +1107,7 @@ GroundValue interpretGroundInstruction(GroundInstruction inst, GroundScope* scop
if (in->args.args[1].type != DIRREF) { if (in->args.args[1].type != DIRREF) {
runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction); runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction);
} }
addVariable(scope->variables, in->args.args[2].value.refName, createIntGroundValue(atoll(in->args.args[0].value.value.data.stringVal))); addVariable(scope->variables, in->args.args[1].value.refName, createIntGroundValue(atoll(in->args.args[0].value.value.data.stringVal)));
break; break;
} }
case STOD: { case STOD: {
@@ -1123,7 +1123,7 @@ GroundValue interpretGroundInstruction(GroundInstruction inst, GroundScope* scop
if (in->args.args[1].type != DIRREF) { if (in->args.args[1].type != DIRREF) {
runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction); runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction);
} }
addVariable(scope->variables, in->args.args[1].value.refName, createIntGroundValue(atof(in->args.args[0].value.value.data.stringVal))); addVariable(scope->variables, in->args.args[1].value.refName, createDoubleGroundValue(atof(in->args.args[0].value.value.data.stringVal)));
break; break;
} }
case TOSTRING: { case TOSTRING: {
@@ -1140,57 +1140,53 @@ GroundValue interpretGroundInstruction(GroundInstruction inst, GroundScope* scop
runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction); runtimeError(ARG_TYPE_MISMATCH, "Expecting a DirectRef for arg 2", in, currentInstruction);
} }
GroundValue* value = &in->args.args[0].value.value; GroundValue* value = &in->args.args[0].value.value;
char buf[256];
switch (value->type) { switch (value->type) {
case INT: { case INT: {
char* buf = malloc(sizeof(char) * 256); snprintf(buf, sizeof(buf) * 256, "%" PRId64, value->data.intVal);
snprintf(buf, sizeof(char) * 256, "%" PRId64, value->data.intVal);
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue(buf));
break; break;
} }
case DOUBLE: { case DOUBLE: {
char* buf = malloc(sizeof(char) * 256); snprintf(buf, sizeof(buf) * 256, "%f", value->data.doubleVal);
snprintf(buf, sizeof(char) * 256, "%f", value->data.doubleVal);
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue(buf));
break; break;
} }
case STRING: { case STRING: {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue(value->data.stringVal)); snprintf(buf, sizeof(buf), "%s", value->data.stringVal);
break; break;
} }
case CHAR: { case CHAR: {
char* buf = malloc(sizeof(char) * 2);
buf[0] = value->data.charVal; buf[0] = value->data.charVal;
buf[1] = '\0'; buf[1] = '\0';
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue(buf));
break; break;
} }
case BOOL: { case BOOL: {
if (value->data.boolVal) { if (value->data.boolVal) {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("true")); snprintf(buf, sizeof(buf), "true");
} else { } else {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("false")); snprintf(buf, sizeof(buf), "false");
} }
break; break;
} }
case LIST: { case LIST: {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("<list>")); snprintf(buf, sizeof(buf), "<list>");
break; break;
} }
case FUNCTION: { case FUNCTION: {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("<function>")); snprintf(buf, sizeof(buf), "<function>");
break; break;
} }
case CUSTOM: { case CUSTOM: {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("<custom>")); snprintf(buf, sizeof(buf), "<custom>");
break; break;
} }
case NONE: case NONE:
default: { default: {
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue("<default>")); snprintf(buf, sizeof(buf), "<default>");
break; break;
} }
} }
addVariable(scope->variables, in->args.args[1].value.refName, createStringGroundValue(buf));
break; break;
} }

View File

@@ -1,3 +1,7 @@
tostring 32 &int tostring 32 &str
stoi "12" &int
stod "3.14" &dou
println $str
println $int println $int
println $dou