Rework of FFI, adding a value identifier, so we can keep knowledge of data even when data moves.
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use crate::ffi::{BorrowedPtr, ExternPointer, OwnedPtr};
|
||||
use crate::ffi::{ExternPointer, IdentifiablePointer, OwnedPtr};
|
||||
use crate::static_data::{
|
||||
AbilityLibrary, GrowthRateLibrary, ItemLibrary, LibrarySettings, MoveLibrary, NatureLibrary, SpeciesLibrary,
|
||||
StaticData, TypeLibrary,
|
||||
@@ -6,8 +6,8 @@ use crate::static_data::{
|
||||
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))))
|
||||
unsafe extern "C" fn static_data_new(settings: OwnedPtr<LibrarySettings>) -> IdentifiablePointer<StaticData> {
|
||||
Box::new(StaticData::new(*Box::from_raw(settings))).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
@@ -16,41 +16,43 @@ unsafe extern "C" fn static_data_drop(ptr: OwnedPtr<StaticData>) {
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_settings(data: ExternPointer<StaticData>) -> BorrowedPtr<LibrarySettings> {
|
||||
data.as_mut().settings() as *const LibrarySettings
|
||||
unsafe extern "C" fn static_data_settings(data: ExternPointer<StaticData>) -> IdentifiablePointer<LibrarySettings> {
|
||||
(data.as_mut().settings() as *const LibrarySettings).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_species(data: ExternPointer<StaticData>) -> BorrowedPtr<SpeciesLibrary> {
|
||||
data.as_mut().species_mut() as *mut SpeciesLibrary
|
||||
unsafe extern "C" fn static_data_species(data: ExternPointer<StaticData>) -> IdentifiablePointer<SpeciesLibrary> {
|
||||
(data.as_mut().species_mut() as *const SpeciesLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_moves(data: ExternPointer<StaticData>) -> BorrowedPtr<MoveLibrary> {
|
||||
data.as_mut().moves_mut() as *mut MoveLibrary
|
||||
unsafe extern "C" fn static_data_moves(data: ExternPointer<StaticData>) -> IdentifiablePointer<MoveLibrary> {
|
||||
(data.as_mut().moves_mut() as *const MoveLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_items(data: ExternPointer<StaticData>) -> BorrowedPtr<ItemLibrary> {
|
||||
data.as_mut().items_mut() as *mut ItemLibrary
|
||||
unsafe extern "C" fn static_data_items(data: ExternPointer<StaticData>) -> IdentifiablePointer<ItemLibrary> {
|
||||
(data.as_mut().items_mut() as *const ItemLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_growth_rates(data: ExternPointer<StaticData>) -> BorrowedPtr<GrowthRateLibrary> {
|
||||
data.as_mut().growth_rates_mut() as *mut GrowthRateLibrary
|
||||
unsafe extern "C" fn static_data_growth_rates(
|
||||
data: ExternPointer<StaticData>,
|
||||
) -> IdentifiablePointer<GrowthRateLibrary> {
|
||||
(data.as_mut().growth_rates_mut() as *const GrowthRateLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_types(data: ExternPointer<StaticData>) -> BorrowedPtr<TypeLibrary> {
|
||||
data.as_mut().types_mut() as *mut TypeLibrary
|
||||
unsafe extern "C" fn static_data_types(data: ExternPointer<StaticData>) -> IdentifiablePointer<TypeLibrary> {
|
||||
(data.as_mut().types_mut() as *const TypeLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_natures(data: ExternPointer<StaticData>) -> BorrowedPtr<NatureLibrary> {
|
||||
data.as_mut().natures_mut() as *mut NatureLibrary
|
||||
unsafe extern "C" fn static_data_natures(data: ExternPointer<StaticData>) -> IdentifiablePointer<NatureLibrary> {
|
||||
(data.as_mut().natures_mut() as *const NatureLibrary).into()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
unsafe extern "C" fn static_data_abilities(data: ExternPointer<StaticData>) -> BorrowedPtr<AbilityLibrary> {
|
||||
data.as_mut().abilities_mut() as *mut AbilityLibrary
|
||||
unsafe extern "C" fn static_data_abilities(data: ExternPointer<StaticData>) -> IdentifiablePointer<AbilityLibrary> {
|
||||
(data.as_mut().abilities_mut() as *const AbilityLibrary).into()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user