wire: attach versioning information to requests
This commit is contained in:
parent
d46462dfdd
commit
0d7b45d149
20 changed files with 57 additions and 28 deletions
|
|
@ -52,7 +52,6 @@ struct Token<'a> {
|
|||
#[derive(Debug)]
|
||||
enum TokenKind<'a> {
|
||||
Ident(&'a str),
|
||||
#[allow(dead_code)]
|
||||
Num(u32),
|
||||
Tree {
|
||||
delim: TreeDelim,
|
||||
|
|
@ -233,6 +232,13 @@ struct Message {
|
|||
camel_name: String,
|
||||
id: u32,
|
||||
fields: Vec<Lined<Field>>,
|
||||
#[allow(dead_code)]
|
||||
attribs: MessageAttribs,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
struct MessageAttribs {
|
||||
since: Option<u32>,
|
||||
}
|
||||
|
||||
struct Parser<'a> {
|
||||
|
|
@ -279,9 +285,32 @@ impl<'a> Parser<'a> {
|
|||
Ok(())
|
||||
}
|
||||
|
||||
fn parse_message_attribs(&mut self, attribs: &mut MessageAttribs) -> Result<()> {
|
||||
let (_, tokens) = self.expect_tree(TreeDelim::Paren)?;
|
||||
let mut parser = Parser { pos: 0, tokens };
|
||||
while !parser.eof() {
|
||||
let (line, name) = parser.expect_ident()?;
|
||||
parser.expect_symbol(Symbol::Equals)?;
|
||||
match name {
|
||||
"since" => attribs.since = Some(parser.expect_number()?.1),
|
||||
_ => bail!("In line {}: Unexpected attribute {}", line, name),
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn parse_message(&mut self, id: u32) -> Result<Lined<Message>> {
|
||||
let (line, name) = self.expect_ident()?;
|
||||
let res: Result<_> = (|| {
|
||||
self.not_eof()?;
|
||||
let mut attribs = MessageAttribs::default();
|
||||
if let TokenKind::Tree {
|
||||
delim: TreeDelim::Paren,
|
||||
..
|
||||
} = self.tokens[self.pos].kind
|
||||
{
|
||||
self.parse_message_attribs(&mut attribs)?;
|
||||
}
|
||||
let (_, body) = self.expect_tree(TreeDelim::Brace)?;
|
||||
let mut parser = Parser {
|
||||
pos: 0,
|
||||
|
|
@ -298,6 +327,7 @@ impl<'a> Parser<'a> {
|
|||
camel_name: to_camel(name),
|
||||
id,
|
||||
fields,
|
||||
attribs,
|
||||
},
|
||||
})
|
||||
})();
|
||||
|
|
@ -337,7 +367,6 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn expect_number(&mut self) -> Result<(u32, u32)> {
|
||||
self.not_eof()?;
|
||||
let token = &self.tokens[self.pos];
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ request set_selection {
|
|||
serial: u32,
|
||||
}
|
||||
|
||||
request release {
|
||||
request release (since = 2) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,10 +13,10 @@ request receive {
|
|||
request destroy {
|
||||
}
|
||||
|
||||
request finish {
|
||||
request finish (since = 3) {
|
||||
}
|
||||
|
||||
request set_actions {
|
||||
request set_actions (since = 3) {
|
||||
dnd_actions: u32,
|
||||
preferred_action: u32,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ request destroy {
|
|||
|
||||
}
|
||||
|
||||
request set_actions {
|
||||
request set_actions (since = 3) {
|
||||
dnd_actions: u32,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ request create_planar_buffer {
|
|||
stride2: i32,
|
||||
}
|
||||
|
||||
request create_prime_buffer {
|
||||
request create_prime_buffer (since = 2) {
|
||||
id: id(wl_buffer),
|
||||
name: fd,
|
||||
width : i32,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# requests
|
||||
|
||||
request release {
|
||||
request release (since = 3) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# requests
|
||||
|
||||
request release {
|
||||
request release (since = 3) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ request set_cursor {
|
|||
hotspot_y: i32,
|
||||
}
|
||||
|
||||
request release {
|
||||
request release (since = 3) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ request get_touch {
|
|||
id: id(wl_touch),
|
||||
}
|
||||
|
||||
request release {
|
||||
request release (since = 5) {
|
||||
}
|
||||
|
||||
# events
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ request create_pool {
|
|||
size: i32,
|
||||
}
|
||||
|
||||
request release {
|
||||
request release (since = 2) {
|
||||
}
|
||||
|
||||
# events
|
||||
|
|
|
|||
|
|
@ -31,22 +31,22 @@ request set_input_region {
|
|||
request commit {
|
||||
}
|
||||
|
||||
request set_buffer_transform {
|
||||
request set_buffer_transform (since = 2) {
|
||||
transform: i32,
|
||||
}
|
||||
|
||||
request set_buffer_scale {
|
||||
request set_buffer_scale (since = 3) {
|
||||
scale: i32,
|
||||
}
|
||||
|
||||
request damage_buffer {
|
||||
request damage_buffer (since = 4) {
|
||||
x: i32,
|
||||
y: i32,
|
||||
width: i32,
|
||||
height: i32,
|
||||
}
|
||||
|
||||
request offset {
|
||||
request offset (since = 5) {
|
||||
x: i32,
|
||||
y: i32,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# requests
|
||||
|
||||
request release {
|
||||
request release (since = 3) {
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ request grab {
|
|||
serial: u32,
|
||||
}
|
||||
|
||||
request reposition {
|
||||
request reposition (since = 3) {
|
||||
positioner: id(xdg_positioner),
|
||||
token: u32,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,15 +31,15 @@ request set_offset {
|
|||
y: i32,
|
||||
}
|
||||
|
||||
request set_reactive {
|
||||
request set_reactive (since = 3) {
|
||||
|
||||
}
|
||||
|
||||
request set_parent_size {
|
||||
request set_parent_size (since = 3) {
|
||||
parent_width: i32,
|
||||
parent_height: i32,
|
||||
}
|
||||
|
||||
request set_parent_configure {
|
||||
request set_parent_configure (since = 3) {
|
||||
serial: u32,
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ request destroy {
|
|||
|
||||
}
|
||||
|
||||
request set_primary_selection {
|
||||
request set_primary_selection (since = 2) {
|
||||
source: id(zwlr_data_control_source_v1),
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,5 +8,5 @@ request get_layer_surface {
|
|||
namespace: str,
|
||||
}
|
||||
|
||||
request destroy {
|
||||
request destroy (since = 3) {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ request ack_configure {
|
|||
|
||||
request destroy { }
|
||||
|
||||
request set_layer {
|
||||
request set_layer (since = 2) {
|
||||
layer: u32,
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ request copy {
|
|||
request destroy {
|
||||
}
|
||||
|
||||
request copy_with_damage {
|
||||
request copy_with_damage (since = 2) {
|
||||
buffer: id(wl_buffer),
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ request create {
|
|||
flags: u32,
|
||||
}
|
||||
|
||||
request create_immed {
|
||||
request create_immed (since = 2) {
|
||||
buffer_id: id(wl_buffer),
|
||||
width: i32,
|
||||
height: i32,
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ request create_params {
|
|||
params_id: id(zwp_linux_buffer_params_v1),
|
||||
}
|
||||
|
||||
request get_default_feedback {
|
||||
request get_default_feedback (since = 4) {
|
||||
id: id(zwp_linux_dmabuf_feedback_v1),
|
||||
}
|
||||
|
||||
request get_surface_feedback {
|
||||
request get_surface_feedback (since = 4) {
|
||||
id: id(zwp_linux_dmabuf_feedback_v1),
|
||||
surface: id(wl_surface),
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue