#[cfg(not(feature = "mock_data"))] pub(crate) mod cacheable; #[cfg(not(feature = "mock_data"))] pub(crate) mod cached_value; pub mod capabilities; pub mod extern_ref; pub mod ffi_array; pub mod script; #[cfg(not(feature = "mock_data"))] pub(crate) mod temporary; pub use capabilities::*; #[cfg(not(feature = "mock_data"))] pub(crate) use cacheable::Cacheable; pub use script::Script; #[repr(u8)] pub enum ScriptCategory { Move, Ability, Status, Pokemon, Battle, Weather, Side, ItemBattleTrigger, } #[macro_export] macro_rules! wasm_reference_getters_extern { ( $base_type:ty, $type_name:ident, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$type_name:snake _get_ $name>](r: ExternRef<$base_type>) -> ExternRef<$type>; } )* } }; } #[macro_export] macro_rules! wasm_reference_getters_funcs { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { $( $(#[$attr])* $v fn $name(&self) -> $type { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference).get_value().unwrap() } } } )* }; } #[macro_export] macro_rules! wasm_reference_getters { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { impl $base_type { $( $(#[$attr])* $v fn $name(&self) -> $type { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference).get_value().unwrap() } } } )* } #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$base_type:snake _get_ $name>](r: ExternRef<$base_type>) -> ExternRef<$type>; } )* } }; } #[macro_export] macro_rules! wasm_optional_reference_getters { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> Option<$type:ty>; )* ) => { impl $base_type { $( $(#[$attr])* $v fn $name(&self) -> Option<$type> { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference).get_value() } } } )* } #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$base_type:snake _get_ $name>](r: ExternRef<$base_type>) -> ExternRef<$type>; } )* } }; } #[macro_export] macro_rules! wasm_optional_reference_getters_extern { ( $base_type:ty, $type_name:ident, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> Option<$type:ty>; )* ) => { #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$type_name:snake _get_ $name>](r: ExternRef<$base_type>) -> ExternRef<$type>; } )* } }; } #[macro_export] macro_rules! wasm_optional_reference_getters_funcs { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> Option<$type:ty>; )* ) => { $( $(#[$attr])* $v fn $name(&self) -> Option<$type> { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference).get_value() } } } )* }; } #[macro_export] macro_rules! wasm_value_getters { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { #[cfg(not(feature = "mock_data"))] impl $base_type { $( $(#[$attr])* $v fn $name(&self) -> $type { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference) } } } )* } #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$base_type:snake _get_ $name>](r: ExternRef<$base_type>) -> $type; } )* } }; } #[macro_export] macro_rules! wasm_value_getters_extern { ( $base_type:ty, $type_name:ident, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { #[cfg(not(feature = "mock_data"))] extern "wasm" { $( paste::paste!{ fn [<$type_name:snake _get_ $name>](r: ExternRef<$base_type>) -> $type; } )* } }; } #[macro_export] macro_rules! wasm_value_getters_funcs { ( $base_type:ty, $( $(#[$attr:meta])* $v:vis fn $name:ident(&self) -> $type:ty; )* ) => { $( $(#[$attr])* $v fn $name(&self) -> $type { paste::paste!{ unsafe{ [<$base_type:snake _get_ $name>](self.inner.reference) } } } )* }; }