1
0
forked from Mirror/wren

fix issue with docs clearing the writeFn from the config. add complete embedding example to docs + repo

This commit is contained in:
underscorediscovery
2020-07-30 09:09:15 -07:00
parent dead8df82e
commit 81bfbfce23
2 changed files with 99 additions and 1 deletions

45
example/embedding/main.c Normal file
View File

@ -0,0 +1,45 @@
//For more details, visit https://wren.io/embedding/
#include <stdio.h>
#include "wren.h"
static void writeFn(WrenVM* vm, const char* text) {
printf("%s", text);
}
void errorFn(WrenVM* vm, WrenErrorType errorType, const char* module, const int line, const char* msg) {
switch (errorType) {
case WREN_ERROR_COMPILE: {
printf("[%s line %d] [Error] %s\n", module, line, msg);
} break;
case WREN_ERROR_STACK_TRACE: {
printf("[%s line %d] in %s\n", module, line, msg);
} break;
case WREN_ERROR_RUNTIME: {
printf("[Runtime Error] %s\n", msg);
} break;
}
}
int main() {
WrenConfiguration config;
wrenInitConfiguration(&config);
config.writeFn = &writeFn;
config.errorFn = &errorFn;
WrenVM* vm = wrenNewVM(&config);
const char* module = "main";
const char* script = "System.print(\"I am running in a VM!\")";
WrenInterpretResult result = wrenInterpret(vm, module, script);
switch (result) {
case WREN_RESULT_COMPILE_ERROR: { printf("Compile Error!\n"); } break;
case WREN_RESULT_RUNTIME_ERROR: { printf("Runtime Error!\n"); } break;
case WREN_RESULT_SUCCESS: { printf("Success!\n"); } break;
}
wrenFreeVM(vm);
}