2017-12-22 21:29:39 -08:00
|
|
|
const builtin = @import("builtin");
|
|
|
|
const c = @import("c.zig");
|
|
|
|
const assert = @import("std").debug.assert;
|
|
|
|
|
|
|
|
pub const BuilderRef = removeNullability(c.LLVMBuilderRef);
|
2018-07-14 12:45:15 -07:00
|
|
|
pub const ContextRef = removeNullability(c.LLVMContextRef);
|
|
|
|
pub const ModuleRef = removeNullability(c.LLVMModuleRef);
|
|
|
|
pub const ValueRef = removeNullability(c.LLVMValueRef);
|
|
|
|
pub const TypeRef = removeNullability(c.LLVMTypeRef);
|
|
|
|
|
|
|
|
pub const AddFunction = c.LLVMAddFunction;
|
|
|
|
pub const CreateBuilderInContext = c.LLVMCreateBuilderInContext;
|
|
|
|
pub const DisposeBuilder = c.LLVMDisposeBuilder;
|
|
|
|
pub const DisposeModule = c.LLVMDisposeModule;
|
|
|
|
pub const DumpModule = c.LLVMDumpModule;
|
|
|
|
pub const ModuleCreateWithNameInContext = c.LLVMModuleCreateWithNameInContext;
|
|
|
|
pub const VoidTypeInContext = c.LLVMVoidTypeInContext;
|
|
|
|
|
|
|
|
pub const FunctionType = LLVMFunctionType;
|
|
|
|
extern fn LLVMFunctionType(
|
|
|
|
ReturnType: TypeRef,
|
|
|
|
ParamTypes: [*]TypeRef,
|
|
|
|
ParamCount: c_uint,
|
|
|
|
IsVarArg: c_int,
|
|
|
|
) ?TypeRef;
|
2017-12-22 21:29:39 -08:00
|
|
|
|
2018-01-25 01:10:11 -08:00
|
|
|
fn removeNullability(comptime T: type) type {
|
2018-06-09 20:42:14 -07:00
|
|
|
comptime assert(@typeId(T) == builtin.TypeId.Optional);
|
2017-12-22 21:29:39 -08:00
|
|
|
return T.Child;
|
|
|
|
}
|