Rcpp Version 0.12.12
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 - 2013 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 // prevent some macro pollution when including R headers
29 // in particular, on Linux, gcc 'leaks' the 'major',
30 // 'minor' and 'makedev' macros on Linux; we prevent
31 // letting those leak in after including any R headers
32 
33 #ifdef major
34 # define RCPP_HAS_MAJOR_MACRO
35 # pragma push_macro("major")
36 #endif
37 
38 #ifdef minor
39 # define RCPP_HAS_MINOR_MACRO
40 # pragma push_macro("minor")
41 #endif
42 
43 #ifdef makedev
44 # define RCPP_HAS_MAKEDEV_MACRO
45 # pragma push_macro("makedev")
46 #endif
47 
48 #include <Rcpp/platform/compiler.h>
49 #include <Rcpp/config.h>
50 #include <Rcpp/macros/macros.h>
51 
52 #include <R.h>
53 #include <Rinternals.h>
54 #include <R_ext/Complex.h>
55 #include <R_ext/Parse.h>
56 #include <R_ext/Rdynload.h>
57 #include <Rversion.h>
58 
59 /* Ensure NORET defined (normally provided by R headers with R >= 3.2.0) */
60 #ifndef NORET
61 # if defined(__GNUC__) && __GNUC__ >= 3
62 # define NORET __attribute__((noreturn))
63 # else
64 # define NORET
65 # endif
66 #endif
67 
68 #undef major
69 #undef minor
70 #undef makedev
71 
72 #ifdef RCPP_HAS_MAJOR_MACRO
73 # pragma pop_macro("major")
74 #endif
75 
76 #ifdef RCPP_HAS_MINOR_MACRO
77 # pragma pop_macro("minor")
78 #endif
79 
80 #ifdef RCPP_HAS_MAKEDEV_MACRO
81 # pragma pop_macro("makedev")
82 #endif
83 
84 #endif /* RCPP__R__HEADERS__H */