`getError()` now returns a struct `Error` containing `error_code` and
`description`. Rationale: retrieving the error code with the previous
implementation of `getError()` caused `getErrorString()` to return
null (the reverse is also true). The new implementation allows both
values to be retrieved at once.
The previous `getError()` function has been renamed to
`getErrorCode()` to reflect the fact that it returns a simple Zig
error rather than the `Error` struct. The error set returned by
`getErrorCode()` is now named `ErrorCode` rather than `Error`.
The behavior of the `getError()` family of functions clearing the
stored error is unchanged. However, since all code that used
`defer glfw.getError() catch {}` to explicitly clear errors had to be
refactored, a new `glfw.clearError()` function that returns void is
now available to make this operation more explicit.
Additionally, `mustGetError()` is now `mustGetErrorCode()`, and new
functions `mustGetError()` and `mustGetErrorString()` have been added
which wrap `getError()` and `getErrorString()` but panic if no error
is actually available.
Tests and API documentation had to be refactored across all of
`mach/glfw`. This commit also takes the opportunity to skip tests
involving window creation on CI so that other tests may still execute
normally.
71 lines
2.5 KiB
Zig
71 lines
2.5 KiB
Zig
const std = @import("std");
|
|
|
|
const c = @import("c.zig").c;
|
|
|
|
const internal_debug = @import("internal_debug.zig");
|
|
|
|
/// Sets the clipboard to the specified string.
|
|
///
|
|
/// This function sets the system clipboard to the specified, UTF-8 encoded string.
|
|
///
|
|
/// @param[in] string A UTF-8 encoded string.
|
|
///
|
|
/// Possible errors include glfw.ErrorCode.PlatformError.
|
|
///
|
|
/// @pointer_lifetime The specified string is copied before this function returns.
|
|
///
|
|
/// @thread_safety This function must only be called from the main thread.
|
|
///
|
|
/// see also: clipboard, glfwGetClipboardString
|
|
pub inline fn setClipboardString(value: [*:0]const u8) void {
|
|
internal_debug.assertInitialized();
|
|
c.glfwSetClipboardString(null, value);
|
|
}
|
|
|
|
/// Returns the contents of the clipboard as a string.
|
|
///
|
|
/// This function returns the contents of the system clipboard, if it contains or is convertible to
|
|
/// a UTF-8 encoded string. If the clipboard is empty or if its contents cannot be converted,
|
|
/// glfw.ErrorCode.FormatUnavailable is returned.
|
|
///
|
|
/// @return The contents of the clipboard as a UTF-8 encoded string.
|
|
///
|
|
/// Possible errors include glfw.ErrorCode.FormatUnavailable and glfw.ErrorCode.PlatformError.
|
|
/// null is returned in the event of an error.
|
|
///
|
|
/// @pointer_lifetime The returned string is allocated and freed by GLFW. You should not free it
|
|
/// yourself. It is valid until the next call to glfw.getClipboardString or glfw.setClipboardString
|
|
/// or until the library is terminated.
|
|
///
|
|
/// @thread_safety This function must only be called from the main thread.
|
|
///
|
|
/// see also: clipboard, glfwSetClipboardString
|
|
pub inline fn getClipboardString() ?[:0]const u8 {
|
|
internal_debug.assertInitialized();
|
|
if (c.glfwGetClipboardString(null)) |c_str| return std.mem.span(@ptrCast([*:0]const u8, c_str));
|
|
return null;
|
|
}
|
|
|
|
test "setClipboardString" {
|
|
const glfw = @import("main.zig");
|
|
defer glfw.clearError(); // clear any error we generate
|
|
if (!glfw.init(.{})) {
|
|
std.log.err("failed to initialize GLFW: {?s}", .{glfw.getErrorString()});
|
|
std.process.exit(1);
|
|
}
|
|
defer glfw.terminate();
|
|
|
|
glfw.setClipboardString("hello mach");
|
|
}
|
|
|
|
test "getClipboardString" {
|
|
const glfw = @import("main.zig");
|
|
defer glfw.clearError(); // clear any error we generate
|
|
if (!glfw.init(.{})) {
|
|
std.log.err("failed to initialize GLFW: {?s}", .{glfw.getErrorString()});
|
|
std.process.exit(1);
|
|
}
|
|
defer glfw.terminate();
|
|
|
|
_ = glfw.getClipboardString();
|
|
}
|