Rcpp Version 1.0.9
headers.h
Go to the documentation of this file.
1 // headers.h: Rcpp R/C++ interface class library -- R headers
2 //
3 // Copyright (C) 2008 - 2009 Dirk Eddelbuettel
4 // Copyright (C) 2009 - 2022 Dirk Eddelbuettel and Romain Francois
5 //
6 // This file is part of Rcpp.
7 //
8 // Rcpp is free software: you can redistribute it and/or modify it
9 // under the terms of the GNU General Public License as published by
10 // the Free Software Foundation, either version 2 of the License, or
11 // (at your option) any later version.
12 //
13 // Rcpp is distributed in the hope that it will be useful, but
14 // WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 // GNU General Public License for more details.
17 //
18 // You should have received a copy of the GNU General Public License
19 // along with Rcpp. If not, see <http://www.gnu.org/licenses/>.
20 
21 #ifndef RCPP__R__HEADERS__H
22 #define RCPP__R__HEADERS__H
23 
24 // include R headers, but set R_NO_REMAP and access everything via Rf_ prefixes
25 #define MAXELTSIZE 8192
26 #define R_NO_REMAP
27 
28 // define strict headers for R to not clash on ERROR, MESSGAGE, etc
29 #ifndef RCPP_NO_STRICT_R_HEADERS
30 # ifndef STRICT_R_HEADERS
31 # define STRICT_R_HEADERS
32 # endif
33 #endif
34 
35 // no rtti implies no modules
36 #ifdef RCPP_NO_RTTI
37 # ifndef RCPP_NO_MODULES
38 # define RCPP_NO_MODULES
39 # endif
40 #endif
41 
42 // prevent some macro pollution when including R headers
43 // in particular, on Linux, gcc 'leaks' the 'major',
44 // 'minor' and 'makedev' macros on Linux; we prevent
45 // letting those leak in after including any R headers
46 
47 #ifdef major
48 # define RCPP_HAS_MAJOR_MACRO
49 # pragma push_macro("major")
50 #endif
51 
52 #ifdef minor
53 # define RCPP_HAS_MINOR_MACRO
54 # pragma push_macro("minor")
55 #endif
56 
57 #ifdef makedev
58 # define RCPP_HAS_MAKEDEV_MACRO
59 # pragma push_macro("makedev")
60 #endif
61 
62 #include <Rcpp/platform/compiler.h>
63 #include <Rcpp/config.h>
64 #include <Rcpp/macros/macros.h>
65 
66 #include <R.h>
67 #include <Rinternals.h>
68 #include <R_ext/Complex.h>
69 #include <R_ext/Parse.h>
70 #include <R_ext/Rdynload.h>
71 #include <Rversion.h>
72 
73 /* Ensure NORET defined (normally provided by R headers with R >= 3.2.0) */
74 #ifndef NORET
75 # if defined(__GNUC__) && __GNUC__ >= 3
76 # define NORET __attribute__((noreturn))
77 # else
78 # define NORET
79 # endif
80 #endif
81 
82 #undef major
83 #undef minor
84 #undef makedev
85 
86 #ifdef RCPP_HAS_MAJOR_MACRO
87 # pragma pop_macro("major")
88 #endif
89 
90 #ifdef RCPP_HAS_MINOR_MACRO
91 # pragma pop_macro("minor")
92 #endif
93 
94 #ifdef RCPP_HAS_MAKEDEV_MACRO
95 # pragma pop_macro("makedev")
96 #endif
97 
98 #if (defined(RCPP_USE_UNWIND_PROTECT) && defined(R_VERSION) && R_VERSION >= R_Version(3, 5, 0))
99 # define RCPP_USING_UNWIND_PROTECT
100 #endif
101 
102 #endif /* RCPP__R__HEADERS__H */