#ifndef HX_CFFIPRIME_INCLUDED #define HX_CFFIPRIME_INCLUDED #include #define HXCPP_PRIME namespace cffi { template inline const char *to_utf8(const T *inStr,int &ioLen,hx::IStringAlloc *inAlloc) { int len = 0; int n = ioLen; if (n==0) while(inStr[n]) n++; for(int i=0;i=0xd800) { i++; int peek = iallocBytes(len+1); unsigned char *data = (unsigned char *)result; for(int i=0;i=0xd800) { int peek = i+1> 6); *data++ = 0x80 | (c & 63); } else if( c <= 0xFFFF ) { *data++ = 0xE0 | (c >> 12); *data++ = 0x80 | ((c >> 6) & 63); *data++ = 0x80 | (c & 63); } else { *data++ = 0xF0 | (c >> 18); *data++ = 0x80 | ((c >> 12) & 63); *data++ = 0x80 | ((c >> 6) & 63); *data++ = 0x80 | (c & 63); } } result[len] = 0; ioLen = len; return result; } static inline int decode_advance_utf8(const unsigned char * &ioPtr,const unsigned char *end) { int c = *ioPtr++; if( c < 0x80 ) { return c; } else if( c < 0xE0 ) { return ((c & 0x3F) << 6) | (ioPtr < end ? (*ioPtr++) & 0x7F : 0); } else if( c < 0xF0 ) { int c2 = ioPtr inline const T *from_utf8(const char *inStr,int len,hx::IStringAlloc *inAlloc) { int n = len; if (n<0) while(inStr[n]) n++; const unsigned char *str = (const unsigned char *)inStr; const unsigned char *end = str + n; int count = 0; while(str=0x10000) count++; } T *result = (T*)inAlloc->allocBytes( sizeof(T)*(count+1) ); T *dest = result; str = (const unsigned char *)inStr; while(str=0x10000) { int over = (ch-0x10000); *dest++ = (over>>10) + 0xd800; *dest++ = (over&0x3ff) + 0xdc00; } else *dest++ = ch; } *dest++ = 0; return result; } } #ifdef HXCPP_JS_PRIME #include typedef std::string HxString; #else #ifdef _MSC_VER #pragma warning( disable : 4190 ) #endif struct HxString { inline HxString(const HxString &inRHS) { length = inRHS.length; __s = inRHS.__s; } inline HxString() : length(0), __s(0) { } inline HxString(const char *inS,int inLen=-1, bool inAllocGcString=true); inline int size() const { return length; } inline const char *c_str() const { return __s; } int length; const char *__s; }; #include "CFFI.h" #endif #ifndef HXCPP_JS_PRIME HxString::HxString(const char *inS,int inLen, bool inAllocGcString) : length(inLen), __s(inS) { if (!inS) length = 0; else { if (length<0) for(length=0; __s[length]; length++) { } if (inAllocGcString) __s = alloc_string_data(__s, length); } } #endif namespace cffi { inline value alloc_pointer(void *inPtr) { return alloc_abstract((vkind)(0x100 + 2),inPtr); } template struct SigType { enum { Char='?' }; }; template<> struct SigType { enum { Char='b' }; }; template<> struct SigType { enum { Char='i' }; }; template<> struct SigType { enum { Char='f' }; }; template<> struct SigType { enum { Char='d' }; }; template<> struct SigType { enum { Char='o' }; }; template<> struct SigType { enum { Char='v' }; }; template<> struct SigType { enum { Char='c' }; }; template<> struct SigType { enum { Char='s' }; }; template bool CheckSig0( RET (func)(), const char *inSig) { return SigType::Char==inSig[0] && 0 == inSig[1]; } template bool CheckSig1( RET (func)(A0), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && 0 == inSig[2]; } template bool CheckSig2( RET (func)(A0,A1), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && 0 == inSig[3]; } template bool CheckSig3( RET (func)(A0,A1,A2), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && 0 == inSig[4]; } template bool CheckSig4( RET (func)(A0,A1,A2,A3), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && 0 == inSig[5]; } template bool CheckSig5( RET (func)(A0,A1,A2,A3,A4), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && 0 == inSig[6]; } template bool CheckSig6( RET (func)(A0,A1,A2,A3,A4,A5), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && 0 == inSig[7]; } template bool CheckSig7( RET (func)(A0,A1,A2,A3,A4,A5,A6), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && 0 == inSig[8]; } template bool CheckSig8( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && 0 == inSig[9]; } template bool CheckSig9( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && 0 == inSig[10]; } template bool CheckSig10( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && 0 == inSig[11]; } template bool CheckSig11( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9, A10), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && SigType::Char==inSig[11] && 0 == inSig[12]; } template bool CheckSig12( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9, A10, A11), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && SigType::Char==inSig[11] && SigType::Char==inSig[12] && 0 == inSig[13]; } template bool CheckSig13( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && SigType::Char==inSig[11] && SigType::Char==inSig[12] && SigType::Char==inSig[13] && 0 == inSig[14]; } template bool CheckSig14( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && SigType::Char==inSig[11] && SigType::Char==inSig[12] && SigType::Char==inSig[13] && SigType::Char==inSig[14] && 0 == inSig[15]; } template bool CheckSig15( RET (func)(A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14), const char *inSig) { return SigType::Char==inSig[0] && SigType::Char==inSig[1] && SigType::Char==inSig[2] && SigType::Char==inSig[3] && SigType::Char==inSig[4] && SigType::Char==inSig[5] && SigType::Char==inSig[6] && SigType::Char==inSig[7] && SigType::Char==inSig[8] && SigType::Char==inSig[9] && SigType::Char==inSig[10] && SigType::Char==inSig[11] && SigType::Char==inSig[12] && SigType::Char==inSig[13] && SigType::Char==inSig[14] && SigType::Char==inSig[15] && 0 == inSig[16]; } inline value ToValue(int inVal) { return alloc_int(inVal); } inline value ToValue(long inVal) { return alloc_int32(inVal); } inline value ToValue(float inVal) { return alloc_float(inVal); } inline value ToValue(double inVal) { return alloc_float(inVal); } inline value ToValue(value inVal) { return inVal; } inline value ToValue(bool inVal) { return alloc_bool(inVal); } #ifdef HXCPP_JS_PRIME inline value ToValue(HxString inVal) { return inVal.c_str() ? alloc_string_len(inVal.c_str(),inVal.size()) : alloc_null() ; } #else inline value ToValue(HxString inVal) { return inVal.__s ? alloc_string_len(inVal.c_str(),inVal.size()) : alloc_null() ; } #endif struct AutoValue { value mValue; inline operator int() { return val_int(mValue); } inline operator long() { return (long)val_number(mValue); } inline operator value() { return mValue; } inline operator double() { return val_number(mValue); } inline operator float() { return val_number(mValue); } inline operator bool() { return val_bool(mValue); } inline operator const char *() { return val_string(mValue); } inline operator HxString() { return val_is_null(mValue) ? HxString(0,0) : HxString(val_string(mValue), val_strlen(mValue), false); } }; } // end namespace cffi #define PRIME_ARG_DECL0 #define PRIME_ARG_DECL1 cffi::AutoValue a0 #define PRIME_ARG_DECL2 PRIME_ARG_DECL1, cffi::AutoValue a1 #define PRIME_ARG_DECL3 PRIME_ARG_DECL2, cffi::AutoValue a2 #define PRIME_ARG_DECL4 PRIME_ARG_DECL3, cffi::AutoValue a3 #define PRIME_ARG_DECL5 PRIME_ARG_DECL4, cffi::AutoValue a4 #define PRIME_ARG_LIST0 #define PRIME_ARG_LIST1 a0 #define PRIME_ARG_LIST2 PRIME_ARG_LIST1, a1 #define PRIME_ARG_LIST3 PRIME_ARG_LIST2, a2 #define PRIME_ARG_LIST4 PRIME_ARG_LIST3, a3 #define PRIME_ARG_LIST5 PRIME_ARG_LIST4, a4 #define PRIME_ARG_LIST6 arg[0],arg[1],arg[2],arg[3],arg[4],arg[5] #define PRIME_ARG_LIST7 PRIME_ARG_LIST6 ,arg[6] #define PRIME_ARG_LIST8 PRIME_ARG_LIST7 ,arg[7] #define PRIME_ARG_LIST9 PRIME_ARG_LIST8 ,arg[8] #define PRIME_ARG_LIST10 PRIME_ARG_LIST9 ,arg[9] #define PRIME_ARG_LIST11 PRIME_ARG_LIST10 ,arg[10] #define PRIME_ARG_LIST12 PRIME_ARG_LIST11 ,arg[11] #define PRIME_ARG_LIST13 PRIME_ARG_LIST12 ,arg[12] #define PRIME_ARG_LIST14 PRIME_ARG_LIST13 ,arg[13] #define PRIME_ARG_LIST15 PRIME_ARG_LIST14 ,arg[14] #ifdef HXCPP_JS_PRIME #define DEFINE_PRIME0(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME1(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME2(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME3(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME4(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME5(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME6(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME7(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME8(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME9(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME10(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME11(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME12(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME13(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME14(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME15(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME0v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME1v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME2v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME3v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME4v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME5v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME6v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME7v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME8v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME9v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME10v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME11v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME12v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME13v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME14v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #define DEFINE_PRIME15v(func) EMSCRIPTEN_BINDINGS(func) { function(#func, &func); } #elif defined(STATIC_LINK) #define DEFINE_PRIME0(func) extern "C" { \ EXPORT value func##__prime(const char *inSig) { \ if (!cffi::CheckSig0(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap() { return cffi::ToValue( func() ); } \ EXPORT void *func##__0() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__0",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME0v(func) extern "C" { \ EXPORT value func##__prime(const char *inSig) { \ if (!cffi::CheckSig0(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap() { func(); return alloc_null(); } \ EXPORT void *func##__0() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__0",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME1(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig1(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL1) { return cffi::ToValue( func(PRIME_ARG_LIST1) ); } \ EXPORT void *func##__1() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__1",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME1v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig1(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL1) { func(PRIME_ARG_LIST1); return alloc_null(); } \ EXPORT void *func##__1() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__1",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME2(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig2(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL2) { return cffi::ToValue( func(PRIME_ARG_LIST2) ); } \ EXPORT void *func##__2() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__2",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME2v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig2(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL2) { func(PRIME_ARG_LIST2); return alloc_null(); } \ EXPORT void *func##__2() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__2",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME3(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig3(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL3) { return cffi::ToValue( func(PRIME_ARG_LIST3) ); } \ EXPORT void *func##__3() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__3",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME3v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig3(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL3) { func(PRIME_ARG_LIST3); return alloc_null(); } \ EXPORT void *func##__3() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__3",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME4(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig4(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL4) { return cffi::ToValue( func(PRIME_ARG_LIST4) ); } \ EXPORT void *func##__4() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__4",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME4v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig4(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL4) { func(PRIME_ARG_LIST4); return alloc_null(); } \ EXPORT void *func##__4() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__4",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME5(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig5(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL5) { return cffi::ToValue( func(PRIME_ARG_LIST5) ); } \ EXPORT void *func##__5() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__5",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME5v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig5(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL5) { func(PRIME_ARG_LIST5); return alloc_null(); } \ EXPORT void *func##__5() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__5",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME6(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig6(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST6) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME6v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig6(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST6); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME7(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig7(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST7) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME7v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig7(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST7); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME8(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig8(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST8) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME8v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig8(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST8); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME9(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig9(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST9) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME9v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig9(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST9); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME10(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig10(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST10) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME10v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig10(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST10); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME11(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig11(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST11) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME11v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig11(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST11); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME12(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig12(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST12) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME12v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig12(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST12); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME13(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig13(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST13) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME13v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig13(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST13); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME14(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig14(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST14) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME14v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig14(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST14); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME15(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig15(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST15) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #define DEFINE_PRIME15v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig15(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST15); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ int __reg_##func##__prime = hx_register_prim(#func "__prime",(void *)(&func##__prime)); \ int __reg_##func = hx_register_prim(#func "__MULT",(void *)(&func##__wrap)); \ } #else #define DEFINE_PRIME0(func) extern "C" { \ EXPORT value func##__prime(const char *inSig) { \ if (!cffi::CheckSig0(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap() { return cffi::ToValue( func() ); } \ EXPORT void *func##__0() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME0v(func) extern "C" { \ EXPORT value func##__prime(const char *inSig) { \ if (!cffi::CheckSig0(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap() { func(); return alloc_null(); } \ EXPORT void *func##__0() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME1(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig1(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL1) { return cffi::ToValue( func(PRIME_ARG_LIST1) ); } \ EXPORT void *func##__1() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME1v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig1(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL1) { func(PRIME_ARG_LIST1); return alloc_null(); } \ EXPORT void *func##__1() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME2(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig2(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL2) { return cffi::ToValue( func(PRIME_ARG_LIST2) ); } \ EXPORT void *func##__2() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME2v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig2(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL2) { func(PRIME_ARG_LIST2); return alloc_null(); } \ EXPORT void *func##__2() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME3(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig3(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL3) { return cffi::ToValue( func(PRIME_ARG_LIST3) ); } \ EXPORT void *func##__3() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME3v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig3(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL3) { func(PRIME_ARG_LIST3); return alloc_null(); } \ EXPORT void *func##__3() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME4(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig4(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL4) { return cffi::ToValue( func(PRIME_ARG_LIST4) ); } \ EXPORT void *func##__4() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME4v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig4(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL4) { func(PRIME_ARG_LIST4); return alloc_null(); } \ EXPORT void *func##__4() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME5(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig5(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL5) { return cffi::ToValue( func(PRIME_ARG_LIST5) ); } \ EXPORT void *func##__5() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME5v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig5(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(PRIME_ARG_DECL5) { func(PRIME_ARG_LIST5); return alloc_null(); } \ EXPORT void *func##__5() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME6(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig6(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST6) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME6v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig6(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST6); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME7(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig7(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST7) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME7v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig7(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST7); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME8(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig8(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST8) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME8v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig8(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST8); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME9(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig9(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST9) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME9v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig9(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST9); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME10(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig10(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST10) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME10v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig10(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST10); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME11(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig11(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST11) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME11v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig11(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST11); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME12(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig12(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST12) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME12v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig12(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST12); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME13(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig13(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST13) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME13v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig13(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST13); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME14(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig14(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST14) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME14v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig14(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST14); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME15(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig15(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg,int) { return cffi::ToValue( func(PRIME_ARG_LIST15) ); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #define DEFINE_PRIME15v(func) extern "C" { \ EXPORT void *func##__prime(const char *inSig) { \ if (!cffi::CheckSig15(func,inSig)) return 0; return cffi::alloc_pointer((void*)&func); } \ value func##__wrap(cffi::AutoValue *arg, int) { func(PRIME_ARG_LIST15); return alloc_null(); } \ EXPORT void *func##__MULT() { return (void*)(&func##__wrap); } \ } #endif #endif