Rev 81976 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
/** R : A Computer Language for Statistical Data Analysis* Copyright (C) 2001-2022 The R Core Team.** This header file is free software; you can redistribute it and/or modify* it under the terms of the GNU Lesser General Public License as published by* the Free Software Foundation; either version 2.1 of the License, or* (at your option) any later version.** This file is part of R. R is distributed under the terms of the* GNU General Public License, either Version 2, June 1991 or Version 3,* June 2007. See doc/COPYRIGHTS for details of the copyright status of R.** This program is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU Lesser General Public License for more details.** You should have received a copy of the GNU Lesser General Public License* along with this program; if not, a copy is available at* https://www.R-project.org/Licenses/*//*C functions used to register compiled code in packages.Those needed for that purpose are part of the API.Cleaned up for R 3.4.0, some changes require recompilation of packages.*/#ifndef R_EXT_DYNLOAD_H_#define R_EXT_DYNLOAD_H_#include <R_ext/Boolean.h>/* Called with a variable argument set after casting to a compatiblefunction pointer. */typedef void * (*DL_FUNC)(void);typedef unsigned int R_NativePrimitiveArgType;/* For interfaces to objects created with as.single */#define SINGLESXP 302/*These are very similar to those in Rdynpriv.h,but we maintain them separately to give us more freedom to dosome computations on the internal versions that are derived fromthese definitions.*/typedef struct {const char *name;DL_FUNC fun;int numArgs;R_NativePrimitiveArgType *types;} R_CMethodDef;typedef R_CMethodDef R_FortranMethodDef;typedef struct {const char *name;DL_FUNC fun;int numArgs;} R_CallMethodDef;typedef R_CallMethodDef R_ExternalMethodDef;typedef struct _DllInfo DllInfo;/*Currently ignore the graphics routines, accessible via .External.graphics()and .Call.graphics().*/#ifdef __cplusplusextern "C" {#endifint R_registerRoutines(DllInfo *info, const R_CMethodDef * const croutines,const R_CallMethodDef * const callRoutines,const R_FortranMethodDef * const fortranRoutines,const R_ExternalMethodDef * const externalRoutines);Rboolean R_useDynamicSymbols(DllInfo *info, Rboolean value);Rboolean R_forceSymbols(DllInfo *info, Rboolean value);DllInfo *R_getDllInfo(const char *name);/* To be used by applications embedding R to register their symbolsthat are not related to any dynamic module */DllInfo *R_getEmbeddingDllInfo(void);typedef struct Rf_RegisteredNativeSymbol R_RegisteredNativeSymbol;typedef enum {R_ANY_SYM=0, R_C_SYM, R_CALL_SYM, R_FORTRAN_SYM, R_EXTERNAL_SYM} NativeSymbolType;DL_FUNC R_FindSymbol(char const *, char const *,R_RegisteredNativeSymbol *symbol);/* Interface for exporting and importing functions from one packagefor use from C code in a package. The registration part probablyought to be integrated with the other registrations. The naming ofthese routines may be less than ideal.*/void R_RegisterCCallable(const char *package, const char *name, DL_FUNC fptr);DL_FUNC R_GetCCallable(const char *package, const char *name);#ifdef __cplusplus}#endif#endif /* R_EXT_DYNLOAD_H_ */