#define SWIG_Error(code, msg) Rf_warning(msg); return Rf_ScalarLogical(NA_LOGICAL) #define SWIG_fail return Rf_ScalarLogical(NA_LOGICAL) /* for raw pointers */ #define SWIG_ConvertPtr(oc, ptr, ty, flags) SWIG_R_ConvertPtr(oc, ptr, ty, flags) #define SWIG_ConvertFunctionPtr(oc, ptr, ty) SWIG_R_ConvertPtr(oc, ptr, ty, 0) #define SWIG_NewPointerObj(ptr, ty, flags) SWIG_R_NewPointerObj(ptr, ty, flags) #define SWIG_NewFunctionPtrObj(ptr, ty) SWIG_R_NewPointerObj(ptr, ty, 0) /* for raw packed data */ #define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewPackedObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) /* for class or struct pointers */ #define SWIG_ConvertInstance(obj, pptr, ty, flags) SWIG_ConvertPtr(obj, pptr, ty, flags) #define SWIG_NewInstanceObj(ptr, ty, flags) SWIG_NewPointerObj(ptr, ty, flags) /* for C++ member pointers, ie, member methods */ #define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) #define SWIG_NewMemberObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) /* Runtime API */ #define SWIG_GetModule(clientdata) SWIG_R_GetModule() #define SWIG_SetModule(clientdata, pointer) SWIG_R_SetModule(pointer) %fragment(SWIG_From_frag(long),"header") { SWIGINTERNINLINE SEXP SWIG_From_dec(long)(long value) { return Rf_ScalarInteger((int)value); } } %fragment(SWIG_AsVal_frag(long),"header") { SWIGINTERNINLINE int SWIG_AsVal_dec(long)(SEXP obj, long *val) { if (val) *val = Rf_asInteger(obj); return SWIG_OK; } } %fragment(SWIG_From_frag(long long),"header") { SWIGINTERNINLINE SEXP SWIG_From_dec(long long)(long long value) { return Rf_ScalarInteger((int)value); } } %fragment(SWIG_AsVal_frag(long long),"header") { SWIGINTERNINLINE int SWIG_AsVal_dec(long long)(SEXP obj, long long *val) { if (val) *val = Rf_asInteger(obj); return SWIG_OK; } } %fragment(SWIG_From_frag(unsigned long),"header") { SWIGINTERNINLINE SEXP SWIG_From_dec(unsigned long)(unsigned long value) { return Rf_ScalarInteger((int)value); } } %fragment(SWIG_AsVal_frag(unsigned long),"header") { SWIGINTERNINLINE int SWIG_AsVal_dec(unsigned long)(SEXP obj, unsigned long *val) { if (val) *val = Rf_asInteger(obj); return SWIG_OK; } } %fragment(SWIG_From_frag(unsigned long long),"header") { SWIGINTERNINLINE SEXP SWIG_From_dec(unsigned long long)(unsigned long long value) { return Rf_ScalarInteger((int)value); } } %fragment(SWIG_AsVal_frag(unsigned long long),"header") { SWIGINTERNINLINE int SWIG_AsVal_dec(unsigned long long)(SEXP obj, unsigned long long *val) { if (val) *val = Rf_asInteger(obj); return SWIG_OK; } } %fragment(SWIG_From_frag(double),"header") { SWIGINTERNINLINE SEXP SWIG_From_dec(double)(double value) { return Rf_ScalarReal(value); } } %fragment(SWIG_AsVal_frag(double),"header") { SWIGINTERNINLINE int SWIG_AsVal_dec(double)(SEXP obj, double *val) { if (val) *val = Rf_asReal(obj); return SWIG_OK; } } %fragment("SWIG_AsCharPtrAndSize", "header") { SWIGINTERN int SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc) { if (cptr && Rf_isString(obj)) { const char *cstr = CHAR(STRING_ELT(obj, 0)); int len = strlen(cstr); if (alloc) { if (*alloc == SWIG_NEWOBJ) { *cptr = %new_copy_array(cstr, len + 1, char); *alloc = SWIG_NEWOBJ; } else { *cptr = %reinterpret_cast(malloc(len + 1), char *); *cptr = strcpy(*cptr, cstr); *alloc = SWIG_OLDOBJ; } } else { *cptr = %reinterpret_cast(malloc(len + 1), char *); *cptr = strcpy(*cptr, cstr); } if (psize) *psize = len + 1; return SWIG_OK; } return SWIG_TypeError; } } %fragment("SWIG_strdup","header") { SWIGINTERN char * SWIG_strdup(const char *str) { char *newstr = %reinterpret_cast(malloc(strlen(str) + 1), char *); return strcpy(newstr, str); } } # This is modified from the R header files %fragment("SWIG_FromCharPtrAndSize","header") { SWIGINTERN SEXP SWIG_FromCharPtrAndSize(const char* carray, size_t size) { SEXP t, c; if (!carray) return R_NilValue; Rf_protect(t = Rf_allocVector(STRSXP, 1)); c = Rf_allocVector(CHARSXP, size); strncpy((char *)CHAR(c), carray, size); SET_STRING_ELT(t, 0, c); Rf_unprotect(1); return t; } }