diff --git a/DESCRIPTION b/DESCRIPTION index 1965624cc7e3919ad3e6562cd345e8d5532422b6..f7647491b799248c6829d6d67345d03821302278 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 b5a907419071c70bc39f67f647cd6749a172d5de..d5fab141d7ddcbae2a3827463337b265b578c7e7 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 0000000000000000000000000000000000000000..9c149457a5d36fe9bea49df47c352c49f82c59d9 --- /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); +}