use crate::dynamic_data::{ BattleStatCalculator, DamageLibrary, DynamicLibrary, DynamicLibraryImpl, MiscLibrary, ScriptResolver, }; use crate::ffi::{IdentifiablePointer, OwnedPtr}; use crate::static_data::StaticData; use std::sync::Arc; /// Instantiates a new DynamicLibrary with given parameters. #[no_mangle] extern "C" fn dynamic_library_new( static_data: OwnedPtr>, stat_calculator: OwnedPtr>, damage_library: OwnedPtr>, misc_library: OwnedPtr>, script_resolver: OwnedPtr>, ) -> IdentifiablePointer> { unsafe { let a: Arc = Arc::new(DynamicLibraryImpl::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), )); a.into() } }