1 #ifndef R_H__ 2 #define R_H__ 3 4 # include <stddef.h> 5 6 #ifndef LIBR 7 #define RAPI_EXTERN extern 8 #else 9 #define RAPI_EXTERN 10 #endif 11 12 // begin cdef 13 typedef unsigned char Rbyte; 14 15 typedef enum {Bytes, Chars, Width} nchar_type; 16 typedef void * (*DL_FUNC)(); 17 18 typedef int R_len_t; 19 20 // FIXME: when size of size_t <= 4 21 typedef ptrdiff_t R_xlen_t; 22 23 typedef unsigned int SEXPTYPE; 24 25 static const unsigned int NILSXP = 0; 26 static const unsigned int SYMSXP = 1; 27 static const unsigned int LISTSXP = 2; 28 static const unsigned int CLOSXP = 3; 29 static const unsigned int ENVSXP = 4; 30 static const unsigned int PROMSXP = 5; 31 static const unsigned int LANGSXP = 6; 32 static const unsigned int SPECIALSXP = 7; 33 static const unsigned int BUILTINSXP = 8; 34 static const unsigned int CHARSXP = 9; 35 static const unsigned int LGLSXP = 10; 36 static const unsigned int INTSXP = 13; 37 static const unsigned int REALSXP = 14; 38 static const unsigned int CPLXSXP = 15; 39 static const unsigned int STRSXP = 16; 40 static const unsigned int DOTSXP = 17; 41 static const unsigned int ANYSXP = 18; 42 static const unsigned int VECSXP = 19; 43 static const unsigned int EXPRSXP = 20; 44 static const unsigned int BCODESXP = 21; 45 static const unsigned int EXTPTRSXP = 22; 46 static const unsigned int WEAKREFSXP = 23; 47 static const unsigned int RAWSXP = 24; 48 static const unsigned int S4SXP = 25; 49 static const unsigned int NEWSXP = 30; 50 static const unsigned int FREESXP = 31; 51 static const unsigned int FUNSXP = 99; 52 53 typedef struct { 54 double r; 55 double i; 56 } Rcomplex; 57 58 typedef enum { FALSE = 0, TRUE } Rboolean; 59 60 struct sxpinfo_struct { 61 SEXPTYPE type : 5; 62 unsigned int scalar: 1; 63 unsigned int obj : 1; 64 unsigned int alt : 1; 65 unsigned int gp : 16; 66 unsigned int mark : 1; 67 unsigned int debug : 1; 68 unsigned int trace : 1; 69 unsigned int spare : 1; 70 unsigned int gcgen : 1; 71 unsigned int gccls : 3; 72 unsigned int named : 16; 73 unsigned int extra : 16; 74 }; 75 76 struct vecsxp_struct { 77 R_xlen_t length; 78 R_xlen_t truelength; 79 }; 80 81 82 struct primsxp_struct { 83 int offset; 84 }; 85 86 struct symsxp_struct { 87 struct SEXPREC *pname; 88 struct SEXPREC *value; 89 struct SEXPREC *internal; 90 }; 91 92 struct listsxp_struct { 93 struct SEXPREC *carval; 94 struct SEXPREC *cdrval; 95 struct SEXPREC *tagval; 96 }; 97 98 struct envsxp_struct { 99 struct SEXPREC *frame; 100 struct SEXPREC *enclos; 101 struct SEXPREC *hashtab; 102 }; 103 104 struct closxp_struct { 105 struct SEXPREC *formals; 106 struct SEXPREC *body; 107 struct SEXPREC *env; 108 }; 109 110 struct promsxp_struct { 111 struct SEXPREC *value; 112 struct SEXPREC *expr; 113 struct SEXPREC *env; 114 }; 115 116 typedef struct SEXPREC { 117 struct sxpinfo_struct sxpinfo; 118 struct SEXPREC *attrib; 119 struct SEXPREC *gengc_next_node, *gengc_prev_node; 120 union { 121 struct primsxp_struct primsxp; 122 struct symsxp_struct symsxp; 123 struct listsxp_struct listsxp; 124 struct envsxp_struct envsxp; 125 struct closxp_struct closxp; 126 struct promsxp_struct promsxp; 127 } u; 128 } SEXPREC; 129 130 typedef struct SEXPREC *SEXP; 131 132 // Rinternals.h 133 RAPI_EXTERN const char* (*R_CHAR)(SEXP x); 134 RAPI_EXTERN Rboolean (*Rf_isNull)(SEXP s); 135 RAPI_EXTERN Rboolean (*Rf_isSymbol)(SEXP s); 136 RAPI_EXTERN Rboolean (*Rf_isLogical)(SEXP s); 137 RAPI_EXTERN Rboolean (*Rf_isReal)(SEXP s); 138 RAPI_EXTERN Rboolean (*Rf_isComplex)(SEXP s); 139 RAPI_EXTERN Rboolean (*Rf_isExpression)(SEXP s); 140 RAPI_EXTERN Rboolean (*Rf_isEnvironment)(SEXP s); 141 RAPI_EXTERN Rboolean (*Rf_isString)(SEXP s); 142 RAPI_EXTERN Rboolean (*Rf_isObject)(SEXP s); 143 144 RAPI_EXTERN int (*TYPEOF)(SEXP x); 145 RAPI_EXTERN int (*IS_S4_OBJECT)(SEXP x); 146 147 RAPI_EXTERN int (*LENGTH)(SEXP x); 148 RAPI_EXTERN R_xlen_t (*XLENGTH)(SEXP x); 149 RAPI_EXTERN R_xlen_t (*TRUELENGTH)(SEXP x); 150 RAPI_EXTERN void (*SETLENGTH)(SEXP x, R_xlen_t v); 151 RAPI_EXTERN void (*SET_TRUELENGTH)(SEXP x, R_xlen_t v); 152 RAPI_EXTERN int (*IS_LONG_VEC)(SEXP x); 153 RAPI_EXTERN int (*LEVELS)(SEXP x); 154 RAPI_EXTERN int (*SETLEVELS)(SEXP x, int v); 155 156 // Vector Access Functions 157 RAPI_EXTERN int *(*LOGICAL)(SEXP x); 158 RAPI_EXTERN int *(*INTEGER)(SEXP x); 159 RAPI_EXTERN Rbyte *(*RAW)(SEXP x); 160 RAPI_EXTERN double *(*REAL)(SEXP x); 161 RAPI_EXTERN Rcomplex *(*COMPLEX)(SEXP x); 162 RAPI_EXTERN SEXP (*STRING_ELT)(SEXP x, R_xlen_t i); 163 RAPI_EXTERN SEXP (*VECTOR_ELT)(SEXP x, R_xlen_t i); 164 RAPI_EXTERN void (*SET_STRING_ELT)(SEXP x, R_xlen_t i, SEXP v); 165 RAPI_EXTERN SEXP (*SET_VECTOR_ELT)(SEXP x, R_xlen_t i, SEXP v); 166 167 // List Access 168 RAPI_EXTERN SEXP (*Rf_cons)(SEXP, SEXP); 169 RAPI_EXTERN SEXP (*Rf_lcons)(SEXP, SEXP); 170 RAPI_EXTERN SEXP (*TAG)(SEXP e); 171 RAPI_EXTERN SEXP (*CAR)(SEXP e); 172 RAPI_EXTERN SEXP (*CDR)(SEXP e); 173 RAPI_EXTERN SEXP (*CAAR)(SEXP e); 174 RAPI_EXTERN SEXP (*CDAR)(SEXP e); 175 RAPI_EXTERN SEXP (*CADR)(SEXP e); 176 RAPI_EXTERN SEXP (*CDDR)(SEXP e); 177 RAPI_EXTERN SEXP (*CDDDR)(SEXP e); 178 RAPI_EXTERN SEXP (*CADDR)(SEXP e); 179 RAPI_EXTERN SEXP (*CADDDR)(SEXP e); 180 RAPI_EXTERN SEXP (*CAD4R)(SEXP e); 181 RAPI_EXTERN int (*MISSING)(SEXP x); 182 RAPI_EXTERN void (*SET_MISSING)(SEXP x, int v); 183 RAPI_EXTERN void (*SET_TAG)(SEXP x, SEXP y); 184 RAPI_EXTERN SEXP (*SETCAR)(SEXP x, SEXP y); 185 RAPI_EXTERN SEXP (*SETCDR)(SEXP x, SEXP y); 186 RAPI_EXTERN SEXP (*SETCADR)(SEXP x, SEXP y); 187 RAPI_EXTERN SEXP (*SETCADDR)(SEXP x, SEXP y); 188 RAPI_EXTERN SEXP (*SETCADDDR)(SEXP x, SEXP y); 189 RAPI_EXTERN SEXP (*SETCAD4R)(SEXP e, SEXP y); 190 RAPI_EXTERN SEXP (*CONS_NR)(SEXP a, SEXP b); 191 192 RAPI_EXTERN SEXP (*PRINTNAME)(SEXP x); 193 194 RAPI_EXTERN SEXP (*Rf_protect)(SEXP); 195 RAPI_EXTERN void (*Rf_unprotect)(int); 196 197 RAPI_EXTERN SEXP R_GlobalEnv; 198 RAPI_EXTERN SEXP R_EmptyEnv; 199 RAPI_EXTERN SEXP R_BaseEnv; 200 RAPI_EXTERN SEXP R_BaseNamespace; 201 RAPI_EXTERN SEXP R_NamespaceRegistry; 202 RAPI_EXTERN SEXP R_Srcref; 203 RAPI_EXTERN SEXP R_NilValue; 204 RAPI_EXTERN SEXP R_UnboundValue; 205 RAPI_EXTERN SEXP R_MissingArg; 206 RAPI_EXTERN SEXP R_InBCInterpreter; 207 RAPI_EXTERN SEXP R_CurrentExpression; 208 RAPI_EXTERN SEXP R_AsCharacterSymbol; 209 RAPI_EXTERN SEXP R_baseSymbol; 210 RAPI_EXTERN SEXP R_BaseSymbol; 211 RAPI_EXTERN SEXP R_BraceSymbol; 212 RAPI_EXTERN SEXP R_Bracket2Symbol; 213 RAPI_EXTERN SEXP R_BracketSymbol; 214 RAPI_EXTERN SEXP R_ClassSymbol; 215 RAPI_EXTERN SEXP R_DeviceSymbol; 216 RAPI_EXTERN SEXP R_DimNamesSymbol; 217 RAPI_EXTERN SEXP R_DimSymbol; 218 RAPI_EXTERN SEXP R_DollarSymbol; 219 RAPI_EXTERN SEXP R_DotsSymbol; 220 RAPI_EXTERN SEXP R_DoubleColonSymbol; 221 RAPI_EXTERN SEXP R_DropSymbol; 222 RAPI_EXTERN SEXP R_LastvalueSymbol; 223 RAPI_EXTERN SEXP R_LevelsSymbol; 224 RAPI_EXTERN SEXP R_ModeSymbol; 225 RAPI_EXTERN SEXP R_NaRmSymbol; 226 RAPI_EXTERN SEXP R_NameSymbol; 227 RAPI_EXTERN SEXP R_NamesSymbol; 228 RAPI_EXTERN SEXP R_NamespaceEnvSymbol; 229 RAPI_EXTERN SEXP R_PackageSymbol; 230 RAPI_EXTERN SEXP R_PreviousSymbol; 231 RAPI_EXTERN SEXP R_QuoteSymbol; 232 RAPI_EXTERN SEXP R_RowNamesSymbol; 233 RAPI_EXTERN SEXP R_SeedsSymbol; 234 RAPI_EXTERN SEXP R_SortListSymbol; 235 RAPI_EXTERN SEXP R_SourceSymbol; 236 RAPI_EXTERN SEXP R_SpecSymbol; 237 RAPI_EXTERN SEXP R_TripleColonSymbol; 238 RAPI_EXTERN SEXP R_TspSymbol; 239 RAPI_EXTERN SEXP R_dot_defined; 240 RAPI_EXTERN SEXP R_dot_Method; 241 RAPI_EXTERN SEXP R_dot_packageName; 242 RAPI_EXTERN SEXP R_dot_target; 243 RAPI_EXTERN SEXP R_dot_Generic; 244 RAPI_EXTERN SEXP R_NaString; 245 RAPI_EXTERN SEXP R_BlankString; 246 RAPI_EXTERN SEXP R_BlankScalarString; 247 248 RAPI_EXTERN SEXP (*Rf_asChar)(SEXP); 249 RAPI_EXTERN SEXP (*Rf_coerceVector)(SEXP, SEXPTYPE); 250 RAPI_EXTERN SEXP (*Rf_PairToVectorList)(SEXP x); 251 RAPI_EXTERN SEXP (*Rf_VectorToPairList)(SEXP x); 252 RAPI_EXTERN SEXP (*Rf_asCharacterFactor)(SEXP x); 253 RAPI_EXTERN int (*Rf_asLogical)(SEXP x); 254 RAPI_EXTERN int (*Rf_asLogical2)(SEXP x, int checking, SEXP call, SEXP rho); 255 RAPI_EXTERN int (*Rf_asInteger)(SEXP x); 256 RAPI_EXTERN double (*Rf_asReal)(SEXP x); 257 RAPI_EXTERN Rcomplex (*Rf_asComplex)(SEXP x); 258 259 RAPI_EXTERN char * (*Rf_acopy_string)(const char *); 260 // RAPI_EXTERN void (*Rf_addMissingVarsToNewEnv)(SEXP, SEXP); 261 RAPI_EXTERN SEXP (*Rf_alloc3DArray)(SEXPTYPE, int, int, int); 262 RAPI_EXTERN SEXP (*Rf_allocArray)(SEXPTYPE, SEXP); 263 RAPI_EXTERN SEXP (*Rf_allocFormalsList2)(SEXP sym1, SEXP sym2); 264 RAPI_EXTERN SEXP (*Rf_allocFormalsList3)(SEXP sym1, SEXP sym2, SEXP sym3); 265 RAPI_EXTERN SEXP (*Rf_allocFormalsList4)(SEXP sym1, SEXP sym2, SEXP sym3, SEXP sym4); 266 RAPI_EXTERN SEXP (*Rf_allocFormalsList5)(SEXP sym1, SEXP sym2, SEXP sym3, SEXP sym4, SEXP sym5); 267 RAPI_EXTERN SEXP (*Rf_allocFormalsList6)(SEXP sym1, SEXP sym2, SEXP sym3, SEXP sym4, SEXP sym5, SEXP sym6); 268 RAPI_EXTERN SEXP (*Rf_allocMatrix)(SEXPTYPE, int, int); 269 RAPI_EXTERN SEXP (*Rf_allocList)(int); 270 RAPI_EXTERN SEXP (*Rf_allocS4Object)(void); 271 RAPI_EXTERN SEXP (*Rf_allocSExp)(SEXPTYPE); 272 RAPI_EXTERN SEXP (*Rf_allocVector3)(SEXPTYPE, R_xlen_t, void*); 273 RAPI_EXTERN R_xlen_t (*Rf_any_duplicated)(SEXP x, Rboolean from_last); 274 RAPI_EXTERN R_xlen_t (*Rf_any_duplicated3)(SEXP x, SEXP incomp, Rboolean from_last); 275 RAPI_EXTERN SEXP (*Rf_applyClosure)(SEXP, SEXP, SEXP, SEXP, SEXP); 276 RAPI_EXTERN SEXP (*Rf_arraySubscript)(int, SEXP, SEXP, SEXP (*)(SEXP,SEXP), SEXP (*)(SEXP, int), SEXP); 277 RAPI_EXTERN SEXP (*Rf_classgets)(SEXP, SEXP); 278 RAPI_EXTERN void (*Rf_copyMatrix)(SEXP, SEXP, Rboolean); 279 RAPI_EXTERN void (*Rf_copyListMatrix)(SEXP, SEXP, Rboolean); 280 RAPI_EXTERN void (*Rf_copyMostAttrib)(SEXP, SEXP); 281 RAPI_EXTERN void (*Rf_copyVector)(SEXP, SEXP); 282 RAPI_EXTERN int (*Rf_countContexts)(int, int); 283 RAPI_EXTERN SEXP (*Rf_CreateTag)(SEXP); 284 RAPI_EXTERN void (*Rf_defineVar)(SEXP, SEXP, SEXP); 285 RAPI_EXTERN SEXP (*Rf_dimgets)(SEXP, SEXP); 286 RAPI_EXTERN SEXP (*Rf_dimnamesgets)(SEXP, SEXP); 287 RAPI_EXTERN SEXP (*Rf_DropDims)(SEXP); 288 RAPI_EXTERN SEXP (*Rf_duplicate)(SEXP); 289 RAPI_EXTERN SEXP (*Rf_shallow_duplicate)(SEXP); 290 // RAPI_EXTERN SEXP (*R_duplicate_attr)(SEXP); 291 // RAPI_EXTERN SEXP (*R_shallow_duplicate_attr)(SEXP); 292 RAPI_EXTERN SEXP (*Rf_lazy_duplicate)(SEXP); 293 294 RAPI_EXTERN SEXP (*Rf_duplicated)(SEXP, Rboolean); 295 RAPI_EXTERN Rboolean (*R_envHasNoSpecialSymbols)(SEXP); 296 RAPI_EXTERN SEXP (*Rf_eval)(SEXP, SEXP); 297 RAPI_EXTERN SEXP (*Rf_findFun)(SEXP, SEXP); 298 RAPI_EXTERN SEXP (*Rf_findVar)(SEXP, SEXP); 299 RAPI_EXTERN SEXP (*Rf_findVarInFrame)(SEXP, SEXP); 300 RAPI_EXTERN SEXP (*Rf_findVarInFrame3)(SEXP, SEXP, Rboolean); 301 RAPI_EXTERN SEXP (*Rf_getAttrib)(SEXP, SEXP); 302 RAPI_EXTERN SEXP (*Rf_GetArrayDimnames)(SEXP); 303 RAPI_EXTERN SEXP (*Rf_GetColNames)(SEXP); 304 RAPI_EXTERN void (*Rf_GetMatrixDimnames)(SEXP, SEXP*, SEXP*, const char**, const char**); 305 RAPI_EXTERN SEXP (*Rf_GetOption1)(SEXP); 306 RAPI_EXTERN int (*Rf_GetOptionDigits)(void); 307 RAPI_EXTERN int (*Rf_GetOptionWidth)(void); 308 RAPI_EXTERN SEXP (*Rf_GetRowNames)(SEXP); 309 RAPI_EXTERN void (*Rf_gsetVar)(SEXP, SEXP, SEXP); 310 RAPI_EXTERN SEXP (*Rf_install)(const char *); 311 RAPI_EXTERN SEXP (*Rf_installChar)(SEXP); 312 RAPI_EXTERN Rboolean (*Rf_isFree)(SEXP); 313 RAPI_EXTERN Rboolean (*Rf_isOrdered)(SEXP); 314 RAPI_EXTERN Rboolean (*Rf_isUnordered)(SEXP); 315 RAPI_EXTERN Rboolean (*Rf_isUnsorted)(SEXP, Rboolean); 316 RAPI_EXTERN SEXP (*Rf_lengthgets)(SEXP, R_len_t); 317 RAPI_EXTERN SEXP (*Rf_xlengthgets)(SEXP, R_xlen_t); 318 RAPI_EXTERN SEXP (*R_lsInternal)(SEXP, Rboolean); 319 RAPI_EXTERN SEXP (*R_lsInternal3)(SEXP, Rboolean, Rboolean); 320 RAPI_EXTERN SEXP (*Rf_match)(SEXP, SEXP, int); 321 RAPI_EXTERN SEXP (*Rf_matchE)(SEXP, SEXP, int, SEXP); 322 RAPI_EXTERN SEXP (*Rf_namesgets)(SEXP, SEXP); 323 RAPI_EXTERN SEXP (*Rf_mkChar)(const char *); 324 RAPI_EXTERN SEXP (*Rf_mkCharLen)(const char *, int); 325 RAPI_EXTERN Rboolean (*Rf_NonNullStringMatch)(SEXP, SEXP); 326 RAPI_EXTERN int (*Rf_ncols)(SEXP); 327 RAPI_EXTERN int (*Rf_nrows)(SEXP); 328 RAPI_EXTERN SEXP (*Rf_nthcdr)(SEXP, int); 329 330 RAPI_EXTERN int (*R_nchar)(SEXP string, nchar_type type_, Rboolean allowNA, Rboolean keepNA, const char* msg_name); 331 RAPI_EXTERN Rboolean (*Rf_pmatch)(SEXP, SEXP, Rboolean); 332 RAPI_EXTERN Rboolean (*Rf_psmatch)(const char *, const char *, Rboolean); 333 RAPI_EXTERN SEXP (*R_ParseEvalString)(const char *, SEXP); 334 RAPI_EXTERN void (*Rf_PrintValue)(SEXP); 335 // RAPI_EXTERN void (*Rf_printwhere)(void); 336 // RAPI_EXTERN void (*Rf_readS3VarsFromFrame)(SEXP, SEXP*, SEXP*, SEXP*, SEXP*, SEXP*, SEXP*); 337 RAPI_EXTERN SEXP (*Rf_setAttrib)(SEXP, SEXP, SEXP); 338 RAPI_EXTERN void (*Rf_setSVector)(SEXP*, int, SEXP); 339 RAPI_EXTERN void (*Rf_setVar)(SEXP, SEXP, SEXP); 340 // RAPI_EXTERN SEXP (*Rf_stringSuffix)(SEXP, int); 341 RAPI_EXTERN SEXPTYPE (*Rf_str2type)(const char *); 342 RAPI_EXTERN Rboolean (*Rf_StringBlank)(SEXP); 343 RAPI_EXTERN SEXP (*Rf_substitute)(SEXP,SEXP); 344 RAPI_EXTERN SEXP (*Rf_topenv)(SEXP, SEXP); 345 RAPI_EXTERN const char * (*Rf_translateChar)(SEXP); 346 RAPI_EXTERN const char * (*Rf_translateChar0)(SEXP); 347 RAPI_EXTERN const char * (*Rf_translateCharUTF8)(SEXP); 348 RAPI_EXTERN const char * (*Rf_type2char)(SEXPTYPE); 349 RAPI_EXTERN SEXP (*Rf_type2rstr)(SEXPTYPE); 350 RAPI_EXTERN SEXP (*Rf_type2str)(SEXPTYPE); 351 RAPI_EXTERN SEXP (*Rf_type2str_nowarn)(SEXPTYPE); 352 353 RAPI_EXTERN SEXP (*_R_tryEval)(SEXP, SEXP, int *); 354 RAPI_EXTERN SEXP (*R_tryEvalSilent)(SEXP, SEXP, int *); 355 RAPI_EXTERN const char *(*R_curErrorBuf)(); 356 357 RAPI_EXTERN Rboolean (*Rf_isS4)(SEXP); 358 RAPI_EXTERN SEXP (*Rf_asS4)(SEXP, Rboolean, int); 359 RAPI_EXTERN SEXP (*Rf_S3Class)(SEXP); 360 RAPI_EXTERN int (*Rf_isBasicClass)(const char *); 361 362 typedef enum { 363 CE_NATIVE = 0, 364 CE_UTF8 = 1, 365 CE_LATIN1 = 2, 366 CE_BYTES = 3, 367 CE_SYMBOL = 5, 368 CE_ANY =99 369 } cetype_t; 370 371 RAPI_EXTERN cetype_t (*Rf_getCharCE)(SEXP); 372 RAPI_EXTERN SEXP (*Rf_mkCharCE)(const char *, cetype_t); 373 RAPI_EXTERN SEXP (*Rf_mkCharLenCE)(const char *, int, cetype_t); 374 RAPI_EXTERN const char *(*Rf_reEnc)(const char *x, cetype_t ce_in, cetype_t ce_out, int subst); 375 376 RAPI_EXTERN SEXP (*R_MakeExternalPtr)(void *p, SEXP tag, SEXP prot); 377 RAPI_EXTERN void *(*R_ExternalPtrAddr)(SEXP s); 378 RAPI_EXTERN SEXP (*R_ExternalPtrTag)(SEXP s); 379 RAPI_EXTERN SEXP (*R_ExternalPtrProtected)(SEXP s); 380 RAPI_EXTERN void (*R_ClearExternalPtr)(SEXP s); 381 RAPI_EXTERN void (*R_SetExternalPtrAddr)(SEXP s, void *p); 382 RAPI_EXTERN void (*R_SetExternalPtrTag)(SEXP s, SEXP tag); 383 RAPI_EXTERN void (*R_SetExternalPtrProtected)(SEXP s, SEXP p); 384 RAPI_EXTERN SEXP (*R_MakeExternalPtrFn)(DL_FUNC p, SEXP tag, SEXP prot); 385 RAPI_EXTERN DL_FUNC (*R_ExternalPtrAddrFn)(SEXP s); 386 387 typedef void (*R_CFinalizer_t)(SEXP); 388 389 RAPI_EXTERN void (*R_RegisterFinalizer)(SEXP s, SEXP fun); 390 RAPI_EXTERN void (*R_RegisterCFinalizer)(SEXP s, R_CFinalizer_t fun); 391 RAPI_EXTERN void (*R_RegisterFinalizerEx)(SEXP s, SEXP fun, Rboolean onexit); 392 RAPI_EXTERN void (*R_RegisterCFinalizerEx)(SEXP s, R_CFinalizer_t fun, Rboolean onexit); 393 RAPI_EXTERN void (*R_RunPendingFinalizers)(void); 394 395 RAPI_EXTERN Rboolean (*R_ToplevelExec)(void (*fun)(void *), void *data); 396 RAPI_EXTERN SEXP (*R_tryCatch)(SEXP (*)(void *), void *, SEXP, SEXP (*)(SEXP, void *), void *, void (*)(void *), void *); 397 RAPI_EXTERN SEXP (*R_tryCatchError)(SEXP (*)(void *), void *, SEXP (*)(SEXP, void *), void *); 398 399 RAPI_EXTERN void (*R_RestoreHashCount)(SEXP rho); 400 RAPI_EXTERN Rboolean (*R_IsPackageEnv)(SEXP rho); 401 RAPI_EXTERN SEXP (*R_PackageEnvName)(SEXP rho); 402 RAPI_EXTERN SEXP (*R_FindPackageEnv)(SEXP info); 403 RAPI_EXTERN Rboolean (*R_IsNamespaceEnv)(SEXP rho); 404 RAPI_EXTERN SEXP (*R_NamespaceEnvSpec)(SEXP rho); 405 RAPI_EXTERN SEXP (*R_FindNamespace)(SEXP info); 406 RAPI_EXTERN void (*R_LockEnvironment)(SEXP env, Rboolean bindings); 407 RAPI_EXTERN Rboolean (*R_EnvironmentIsLocked)(SEXP env); 408 RAPI_EXTERN void (*R_LockBinding)(SEXP sym, SEXP env); 409 RAPI_EXTERN void (*R_unLockBinding)(SEXP sym, SEXP env); 410 RAPI_EXTERN void (*R_MakeActiveBinding)(SEXP sym, SEXP fun, SEXP env); 411 RAPI_EXTERN Rboolean (*R_BindingIsLocked)(SEXP sym, SEXP env); 412 RAPI_EXTERN Rboolean (*R_BindingIsActive)(SEXP sym, SEXP env); 413 RAPI_EXTERN Rboolean (*R_HasFancyBindings)(SEXP rho); 414 415 RAPI_EXTERN void (*Rf_errorcall)(SEXP, const char *, ...); 416 RAPI_EXTERN void (*Rf_warningcall)(SEXP, const char *, ...); 417 418 RAPI_EXTERN SEXP (*R_do_slot)(SEXP obj, SEXP name); 419 RAPI_EXTERN SEXP (*R_do_slot_assign)(SEXP obj, SEXP name, SEXP value); 420 RAPI_EXTERN int (*R_has_slot)(SEXP obj, SEXP name); 421 RAPI_EXTERN SEXP (*R_S4_extends)(SEXP klass, SEXP useTable); 422 423 RAPI_EXTERN void (*R_PreserveObject)(SEXP); 424 RAPI_EXTERN void (*R_ReleaseObject)(SEXP); 425 426 RAPI_EXTERN void (*R_dot_Last)(void); 427 RAPI_EXTERN void (*R_RunExitFinalizers)(void); 428 429 RAPI_EXTERN Rboolean (*R_compute_identical)(SEXP, SEXP, int); 430 431 RAPI_EXTERN SEXP (*Rf_allocVector)(SEXPTYPE, R_xlen_t); 432 RAPI_EXTERN Rboolean (*Rf_conformable)(SEXP, SEXP); 433 RAPI_EXTERN SEXP (*Rf_elt)(SEXP, int); 434 RAPI_EXTERN Rboolean (*Rf_inherits)(SEXP, const char *); 435 RAPI_EXTERN Rboolean (*Rf_isArray)(SEXP); 436 RAPI_EXTERN Rboolean (*Rf_isFactor)(SEXP); 437 RAPI_EXTERN Rboolean (*Rf_isFrame)(SEXP); 438 RAPI_EXTERN Rboolean (*Rf_isFunction)(SEXP); 439 RAPI_EXTERN Rboolean (*Rf_isInteger)(SEXP); 440 RAPI_EXTERN Rboolean (*Rf_isLanguage)(SEXP); 441 RAPI_EXTERN Rboolean (*Rf_isList)(SEXP); 442 RAPI_EXTERN Rboolean (*Rf_isMatrix)(SEXP); 443 RAPI_EXTERN Rboolean (*Rf_isNewList)(SEXP); 444 RAPI_EXTERN Rboolean (*Rf_isNumber)(SEXP); 445 RAPI_EXTERN Rboolean (*Rf_isNumeric)(SEXP); 446 RAPI_EXTERN Rboolean (*Rf_isPairList)(SEXP); 447 RAPI_EXTERN Rboolean (*Rf_isPrimitive)(SEXP); 448 RAPI_EXTERN Rboolean (*Rf_isTs)(SEXP); 449 RAPI_EXTERN Rboolean (*Rf_isUserBinop)(SEXP); 450 RAPI_EXTERN Rboolean (*Rf_isValidString)(SEXP); 451 RAPI_EXTERN Rboolean (*Rf_isValidStringF)(SEXP); 452 RAPI_EXTERN Rboolean (*Rf_isVector)(SEXP); 453 RAPI_EXTERN Rboolean (*Rf_isVectorAtomic)(SEXP); 454 RAPI_EXTERN Rboolean (*Rf_isVectorList)(SEXP); 455 RAPI_EXTERN Rboolean (*Rf_isVectorizable)(SEXP); 456 RAPI_EXTERN SEXP (*Rf_lang1)(SEXP); 457 RAPI_EXTERN SEXP (*Rf_lang2)(SEXP, SEXP); 458 RAPI_EXTERN SEXP (*Rf_lang3)(SEXP, SEXP, SEXP); 459 RAPI_EXTERN SEXP (*Rf_lang4)(SEXP, SEXP, SEXP, SEXP); 460 RAPI_EXTERN SEXP (*Rf_lang5)(SEXP, SEXP, SEXP, SEXP, SEXP); 461 RAPI_EXTERN SEXP (*Rf_lang6)(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); 462 RAPI_EXTERN SEXP (*Rf_lastElt)(SEXP); 463 RAPI_EXTERN R_len_t (*Rf_length)(SEXP); 464 RAPI_EXTERN SEXP (*Rf_list1)(SEXP); 465 RAPI_EXTERN SEXP (*Rf_list2)(SEXP, SEXP); 466 RAPI_EXTERN SEXP (*Rf_list3)(SEXP, SEXP, SEXP); 467 RAPI_EXTERN SEXP (*Rf_list4)(SEXP, SEXP, SEXP, SEXP); 468 RAPI_EXTERN SEXP (*Rf_list5)(SEXP, SEXP, SEXP, SEXP, SEXP); 469 RAPI_EXTERN SEXP (*Rf_list6)(SEXP, SEXP, SEXP, SEXP, SEXP, SEXP); 470 RAPI_EXTERN SEXP (*Rf_listAppend)(SEXP, SEXP); 471 RAPI_EXTERN SEXP (*Rf_mkNamed)(SEXPTYPE, const char **); 472 RAPI_EXTERN SEXP (*Rf_mkString)(const char *); 473 RAPI_EXTERN int (*Rf_nlevels)(SEXP); 474 RAPI_EXTERN int (*Rf_stringPositionTr)(SEXP, const char *); 475 RAPI_EXTERN SEXP (*Rf_ScalarComplex)(Rcomplex); 476 RAPI_EXTERN SEXP (*Rf_ScalarInteger)(int); 477 RAPI_EXTERN SEXP (*Rf_ScalarLogical)(int); 478 RAPI_EXTERN SEXP (*Rf_ScalarRaw)(Rbyte); 479 RAPI_EXTERN SEXP (*Rf_ScalarReal)(double); 480 RAPI_EXTERN SEXP (*Rf_ScalarString)(SEXP); 481 RAPI_EXTERN R_xlen_t (*Rf_xlength)(SEXP); 482 RAPI_EXTERN R_xlen_t (*XTRUELENGTH)(SEXP x); 483 // RAPI_EXTERN int (*LENGTH_EX)(SEXP x, const char *file, int line); 484 // RAPI_EXTERN R_xlen_t (*XLENGTH_EX)(SEXP x); 485 486 487 // Arith.h 488 // RAPI_EXTERN double R_NaN; 489 // RAPI_EXTERN double R_PosInf; 490 // RAPI_EXTERN double R_NegInf; 491 // RAPI_EXTERN double R_NaReal; 492 // RAPI_EXTERN int R_NaInt; 493 RAPI_EXTERN int (*R_IsNA)(double); 494 RAPI_EXTERN int (*R_IsNaN)(double); 495 RAPI_EXTERN int (*R_finite)(double); 496 497 498 // Parse.h 499 typedef enum { 500 PARSE_NULL, 501 PARSE_OK, 502 PARSE_INCOMPLETE, 503 PARSE_ERROR, 504 PARSE_EOF 505 } ParseStatus; 506 507 RAPI_EXTERN SEXP (*_R_ParseVector)(SEXP, int, ParseStatus *, SEXP); 508 509 // Memory.h 510 RAPI_EXTERN void* (*vmaxget)(void); 511 RAPI_EXTERN void (*vmaxset)(const void *); 512 513 RAPI_EXTERN void (*R_gc)(void); 514 RAPI_EXTERN int (*R_gc_running)(); 515 516 RAPI_EXTERN char* (*R_alloc)(size_t, int); 517 RAPI_EXTERN long double *(*R_allocLD)(size_t nelem); 518 519 // RAPI_EXTERN void * (*R_malloc_gc)(size_t); 520 // RAPI_EXTERN void * (*R_calloc_gc)(size_t, size_t); 521 // RAPI_EXTERN void * (*R_realloc_gc)(void *, size_t); 522 523 // Error.h 524 RAPI_EXTERN void (*Rf_error)(const char *, ...); 525 RAPI_EXTERN void (*Rf_warning)(const char *, ...); 526 RAPI_EXTERN void (*R_ShowMessage)(const char *s); 527 528 // Defn.h 529 // RAPI_EXTERN void (*Rf_CoercionWarning)(int);/* warning code */ 530 // RAPI_EXTERN int (*Rf_LogicalFromInteger)(int, int*); 531 // RAPI_EXTERN int (*Rf_LogicalFromReal)(double, int*); 532 // RAPI_EXTERN int (*Rf_LogicalFromComplex)(Rcomplex, int*); 533 // RAPI_EXTERN int (*Rf_IntegerFromLogical)(int, int*); 534 // RAPI_EXTERN int (*Rf_IntegerFromReal)(double, int*); 535 // RAPI_EXTERN int (*Rf_IntegerFromComplex)(Rcomplex, int*); 536 // RAPI_EXTERN double (*Rf_RealFromLogical)(int, int*); 537 // RAPI_EXTERN double (*Rf_RealFromInteger)(int, int*); 538 // RAPI_EXTERN double (*Rf_RealFromComplex)(Rcomplex, int*); 539 // RAPI_EXTERN Rcomplex (*Rf_ComplexFromLogical)(int, int*); 540 // RAPI_EXTERN Rcomplex (*Rf_ComplexFromInteger)(int, int*); 541 // RAPI_EXTERN Rcomplex (*Rf_ComplexFromReal)(double, int*); 542 543 RAPI_EXTERN void (*R_ProcessEvents)(void); 544 545 // RAPI_EXTERN void (*Rf_PrintVersion)(char *, size_t len); 546 // RAPI_EXTERN void (*Rf_PrintVersion_part_1)(char *, size_t len); 547 // RAPI_EXTERN void (*Rf_PrintVersionString)(char *, size_t len); 548 RAPI_EXTERN SEXP (*R_data_class)(SEXP , Rboolean); 549 550 // Utils.h 551 RAPI_EXTERN void (*R_CheckUserInterrupt)(void); 552 553 // RStartup.h 554 555 typedef struct 556 { 557 Rboolean R_Quiet; 558 Rboolean R_Slave; 559 Rboolean R_Interactive; 560 Rboolean R_Verbose; 561 Rboolean LoadSiteFile; 562 Rboolean LoadInitFile; 563 Rboolean DebugInitFile; 564 int RestoreAction; 565 int SaveAction; 566 size_t vsize; 567 size_t nsize; 568 size_t max_vsize; 569 size_t max_nsize; 570 size_t ppsize; 571 int NoRenviron; 572 char *rhome; 573 char *home; 574 // we use _ReadConsole and _WriteConsole to avoid name collision 575 int (*_ReadConsole)(const char *, unsigned char *, int, int); 576 void (*_WriteConsole)(const char *, int); 577 void (*CallBack)(void); 578 void (*ShowMessage) (const char *); 579 int (*YesNoCancel) (const char *); 580 void (*Busy) (int); 581 int CharacterMode; 582 void (*WriteConsoleEx)(const char *, int, int); 583 } structRstart; 584 typedef structRstart *Rstart; 585 586 RAPI_EXTERN void (*R_DefParams)(Rstart); 587 RAPI_EXTERN void (*R_SetParams)(Rstart); 588 RAPI_EXTERN void (*R_set_command_line_arguments)(int argc, char **argv); 589 590 // Rinterface.h 591 592 RAPI_EXTERN int (*Rstd_CleanUp)(int saveact, int status, int RunLast); 593 594 595 // Rembedded.h 596 RAPI_EXTERN int (*Rf_initialize_R)(int ac, char **av); 597 RAPI_EXTERN void (*setup_Rmainloop)(void); 598 RAPI_EXTERN void (*_run_Rmainloop)(void); 599 600 // Rdynload.h 601 602 typedef struct { 603 const char *name; 604 DL_FUNC fun; 605 int numArgs; 606 } R_CallMethodDef; 607 typedef struct _DllInfo DllInfo; 608 609 typedef R_CallMethodDef R_ExternalMethodDef; 610 RAPI_EXTERN DllInfo* (*R_getEmbeddingDllInfo)(void); 611 RAPI_EXTERN int (*R_registerRoutines)(DllInfo*, void*, void*, void*, void*); 612 613 614 // end cdef 615 616 617 #ifdef _WIN32 618 RAPI_EXTERN char *(*get_R_HOME)(void); 619 RAPI_EXTERN char *(*getRUser)(void); 620 RAPI_EXTERN int* UserBreak_t; 621 RAPI_EXTERN int* CharacterMode_t; 622 RAPI_EXTERN int* EmitEmbeddedUTF8_t; 623 RAPI_EXTERN int (*GA_peekevent)(void); 624 #else 625 // eventloop.h 626 RAPI_EXTERN void* R_InputHandlers; 627 RAPI_EXTERN void (**R_PolledEvents_t)(void); 628 629 RAPI_EXTERN void* (*R_checkActivity)(int usec, int ignore_stdin); 630 RAPI_EXTERN void (*R_runHandlers)(void* handlers, void* mask); 631 632 RAPI_EXTERN int* R_interrupts_pending_t; 633 #endif 634 635 #endif /* end of include guard: R_H__ */ 636