use godot_ffi as sys;
#[derive(Copy, Clone, Debug, Default, Eq, PartialEq)]
#[allow(non_camel_case_types)]
#[non_exhaustive]
pub enum ParamMetadata {
#[default]
NONE,
INT_IS_INT8,
INT_IS_INT16,
INT_IS_INT32,
INT_IS_INT64,
INT_IS_UINT8,
INT_IS_UINT16,
INT_IS_UINT32,
INT_IS_UINT64,
INT_IS_CHAR16,
INT_IS_CHAR32,
REAL_IS_FLOAT,
REAL_IS_DOUBLE,
OBJECT_IS_REQUIRED,
}
impl ParamMetadata {
pub fn to_sys(self) -> sys::GDExtensionClassMethodArgumentMetadata {
match self {
Self::INT_IS_INT8 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT8,
Self::INT_IS_INT16 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT16,
Self::INT_IS_INT32 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT32,
Self::INT_IS_INT64 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_INT64,
Self::INT_IS_UINT8 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT8,
Self::INT_IS_UINT16 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT16,
Self::INT_IS_UINT32 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT32,
Self::INT_IS_UINT64 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_UINT64,
Self::REAL_IS_FLOAT => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_FLOAT,
Self::REAL_IS_DOUBLE => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_REAL_IS_DOUBLE,
#[cfg(since_api = "4.4")] #[cfg_attr(published_docs, doc(cfg(since_api = "4.4")))]
Self::INT_IS_CHAR16 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_CHAR16,
#[cfg(since_api = "4.4")] #[cfg_attr(published_docs, doc(cfg(since_api = "4.4")))]
Self::INT_IS_CHAR32 => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_INT_IS_CHAR32,
#[cfg(since_api = "4.6")] #[cfg_attr(published_docs, doc(cfg(since_api = "4.6")))]
Self::OBJECT_IS_REQUIRED => {
sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_OBJECT_IS_REQUIRED
}
_ => sys::GDEXTENSION_METHOD_ARGUMENT_METADATA_NONE,
}
}
}