+ All Binding done
This commit is contained in:
44
src/Parser.zig
git.filemode.normal_file
44
src/Parser.zig
git.filemode.normal_file
@@ -0,0 +1,44 @@
|
||||
const cnzsl = @import("nzsl-c.zig");
|
||||
const nzsl = @import("lib.zig");
|
||||
const std = @import("std");
|
||||
|
||||
pub fn parseSource(source: []const u8) !nzsl.Module {
|
||||
return parseSourceWithFilePath(source, "");
|
||||
}
|
||||
|
||||
/// Parse a NZSL source code and stores it inside a nzslModule
|
||||
/// In case of failure, a negative value is returned and an error code is set
|
||||
///
|
||||
/// @param module pointer to a
|
||||
/// @param source pointer to NZSL source
|
||||
/// @param sourceLen length of source in characters
|
||||
/// @param filePath used when reporting errors
|
||||
/// @param filePathLen length of filePath in characters
|
||||
/// @return 0 if parsing succeeded and a negative value in case of failure
|
||||
///
|
||||
/// @see nzslModuleGetLastError
|
||||
pub fn parseSourceWithFilePath(source: []const u8, filePath: []const u8) !nzsl.Module {
|
||||
const module = nzsl.Module.create();
|
||||
|
||||
if(cnzsl.nzslParserParseSourceWithFilePath(module.instance, source.ptr, source.len, filePath.ptr, filePath.len) != 0) {
|
||||
defer module.release();
|
||||
std.log.err("Error while parsing source({s}): {s}", .{ filePath, module.getLastError() });
|
||||
|
||||
return error.FailedToParse;
|
||||
}
|
||||
|
||||
return module;
|
||||
}
|
||||
|
||||
pub fn parseFromFile(filePath: []const u8) !nzsl.Module {
|
||||
const module = nzsl.Module.create();
|
||||
|
||||
if(cnzsl.nzslParserParseFromFile(module.instance, filePath.ptr, filePath.len) != 0) {
|
||||
defer module.release();
|
||||
std.log.err("Error while parsing source: {s}", .{ module.getLastError() });
|
||||
|
||||
return error.FailedToParse;
|
||||
}
|
||||
|
||||
return module;
|
||||
}
|
||||
Reference in New Issue
Block a user