diff options
| author | Mica White <botahamec@outlook.com> | 2026-07-30 07:34:24 -0400 |
|---|---|---|
| committer | Mica White <botahamec@outlook.com> | 2026-07-30 07:34:24 -0400 |
| commit | e3c5839159903658a667f789963f20a31567b25c (patch) | |
| tree | 1e358a5fb43fd4c8f8e06374667583250111d6e6 /src/script.rs | |
Diffstat (limited to 'src/script.rs')
| -rw-r--r-- | src/script.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/script.rs b/src/script.rs new file mode 100644 index 0000000..0de2b54 --- /dev/null +++ b/src/script.rs @@ -0,0 +1,44 @@ +use crate::ScriptContext; + +mod tortuise { + #[link(wasm_import_module = "tortuise")] + unsafe extern "C" { + pub unsafe fn script_id_by_name(context: u64, name: *const u8, length: usize) -> usize; + pub safe fn preload_script(context: u64, id: usize); + pub safe fn is_script_loaded(context: u64, id: usize) -> u32; + pub safe fn unload_script(context: u64, id: usize); + pub safe fn activate_script(context: u64, id: usize); + pub safe fn deactivate_script(context: u64, id: usize); + } +} + +impl ScriptContext { + pub fn script_id(&self, name: &str) -> usize { + unsafe { tortuise::script_id_by_name(self.0, name.as_ptr(), name.len()) } + } + + pub fn preload_script(&self, name: &str) { + let id = self.script_id(name); + tortuise::preload_script(self.0, id) + } + + pub fn is_script_loaded(&self, name: &str) -> bool { + let id = self.script_id(name); + tortuise::is_script_loaded(self.0, id) > 0 + } + + pub fn unload_script(&self, name: &str) { + let id = self.script_id(name); + tortuise::unload_script(self.0, id) + } + + pub fn activate_script(&self, name: &str) { + let id = self.script_id(name); + tortuise::activate_script(self.0, id) + } + + pub fn deactivate_script(&self, name: &str) { + let id = self.script_id(name); + tortuise::deactivate_script(self.0, id) + } +} |
