diff options
Diffstat (limited to 'glfw/src/util.rs')
| -rw-r--r-- | glfw/src/util.rs | 31 | 
1 files changed, 31 insertions, 0 deletions
diff --git a/glfw/src/util.rs b/glfw/src/util.rs index f77aaf8..98dcb9b 100644 --- a/glfw/src/util.rs +++ b/glfw/src/util.rs @@ -8,3 +8,34 @@ pub fn is_main_thread() -> bool      ttid == pid  } + +macro_rules! enum_from_repr { +    ( +        #[repr($repr: ident)] +        $(#[$attr: meta])* +        $visibility: vis enum $name: ident +        { +            $($variant: ident = $raw: path,)* +        } +    ) => { +        $(#[$attr])* +        #[repr($repr)] +        $visibility enum $name +        { +            $($variant = $raw,)* +        } + +        impl $name +        { +            fn from_repr(repr: $repr) -> Option<Self> +            { +                match repr { +                    $($raw => Some(Self::$variant),)* +                    _ => None +                } +            } +        } +    }; +} + +pub(crate) use enum_from_repr;  | 
