Rcpp Version 1.0.14
Loading...
Searching...
No Matches
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 - 2024 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#ifndef MAXELTSIZE
26 #define MAXELTSIZE 8192
27#endif
28#ifndef R_NO_REMAP
29 #define R_NO_REMAP
30#endif
31
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
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_NO_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 */