diff options
Diffstat (limited to 'share/swig/2.0.11/r/rrun.swg')
-rw-r--r-- | share/swig/2.0.11/r/rrun.swg | 380 |
1 files changed, 0 insertions, 380 deletions
diff --git a/share/swig/2.0.11/r/rrun.swg b/share/swig/2.0.11/r/rrun.swg deleted file mode 100644 index f8bc9f4..0000000 --- a/share/swig/2.0.11/r/rrun.swg +++ /dev/null @@ -1,380 +0,0 @@ - -#ifdef __cplusplus -extern "C" { -#endif - -/* for raw pointer */ -#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_R_ConvertPtr(obj, pptr, type, flags) -#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_R_ConvertPtr(obj, pptr, type, flags) -#define SWIG_NewPointerObj(ptr, type, flags) SWIG_R_NewPointerObj(ptr, type, flags) - - -/* Remove global namespace pollution */ -#if !defined(SWIG_NO_R_NO_REMAP) -# define R_NO_REMAP -#endif -#if !defined(SWIG_NO_STRICT_R_HEADERS) -# define STRICT_R_HEADERS -#endif - -#include <Rdefines.h> -#include <Rversion.h> -#include <stdlib.h> -#include <assert.h> - -#if R_VERSION >= R_Version(2,6,0) -#define VMAXTYPE void * -#else -#define VMAXTYPE char * -#endif - -/* - This is mainly a way to avoid having lots of local variables that may - conflict with those in the routine. - - Change name to R_SWIG_Callb.... -*/ -typedef struct RCallbackFunctionData { - - SEXP fun; - SEXP userData; - - - SEXP expr; - SEXP retValue; - int errorOccurred; - - SEXP el; /* Temporary pointer used in the construction of the expression to call the R function. */ - - struct RCallbackFunctionData *previous; /* Stack */ - -} RCallbackFunctionData; - -static RCallbackFunctionData *callbackFunctionDataStack; - - -SWIGRUNTIME SEXP -R_SWIG_debug_getCallbackFunctionData() -{ - int n, i; - SEXP ans; - RCallbackFunctionData *p = callbackFunctionDataStack; - - n = 0; - while(p) { - n++; - p = p->previous; - } - - Rf_protect(ans = Rf_allocVector(VECSXP, n)); - for(p = callbackFunctionDataStack, i = 0; i < n; p = p->previous, i++) - SET_VECTOR_ELT(ans, i, p->fun); - - Rf_unprotect(1); - - return(ans); -} - - - -SWIGRUNTIME RCallbackFunctionData * -R_SWIG_pushCallbackFunctionData(SEXP fun, SEXP userData) -{ - RCallbackFunctionData *el; - el = (RCallbackFunctionData *) calloc(1, sizeof(RCallbackFunctionData)); - el->fun = fun; - el->userData = userData; - el->previous = callbackFunctionDataStack; - - callbackFunctionDataStack = el; - - return(el); -} - - -SWIGRUNTIME SEXP -R_SWIG_R_pushCallbackFunctionData(SEXP fun, SEXP userData) -{ - R_SWIG_pushCallbackFunctionData(fun, userData); - return R_NilValue; -} - -SWIGRUNTIME RCallbackFunctionData * -R_SWIG_getCallbackFunctionData() -{ - if(!callbackFunctionDataStack) { - Rf_error("Supposedly impossible error occurred in the SWIG callback mechanism." - " No callback function data set."); - } - - return callbackFunctionDataStack; -} - -SWIGRUNTIME void -R_SWIG_popCallbackFunctionData(int doFree) -{ - RCallbackFunctionData *el = NULL; - if(!callbackFunctionDataStack) - return ; /* Error !!! */ - - el = callbackFunctionDataStack ; - callbackFunctionDataStack = callbackFunctionDataStack->previous; - - if(doFree) - free(el); -} - - -/* - Interface to S function - is(obj, type) - which is to be used to determine if an - external pointer inherits from the right class. - - Ideally, we would like to be able to do this without an explicit call to the is() function. - When the S4 class system uses its own SEXP types, then we will hopefully be able to do this - in the C code. - - Should we make the expression static and preserve it to avoid the overhead of - allocating each time. -*/ -SWIGRUNTIME int -R_SWIG_checkInherits(SEXP obj, SEXP tag, const char *type) -{ - SEXP e, val; - int check_err = 0; - - Rf_protect(e = Rf_allocVector(LANGSXP, 3)); - SETCAR(e, Rf_install("extends")); - - SETCAR(CDR(e), Rf_mkString(CHAR(PRINTNAME(tag)))); - SETCAR(CDR(CDR(e)), Rf_mkString(type)); - - val = R_tryEval(e, R_GlobalEnv, &check_err); - Rf_unprotect(1); - if(check_err) - return(0); - - - return(LOGICAL(val)[0]); -} - - -SWIGRUNTIME void * -R_SWIG_resolveExternalRef(SEXP arg, const char * const type, const char * const argName, Rboolean nullOk) -{ - void *ptr; - SEXP orig = arg; - - if(TYPEOF(arg) != EXTPTRSXP) - arg = GET_SLOT(arg, Rf_mkString("ref")); - - - if(TYPEOF(arg) != EXTPTRSXP) { - Rf_error("argument %s must be an external pointer (from an ExternalReference)", argName); - } - - - ptr = R_ExternalPtrAddr(arg); - - if(ptr == NULL && nullOk == (Rboolean) FALSE) { - Rf_error("the external pointer (of type %s) for argument %s has value NULL", argName, type); - } - - if(type[0] && R_ExternalPtrTag(arg) != Rf_install(type) && strcmp(type, "voidRef") - && !R_SWIG_checkInherits(orig, R_ExternalPtrTag(arg), type)) { - Rf_error("the external pointer for argument %s has tag %s, not the expected value %s", - argName, CHAR(PRINTNAME(R_ExternalPtrTag(arg))), type); - } - - - return(ptr); -} - -SWIGRUNTIME void -R_SWIG_ReferenceFinalizer(SEXP el) -{ - void *ptr = R_SWIG_resolveExternalRef(el, "", "<finalizer>", (Rboolean) 1); - fprintf(stderr, "In R_SWIG_ReferenceFinalizer for %p\n", ptr); - Rf_PrintValue(el); - - if(ptr) { - if(TYPEOF(el) != EXTPTRSXP) - el = GET_SLOT(el, Rf_mkString("ref")); - - if(TYPEOF(el) == EXTPTRSXP) - R_ClearExternalPtr(el); - - free(ptr); - } - - return; -} - -typedef enum {R_SWIG_EXTERNAL, R_SWIG_OWNER } R_SWIG_Owner; - -SWIGRUNTIME SEXP -SWIG_MakePtr(void *ptr, const char *typeName, R_SWIG_Owner owner) -{ - SEXP external, r_obj; - const char *p = typeName; - - if(typeName[0] == '_') - p = typeName + 1; - - Rf_protect(external = R_MakeExternalPtr(ptr, Rf_install(typeName), R_NilValue)); - Rf_protect(r_obj = NEW_OBJECT(MAKE_CLASS((char *) typeName))); - - if(owner) - R_RegisterCFinalizer(external, R_SWIG_ReferenceFinalizer); - - r_obj = SET_SLOT(r_obj, Rf_mkString((char *) "ref"), external); - SET_S4_OBJECT(r_obj); - Rf_unprotect(2); - - return(r_obj); -} - - -SWIGRUNTIME SEXP -R_SWIG_create_SWIG_R_Array(const char *typeName, SEXP ref, int len) -{ - SEXP arr; - -/*XXX remove the char * cast when we can. MAKE_CLASS should be declared appropriately. */ - Rf_protect(arr = NEW_OBJECT(MAKE_CLASS((char *) typeName))); - Rf_protect(arr = R_do_slot_assign(arr, Rf_mkString("ref"), ref)); - Rf_protect(arr = R_do_slot_assign(arr, Rf_mkString("dims"), Rf_ScalarInteger(len))); - - Rf_unprotect(3); - SET_S4_OBJECT(arr); - return arr; -} - -#define ADD_OUTPUT_ARG(result, pos, value, name) r_ans = AddOutputArgToReturn(pos, value, name, OutputValues); - -SWIGRUNTIME SEXP -AddOutputArgToReturn(int pos, SEXP value, const char *name, SEXP output) -{ - SET_VECTOR_ELT(output, pos, value); - - return(output); -} - -/* Create a new pointer object */ -SWIGRUNTIMEINLINE SEXP -SWIG_R_NewPointerObj(void *ptr, swig_type_info *type, int flags) { - SEXP rptr = R_MakeExternalPtr(ptr, - R_MakeExternalPtr(type, R_NilValue, R_NilValue), R_NilValue); - SET_S4_OBJECT(rptr); - return rptr; -} - - -/* Convert a pointer value */ -SWIGRUNTIMEINLINE int -SWIG_R_ConvertPtr(SEXP obj, void **ptr, swig_type_info *ty, int flags) { - void *vptr; - if (!obj) return SWIG_ERROR; - if (obj == R_NilValue) { - if (ptr) *ptr = NULL; - return SWIG_OK; - } - - vptr = R_ExternalPtrAddr(obj); - if (ty) { - swig_type_info *to = (swig_type_info*) - R_ExternalPtrAddr(R_ExternalPtrTag(obj)); - if (to == ty) { - if (ptr) *ptr = vptr; - } else { - swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); - int newmemory = 0; - if (ptr) *ptr = SWIG_TypeCast(tc,vptr,&newmemory); - assert(!newmemory); /* newmemory handling not yet implemented */ - } - } else { - if (ptr) *ptr = vptr; - } - return SWIG_OK; -} - -SWIGRUNTIME swig_module_info * -SWIG_GetModule(void *SWIGUNUSEDPARM(clientdata)) { - static void *type_pointer = (void *)0; - return (swig_module_info *) type_pointer; -} - -SWIGRUNTIME void -SWIG_SetModule(void *v, swig_module_info *swig_module) { -} - -typedef struct { - void *pack; - swig_type_info *ty; - size_t size; -} RSwigPacked; - -/* Create a new packed object */ - -SWIGRUNTIMEINLINE SEXP RSwigPacked_New(void *ptr, size_t sz, - swig_type_info *ty) { - SEXP rptr; - RSwigPacked *sobj = - (RSwigPacked*) malloc(sizeof(RSwigPacked)); - if (sobj) { - void *pack = malloc(sz); - if (pack) { - memcpy(pack, ptr, sz); - sobj->pack = pack; - sobj->ty = ty; - sobj->size = sz; - } else { - sobj = 0; - } - } - rptr = R_MakeExternalPtr(sobj, R_NilValue, R_NilValue); - return rptr; -} - -SWIGRUNTIME swig_type_info * -RSwigPacked_UnpackData(SEXP obj, void *ptr, size_t size) -{ - RSwigPacked *sobj = - (RSwigPacked *)R_ExternalPtrAddr(obj); - if (sobj->size != size) return 0; - memcpy(ptr, sobj->pack, size); - return sobj->ty; -} - -SWIGRUNTIMEINLINE SEXP -SWIG_R_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) { - return ptr ? RSwigPacked_New((void *) ptr, sz, type) : R_NilValue; -} - -/* Convert a packed value value */ - -SWIGRUNTIME int -SWIG_R_ConvertPacked(SEXP obj, void *ptr, size_t sz, swig_type_info *ty) { - swig_type_info *to = RSwigPacked_UnpackData(obj, ptr, sz); - if (!to) return SWIG_ERROR; - if (ty) { - if (to != ty) { - /* check type cast? */ - swig_cast_info *tc = SWIG_TypeCheck(to->name,ty); - if (!tc) return SWIG_ERROR; - } - } - return SWIG_OK; -} - -#ifdef __cplusplus -#include <exception> -#define SWIG_exception_noreturn(code, msg) do { throw std::runtime_error(msg); } while(0) -#else -#define SWIG_exception_noreturn(code, msg) do { return result; } while(0) -#endif - -#ifdef __cplusplus -} -#endif |