Home | History | Annotate | Download | only in r
      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") {
     30 SWIGINTERNINLINE SEXP
     31 SWIG_From_dec(long)(long value)
     32 {
     33 	return Rf_ScalarInteger((int)value);
     34 }
     35 }
     36 
     37 %fragment(SWIG_AsVal_frag(long),"header") {
     38 SWIGINTERNINLINE  int
     39 SWIG_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") {
     48 SWIGINTERNINLINE SEXP
     49 SWIG_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") {
     56 SWIGINTERNINLINE  int
     57 SWIG_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") {
     65 SWIGINTERNINLINE SEXP
     66 SWIG_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") {
     74 SWIGINTERNINLINE  int
     75 SWIG_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") {
     84 SWIGINTERNINLINE SEXP
     85 SWIG_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") {
     93 SWIGINTERNINLINE  int
     94 SWIG_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") {
    102 SWIGINTERNINLINE SEXP
    103 SWIG_From_dec(double)(double value)
    104 {
    105 	return Rf_ScalarReal(value);
    106 }
    107 }
    108 
    109 
    110 %fragment(SWIG_AsVal_frag(double),"header") {
    111 SWIGINTERNINLINE  int
    112 SWIG_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 {
    121 SWIGINTERN int
    122 SWIG_AsCharPtrAndSize(SEXP obj, char** cptr, size_t* psize, int *alloc)
    123 {
    124   if (cptr && Rf_isString(obj)) {
    125     char *cstr = %const_cast(CHAR(STRING_ELT(obj, 0)), char *);
    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 = cstr;
    134       }
    135     } else {
    136       *cptr = %reinterpret_cast(malloc(len + 1), char *);
    137       *cptr = strcpy(*cptr, cstr);
    138     }
    139     if (psize) *psize = len + 1;
    140     return SWIG_OK;
    141   }
    142   return SWIG_TypeError;
    143 }
    144 }
    145 
    146 %fragment("SWIG_strdup","header") 
    147 {
    148 SWIGINTERN char *
    149 SWIG_strdup(const char *str)
    150 {
    151   char *newstr = %reinterpret_cast(malloc(strlen(str) + 1), char *);
    152   return strcpy(newstr, str);
    153 }
    154 }
    155 
    156 # This is modified from the R header files
    157 
    158 %fragment("SWIG_FromCharPtrAndSize","header") 
    159 {
    160 SWIGINTERN SEXP
    161 SWIG_FromCharPtrAndSize(const char* carray, size_t size) 
    162 {
    163   SEXP t, c;
    164   if (!carray) return R_NilValue;
    165 /* See R internals document 1.10.  
    166    MkCharLen was introduced in 2.7.0.  Use that instead of hand
    167    creating vector.
    168 
    169    Starting in 2.8.0 creating strings via vectors was deprecated in
    170    order to allow for use of CHARSXP caches. */
    171 
    172   Rf_protect(t = Rf_allocVector(STRSXP, 1));
    173 %#if R_VERSION >=  R_Version(2,7,0)
    174   c = Rf_mkCharLen(carray, size);
    175 %#else
    176   c = Rf_allocVector(CHARSXP, size);
    177   strncpy((char *)CHAR(c), carray, size);
    178 %#endif
    179   SET_STRING_ELT(t, 0, c);
    180   Rf_unprotect(1);
    181   return t;
    182 }
    183 }
    184