38 lines
1011 B
Zig
38 lines
1011 B
Zig
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);
|
|
}
|