FFI for dynamic libraries

This commit is contained in:
2022-10-14 10:33:19 +02:00
parent 41b40ef98e
commit a840605bf7
15 changed files with 192 additions and 16 deletions

View File

@@ -0,0 +1,23 @@
use crate::dynamic_data::{BattleStatCalculator, DamageLibrary, DynamicLibrary, MiscLibrary, ScriptResolver};
use crate::ffi::{IdentifiablePointer, OwnedPtr};
use crate::static_data::StaticData;
#[no_mangle]
extern "C" fn dynamic_library_new(
static_data: OwnedPtr<StaticData>,
stat_calculator: OwnedPtr<Box<dyn BattleStatCalculator>>,
damage_library: OwnedPtr<Box<dyn DamageLibrary>>,
misc_library: OwnedPtr<Box<dyn MiscLibrary>>,
script_resolver: OwnedPtr<Box<dyn ScriptResolver>>,
) -> IdentifiablePointer<DynamicLibrary> {
unsafe {
Box::new(DynamicLibrary::new(
*Box::from_raw(static_data),
*Box::from_raw(stat_calculator),
*Box::from_raw(damage_library),
*Box::from_raw(misc_library),
*Box::from_raw(script_resolver),
))
.into()
}
}