Fix type conversions
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user