Fixes for FFI.
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing

This commit is contained in:
2022-10-01 15:40:15 +02:00
parent 78fde698ca
commit 84ddf0307d
15 changed files with 457 additions and 111 deletions

View File

@@ -0,0 +1,56 @@
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<LibrarySettings>) -> OwnedPtr<StaticData> {
Box::into_raw(Box::new(StaticData::new(*Box::from_raw(settings))))
}
#[no_mangle]
unsafe extern "C" fn static_data_drop(ptr: OwnedPtr<StaticData>) {
drop_in_place(ptr)
}
#[no_mangle]
unsafe extern "C" fn static_data_settings(data: ExternPointer<StaticData>) -> BorrowedPtr<LibrarySettings> {
data.as_mut().settings() as *const LibrarySettings
}
#[no_mangle]
unsafe extern "C" fn static_data_species(data: ExternPointer<StaticData>) -> BorrowedPtr<SpeciesLibrary> {
data.as_mut().species_mut() as *mut SpeciesLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_moves(data: ExternPointer<StaticData>) -> BorrowedPtr<MoveLibrary> {
data.as_mut().moves_mut() as *mut MoveLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_items(data: ExternPointer<StaticData>) -> BorrowedPtr<ItemLibrary> {
data.as_mut().items_mut() as *mut ItemLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_growth_rates(data: ExternPointer<StaticData>) -> BorrowedPtr<GrowthRateLibrary> {
data.as_mut().growth_rates_mut() as *mut GrowthRateLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_types(data: ExternPointer<StaticData>) -> BorrowedPtr<TypeLibrary> {
data.as_mut().types_mut() as *mut TypeLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_natures(data: ExternPointer<StaticData>) -> BorrowedPtr<NatureLibrary> {
data.as_mut().natures_mut() as *mut NatureLibrary
}
#[no_mangle]
unsafe extern "C" fn static_data_abilities(data: ExternPointer<StaticData>) -> BorrowedPtr<AbilityLibrary> {
data.as_mut().abilities_mut() as *mut AbilityLibrary
}