MODULE = LLVM PACKAGE = LLVM::Type Type void(class) SV *class CODE: RETVAL = LLVMVoidType(); OUTPUT: RETVAL Type int(class, bits) SV *class unsigned int bits CODE: RETVAL = LLVMIntType(bits); OUTPUT: RETVAL Type float(class) SV *class CODE: RETVAL = LLVMFloatType(); OUTPUT: RETVAL Type double(class) SV *class CODE: RETVAL = LLVMDoubleType(); OUTPUT: RETVAL Type func(class, ret_type, ...) SV *class Type ret_type CODE: int i; Type *params = malloc(sizeof(Type) * (items - 2)); for (i = 2; i < items; i++) { Type param; SV *arg = ST(i); if (sv_isobject(arg) && sv_derived_from(arg, "LLVM::Type")) param = INT2PTR(Type, SvIV((SV *) SvRV(arg))); else Perl_croak(aTHX_ "arg is not of type LLVM::Type"); params[i - 2] = param; } RETVAL = LLVMFunctionType(ret_type, params, items - 2, 0); OUTPUT: RETVAL