mirror of
https://github.com/ziglang/zig.git
synced 2026-01-20 14:25:16 +00:00
parent
712274997e
commit
535d419590
@ -959,3 +959,11 @@ pub const Stage2ErrorMsg = extern struct {
|
||||
offset: c_uint,
|
||||
};
|
||||
pub extern fn ZigClangErrorMsg_delete(ptr: [*c]Stage2ErrorMsg, len: usize) void;
|
||||
|
||||
pub extern fn ZigClangLoadFromCommandLine(
|
||||
args_begin: [*]?[*]const u8,
|
||||
args_end: [*]?[*]const u8,
|
||||
errors_ptr: *[*]Stage2ErrorMsg,
|
||||
errors_len: *usize,
|
||||
resources_path: [*c]const u8,
|
||||
) ?*ZigClangASTUnit;
|
||||
|
||||
@ -88,10 +88,15 @@ export fn stage2_translate_c(
|
||||
out_ast.* = translate_c.translate(args_begin, args_end, switch (mode) {
|
||||
.import => translate_c.Mode.import,
|
||||
.translate => translate_c.Mode.translate,
|
||||
}, &errors) catch |err| switch (err) {
|
||||
}, &errors, resources_path) catch |err| switch (err) {
|
||||
error.Unimplemented => return Error.Unimplemented,
|
||||
error.SemanticAnalyzeFail => {
|
||||
out_errors_ptr.* = errors.ptr;
|
||||
out_errors_len.* = errors.len;
|
||||
return Error.CCompileErrors;
|
||||
},
|
||||
error.OutOfMemory => return Error.OutOfMemory,
|
||||
};
|
||||
|
||||
return Error.None;
|
||||
}
|
||||
|
||||
|
||||
@ -17,7 +17,19 @@ pub fn translate(
|
||||
args_end: [*]?[*]const u8,
|
||||
mode: Mode,
|
||||
errors: *[]ClangErrMsg,
|
||||
resources_path: [*]const u8,
|
||||
) !*ast.Tree {
|
||||
const ast_unit = ZigClangLoadFromCommandLine(
|
||||
args_begin,
|
||||
args_end,
|
||||
&errors.ptr,
|
||||
&errors.len,
|
||||
resources_path,
|
||||
) orelse {
|
||||
if (errors.len == 0) return error.OutOfMemory;
|
||||
return error.SemanticAnalyzeFail;
|
||||
};
|
||||
|
||||
return error.Unimplemented;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user