export module runtime; import coral; import coral.files; import coral.io; import oar.files; import turtle; import turtle.io; extern "C" int main(int argc, char const * const * argv) { turtle::event_loop::run("Ona Runtime", [](turtle::event_loop & event_loop) -> void { constexpr coral::slice archive_path {"index.oar"}; bool is_archive_loaded {false}; oar::archive_file::read(turtle::file_sandbox::base(), archive_path, [&](oar::archive_file & archive_file) -> void { is_archive_loaded = true; constexpr coral::slice config_path {"config.kym"}; bool is_config_loaded {false}; archive_file.read_file(config_path, [&](coral::file_reader & config_reader) { archive_file.query_file(config_path).and_then([&](coral::file_system::file_info file_info) { turtle::system_allocator allocator {turtle::system_allocator::thread_safety::none}; coral::ring_buffer config_source; if (config_source.allocate(allocator, file_info.size) != coral::ring_buffer::allocate_result::ok) return; coral::u8 stream_buffer[1024] {0}; if (coral::stream(config_source, config_reader, stream_buffer).is_error()) return; is_config_loaded = true; }); }); if (!is_config_loaded) { static_cast(coral::println(turtle::error_log(), "failed to read", config_path)); return; } // event_loop.display(1280, 800); while (event_loop.poll()) { } }); if (!is_archive_loaded) { static_cast(coral::println(turtle::error_log(), "failed to open", archive_path)); return; } }); return 0; }