Rcpp Version 1.0.7
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 - 2021 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 // until January 2022, define RCPP_NO_STRICT_R_HEADERS for transition
29 #ifndef RCPP_NO_STRICT_R_HEADERS
30 # define RCPP_NO_STRICT_R_HEADERS
31 #endif
32 // define strict headers for R to not clash on ERROR, MESSGAGE, etc
33 #ifndef RCPP_NO_STRICT_R_HEADERS
34 # ifndef STRICT_R_HEADERS
35 # define STRICT_R_HEADERS
36 # endif
37 #endif
38 
39 // no rtti implies no modules
40 #ifdef RCPP_NO_RTTI
41 # ifndef RCPP_NO_MODULES
42 # define RCPP_NO_MODULES
43 # endif
44 #endif
45 
46 // prevent some macro pollution when including R headers
47 // in particular, on Linux, gcc 'leaks' the 'major',
48 // 'minor' and 'makedev' macros on Linux; we prevent
49 // letting those leak in after including any R headers
50 
51 #ifdef major
52 # define RCPP_HAS_MAJOR_MACRO
53 # pragma push_macro("major")
54 #endif
55 
56 #ifdef minor
57 # define RCPP_HAS_MINOR_MACRO
58 # pragma push_macro("minor")
59 #endif
60 
61 #ifdef makedev
62 # define RCPP_HAS_MAKEDEV_MACRO
63 # pragma push_macro("makedev")
64 #endif
65 
66 #include <Rcpp/platform/compiler.h>
67 #include <Rcpp/config.h>
68 #include <Rcpp/macros/macros.h>
69 
70 #include <R.h>
71 #include <Rinternals.h>
72 #include <R_ext/Complex.h>
73 #include <R_ext/Parse.h>
74 #include <R_ext/Rdynload.h>
75 #include <Rversion.h>
76 
77 /* Ensure NORET defined (normally provided by R headers with R >= 3.2.0) */
78 #ifndef NORET
79 # if defined(__GNUC__) && __GNUC__ >= 3
80 # define NORET __attribute__((noreturn))
81 # else
82 # define NORET
83 # endif
84 #endif
85 
86 #undef major
87 #undef minor
88 #undef makedev
89 
90 #ifdef RCPP_HAS_MAJOR_MACRO
91 # pragma pop_macro("major")
92 #endif
93 
94 #ifdef RCPP_HAS_MINOR_MACRO
95 # pragma pop_macro("minor")
96 #endif
97 
98 #ifdef RCPP_HAS_MAKEDEV_MACRO
99 # pragma pop_macro("makedev")
100 #endif
101 
102 #if (defined(RCPP_USE_UNWIND_PROTECT) && defined(R_VERSION) && R_VERSION >= R_Version(3, 5, 0))
103 # define RCPP_USING_UNWIND_PROTECT
104 #endif
105 
106 #endif /* RCPP__R__HEADERS__H */
macros.h
compiler.h
config.h