9#ifndef FIMS_INTERFACE_HPP
10#define FIMS_INTERFACE_HPP
28#define FIMS_REPORT_F(name, F) \
29 if (isDouble<Type>::value && \
30 F->current_parallel_region < static_cast<Type>(0)) { \
31 Rf_defineVar(Rf_install(#name), PROTECT(asSEXP(name)), F->report); \
35#define FIMS_REPORT_F_(name, obj, F) \
36 if (isDouble<Type>::value && \
37 F->current_parallel_region < static_cast<Type>(0)) { \
38 Rf_defineVar(Rf_install(name), PROTECT(asSEXP(obj)), F->report); \
42#define ADREPORT_F(name, F) F->reportvector.push(name, #name);
44template <
typename Type>
45vector<Type> ADREPORTvector(vector<vector<Type> > x) {
46 int outer_dim = x.size();
48 for (
int i = 0; i < outer_dim; i++) {
51 vector<Type> res(dim);
53 for (
int i = 0; i < outer_dim; i++) {
54 int inner_dim = x(i).size();
55 for (
int j = 0; j < inner_dim; j++) {
63#define FIMS_SIMULATE_F(F) if (isDouble<Type>::value && F->do_simulate)
71#define FIMS_SIMULATE_F(F)
75#define FIMS_REPORT_F(name, F)
79#define ADREPORT_F(name, F)