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