1#define SWIG_Error(code, msg) Rf_warning(msg); return Rf_ScalarLogical(NA_LOGICAL) 2 3#define SWIG_fail return Rf_ScalarLogical(NA_LOGICAL) 4 5/* for raw pointers */ 6#define SWIG_ConvertPtr(oc, ptr, ty, flags) SWIG_R_ConvertPtr(oc, ptr, ty, flags) 7#define SWIG_ConvertFunctionPtr(oc, ptr, ty) SWIG_R_ConvertPtr(oc, ptr, ty, 0) 8#define SWIG_NewPointerObj(ptr, ty, flags) SWIG_R_NewPointerObj(ptr, ty, flags) 9#define SWIG_NewFunctionPtrObj(ptr, ty) SWIG_R_NewPointerObj(ptr, ty, 0) 10 11/* for raw packed data */ 12#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) 13#define SWIG_NewPackedObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) 14 15/* for class or struct pointers */ 16#define SWIG_ConvertInstance(obj, pptr, ty, flags) SWIG_ConvertPtr(obj, pptr, ty, flags) 17#define SWIG_NewInstanceObj(ptr, ty, flags) SWIG_NewPointerObj(ptr, ty, flags) 18 19/* for C++ member pointers, ie, member methods */ 20#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_R_ConvertPacked(obj, ptr, sz, ty) 21#define SWIG_NewMemberObj(ptr, sz, ty) SWIG_R_NewPackedObj(ptr, sz, ty) 22 23 24/* Runtime API */ 25 26#define SWIG_GetModule(clientdata) SWIG_R_GetModule() 27#define SWIG_SetModule(clientdata, pointer) SWIG_R_SetModule(pointer) 28 29%fragment(SWIG_From_frag(long),"header") { 30SWIGINTERNINLINE SEXP 31SWIG_From_dec(long)(long value) 32{ 33 return Rf_ScalarInteger((int)value); 34} 35} 36 37%fragment(SWIG_AsVal_frag(long),"header") { 38SWIGINTERNINLINE int 39SWIG_AsVal_dec(long)(SEXP obj, long *val) 40{ 41 if (val) *val = Rf_asInteger(obj); 42 return SWIG_OK; 43} 44} 45 46 47%fragment(SWIG_From_frag(long long),"header") { 48SWIGINTERNINLINE SEXP 49SWIG_From_dec(long long)(long long value) 50{ 51 return Rf_ScalarInteger((int)value); 52} 53} 54 55%fragment(SWIG_AsVal_frag(long long),"header") { 56SWIGINTERNINLINE int 57SWIG_AsVal_dec(long long)(SEXP obj, long long *val) 58{ 59 if (val) *val = Rf_asInteger(obj); 60 return SWIG_OK; 61} 62} 63 64%fragment(SWIG_From_frag(unsigned long),"header") { 65SWIGINTERNINLINE SEXP 66SWIG_From_dec(unsigned long)(unsigned long value) 67{ 68 return Rf_ScalarInteger((int)value); 69} 70} 71 72 73%fragment(SWIG_AsVal_frag(unsigned long),"header") { 74SWIGINTERNINLINE int 75SWIG_AsVal_dec(unsigned long)(SEXP obj, unsigned long *val) 76{ 77 if (val) *val = Rf_asInteger(obj); 78 return SWIG_OK; 79} 80} 81 82 83%fragment(SWIG_From_frag(unsigned long long),"header") { 84SWIGINTERNINLINE SEXP 85SWIG_From_dec(unsigned long long)(unsigned long long value) 86{ 87 return Rf_ScalarInteger((int)value); 88} 89} 90 91 92%fragment(SWIG_AsVal_frag(unsigned long long),"header") { 93SWIGINTERNINLINE int 94SWIG_AsVal_dec(unsigned long long)(SEXP obj, unsigned long long *val) 95{ 96 if (val) *val = Rf_asInteger(obj); 97 return SWIG_OK; 98} 99} 100 101%fragment(SWIG_From_frag(double),"header") { 102SWIGINTERNINLINE SEXP 103SWIG_From_dec(double)(double value) 104{ 105 return Rf_ScalarReal(value); 106} 107} 108 109 110%fragment(SWIG_AsVal_frag(double),"header") { 111SWIGINTERNINLINE int 112SWIG_AsVal_dec(double)(SEXP obj, double *val) 113{ 114 if (val) *val = Rf_asReal(obj); 115 return SWIG_OK; 116} 117} 118 119%fragment("SWIG_AsCharPtrAndSize", "header") 120{ 121SWIGINTERN int 122SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc) 123{ 124 if (cptr && Rf_isString(obj)) { 125 const char *cstr = CHAR(STRING_ELT(obj, 0)); 126 int len = strlen(cstr); 127 128 if (alloc) { 129 if (*alloc == SWIG_NEWOBJ) { 130 *cptr = %new_copy_array(cstr, len + 1, char); 131 *alloc = SWIG_NEWOBJ; 132 } else { 133 *cptr = %reinterpret_cast(malloc(len + 1), char *); 134 *cptr = strcpy(*cptr, cstr); 135 *alloc = SWIG_OLDOBJ; 136 } 137 } else { 138 *cptr = %reinterpret_cast(malloc(len + 1), char *); 139 *cptr = strcpy(*cptr, cstr); 140 } 141 if (psize) *psize = len + 1; 142 return SWIG_OK; 143 } 144 return SWIG_TypeError; 145} 146} 147 148%fragment("SWIG_strdup","header") 149{ 150SWIGINTERN char * 151SWIG_strdup(const char *str) 152{ 153 char *newstr = %reinterpret_cast(malloc(strlen(str) + 1), char *); 154 return strcpy(newstr, str); 155} 156} 157 158# This is modified from the R header files 159 160%fragment("SWIG_FromCharPtrAndSize","header") 161{ 162SWIGINTERN SEXP 163SWIG_FromCharPtrAndSize(const char* carray, size_t size) 164{ 165 SEXP t, c; 166 if (!carray) return R_NilValue; 167 Rf_protect(t = Rf_allocVector(STRSXP, 1)); 168 c = Rf_allocVector(CHARSXP, size); 169 strncpy((char *)CHAR(c), carray, size); 170 SET_STRING_ELT(t, 0, c); 171 Rf_unprotect(1); 172 return t; 173} 174} 175