62 lines
2.5 KiB
Zig
62 lines
2.5 KiB
Zig
const std = @import("std");
|
|
pub const c = @import("c.zig").c;
|
|
|
|
pub const AsyncIO = opaque {
|
|
pub inline fn getAsyncIOSize(asyncio: *AsyncIO) i64 {
|
|
return c.SDL_GetAsyncIOSize(asyncio);
|
|
}
|
|
|
|
pub inline fn readAsyncIO(asyncio: *AsyncIO, ptr: ?*anyopaque, offset: u64, size: u64, queue: ?*AsyncIOQueue, userdata: ?*anyopaque) bool {
|
|
return c.SDL_ReadAsyncIO(asyncio, ptr, offset, size, queue, userdata);
|
|
}
|
|
|
|
pub inline fn writeAsyncIO(asyncio: *AsyncIO, ptr: ?*anyopaque, offset: u64, size: u64, queue: ?*AsyncIOQueue, userdata: ?*anyopaque) bool {
|
|
return c.SDL_WriteAsyncIO(asyncio, ptr, offset, size, queue, userdata);
|
|
}
|
|
|
|
pub inline fn closeAsyncIO(asyncio: *AsyncIO, flush: bool, queue: ?*AsyncIOQueue, userdata: ?*anyopaque) bool {
|
|
return c.SDL_CloseAsyncIO(asyncio, flush, queue, userdata);
|
|
}
|
|
};
|
|
|
|
pub const AsyncIOOutcome = extern struct {
|
|
asyncio: ?*AsyncIO, // what generated this task. This pointer will be invalid if it was closed!
|
|
type: AsyncIOTaskType, // What sort of task was this? Read, write, etc?
|
|
result: AsyncIOResult, // the result of the work (success, failure, cancellation).
|
|
buffer: ?*anyopaque, // buffer where data was read/written.
|
|
offset: u64, // offset in the SDL_AsyncIO where data was read/written.
|
|
bytes_requested: u64, // number of bytes the task was to read/write.
|
|
bytes_transferred: u64, // actual number of bytes that were read/written.
|
|
userdata: ?*anyopaque, // pointer provided by the app when starting the task
|
|
};
|
|
|
|
pub const AsyncIOQueue = opaque {
|
|
pub inline fn destroyAsyncIOQueue(asyncioqueue: *AsyncIOQueue) void {
|
|
return c.SDL_DestroyAsyncIOQueue(asyncioqueue);
|
|
}
|
|
|
|
pub inline fn getAsyncIOResult(asyncioqueue: *AsyncIOQueue, outcome: ?*AsyncIOOutcome) bool {
|
|
return c.SDL_GetAsyncIOResult(asyncioqueue, outcome);
|
|
}
|
|
|
|
pub inline fn waitAsyncIOResult(asyncioqueue: *AsyncIOQueue, outcome: ?*AsyncIOOutcome, timeoutMS: i32) bool {
|
|
return c.SDL_WaitAsyncIOResult(asyncioqueue, outcome, timeoutMS);
|
|
}
|
|
|
|
pub inline fn signalAsyncIOQueue(asyncioqueue: *AsyncIOQueue) void {
|
|
return c.SDL_SignalAsyncIOQueue(asyncioqueue);
|
|
}
|
|
};
|
|
|
|
pub inline fn asyncIOFromFile(file: [*c]const u8, mode: [*c]const u8) ?*AsyncIO {
|
|
return c.SDL_AsyncIOFromFile(file, mode);
|
|
}
|
|
|
|
pub inline fn createAsyncIOQueue() ?*AsyncIOQueue {
|
|
return c.SDL_CreateAsyncIOQueue();
|
|
}
|
|
|
|
pub inline fn loadFileAsync(file: [*c]const u8, queue: ?*AsyncIOQueue, userdata: ?*anyopaque) bool {
|
|
return c.SDL_LoadFileAsync(file, queue, userdata);
|
|
}
|