| /* |
| * R : A Computer Language for Statistical Data Analysis |
| * Copyright (C) 2001-2017 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 */ |
| typedef void * (*DL_FUNC)(); |
| |
| 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 do |
| some computations on the internal versions that are derived from |
| these 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 __cplusplus |
| extern "C" { |
| #endif |
| int 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 symbols |
| that 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 package |
| for use from C code in a package. The registration part probably |
| ought to be integrated with the other registrations. The naming of |
| these 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_ */ |