From 85bef02e7b68bafde75e1f8144bfab2f2e06be24 Mon Sep 17 00:00:00 2001 From: Isaac Freund Date: Tue, 6 Oct 2020 23:32:00 +0200 Subject: [PATCH] Preform some general cleanup --- src/client_core.zig | 23 +++++++++-------------- src/client_display_functions.zig | 2 +- src/common_core.zig | 8 ++++---- src/server_core.zig | 15 +++++++-------- 4 files changed, 21 insertions(+), 27 deletions(-) diff --git a/src/client_core.zig b/src/client_core.zig index 2d9ac7b..2f93e20 100644 --- a/src/client_core.zig +++ b/src/client_core.zig @@ -51,24 +51,19 @@ pub const Proxy = opaque { error.OutOfMemory; } - extern fn wl_proxy_add_listener(proxy: *Proxy, implementation: [*]fn () callconv(.C) void, data: ?*c_void) i32; - pub fn addListener(proxy: *Proxy, implementation: [*]fn () callconv(.C) void, data: ?*c_void) error{AlreadyHasListener}!void { - if (wl_proxy_add_listener(proxy, implementation, data) == -1) return error.AlreadyHasListener; - } - const DispatcherFn = fn ( implementation: ?*const c_void, proxy: *Proxy, opcode: u32, message: *const common.Message, args: [*]common.Argument, - ) callconv(.C) i32; + ) callconv(.C) c_int; extern fn wl_proxy_add_dispatcher( proxy: *Proxy, dispatcher: DispatcherFn, implementation: ?*const c_void, data: ?*c_void, - ) i32; + ) c_int; pub fn addDispatcher( proxy: *Proxy, dispatcher: DispatcherFn, @@ -108,7 +103,7 @@ pub const EventQueue = opaque { } }; -pub fn Dispatcher(comptime ObjectT: type, comptime DataT: type) type { +pub fn Dispatcher(comptime Object: type, comptime Data: type) type { return struct { pub fn dispatcher( implementation: ?*const c_void, @@ -116,8 +111,8 @@ pub fn Dispatcher(comptime ObjectT: type, comptime DataT: type) type { opcode: u32, message: *const common.Message, args: [*]common.Argument, - ) callconv(.C) i32 { - inline for (@typeInfo(ObjectT.Event).Union.fields) |event_field, event_num| { + ) callconv(.C) c_int { + inline for (@typeInfo(Object.Event).Union.fields) |event_field, event_num| { if (event_num == opcode) { var event_data: event_field.field_type = undefined; inline for (@typeInfo(event_field.field_type).Struct.fields) |f, i| { @@ -128,11 +123,11 @@ pub fn Dispatcher(comptime ObjectT: type, comptime DataT: type) type { }; } - const listener = @ptrCast(fn (object: *ObjectT, event: ObjectT.Event, data: DataT) void, implementation); + const listener = @ptrCast(fn (object: *Object, event: Object.Event, data: Data) void, implementation); listener( - @ptrCast(*ObjectT, proxy), - @unionInit(ObjectT.Event, event_field.name, event_data), - @intToPtr(DataT, @ptrToInt(proxy.getUserData())), + @ptrCast(*Object, proxy), + @unionInit(Object.Event, event_field.name, event_data), + @intToPtr(Data, @ptrToInt(proxy.getUserData())), ); return 0; diff --git a/src/client_display_functions.zig b/src/client_display_functions.zig index 6a1d252..e8b96e7 100644 --- a/src/client_display_functions.zig +++ b/src/client_display_functions.zig @@ -97,6 +97,6 @@ pub fn createQueue(display: *Display) error{OutOfMemory}!*client.EventQueue { // TODO: should we interpret this return value? extern fn wl_display_get_error(display: *Display) c_int; -pub fn getError(display: *Display) i32 { +pub fn getError(display: *Display) c_int { return wl_display_get_error(display); } diff --git a/src/common_core.zig b/src/common_core.zig index f8281f5..f0fa19b 100644 --- a/src/common_core.zig +++ b/src/common_core.zig @@ -1,6 +1,6 @@ const std = @import("std"); -pub const Object = opaque{}; +pub const Object = opaque {}; pub const Message = extern struct { name: [*:0]const u8, @@ -10,10 +10,10 @@ pub const Message = extern struct { pub const Interface = extern struct { name: [*:0]const u8, - version: i32, - method_count: i32, + version: c_int, + method_count: c_int, methods: ?[*]const Message, - event_count: i32, + event_count: c_int, events: ?[*]const Message, }; diff --git a/src/server_core.zig b/src/server_core.zig index fb5ef4a..0d79618 100644 --- a/src/server_core.zig +++ b/src/server_core.zig @@ -178,13 +178,13 @@ pub const Global = opaque { ) ?*Global; pub fn create( display: *Display, - comptime ObjectT: type, + comptime Object: type, version: u32, comptime T: type, data: T, bind: fn (client: *Client, data: T, version: u32, id: u32) callconv(.C) void, ) !*Global { - return wl_global_create(display, ObjectT.interface, version, data, bind) orelse + return wl_global_create(display, Object.interface, version, data, bind) orelse error.GlobalCreateFailed; } @@ -206,10 +206,10 @@ pub const Global = opaque { pub const Resource = opaque { extern fn wl_resource_create(client: *Client, interface: *const common.Interface, version: c_int, id: u32) ?*Resource; - pub fn create(client: *Client, comptime ObjectT: type, version: u32, id: u32) ?*Resource { + pub fn create(client: *Client, comptime Object: type, version: u32, id: u32) ?*Resource { // This is only a c_int because of legacy libwayland reasons. Negative versions are invalid. // Version is a u32 on the wire and for wl_global, wl_proxy, etc. - return wl_resource_create(client, ObjectT.interface, @intCast(c_int, version), id); + return wl_resource_create(client, Object.interface, @intCast(c_int, version), id); } extern fn wl_resource_destroy(resource: *Resource) void; @@ -248,9 +248,8 @@ pub const Resource = opaque { implementation: ?*const c_void, data: ?*c_void, destroy: DestroyFn, - ) !void { - if (wl_resource_set_dispatcher(proxy, dispatcher, implementation, data) == -1) - return error.AlreadyHasListener; + ) void { + wl_resource_set_dispatcher(resource, dispatcher, implementation, data, destroy); } extern fn wl_resource_get_user_data(resource: *Resource) ?*c_void; @@ -282,7 +281,7 @@ pub const Resource = opaque { return @intCast(u32, wl_resource_get_version(resource)); } - extern fn wl_resource_set_destructor(resource: *Resource, destroy: fn (*Resource) void) void; + extern fn wl_resource_set_destructor(resource: *Resource, destroy: DestroyFn) void; pub const setDestructor = wl_resource_set_destructor; extern fn wl_resource_get_class(resource: *Resource) [*:0]const u8;