PkmnLib_rs/src/ffi/static_data/nature.rs

32 lines
803 B
Rust

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<Nature> {
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<Nature>) {
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<Nature>, stat: Statistic) -> f32 {
ptr.as_ref().get_stat_modifier(stat)
}