#[allow(unused_imports)]
use crate::codegen_prelude::*;
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u16)]
#[allow(clippy::manual_non_exhaustive)]
pub enum MyEnum1 {
#[default]
ItsAZero = 0,
ItsAOne = 1,
#[doc(hidden)]
Unknown,
}
impl MyEnum1 {
pub fn new(raw: u16) -> Self {
match raw {
0 => Self::ItsAZero,
1 => Self::ItsAOne,
_ => Self::Unknown,
}
}
}
impl font_types::Scalar for MyEnum1 {
type Raw = <u16 as font_types::Scalar>::Raw;
fn to_raw(self) -> Self::Raw {
(self as u16).to_raw()
}
fn from_raw(raw: Self::Raw) -> Self {
let t = <u16>::from_raw(raw);
Self::new(t)
}
}
#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash, PartialOrd, Ord)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
#[repr(u16)]
#[allow(clippy::manual_non_exhaustive)]
pub enum MyEnum2 {
ItsATwo = 2,
#[default]
ItsAThree = 3,
#[doc(hidden)]
Unknown,
}
impl MyEnum2 {
pub fn new(raw: u16) -> Self {
match raw {
2 => Self::ItsATwo,
3 => Self::ItsAThree,
_ => Self::Unknown,
}
}
}
impl font_types::Scalar for MyEnum2 {
type Raw = <u16 as font_types::Scalar>::Raw;
fn to_raw(self) -> Self::Raw {
(self as u16).to_raw()
}
fn from_raw(raw: Self::Raw) -> Self {
let t = <u16>::from_raw(raw);
Self::new(t)
}
}
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Copy, bytemuck :: AnyBitPattern)]
#[repr(C)]
#[repr(packed)]
pub struct MyRecord {
pub my_enum1: BigEndian<MyEnum1>,
pub my_enum2: BigEndian<MyEnum2>,
}
impl MyRecord {
pub fn my_enum1(&self) -> MyEnum1 {
self.my_enum1.get()
}
pub fn my_enum2(&self) -> MyEnum2 {
self.my_enum2.get()
}
}
impl FixedSize for MyRecord {
const RAW_BYTE_LEN: usize = MyEnum1::RAW_BYTE_LEN + MyEnum2::RAW_BYTE_LEN;
}