#![warn(clippy::all)]
#![deny(missing_docs)]
#![doc = include_str!("../README.md")]
pub mod ccgamemanager;
pub mod cclocallevels;
pub mod core;
#[cfg(test)]
pub mod tests;
macro_rules! repr_t {
($(#[$meta:meta])* $name:ident : $t:ty { $( $(#[$vmeta:meta])* $variant:ident = $val:expr),* $(,)? }) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[allow(missing_docs)]
$(#[$meta])*
pub enum $name {
$(
$(#[$vmeta])*
$variant,
)*
Unrecognized($t)
}
impl From<$t> for $name {
fn from(value: $t) -> Self {
match value {
$($val => Self::$variant,)*
_ => Self::Unrecognized(value),
}
}
}
#[allow(missing_docs)]
impl $name {
pub fn to_num(&self) -> $t {
match self {
Self::Unrecognized(n) => *n,
$(Self::$variant => $val,)*
}
}
}
};
($(#[$meta:meta])* $name:ident : $t:ty { $( $(#[$vmeta:meta])* $variant:ident = $val:expr),* $(,)? } default $default:ident) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[allow(missing_docs)]
$(#[$meta])*
pub enum $name {
$(
$(#[$vmeta])*
$variant,
)*
Unrecognized($t)
}
impl From<$t> for $name {
fn from(value: $t) -> Self {
match value {
$($val => Self::$variant,)*
_ => Self::Unrecognized(value),
}
}
}
impl $name {
pub fn to_num(&self) -> $t {
match self {
Self::Unrecognized(n) => *n,
$(Self::$variant => $val,)*
}
}
}
impl Default for $name {
fn default() -> Self {
Self::$default
}
}
};
($(#[$meta:meta])* strict $name:ident : $t:ty { $( $(#[$vmeta:meta])* $variant:ident = $val:expr),* $(,)? }) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[allow(missing_docs)]
#[repr($t)]
$(#[$meta])*
pub enum $name {
$(
$(#[$vmeta])*
$variant,
)*
}
impl TryFrom<$t> for $name {
type Error = $t;
fn try_from(value: $t) -> Result<Self, Self::Error> {
match value {
$($val => Ok(Self::$variant),)*
_ => Err(value),
}
}
}
};
($(#[$meta:meta])* strict $name:ident : $t:ty { $( $(#[$vmeta:meta])* $variant:ident = $val:expr),* $(,)? } default $default:ident) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[allow(missing_docs)]
#[repr($t)]
$(#[$meta])*
pub enum $name {
$(
$(#[$vmeta])*
$variant,
)*
}
impl TryFrom<$t> for $name {
type Error = $t;
fn try_from(value: $t) -> Result<Self, Self::Error> {
match value {
$($val => Ok(Self::$variant),)*
_ => Err(value),
}
}
}
impl Default for $name {
fn default() -> Self {
Self::$default
}
}
};
}
pub(crate) use repr_t;