const std = @import("std"); pub const c = @import("c.zig").c; pub const SpinLock = c_int; pub inline fn tryLockSpinlock(lock: ?*SpinLock) bool { return c.SDL_TryLockSpinlock(lock); } pub inline fn lockSpinlock(lock: ?*SpinLock) void { return c.SDL_LockSpinlock(lock); } pub inline fn unlockSpinlock(lock: ?*SpinLock) void { return c.SDL_UnlockSpinlock(lock); } pub inline fn memoryBarrierReleaseFunction() void { return c.SDL_MemoryBarrierReleaseFunction(); } pub inline fn memoryBarrierAcquireFunction() void { return c.SDL_MemoryBarrierAcquireFunction(); } pub const KernelMemoryBarrierFunc = *const fn () callconv(.C) void; pub const AtomicInt = extern struct {}; pub inline fn compareAndSwapAtomicInt(a: ?*AtomicInt, oldval: c_int, newval: c_int) bool { return c.SDL_CompareAndSwapAtomicInt(a, oldval, newval); } pub inline fn setAtomicInt(a: ?*AtomicInt, v: c_int) c_int { return c.SDL_SetAtomicInt(a, v); } pub inline fn getAtomicInt(a: ?*AtomicInt) c_int { return c.SDL_GetAtomicInt(a); } pub inline fn addAtomicInt(a: ?*AtomicInt, v: c_int) c_int { return c.SDL_AddAtomicInt(a, v); } pub const AtomicU32 = extern struct {}; pub inline fn compareAndSwapAtomicU32(a: ?*AtomicU32, oldval: u32, newval: u32) bool { return c.SDL_CompareAndSwapAtomicU32(a, oldval, newval); } pub inline fn setAtomicU32(a: ?*AtomicU32, v: u32) u32 { return c.SDL_SetAtomicU32(a, v); } pub inline fn getAtomicU32(a: ?*AtomicU32) u32 { return c.SDL_GetAtomicU32(a); } pub inline fn compareAndSwapAtomicPointer(a: [*c]?*anyopaque, oldval: ?*anyopaque, newval: ?*anyopaque) bool { return c.SDL_CompareAndSwapAtomicPointer(a, oldval, newval); } pub inline fn setAtomicPointer(a: [*c]?*anyopaque, v: ?*anyopaque) ?*anyopaque { return c.SDL_SetAtomicPointer(a, v); } pub inline fn getAtomicPointer(a: [*c]?*anyopaque) ?*anyopaque { return c.SDL_GetAtomicPointer(a); }