wayland_protocols/
protocol_macro.rs

1macro_rules! wayland_protocol(
2    ($path:expr, [$($imports:path),*]) => {
3        #[cfg(feature = "client")]
4        pub use self::generated::client;
5
6        #[cfg(feature = "server")]
7        pub use self::generated::server;
8
9        mod generated {
10            #![allow(dead_code,non_camel_case_types,unused_unsafe,unused_variables)]
11            #![allow(non_upper_case_globals,non_snake_case,unused_imports)]
12            #![allow(missing_docs, clippy::all)]
13
14            #[cfg(feature = "client")]
15            pub mod client {
16                //! Client-side API of this protocol
17                use wayland_client;
18                use wayland_client::protocol::*;
19                $(use $imports::{client::*};)*
20
21                pub mod __interfaces {
22                    use wayland_client::protocol::__interfaces::*;
23                    $(use $imports::{client::__interfaces::*};)*
24                    wayland_scanner::generate_interfaces!($path);
25                }
26                use self::__interfaces::*;
27
28                wayland_scanner::generate_client_code!($path);
29            }
30
31            #[cfg(feature = "server")]
32            pub mod server {
33                //! Server-side API of this protocol
34                use wayland_server;
35                use wayland_server::protocol::*;
36                $(use $imports::{server::*};)*
37
38                pub mod __interfaces {
39                    use wayland_server::protocol::__interfaces::*;
40                    $(use $imports::{server::__interfaces::*};)*
41                    wayland_scanner::generate_interfaces!($path);
42                }
43                use self::__interfaces::*;
44
45                wayland_scanner::generate_server_code!($path);
46            }
47        }
48    }
49);