pub(crate) struct Protocol { pub(crate) _name: String, pub(crate) _copyright: Option, pub(crate) _description: Option, pub(crate) interfaces: Vec, } pub(crate) struct Copyright { pub(crate) _body: String, } #[derive(Debug)] pub(crate) struct Description { pub(crate) _summary: Option, pub(crate) _body: String, } pub(crate) struct Interface { pub(crate) name: String, pub(crate) _version: u32, pub(crate) _description: Option, pub(crate) messages: Vec, pub(crate) _enums: Vec, } #[derive(Debug)] pub(crate) struct Arg { pub(crate) name: String, pub(crate) ty: ArgType, pub(crate) _summary: Option, pub(crate) _description: Option, pub(crate) interface: Option, pub(crate) allow_null: bool, pub(crate) enum_: Option, } #[derive(Copy, Clone, Debug, PartialEq)] pub(crate) enum ArgType { NewId, Int, Uint, Fixed, String, Object, Array, Fd, } #[derive(Copy, Clone, Debug, PartialEq)] pub(crate) enum MessageType { Destructor, } pub(crate) struct Entry { pub(crate) _name: String, pub(crate) _value: String, pub(crate) _value_u32: u32, pub(crate) _summary: Option, pub(crate) _since: Option, pub(crate) _deprecated_since: Option, pub(crate) _description: Option, } pub(crate) struct Enum { pub(crate) _name: String, pub(crate) _since: Option, pub(crate) _bitfield: bool, pub(crate) _description: Option, pub(crate) _entries: Vec, } pub(crate) struct Message { pub(crate) name: String, pub(crate) request: bool, pub(crate) ty: Option, pub(crate) since: Option, pub(crate) _deprecated_since: Option, pub(crate) _description: Option, pub(crate) args: Vec, }