commonlibsse_ng\skse\interfaces/
trampoline.rs1use std::ffi::c_void;
2
3use crate::skse::{
4 api::{ApiStorageError, get_plugin_handle},
5 impls::stab::SKSETrampolineInterface,
6};
7
8#[derive(Debug, Clone)]
9pub struct TrampolineInterface(&'static SKSETrampolineInterface);
10
11impl TrampolineInterface {
12 pub const VERSION: u32 = 1;
14
15 #[inline]
16 pub(crate) const fn new(interface: &'static SKSETrampolineInterface) -> Self {
17 Self(interface)
18 }
19
20 #[inline]
22 pub const fn version(&self) -> u32 {
23 self.0.interfaceVersion
24 }
25
26 #[inline]
31 pub fn allocate_from_branch_pool(&self, size: usize) -> Result<*mut c_void, ApiStorageError> {
32 Ok(unsafe { (self.0.AllocateFromBranchPool)(get_plugin_handle()?, size) })
33 }
34
35 #[inline]
40 pub fn allocate_from_local_pool(&self, size: usize) -> Result<*mut c_void, ApiStorageError> {
41 Ok(unsafe { (self.0.AllocateFromLocalPool)(get_plugin_handle()?, size) })
42 }
43}