AtlatestRepositorysigil-studio
sigil-studio / tree / testmain.c
1
/*2
* main.c - Sigil Studio Test Harness3
*4
* Creates a VM, initializes studio modules, and runs a script file.5
*/7
#include <sigil/sigil.h>8
#include <stdio.h>9
#include <stdlib.h>11
/* Studio module init functions */12
extern void sigil__init_sigil_studio_app_module(SigilVM *vm);13
extern void sigil__init_sigil_studio_image_module(SigilVM *vm);14
extern void sigil__init_sigil_studio_graphics_module(SigilVM *vm);15
extern void sigil__init_sigil_studio_font_module(SigilVM *vm);16
extern void sigil__init_sigil_studio_audio_module(SigilVM *vm);18
int main(int argc, char *argv[])19
{20
if (argc < 2) {21
fprintf(stderr, "Usage: %s <script.sgl>\n", argv[0]);22
return 1;23
}25
const char *script_path = argv[1];27
/* Create VM */28
SigilVM *vm = sigil_vm_create();29
if (!vm) {30
fprintf(stderr, "Failed to create VM\n");31
return 1;32
}34
/* Add load paths for stdlib and studio modules */35
/* Parent sigil's stdlib */36
sigil_vm_add_load_path(vm, "../../stdlib");37
sigil_vm_add_load_path(vm, "../../build/boot/lib");38
/* Studio modules (check compiled first, then source for development) */39
sigil_vm_add_load_path(vm, "build/dev/lib");40
sigil_vm_add_load_path(vm, "src/sigil");42
/* Initialize studio native modules */43
sigil__init_sigil_studio_app_module(vm);44
sigil__init_sigil_studio_image_module(vm);45
sigil__init_sigil_studio_graphics_module(vm);46
sigil__init_sigil_studio_font_module(vm);47
sigil__init_sigil_studio_audio_module(vm);49
/* Load and run the script */50
printf("Loading %s...\n", script_path);51
int result = sigil_eval_file(vm, script_path);53
if (result != 0) {54
const char *err = sigil_error_message(vm);55
if (err) {56
fprintf(stderr, "Error: %s\n", err);57
} else {58
fprintf(stderr, "Script execution failed (no error message)\n");59
}60
}62
/* Cleanup */63
sigil_vm_destroy(vm);65
return result;66
}