Files
spacefarer/utils/sdl_translator.zig
2025-06-15 16:36:06 +05:00

50 lines
1.3 KiB
Zig

const std = @import("std");
const sdl = @cImport({
@cInclude("SDL3/SDL.h");
});
const PREFIX = "SDL_";
pub fn main() !void {
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
defer _ = gpa.deinit();
var arena = std.heap.ArenaAllocator.init(gpa.allocator());
defer arena.deinit();
const alloc = arena.allocator();
var arg_iter = try std.process.argsWithAllocator(alloc);
_ = arg_iter.next();
const output = arg_iter.next().?;
const file = if (std.fs.path.isAbsolute(output))
try std.fs.createFileAbsolute(output, .{})
else
try std.fs.cwd().createFile(output, .{});
defer file.close();
const writer = file.writer();
const stdout = std.io.getStdOut();
defer stdout.close();
const out = stdout.writer();
var renamed_count: usize = 0;
for (@typeInfo(sdl).@"struct".decls) |decl| {
if (!std.mem.startsWith(u8, decl.name, PREFIX)) continue;
const new_name: []const u8 = decl.name[PREFIX.len..];
try writer.print(
\\#define {1s} {0s}
\\
, .{ decl.name, new_name });
renamed_count += 1;
}
if (renamed_count == 0) {
@panic("No SDL definitions renamed");
}
try out.print("[SDL Translator] {} SDL definitions renamed\n", .{renamed_count});
}