use crate::ffi::{BorrowedPtr, ExternPointer, OwnedPtr}; use crate::static_data::{ AbilityLibrary, GrowthRateLibrary, ItemLibrary, LibrarySettings, MoveLibrary, NatureLibrary, SpeciesLibrary, StaticData, TypeLibrary, }; use std::ptr::drop_in_place; #[no_mangle] unsafe extern "C" fn static_data_new(settings: OwnedPtr) -> OwnedPtr { Box::into_raw(Box::new(StaticData::new(*Box::from_raw(settings)))) } #[no_mangle] unsafe extern "C" fn static_data_drop(ptr: OwnedPtr) { drop_in_place(ptr) } #[no_mangle] unsafe extern "C" fn static_data_settings(data: ExternPointer) -> BorrowedPtr { data.as_mut().settings() as *const LibrarySettings } #[no_mangle] unsafe extern "C" fn static_data_species(data: ExternPointer) -> BorrowedPtr { data.as_mut().species_mut() as *mut SpeciesLibrary } #[no_mangle] unsafe extern "C" fn static_data_moves(data: ExternPointer) -> BorrowedPtr { data.as_mut().moves_mut() as *mut MoveLibrary } #[no_mangle] unsafe extern "C" fn static_data_items(data: ExternPointer) -> BorrowedPtr { data.as_mut().items_mut() as *mut ItemLibrary } #[no_mangle] unsafe extern "C" fn static_data_growth_rates(data: ExternPointer) -> BorrowedPtr { data.as_mut().growth_rates_mut() as *mut GrowthRateLibrary } #[no_mangle] unsafe extern "C" fn static_data_types(data: ExternPointer) -> BorrowedPtr { data.as_mut().types_mut() as *mut TypeLibrary } #[no_mangle] unsafe extern "C" fn static_data_natures(data: ExternPointer) -> BorrowedPtr { data.as_mut().natures_mut() as *mut NatureLibrary } #[no_mangle] unsafe extern "C" fn static_data_abilities(data: ExternPointer) -> BorrowedPtr { data.as_mut().abilities_mut() as *mut AbilityLibrary }