MCPcopy Create free account
hub / github.com/SakuraEngine/SakuraEngine / main

Function main

tests/daS/daSTestInterpret/main.cpp:16–60  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

14)";
15
16int main(int argc, char** argv) {
17 auto env_desc = make_zeroed<skr::das::EnvironmentDescriptor>();
18 env_desc.argc = argc;
19 env_desc.argv = argv;
20 skr::das::Environment::Initialize(env_desc);
21 // make file access, introduce string as if it was a file
22 auto faccess_desc = make_zeroed<skr::das::FileAccessDescriptor>();
23 auto faccess = skr::das::FileAccess::Create(faccess_desc);
24 faccess->set_text_file(u8"dummy.das", tutorial_text, uint32_t(strlen((const char*)tutorial_text)));
25
26 // output stream for all compiler messages (stdout. for stringstream use TextWriter)
27 auto tout_desc = make_zeroed<skr::das::TextPrinterDescriptor>();
28 auto tout = skr::das::TextPrinter::Create(tout_desc);
29
30 // module group for compiled program
31 auto lib_desc = make_zeroed<skr::das::LibraryDescriptor>();
32 auto library = skr::das::Library::Create(lib_desc);
33
34 // compile script
35 auto program = skr::das::Environment::compile_dascript(u8"dummy.das", faccess, tout, library);
36 if (!program) return -1;
37
38 // create context
39 auto ctx_desc = make_zeroed<skr::das::ContextDescriptor>();
40 ctx_desc.stack_size = program->get_ctx_stack_size();
41 auto ctx = skr::das::Context::Create(ctx_desc);
42 if ( !program->simulate(ctx, tout) ) return -2;
43
44 // find function. its up to application to check, if function is not null
45 auto function = ctx->find_function(u8"test");
46 if ( !function ) return -3;
47
48 // call context function
49 const auto res = ctx->eval(function);
50 const auto message = skr::format(u8"{}\n", res.load<int32_t>());
51 tout->print(message.u8_str());
52
53 skr::das::Context::Free(ctx);
54 skr::das::Program::Free(program);
55 skr::das::Library::Free(library);
56 skr::das::TextPrinter::Free(tout);
57 skr::das::FileAccess::Free(faccess);
58 skr::das::Environment::Finalize();
59 return 0;
60}

Callers

nothing calls this directly

Calls 11

InitializeFunction · 0.85
FreeFunction · 0.85
set_text_fileMethod · 0.80
get_ctx_stack_sizeMethod · 0.80
find_functionMethod · 0.80
CreateFunction · 0.50
formatFunction · 0.50
simulateMethod · 0.45
evalMethod · 0.45
printMethod · 0.45
u8_strMethod · 0.45

Tested by

no test coverage detected