sdlparser-scrap/api/storage.zig

98 lines
4.0 KiB
Zig

const std = @import("std");
pub const c = @import("c.zig").c;
const filesystem_api = @import("filesystem.zig");
const stdinc_api = @import("stdinc.zig");
const properties_api = @import("properties.zig");
pub const PathInfo = filesystem_api.PathInfo;
pub const PathType = filesystem_api.PathType;
pub const Time = stdinc_api.Time;
pub const GlobFlags = filesystem_api.GlobFlags;
pub const EnumerateDirectoryCallback = filesystem_api.EnumerateDirectoryCallback;
pub const PropertiesID = properties_api.PropertiesID;
pub const StorageInterface = extern struct {
version: u32,
close: ?*const anyopaque,
ready: ?*const anyopaque,
enumerate: ?*const anyopaque,
info: ?*const anyopaque,
read_file: ?*const anyopaque,
write_file: ?*const anyopaque,
mkdir: ?*const anyopaque,
remove: ?*const anyopaque,
rename: ?*const anyopaque,
copy: ?*const anyopaque,
space_remaining: ?*const anyopaque,
};
pub const Storage = opaque {
pub inline fn closeStorage(storage: *Storage) bool {
return @bitCast(c.SDL_CloseStorage(@ptrCast(storage)));
}
pub inline fn storageReady(storage: *Storage) bool {
return @bitCast(c.SDL_StorageReady(@ptrCast(storage)));
}
pub inline fn getStorageFileSize(storage: *Storage, path: [*c]const u8, length: *u64) bool {
return @bitCast(c.SDL_GetStorageFileSize(@ptrCast(storage), path, @ptrCast(length)));
}
pub inline fn readStorageFile(storage: *Storage, path: [*c]const u8, destination: ?*anyopaque, length: u64) bool {
return @bitCast(c.SDL_ReadStorageFile(@ptrCast(storage), path, destination, length));
}
pub inline fn writeStorageFile(storage: *Storage, path: [*c]const u8, source: ?*const anyopaque, length: u64) bool {
return @bitCast(c.SDL_WriteStorageFile(@ptrCast(storage), path, source, length));
}
pub inline fn createStorageDirectory(storage: *Storage, path: [*c]const u8) bool {
return @bitCast(c.SDL_CreateStorageDirectory(@ptrCast(storage), path));
}
pub inline fn enumerateStorageDirectory(storage: *Storage, path: [*c]const u8, callback: EnumerateDirectoryCallback, userdata: ?*anyopaque) bool {
return @bitCast(c.SDL_EnumerateStorageDirectory(@ptrCast(storage), path, callback, userdata));
}
pub inline fn removeStoragePath(storage: *Storage, path: [*c]const u8) bool {
return @bitCast(c.SDL_RemoveStoragePath(@ptrCast(storage), path));
}
pub inline fn renameStoragePath(storage: *Storage, oldpath: [*c]const u8, newpath: [*c]const u8) bool {
return @bitCast(c.SDL_RenameStoragePath(@ptrCast(storage), oldpath, newpath));
}
pub inline fn copyStorageFile(storage: *Storage, oldpath: [*c]const u8, newpath: [*c]const u8) bool {
return @bitCast(c.SDL_CopyStorageFile(@ptrCast(storage), oldpath, newpath));
}
pub inline fn getStoragePathInfo(storage: *Storage, path: [*c]const u8, info: ?*PathInfo) bool {
return @bitCast(c.SDL_GetStoragePathInfo(@ptrCast(storage), path, @ptrCast(info)));
}
pub inline fn getStorageSpaceRemaining(storage: *Storage) u64 {
return c.SDL_GetStorageSpaceRemaining(@ptrCast(storage));
}
pub inline fn globStorageDirectory(storage: *Storage, path: [*c]const u8, pattern: [*c]const u8, flags: GlobFlags, count: *c_int) [*c][*c]u8 {
return c.SDL_GlobStorageDirectory(@ptrCast(storage), path, pattern, @bitCast(flags), @ptrCast(count));
}
};
pub inline fn openTitleStorage(override: [*c]const u8, props: PropertiesID) ?*Storage {
return @ptrCast(c.SDL_OpenTitleStorage(override, props));
}
pub inline fn openUserStorage(org: [*c]const u8, app: [*c]const u8, props: PropertiesID) ?*Storage {
return @ptrCast(c.SDL_OpenUserStorage(org, app, props));
}
pub inline fn openFileStorage(path: [*c]const u8) ?*Storage {
return @ptrCast(c.SDL_OpenFileStorage(path));
}
pub inline fn openStorage(iface: ?*const StorageInterface, userdata: ?*anyopaque) ?*Storage {
return @ptrCast(c.SDL_OpenStorage(@ptrCast(iface), userdata));
}