adding serializer

This commit is contained in:
Kbz-8
2025-10-24 17:57:28 +02:00
parent f52052da90
commit faacb7ced1
6 changed files with 94 additions and 2 deletions

37
src/Serializer.zig git.filemode.normal_file
View File

@@ -0,0 +1,37 @@
const std = @import("std");
const Module = @import("Module.zig");
const cnzsl = @cImport({
@cInclude("CNZSL/CNZSL.h");
});
const Self = @This();
instance: *cnzsl.nzslSerializer,
pub fn init() !Self {
const cserializer = cnzsl.nzslSerializerCreate() orelse return error.NullPointer;
return .{
.instance = cserializer,
};
}
pub fn deinit(self: Self) void {
cnzsl.nzslSerializerDestroy(self.instance);
}
pub fn serializeShader(self: Self, module: Module) !void {
if (cnzsl.nzslSerializeShader(self.instance, @ptrCast(module.instance)) == 0) {
return error.FailedToSerializeShader;
}
}
pub fn getData(self: Self) []const u8 {
var size: usize = undefined;
const code: [*c]const u8 = @ptrCast(cnzsl.nzslSerializerGetData(self.instance, &size));
return code[0..size];
}
pub fn getLastError(self: Self) ![]const u8 {
const err = cnzsl.nzslSerializerGetLastError(@ptrCast(self.instance)) orelse return error.NullPointer;
return std.mem.span(err);
}