diff options
Diffstat (limited to 'src/wren_inter')
| -rw-r--r-- | src/wren_inter/wren_inter.c | 23 | ||||
| -rw-r--r-- | src/wren_inter/wren_inter.h | 2 |
2 files changed, 18 insertions, 7 deletions
diff --git a/src/wren_inter/wren_inter.c b/src/wren_inter/wren_inter.c index a1b48e2..69df112 100644 --- a/src/wren_inter/wren_inter.c +++ b/src/wren_inter/wren_inter.c @@ -1,5 +1,6 @@ #include "wren_inter.h" #include "../utils/stringBuilder.h" +#include <string.h> #include <raylib.h> #include <stdio.h> #include <wren.h> @@ -18,22 +19,27 @@ void errorFn(WrenVM* vm, WrenErrorType errorType, { case WREN_ERROR_COMPILE: { - TraceLog(LOG_ERROR, "[%s line %d] [Error] %s", module, line, msg); + // TraceLog(LOG_ERROR, "[%s line %d] [Error] %s", module, line, msg); + AppendStringBuilder(&stdout_sb, "Comptime error: ", '\n'); + AppendStringBuilder(&stdout_sb, msg, ' '); } break; case WREN_ERROR_STACK_TRACE: { - TraceLog(LOG_ERROR, "[%s line %d] in %s", module, line, msg); + AppendStringBuilder(&stdout_sb, "Stack trace: ", '\n'); + AppendStringBuilder(&stdout_sb, msg, ' '); + // TraceLog(LOG_ERROR, "[%s line %d] in %s", module, line, msg); } break; case WREN_ERROR_RUNTIME: { - TraceLog(LOG_ERROR, "[Runtime Error] %s", msg); + AppendStringBuilder(&stdout_sb, "Runtime error: ", '\n'); + AppendStringBuilder(&stdout_sb, msg, ' '); + // TraceLog(LOG_ERROR, "[Runtime Error] %s", msg); } break; } } -void EvaluateScript(char *script) { +char *EvaluateScript(char *script) { TraceLog(LOG_INFO, "Evaluating %s...", script); - FreeStringBuilder(&stdout_sb); WrenConfiguration config; wrenInitConfiguration(&config); config.writeFn = writeFn; @@ -42,7 +48,7 @@ void EvaluateScript(char *script) { WrenVM* vm = wrenNewVM(&config); if (vm == NULL) { TraceLog(LOG_ERROR, "Failed to initialize a wren vm"); - return; + return NULL; } WrenInterpretResult result = wrenInterpret(vm, "main", script); @@ -53,4 +59,9 @@ void EvaluateScript(char *script) { } printf("Wren outp: %s", stdout_sb.val); wrenFreeVM(vm); + + if (stdout_sb.val == NULL) return NULL; + char *outp = strdup(stdout_sb.val); + FreeStringBuilder(&stdout_sb); + return outp; } diff --git a/src/wren_inter/wren_inter.h b/src/wren_inter/wren_inter.h index 9601209..981a606 100644 --- a/src/wren_inter/wren_inter.h +++ b/src/wren_inter/wren_inter.h @@ -1,6 +1,6 @@ #ifndef WREN_INTER_H #define WREN_INTER_H -void EvaluateScript(char *script); +char *EvaluateScript(char *script); #endif // WREN_INTER_H |
