glfw: enum-ify 'Joystick.jid', set 'InvalidEnum' as unreachable, and run zig fmt
This commit is contained in:
parent
aae3ea8577
commit
88e0d37325
4 changed files with 68 additions and 79 deletions
|
|
@ -85,7 +85,7 @@ pub inline fn createStandard(shape: Shape) Error!Cursor {
|
||||||
const cursor = c.glfwCreateStandardCursor(@intCast(c_int, @enumToInt(shape)));
|
const cursor = c.glfwCreateStandardCursor(@intCast(c_int, @enumToInt(shape)));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
// should be unreachable given that only the values in 'Shape' are available, unless the user explicitly gives us a bad value via casting
|
// should be unreachable given that only the values in 'Shape' are available, unless the user explicitly gives us a bad value via casting
|
||||||
Error.InvalidEnum => unreachable,
|
Error.InvalidEnum => unreachable,
|
||||||
Error.PlatformError => err,
|
Error.PlatformError => err,
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
|
|
@ -111,7 +111,7 @@ pub inline fn destroy(self: Cursor) void {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
c.glfwDestroyCursor(self.ptr);
|
c.glfwDestroyCursor(self.ptr);
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.PlatformError => std.log.debug("{}: was unable to destroy Cursor.\n", .{ err }),
|
Error.PlatformError => std.log.debug("{}: was unable to destroy Cursor.\n", .{err}),
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
//! Represents a Joystick or gamepad
|
//! Represents a Joystick or gamepad
|
||||||
//!
|
//!
|
||||||
//! It can be manually crafted via e.g. `glfw.Joystick{.jid = glfw.Joystick.one}`, but more
|
//! It can be manually crafted via e.g. `glfw.Joystick{.jid = .one}`, but more
|
||||||
//! typically you'll want to discover the joystick using `glfw.Joystick.setCallback`.
|
//! typically you'll want to discover the joystick using `glfw.Joystick.setCallback`.
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
@ -16,32 +16,33 @@ const Hat = @import("hat.zig").Hat;
|
||||||
|
|
||||||
const internal_debug = @import("internal_debug.zig");
|
const internal_debug = @import("internal_debug.zig");
|
||||||
|
|
||||||
// TODO: Consider making 'Joystick' into an enum, to be able to make guarantees for no 'InvalidEnum' errors.
|
|
||||||
const Joystick = @This();
|
const Joystick = @This();
|
||||||
|
|
||||||
/// The GLFW joystick ID.
|
/// The GLFW joystick ID.
|
||||||
jid: c_int,
|
jid: Id,
|
||||||
|
|
||||||
/// Joystick IDs.
|
/// Joystick IDs.
|
||||||
///
|
///
|
||||||
/// See glfw.Joystick.setCallback for how these are used.
|
/// See glfw.Joystick.setCallback for how these are used.
|
||||||
pub const one = c.GLFW_JOYSTICK_1;
|
pub const Id = enum(c_int) {
|
||||||
pub const two = c.GLFW_JOYSTICK_2;
|
one = c.GLFW_JOYSTICK_1,
|
||||||
pub const three = c.GLFW_JOYSTICK_3;
|
two = c.GLFW_JOYSTICK_2,
|
||||||
pub const four = c.GLFW_JOYSTICK_4;
|
three = c.GLFW_JOYSTICK_3,
|
||||||
pub const five = c.GLFW_JOYSTICK_5;
|
four = c.GLFW_JOYSTICK_4,
|
||||||
pub const six = c.GLFW_JOYSTICK_6;
|
five = c.GLFW_JOYSTICK_5,
|
||||||
pub const seven = c.GLFW_JOYSTICK_7;
|
six = c.GLFW_JOYSTICK_6,
|
||||||
pub const eight = c.GLFW_JOYSTICK_8;
|
seven = c.GLFW_JOYSTICK_7,
|
||||||
pub const nine = c.GLFW_JOYSTICK_9;
|
eight = c.GLFW_JOYSTICK_8,
|
||||||
pub const ten = c.GLFW_JOYSTICK_10;
|
nine = c.GLFW_JOYSTICK_9,
|
||||||
pub const eleven = c.GLFW_JOYSTICK_11;
|
ten = c.GLFW_JOYSTICK_10,
|
||||||
pub const twelve = c.GLFW_JOYSTICK_12;
|
eleven = c.GLFW_JOYSTICK_11,
|
||||||
pub const thirteen = c.GLFW_JOYSTICK_13;
|
twelve = c.GLFW_JOYSTICK_12,
|
||||||
pub const fourteen = c.GLFW_JOYSTICK_14;
|
thirteen = c.GLFW_JOYSTICK_13,
|
||||||
pub const fifteen = c.GLFW_JOYSTICK_15;
|
fourteen = c.GLFW_JOYSTICK_14,
|
||||||
pub const sixteen = c.GLFW_JOYSTICK_16;
|
fifteen = c.GLFW_JOYSTICK_15,
|
||||||
pub const last = c.GLFW_JOYSTICK_LAST;
|
sixteen = c.GLFW_JOYSTICK_16,
|
||||||
|
pub const last = @intToEnum(@This(), c.GLFW_JOYSTICK_LAST);
|
||||||
|
};
|
||||||
|
|
||||||
/// Gamepad input state
|
/// Gamepad input state
|
||||||
///
|
///
|
||||||
|
|
@ -88,11 +89,10 @@ const GamepadState = extern struct {
|
||||||
/// see also: joystick
|
/// see also: joystick
|
||||||
pub inline fn present(self: Joystick) Error!bool {
|
pub inline fn present(self: Joystick) Error!bool {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const is_present = c.glfwJoystickPresent(self.jid);
|
const is_present = c.glfwJoystickPresent(@enumToInt(self.jid));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
return is_present == c.GLFW_TRUE;
|
return is_present == c.GLFW_TRUE;
|
||||||
|
|
@ -121,11 +121,10 @@ pub inline fn present(self: Joystick) Error!bool {
|
||||||
pub inline fn getAxes(self: Joystick) Error!?[]const f32 {
|
pub inline fn getAxes(self: Joystick) Error!?[]const f32 {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
var count: c_int = undefined;
|
var count: c_int = undefined;
|
||||||
const axes = c.glfwGetJoystickAxes(self.jid, &count);
|
const axes = c.glfwGetJoystickAxes(@enumToInt(self.jid), &count);
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
if (axes == null) return null;
|
if (axes == null) return null;
|
||||||
|
|
@ -159,11 +158,10 @@ pub inline fn getAxes(self: Joystick) Error!?[]const f32 {
|
||||||
pub inline fn getButtons(self: Joystick) Error!?[]const u8 {
|
pub inline fn getButtons(self: Joystick) Error!?[]const u8 {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
var count: c_int = undefined;
|
var count: c_int = undefined;
|
||||||
const buttons = c.glfwGetJoystickButtons(self.jid, &count);
|
const buttons = c.glfwGetJoystickButtons(@enumToInt(self.jid), &count);
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
if (buttons == null) return null;
|
if (buttons == null) return null;
|
||||||
|
|
@ -213,11 +211,10 @@ pub inline fn getButtons(self: Joystick) Error!?[]const u8 {
|
||||||
pub inline fn getHats(self: Joystick) Error!?[]const Hat {
|
pub inline fn getHats(self: Joystick) Error!?[]const Hat {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
var count: c_int = undefined;
|
var count: c_int = undefined;
|
||||||
const hats = c.glfwGetJoystickHats(self.jid, &count);
|
const hats = c.glfwGetJoystickHats(@enumToInt(self.jid), &count);
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
if (hats == null) return null;
|
if (hats == null) return null;
|
||||||
|
|
@ -246,11 +243,10 @@ pub inline fn getHats(self: Joystick) Error!?[]const Hat {
|
||||||
/// see also: joystick_name
|
/// see also: joystick_name
|
||||||
pub inline fn getName(self: Joystick) Error!?[:0]const u8 {
|
pub inline fn getName(self: Joystick) Error!?[:0]const u8 {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const name_opt = c.glfwGetJoystickName(self.jid);
|
const name_opt = c.glfwGetJoystickName(@enumToInt(self.jid));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
return if (name_opt) |name|
|
return if (name_opt) |name|
|
||||||
|
|
@ -288,11 +284,10 @@ pub inline fn getName(self: Joystick) Error!?[:0]const u8 {
|
||||||
/// see also: gamepad
|
/// see also: gamepad
|
||||||
pub inline fn getGUID(self: Joystick) Error!?[:0]const u8 {
|
pub inline fn getGUID(self: Joystick) Error!?[:0]const u8 {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const guid_opt = c.glfwGetJoystickGUID(self.jid);
|
const guid_opt = c.glfwGetJoystickGUID(@enumToInt(self.jid));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.PlatformError,
|
Error.PlatformError => err,
|
||||||
=> err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
return if (guid_opt) |guid|
|
return if (guid_opt) |guid|
|
||||||
|
|
@ -311,9 +306,9 @@ pub inline fn getGUID(self: Joystick) Error!?[:0]const u8 {
|
||||||
/// @thread_safety This function may be called from any thread. Access is not synchronized.
|
/// @thread_safety This function may be called from any thread. Access is not synchronized.
|
||||||
///
|
///
|
||||||
/// see also: joystick_userptr, glfw.Joystick.getUserPointer
|
/// see also: joystick_userptr, glfw.Joystick.getUserPointer
|
||||||
pub inline fn setUserPointer(self: Joystick, comptime T: type, pointer: *T) void {
|
pub inline fn setUserPointer(self: Joystick, comptime T: type, pointer: *T) void {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
c.glfwSetJoystickUserPointer(self.jid, @ptrCast(*c_void, pointer));
|
c.glfwSetJoystickUserPointer(@enumToInt(self.jid), @ptrCast(*c_void, pointer));
|
||||||
getError() catch unreachable; // Only error 'GLFW_NOT_INITIALIZED' is impossible
|
getError() catch unreachable; // Only error 'GLFW_NOT_INITIALIZED' is impossible
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,7 +325,7 @@ pub inline fn setUserPointer(self: Joystick, comptime T: type, pointer: *T) void
|
||||||
/// see also: joystick_userptr, glfw.Joystick.setUserPointer
|
/// see also: joystick_userptr, glfw.Joystick.setUserPointer
|
||||||
pub inline fn getUserPointer(self: Joystick, comptime PointerType: type) ?PointerType {
|
pub inline fn getUserPointer(self: Joystick, comptime PointerType: type) ?PointerType {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const ptr = c.glfwGetJoystickUserPointer(self.jid);
|
const ptr = c.glfwGetJoystickUserPointer(@enumToInt(self.jid));
|
||||||
getError() catch unreachable; // Only error 'GLFW_NOT_INITIALIZED' is impossible
|
getError() catch unreachable; // Only error 'GLFW_NOT_INITIALIZED' is impossible
|
||||||
if (ptr) |p| return @ptrCast(PointerType, @alignCast(@alignOf(std.meta.Child(PointerType)), p));
|
if (ptr) |p| return @ptrCast(PointerType, @alignCast(@alignOf(std.meta.Child(PointerType)), p));
|
||||||
return null;
|
return null;
|
||||||
|
|
@ -348,7 +343,7 @@ pub const Event = enum(c_int) {
|
||||||
var _callback: ?fn (joystick: Joystick, event: Event) void = null;
|
var _callback: ?fn (joystick: Joystick, event: Event) void = null;
|
||||||
|
|
||||||
fn callbackWrapper(jid: c_int, event: c_int) callconv(.C) void {
|
fn callbackWrapper(jid: c_int, event: c_int) callconv(.C) void {
|
||||||
_callback.?(Joystick{ .jid = jid }, @intToEnum(Event, event));
|
_callback.?(Joystick{ .jid = @intToEnum(Joystick.Id, jid) }, @intToEnum(Event, event));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sets the joystick configuration callback.
|
/// Sets the joystick configuration callback.
|
||||||
|
|
@ -406,7 +401,7 @@ pub inline fn updateGamepadMappings(gamepad_mappings: [*:0]const u8) Error!void
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
_ = c.glfwUpdateGamepadMappings(gamepad_mappings);
|
_ = c.glfwUpdateGamepadMappings(gamepad_mappings);
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidValue => err,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -428,14 +423,11 @@ pub inline fn updateGamepadMappings(gamepad_mappings: [*:0]const u8) Error!void
|
||||||
/// see also: gamepad, glfw.Joystick.getGamepadState
|
/// see also: gamepad, glfw.Joystick.getGamepadState
|
||||||
pub inline fn isGamepad(self: Joystick) bool {
|
pub inline fn isGamepad(self: Joystick) bool {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const is_gamepad = c.glfwJoystickIsGamepad(self.jid);
|
const is_gamepad = c.glfwJoystickIsGamepad(@enumToInt(self.jid));
|
||||||
|
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
// TODO: See 'todo' at top of this file; this shouldn't be reached unless the Joystick ID is intentionally invalid.
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
Error.InvalidEnum => unreachable,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
|
|
||||||
return is_gamepad == c.GLFW_TRUE;
|
return is_gamepad == c.GLFW_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -460,12 +452,9 @@ pub inline fn isGamepad(self: Joystick) bool {
|
||||||
/// see also: gamepad, glfw.Joystick.isGamepad
|
/// see also: gamepad, glfw.Joystick.isGamepad
|
||||||
pub inline fn getGamepadName(self: Joystick) Error!?[:0]const u8 {
|
pub inline fn getGamepadName(self: Joystick) Error!?[:0]const u8 {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
const name_opt = c.glfwGetGamepadName(self.jid);
|
const name_opt = c.glfwGetGamepadName(@enumToInt(self.jid));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
// TODO: See 'todo' at top of file concerning making 'Joystick' into an enum to make 'InvalidEnum' unreachable
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
// Note: GLFW documentation doesn't list an error for this function, but source does set 'GLFW_NOT_INITIALIZED'
|
|
||||||
// and 'GLFW_INVALID_ENUM'.
|
|
||||||
Error.InvalidEnum => err,
|
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
return if (name_opt) |name|
|
return if (name_opt) |name|
|
||||||
|
|
@ -501,9 +490,9 @@ pub inline fn getGamepadName(self: Joystick) Error!?[:0]const u8 {
|
||||||
pub inline fn getGamepadState(self: Joystick) Error!?GamepadState {
|
pub inline fn getGamepadState(self: Joystick) Error!?GamepadState {
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
var state: GamepadState = undefined;
|
var state: GamepadState = undefined;
|
||||||
const success = c.glfwGetGamepadState(self.jid, @ptrCast(*c.GLFWgamepadstate, &state));
|
const success = c.glfwGetGamepadState(@enumToInt(self.jid), @ptrCast(*c.GLFWgamepadstate, &state));
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum => err,
|
Error.InvalidEnum => unreachable, // intentionally invalid enum value
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
return if (success == c.GLFW_TRUE) state else null;
|
return if (success == c.GLFW_TRUE) state else null;
|
||||||
|
|
@ -514,7 +503,7 @@ test "present" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.present() catch |err| std.debug.print("failed to detect joystick, joysticks not supported? error={}\n", .{err});
|
_ = joystick.present() catch |err| std.debug.print("failed to detect joystick, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
@ -524,7 +513,7 @@ test "getAxes" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.getAxes() catch |err| std.debug.print("failed to get joystick axes, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getAxes() catch |err| std.debug.print("failed to get joystick axes, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
@ -534,7 +523,7 @@ test "getButtons" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.getButtons() catch |err| std.debug.print("failed to get joystick buttons, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getButtons() catch |err| std.debug.print("failed to get joystick buttons, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
@ -544,7 +533,7 @@ test "getHats" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.getHats() catch |err| std.debug.print("failed to get joystick hats, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getHats() catch |err| std.debug.print("failed to get joystick hats, joysticks not supported? error={}\n", .{err});
|
||||||
const hats = std.mem.zeroes(Hat);
|
const hats = std.mem.zeroes(Hat);
|
||||||
|
|
@ -558,7 +547,7 @@ test "getName" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.getName() catch |err| std.debug.print("failed to get joystick name, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getName() catch |err| std.debug.print("failed to get joystick name, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
@ -568,7 +557,7 @@ test "getGUID" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
_ = joystick.getGUID() catch |err| std.debug.print("failed to get joystick GUID, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getGUID() catch |err| std.debug.print("failed to get joystick GUID, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
@ -578,7 +567,7 @@ test "setUserPointer_syntax" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
// Must be called from joystick callback, we cannot test it.
|
// Must be called from joystick callback, we cannot test it.
|
||||||
_ = joystick.setUserPointer;
|
_ = joystick.setUserPointer;
|
||||||
|
|
@ -589,7 +578,7 @@ test "getUserPointer_syntax" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
|
|
||||||
// Must be called from joystick callback, we cannot test it.
|
// Must be called from joystick callback, we cannot test it.
|
||||||
_ = joystick.getUserPointer;
|
_ = joystick.getUserPointer;
|
||||||
|
|
@ -618,7 +607,7 @@ test "isGamepad" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
_ = joystick.isGamepad();
|
_ = joystick.isGamepad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -627,7 +616,7 @@ test "getGamepadName" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
_ = joystick.getGamepadName() catch |err| std.debug.print("failed to get gamepad name, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getGamepadName() catch |err| std.debug.print("failed to get gamepad name, joysticks not supported? error={}\n", .{err});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -636,7 +625,7 @@ test "getGamepadState" {
|
||||||
try glfw.init(.{});
|
try glfw.init(.{});
|
||||||
defer glfw.terminate();
|
defer glfw.terminate();
|
||||||
|
|
||||||
const joystick = glfw.Joystick{ .jid = glfw.Joystick.one };
|
const joystick = glfw.Joystick{ .jid = .one };
|
||||||
_ = joystick.getGamepadState() catch |err| std.debug.print("failed to get gamepad state, joysticks not supported? error={}\n", .{err});
|
_ = joystick.getGamepadState() catch |err| std.debug.print("failed to get gamepad state, joysticks not supported? error={}\n", .{err});
|
||||||
_ = (std.mem.zeroes(GamepadState)).getAxis(.left_x);
|
_ = (std.mem.zeroes(GamepadState)).getAxis(.left_x);
|
||||||
_ = (std.mem.zeroes(GamepadState)).getButton(.dpad_up);
|
_ = (std.mem.zeroes(GamepadState)).getButton(.dpad_up);
|
||||||
|
|
|
||||||
|
|
@ -416,7 +416,7 @@ pub inline fn create(width: usize, height: usize, title: [*:0]const u8, monitor:
|
||||||
if (monitor) |m| m.handle else null,
|
if (monitor) |m| m.handle else null,
|
||||||
if (share) |w| w.handle else null,
|
if (share) |w| w.handle else null,
|
||||||
);
|
);
|
||||||
|
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.InvalidEnum,
|
Error.InvalidEnum,
|
||||||
Error.InvalidValue,
|
Error.InvalidValue,
|
||||||
|
|
@ -462,7 +462,7 @@ pub inline fn destroy(self: Window) void {
|
||||||
// Zig, so by returning an error we'd make it harder to destroy the window properly. So we differ
|
// Zig, so by returning an error we'd make it harder to destroy the window properly. So we differ
|
||||||
// from GLFW here: we discard any potential error from this operation.
|
// from GLFW here: we discard any potential error from this operation.
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.PlatformError => std.log.debug("{}: was unable to destroy Window.\n", .{ err }),
|
Error.PlatformError => std.log.debug("{}: was unable to destroy Window.\n", .{err}),
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ pub inline fn init(hints: InitHints) Error!void {
|
||||||
internal_debug.toggleInitialized();
|
internal_debug.toggleInitialized();
|
||||||
internal_debug.assertInitialized();
|
internal_debug.assertInitialized();
|
||||||
errdefer internal_debug.toggleInitialized();
|
errdefer internal_debug.toggleInitialized();
|
||||||
|
|
||||||
inline for (comptime std.meta.fieldNames(InitHints)) |field_name| {
|
inline for (comptime std.meta.fieldNames(InitHints)) |field_name| {
|
||||||
const init_hint = @field(InitHint, field_name);
|
const init_hint = @field(InitHint, field_name);
|
||||||
const init_value = @field(hints, field_name);
|
const init_value = @field(hints, field_name);
|
||||||
|
|
@ -70,7 +70,7 @@ pub inline fn init(hints: InitHints) Error!void {
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = c.glfwInit();
|
_ = c.glfwInit();
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
Error.PlatformError => err,
|
Error.PlatformError => err,
|
||||||
|
|
@ -318,7 +318,7 @@ pub inline fn waitEventsTimeout(timeout: f64) Error!void {
|
||||||
getError() catch |err| return switch (err) {
|
getError() catch |err| return switch (err) {
|
||||||
// TODO: Consider whether to catch 'GLFW_INVALID_VALUE' from GLFW, or assert that 'timeout' is positive here, in the same manner as GLFW,
|
// TODO: Consider whether to catch 'GLFW_INVALID_VALUE' from GLFW, or assert that 'timeout' is positive here, in the same manner as GLFW,
|
||||||
// and make its branch unreachable.
|
// and make its branch unreachable.
|
||||||
Error.InvalidValue,
|
Error.InvalidValue,
|
||||||
Error.PlatformError,
|
Error.PlatformError,
|
||||||
=> err,
|
=> err,
|
||||||
else => unreachable,
|
else => unreachable,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue