ttf_name_decoder/
macros.rs1#[macro_export]
2macro_rules! generate_decoder {
3 ($name:ident, $encoding:expr) => {
4 pub fn $name(data: &[u8]) -> Option<String> {
5 Some($encoding.decode(data).0.into_owned())
6 }
7 };
8}
9
10pub use generate_decoder;
11
12#[macro_export]
13macro_rules! generate_id_table {
14 ( $enum:ident, $err:expr, { $( $name:ident : $id:expr ,)+ } ) => {
15 #[derive(Debug, PartialEq, Clone, Copy)]
16 pub enum $enum {
17 $($name,)*
18 }
19
20 impl std::convert::TryFrom<u16> for $enum {
21 type Error = $crate::Error;
22 fn try_from(id: u16) -> $crate::Result<Self> {
23 match id {
24 $( $id => Ok($enum::$name) ,)*
25 _ => Err($err),
26 }
27 }
28 }
29 impl std::convert::Into<u16> for $enum {
30 fn into(self) -> u16 {
31 match self {
32 $( $enum::$name => $id ,)*
33 }
34 }
35 }
36 };
37}
38
39pub use generate_id_table;