use crate::ffi::{ffi_getter, ExternPointer, OwnedPtr}; use crate::static_data::{Nature, Statistic}; use std::ptr::drop_in_place; #[no_mangle] extern "C" fn nature_new( increase_stat: Statistic, decrease_stat: Statistic, increase_modifier: f32, decrease_modifier: f32, ) -> OwnedPtr { Box::into_raw(Box::new(Nature::new( increase_stat, decrease_stat, increase_modifier, decrease_modifier, ))) } #[no_mangle] unsafe extern "C" fn nature_drop(ptr: OwnedPtr) { drop_in_place(ptr) } ffi_getter!(Nature, increased_stat, Statistic); ffi_getter!(Nature, decreased_stat, Statistic); #[no_mangle] extern "C" fn nature_get_stat_modifier(ptr: ExternPointer, stat: Statistic) -> f32 { ptr.as_ref().get_stat_modifier(stat) }