From d065b28c71a2243e03ee912336fcba1125f34e56 Mon Sep 17 00:00:00 2001 From: unknown <olivier.delaigue@ANPI1430.antony.irstea.priv> Date: Fri, 11 Aug 2017 11:44:34 +0200 Subject: [PATCH] v1.0.9.16 new airGR.c file to register native routines #4623 --- DESCRIPTION | 2 +- NAMESPACE | 2 +- src/airGR.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 src/airGR.c diff --git a/DESCRIPTION b/DESCRIPTION index 1965624c..f7647491 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,7 +1,7 @@ Package: airGR Type: Package Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling -Version: 1.0.9.15 +Version: 1.0.9.16 Date: 2017-07-12 Authors@R: c( person("Laurent", "Coron", role = c("aut", "trl")), diff --git a/NAMESPACE b/NAMESPACE index b5a90741..d5fab141 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,7 +1,7 @@ ##################################### ## Load DLL ## ##################################### -useDynLib(airGR) +useDynLib(airGR, .registration = TRUE) diff --git a/src/airGR.c b/src/airGR.c new file mode 100644 index 00000000..9c149457 --- /dev/null +++ b/src/airGR.c @@ -0,0 +1,33 @@ +#include <R_ext/RS.h> +#include <stdlib.h> // for NULL +#include <R_ext/Rdynload.h> + +/* FIXME: + Check these declarations against the C/Fortran source code. +*/ + +/* .Fortran calls */ +extern void F77_NAME(frun_cemaneige)(int *, double *, double *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr1a)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr2m)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr4h)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr4j)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr5j)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); +extern void F77_NAME(frun_gr6j)(int *, double *, double *, int *, double *, int *, double *, int *, int *, double *, double *); + +static const R_FortranMethodDef FortranEntries[] = { + {"frun_cemaneige", (DL_FUNC) &F77_NAME(frun_cemaneige), 13}, + {"frun_gr1a", (DL_FUNC) &F77_NAME(frun_gr1a), 11}, + {"frun_gr2m", (DL_FUNC) &F77_NAME(frun_gr2m), 11}, + {"frun_gr4h", (DL_FUNC) &F77_NAME(frun_gr4h), 11}, + {"frun_gr4j", (DL_FUNC) &F77_NAME(frun_gr4j), 11}, + {"frun_gr5j", (DL_FUNC) &F77_NAME(frun_gr5j), 11}, + {"frun_gr6j", (DL_FUNC) &F77_NAME(frun_gr6j), 11}, + {NULL, NULL, 0} +}; + +void R_init_airGR(DllInfo *dll) +{ + R_registerRoutines(dll, NULL, NULL, FortranEntries, NULL); + R_useDynamicSymbols(dll, FALSE); +} -- GitLab