use crate::defines::LevelInt; use crate::ffi::{BorrowedPtr, ExternPointer, OwnedPtr}; use crate::static_data::LearnableMoves; use std::ffi::{c_char, CStr}; use std::ptr::drop_in_place; #[no_mangle] extern "C" fn learnable_moves_new() -> OwnedPtr { Box::into_raw(Box::new(LearnableMoves::new())) } #[no_mangle] unsafe extern "C" fn learnable_moves_drop(ptr: OwnedPtr) { drop_in_place(ptr) } #[no_mangle] unsafe extern "C" fn learnable_moves_add_level_move( ptr: ExternPointer, level: LevelInt, move_name: BorrowedPtr, ) { ptr.as_mut().add_level_move(level, &CStr::from_ptr(move_name).into()) }