1
0
Fork 0
forked from wry/wry

wire: attach versioning information to requests

This commit is contained in:
Julian Orth 2024-04-08 13:17:33 +02:00
parent d46462dfdd
commit 0d7b45d149
20 changed files with 57 additions and 28 deletions

View file

@ -52,7 +52,6 @@ struct Token<'a> {
#[derive(Debug)] #[derive(Debug)]
enum TokenKind<'a> { enum TokenKind<'a> {
Ident(&'a str), Ident(&'a str),
#[allow(dead_code)]
Num(u32), Num(u32),
Tree { Tree {
delim: TreeDelim, delim: TreeDelim,
@ -233,6 +232,13 @@ struct Message {
camel_name: String, camel_name: String,
id: u32, id: u32,
fields: Vec<Lined<Field>>, fields: Vec<Lined<Field>>,
#[allow(dead_code)]
attribs: MessageAttribs,
}
#[derive(Debug, Default)]
struct MessageAttribs {
since: Option<u32>,
} }
struct Parser<'a> { struct Parser<'a> {
@ -279,9 +285,32 @@ impl<'a> Parser<'a> {
Ok(()) 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>> { fn parse_message(&mut self, id: u32) -> Result<Lined<Message>> {
let (line, name) = self.expect_ident()?; let (line, name) = self.expect_ident()?;
let res: Result<_> = (|| { 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 (_, body) = self.expect_tree(TreeDelim::Brace)?;
let mut parser = Parser { let mut parser = Parser {
pos: 0, pos: 0,
@ -298,6 +327,7 @@ impl<'a> Parser<'a> {
camel_name: to_camel(name), camel_name: to_camel(name),
id, id,
fields, fields,
attribs,
}, },
}) })
})(); })();
@ -337,7 +367,6 @@ impl<'a> Parser<'a> {
} }
} }
#[allow(dead_code)]
fn expect_number(&mut self) -> Result<(u32, u32)> { fn expect_number(&mut self) -> Result<(u32, u32)> {
self.not_eof()?; self.not_eof()?;
let token = &self.tokens[self.pos]; let token = &self.tokens[self.pos];

View file

@ -12,7 +12,7 @@ request set_selection {
serial: u32, serial: u32,
} }
request release { request release (since = 2) {
} }

View file

@ -13,10 +13,10 @@ request receive {
request destroy { request destroy {
} }
request finish { request finish (since = 3) {
} }
request set_actions { request set_actions (since = 3) {
dnd_actions: u32, dnd_actions: u32,
preferred_action: u32, preferred_action: u32,
} }

View file

@ -8,7 +8,7 @@ request destroy {
} }
request set_actions { request set_actions (since = 3) {
dnd_actions: u32, dnd_actions: u32,
} }

View file

@ -27,7 +27,7 @@ request create_planar_buffer {
stride2: i32, stride2: i32,
} }
request create_prime_buffer { request create_prime_buffer (since = 2) {
id: id(wl_buffer), id: id(wl_buffer),
name: fd, name: fd,
width : i32, width : i32,

View file

@ -1,6 +1,6 @@
# requests # requests
request release { request release (since = 3) {
} }

View file

@ -1,6 +1,6 @@
# requests # requests
request release { request release (since = 3) {
} }

View file

@ -7,7 +7,7 @@ request set_cursor {
hotspot_y: i32, hotspot_y: i32,
} }
request release { request release (since = 3) {
} }

View file

@ -12,7 +12,7 @@ request get_touch {
id: id(wl_touch), id: id(wl_touch),
} }
request release { request release (since = 5) {
} }
# events # events

View file

@ -6,7 +6,7 @@ request create_pool {
size: i32, size: i32,
} }
request release { request release (since = 2) {
} }
# events # events

View file

@ -31,22 +31,22 @@ request set_input_region {
request commit { request commit {
} }
request set_buffer_transform { request set_buffer_transform (since = 2) {
transform: i32, transform: i32,
} }
request set_buffer_scale { request set_buffer_scale (since = 3) {
scale: i32, scale: i32,
} }
request damage_buffer { request damage_buffer (since = 4) {
x: i32, x: i32,
y: i32, y: i32,
width: i32, width: i32,
height: i32, height: i32,
} }
request offset { request offset (since = 5) {
x: i32, x: i32,
y: i32, y: i32,
} }

View file

@ -1,6 +1,6 @@
# requests # requests
request release { request release (since = 3) {
} }

View file

@ -7,7 +7,7 @@ request grab {
serial: u32, serial: u32,
} }
request reposition { request reposition (since = 3) {
positioner: id(xdg_positioner), positioner: id(xdg_positioner),
token: u32, token: u32,
} }

View file

@ -31,15 +31,15 @@ request set_offset {
y: i32, y: i32,
} }
request set_reactive { request set_reactive (since = 3) {
} }
request set_parent_size { request set_parent_size (since = 3) {
parent_width: i32, parent_width: i32,
parent_height: i32, parent_height: i32,
} }
request set_parent_configure { request set_parent_configure (since = 3) {
serial: u32, serial: u32,
} }

View file

@ -8,7 +8,7 @@ request destroy {
} }
request set_primary_selection { request set_primary_selection (since = 2) {
source: id(zwlr_data_control_source_v1), source: id(zwlr_data_control_source_v1),
} }

View file

@ -8,5 +8,5 @@ request get_layer_surface {
namespace: str, namespace: str,
} }
request destroy { request destroy (since = 3) {
} }

View file

@ -34,7 +34,7 @@ request ack_configure {
request destroy { } request destroy { }
request set_layer { request set_layer (since = 2) {
layer: u32, layer: u32,
} }

View file

@ -7,7 +7,7 @@ request copy {
request destroy { request destroy {
} }
request copy_with_damage { request copy_with_damage (since = 2) {
buffer: id(wl_buffer), buffer: id(wl_buffer),
} }

View file

@ -18,7 +18,7 @@ request create {
flags: u32, flags: u32,
} }
request create_immed { request create_immed (since = 2) {
buffer_id: id(wl_buffer), buffer_id: id(wl_buffer),
width: i32, width: i32,
height: i32, height: i32,

View file

@ -6,11 +6,11 @@ request create_params {
params_id: id(zwp_linux_buffer_params_v1), 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), id: id(zwp_linux_dmabuf_feedback_v1),
} }
request get_surface_feedback { request get_surface_feedback (since = 4) {
id: id(zwp_linux_dmabuf_feedback_v1), id: id(zwp_linux_dmabuf_feedback_v1),
surface: id(wl_surface), surface: id(wl_surface),
} }