summaryrefslogtreecommitdiff
path: root/src/wren_inter
diff options
context:
space:
mode:
authorphysick <mynameisgennadiy@vk.com>2026-07-12 12:55:19 +0500
committerphysick <mynameisgennadiy@vk.com>2026-07-12 12:55:19 +0500
commit71e1f2dc8e9e1b3ee595a2712ec24d11ce243f1c (patch)
treefe5d83589ef618dee9c34ff1a229cee851300f09 /src/wren_inter
parent58a26ca05aacb4736e9e7e652badd43a8085d1f1 (diff)
Result view
Diffstat (limited to 'src/wren_inter')
-rw-r--r--src/wren_inter/wren_inter.c23
-rw-r--r--src/wren_inter/wren_inter.h2
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