Rewrite core protocol structs to be more concise

dev
LeRoyce Pearson 2023-08-12 17:40:48 -06:00
parent 47c57a5b87
commit 1542a95499
1 changed files with 54 additions and 104 deletions

View File

@ -1,42 +1,24 @@
pub const Display = struct { pub const Display = struct {
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
sync: Sync, sync: struct {
get_registry: GetRegistry,
pub const Tag = enum(u16) {
sync,
get_registry,
};
pub const Sync = struct {
/// new_id<wl_callback> /// new_id<wl_callback>
callback: u32, callback: u32,
}; },
get_registry: struct {
pub const GetRegistry = struct {
/// new_id<wl_registry> /// new_id<wl_registry>
registry: u32, registry: u32,
}; },
}; };
pub const Event = union(Event.Tag) { pub const Event = union(enum) {
@"error": Event.Error, @"error": struct {
delete_id: DeleteId,
pub const Tag = enum(u16) {
@"error",
delete_id,
};
pub const Error = struct {
object_id: u32, object_id: u32,
code: u32, code: u32,
message: []const u8, message: []const u8,
}; },
delete_id: struct {
pub const DeleteId = struct {
name: u32, name: u32,
}; },
}; };
pub const Error = enum(u32) { pub const Error = enum(u32) {
@ -48,66 +30,42 @@ pub const Display = struct {
}; };
pub const Registry = struct { pub const Registry = struct {
pub const Event = union(Event.Tag) { pub const Event = union(enum) {
global: Global, global: struct {
global_remove: GlobalRemove,
pub const Tag = enum(u16) {
global,
global_remove,
};
pub const Global = struct {
name: u32, name: u32,
interface: [:0]const u8, interface: [:0]const u8,
version: u32, version: u32,
}; },
global_remove: struct {
pub const GlobalRemove = struct {
name: u32, name: u32,
}; },
}; };
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
bind: Bind, bind: struct {
pub const Tag = enum(u16) {
bind,
};
pub const Bind = struct {
name: u32, name: u32,
interface: [:0]const u8, interface: [:0]const u8,
version: u32, version: u32,
new_id: u32, new_id: u32,
}; },
}; };
}; };
pub const Compositor = struct { pub const Compositor = struct {
pub const INTERFACE = "wl_compositor"; pub const INTERFACE = "wl_compositor";
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
create_surface: CreateSurface, create_surface: struct {
create_region: CreateRegion,
pub const Tag = enum(u16) {
create_surface,
create_region,
};
pub const CreateSurface = struct {
new_id: u32, new_id: u32,
}; },
create_region: struct {
pub const CreateRegion = struct {
new_id: u32, new_id: u32,
}; },
}; };
}; };
pub const ShmPool = struct { pub const ShmPool = struct {
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
create_buffer: struct { create_buffer: struct {
new_id: u32, new_id: u32,
offset: i32, offset: i32,
@ -120,29 +78,17 @@ pub const ShmPool = struct {
resize: struct { resize: struct {
size: i32, size: i32,
}, },
pub const Tag = enum(u16) {
create_buffer,
destroy,
resize,
};
}; };
}; };
pub const Shm = struct { pub const Shm = struct {
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
create_pool: CreatePool, create_pool: struct {
pub const Tag = enum(u16) {
create_pool,
};
pub const CreatePool = struct {
new_id: u32, new_id: u32,
// file descriptors are sent through a control message // file descriptors are sent through a control message
// fd: u32, // fd: u32,
size: u32, size: u32,
}; },
}; };
pub const Event = union(enum) { pub const Event = union(enum) {
@ -151,6 +97,12 @@ pub const Shm = struct {
}, },
}; };
pub const Error = enum(u32) {
invalid_format,
invalid_stride,
invalid_fd,
};
pub const Format = enum(u32) { pub const Format = enum(u32) {
argb8888, argb8888,
xrgb8888, xrgb8888,
@ -159,7 +111,7 @@ pub const Shm = struct {
}; };
pub const Surface = struct { pub const Surface = struct {
pub const Request = union(Request.Tag) { pub const Request = union(enum) {
destroy: void, destroy: void,
attach: struct { attach: struct {
buffer: u32, buffer: u32,
@ -183,31 +135,29 @@ pub const Surface = struct {
region: u32, region: u32,
}, },
commit: void, commit: void,
pub const Tag = enum(u16) {
destroy,
attach,
damage,
frame,
set_opaque_region,
set_input_region,
commit,
};
}; };
pub const Event = union(Event.Tag) { pub const Event = union(enum) {
format: Format, enter: struct {
output: u32,
pub const Tag = enum(u16) { },
@"error", leave: struct {
delete_id, output: u32,
},
preferred_buffer_scale: struct {
factor: i32,
},
preferred_buffer_transform: struct {
transform: u32,
},
}; };
pub const Format = enum(u32) { pub const Error = enum(u32) {
argb8888, invalid_scale,
xrgb8888, invalid_transform,
_, invalid_size,
}; invalid_offset,
defunct_role_object,
}; };
}; };