pomp
Inference for partially observed Markov processes
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
userdata.c
Go to the documentation of this file.
1// dear emacs, please treat this as -*- C++ -*-
2
3#include "internal.h"
4
6#define USERDATA (__pomp_ptr_userdata)
7
8SEXP set_pomp_userdata (SEXP userdata) {
9 USERDATA = userdata;
10 return R_NilValue;
11}
12
13const SEXP get_userdata (const char *name) {
14 SEXP elt = getListElement(USERDATA,name);
15 if (isNull(elt)) err("no user-data element '%s' is found.",name);
16 return elt;
17}
18
19const int *get_userdata_int (const char *name) {
20 SEXP elt = getListElement(USERDATA,name);
21 if (isNull(elt)) err("no user-data element '%s' is found.",name);
22 if (!isInteger(elt)) err("user-data element '%s' is not an integer.",name);
23 return INTEGER(elt);
24}
25
26const double *get_userdata_double (const char *name) {
27 SEXP elt = getListElement(USERDATA,name);
28 if (isNull(elt)) err("no user-data element '%s' is found.",name);
29 if (!isReal(elt)) err("user-data element '%s' is not a numeric vector.",name);
30 return REAL(elt);
31}
#define err(...)
Definition pomp.h:21
static R_INLINE SEXP getListElement(SEXP list, const char *str)
#define USERDATA
Definition userdata.c:6
const double * get_userdata_double(const char *name)
Definition userdata.c:26
const SEXP get_userdata(const char *name)
Definition userdata.c:13
static SEXP __pomp_ptr_userdata
Definition userdata.c:5
SEXP set_pomp_userdata(SEXP userdata)
Definition userdata.c:8
const int * get_userdata_int(const char *name)
Definition userdata.c:19