1 | #ifndef INC_config_hpp__ |
---|
2 | #define INC_config_hpp__ |
---|
3 | |
---|
4 | /* ANTLR Translator Generator |
---|
5 | * Project led by Terence Parr at http://www.jGuru.com |
---|
6 | * Software rights: http://www.antlr.org/license.html |
---|
7 | * |
---|
8 | * $Id: //depot/code/org.antlr/release/antlr-2.7.7/lib/cpp/antlr/config.hpp#2 $ |
---|
9 | */ |
---|
10 | |
---|
11 | /* |
---|
12 | * Just a simple configuration file to differentiate between the |
---|
13 | * various compilers used and reconfigure stuff for any oddities of the |
---|
14 | * compiler in question. |
---|
15 | * |
---|
16 | * These are the defaults. Per compiler these are amended. |
---|
17 | */ |
---|
18 | #define ANTLR_USE_NAMESPACE(_x_) _x_:: |
---|
19 | #define ANTLR_USING_NAMESPACE(_x_) using namespace _x_; |
---|
20 | #define ANTLR_CXX_SUPPORTS_NAMESPACE 1 |
---|
21 | #define ANTLR_C_USING(_x_) |
---|
22 | #define ANTLR_API |
---|
23 | #ifndef CUSTOM_API |
---|
24 | # define CUSTOM_API |
---|
25 | #endif |
---|
26 | #define ANTLR_IOS_BASE ios_base |
---|
27 | /** define if cctype functions/macros need a std:: prefix. A lot of compilers |
---|
28 | * define these as macros, in which case something barfs. |
---|
29 | */ |
---|
30 | #define ANTLR_CCTYPE_NEEDS_STD |
---|
31 | |
---|
32 | /// Define if C++ compiler supports std::uncaught_exception |
---|
33 | #define ANTLR_CXX_SUPPORTS_UNCAUGHT_EXCEPTION |
---|
34 | |
---|
35 | #define ANTLR_ATOI_IN_STD |
---|
36 | |
---|
37 | /******************************************************************************/ |
---|
38 | /*{{{ Microsoft Visual C++ */ |
---|
39 | // NOTE: If you provide patches for a specific MSVC version guard them for |
---|
40 | // the specific version!!!! |
---|
41 | // _MSC_VER == 1100 for Microsoft Visual C++ 5.0 |
---|
42 | // _MSC_VER == 1200 for Microsoft Visual C++ 6.0 |
---|
43 | // _MSC_VER == 1300 for Microsoft Visual C++ 7.0 |
---|
44 | #if defined(_MSC_VER) |
---|
45 | |
---|
46 | # if _MSC_VER < 1300 |
---|
47 | # define NOMINMAX |
---|
48 | # pragma warning(disable : 4786) |
---|
49 | # define min _cpp_min |
---|
50 | # endif |
---|
51 | |
---|
52 | // This warning really gets on my nerves. |
---|
53 | // It's the one about symbol longer than 256 chars, and it happens |
---|
54 | // all the time with STL. |
---|
55 | # pragma warning( disable : 4786 4231 ) |
---|
56 | // this shuts up some DLL interface warnings for STL |
---|
57 | # pragma warning( disable : 4251 ) |
---|
58 | |
---|
59 | # ifdef ANTLR_CXX_USE_STLPORT |
---|
60 | # undef ANTLR_CXX_SUPPORTS_UNCAUGHT_EXCEPTION |
---|
61 | # endif |
---|
62 | |
---|
63 | # if ( _MSC_VER < 1300 ) && ( defined(ANTLR_EXPORTS) || defined(ANTLR_IMPORTS) ) |
---|
64 | # error "DLL Build not supported on these MSVC versions." |
---|
65 | // see comment in lib/cpp/src/dll.cpp |
---|
66 | # endif |
---|
67 | |
---|
68 | // For the DLL support originally contributed by Stephen Naughton |
---|
69 | // If you are building statically leave ANTLR_EXPORTS/ANTLR_IMPORTS undefined |
---|
70 | // If you are building the DLL define ANTLR_EXPORTS |
---|
71 | // If you are compiling code to be used with the DLL define ANTLR_IMPORTS |
---|
72 | # ifdef ANTLR_EXPORTS |
---|
73 | # undef ANTLR_API |
---|
74 | # define ANTLR_API __declspec(dllexport) |
---|
75 | # endif |
---|
76 | |
---|
77 | # ifdef ANTLR_IMPORTS |
---|
78 | # undef ANTLR_API |
---|
79 | # define ANTLR_API __declspec(dllimport) |
---|
80 | # endif |
---|
81 | |
---|
82 | # if ( _MSC_VER < 1200 ) |
---|
83 | // supposedly only for MSVC5 and before... |
---|
84 | // Using vector<XXX> requires operator<(X,X) to be defined |
---|
85 | # define NEEDS_OPERATOR_LESS_THAN |
---|
86 | # endif |
---|
87 | |
---|
88 | // VC6 |
---|
89 | # if ( _MSC_VER == 1200 ) |
---|
90 | # undef ANTLR_ATOI_IN_STD |
---|
91 | # endif |
---|
92 | |
---|
93 | # if ( _MSC_VER < 1310 ) |
---|
94 | // Supposedly only for MSVC7 and before... |
---|
95 | // Not allowed to put 'static const int XXX=20;' in a class definition |
---|
96 | # define NO_STATIC_CONSTS |
---|
97 | # define NO_TEMPLATE_PARTS |
---|
98 | # endif |
---|
99 | |
---|
100 | // No strcasecmp in the C library (so use stricmp instead) |
---|
101 | // - Anyone know which is in which standard? |
---|
102 | # define NO_STRCASECMP |
---|
103 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
104 | # define NO_STATIC_CONSTS |
---|
105 | #endif // End of Microsoft Visual C++ |
---|
106 | |
---|
107 | /*}}}*/ |
---|
108 | /******************************************************************************/ |
---|
109 | /*{{{ SunPro Compiler (Using OBJECTSPACE STL) |
---|
110 | *****************************************************************************/ |
---|
111 | #ifdef __SUNPRO_CC |
---|
112 | |
---|
113 | # if (__SUNPRO_CC >= 0x500) |
---|
114 | |
---|
115 | # define NEEDS_OPERATOR_LESS_THAN |
---|
116 | # define NO_TEMPLATE_PARTS |
---|
117 | |
---|
118 | # else |
---|
119 | |
---|
120 | # undef namespace |
---|
121 | # define namespace |
---|
122 | |
---|
123 | # if (__SUNPRO_CC == 0x420) |
---|
124 | |
---|
125 | /* This code is specif to SunWspro Compiler 4.2, and will compile with |
---|
126 | the objectspace 2.1 toolkit for Solaris2.6 */ |
---|
127 | # define HAS_NOT_CASSERT_H |
---|
128 | # define HAS_NOT_CSTRING_H |
---|
129 | # define HAS_NOT_CCTYPE_H |
---|
130 | # define HAS_NOT_CSTDIO_H |
---|
131 | # define HAS_OSTREAM_H |
---|
132 | |
---|
133 | /* #define OS_SOLARIS_2_6 |
---|
134 | #define OS_NO_WSTRING |
---|
135 | #define OS_NO_ALLOCATORS |
---|
136 | #define OS_MULTI_THREADED |
---|
137 | #define OS_SOLARIS_NATIVE |
---|
138 | #define OS_REALTIME |
---|
139 | #define __OSVERSION__=5 |
---|
140 | #define SVR4 |
---|
141 | */ |
---|
142 | |
---|
143 | // ObjectSpace + some specific templates constructions with stl. |
---|
144 | /* #define OS_NO_ALLOCATOR */ |
---|
145 | |
---|
146 | // This great compiler does not have the namespace feature. |
---|
147 | # undef ANTLR_USE_NAMESPACE |
---|
148 | # define ANTLR_USE_NAMESPACE(_x_) |
---|
149 | # undef ANTLR_USING_NAMESPACE |
---|
150 | # define ANTLR_USING_NAMESPACE(_x_) |
---|
151 | # undef ANTLR_CXX_SUPPORTS_NAMESPACE |
---|
152 | # endif // End __SUNPRO_CC == 0x420 |
---|
153 | |
---|
154 | # undef explicit |
---|
155 | # define explicit |
---|
156 | |
---|
157 | # define exception os_exception |
---|
158 | # define bad_exception os_bad_exception |
---|
159 | |
---|
160 | // Not allowed to put 'static const int XXX=20;' in a class definition |
---|
161 | # define NO_STATIC_CONSTS |
---|
162 | // Using vector<XXX> requires operator<(X,X) to be defined |
---|
163 | # define NEEDS_OPERATOR_LESS_THAN |
---|
164 | |
---|
165 | # endif |
---|
166 | |
---|
167 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
168 | |
---|
169 | #endif // end __SUNPRO_CC |
---|
170 | /*}}}*/ |
---|
171 | /*****************************************************************************/ |
---|
172 | /*{{{ Inprise C++ Builder 3.0 |
---|
173 | *****************************************************************************/ |
---|
174 | #ifdef __BCPLUSPLUS__ |
---|
175 | # define NO_TEMPLATE_PARTS |
---|
176 | # define NO_STRCASECMP |
---|
177 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
178 | #endif // End of C++ Builder 3.0 |
---|
179 | /*}}}*/ |
---|
180 | /*****************************************************************************/ |
---|
181 | /*{{{ IBM VisualAge C++ ( which includes the Dinkumware C++ Library ) |
---|
182 | *****************************************************************************/ |
---|
183 | #ifdef __IBMCPP__ |
---|
184 | |
---|
185 | // No strcasecmp in the C library (so use stricmp instead) |
---|
186 | // - Anyone know which is in which standard? |
---|
187 | #if (defined(_AIX) && (__IBMCPP__ >= 600)) |
---|
188 | # define NO_STATIC_CONSTS |
---|
189 | #else |
---|
190 | # define NO_STRCASECMP |
---|
191 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
192 | #endif |
---|
193 | |
---|
194 | #endif // end IBM VisualAge C++ |
---|
195 | /*}}}*/ |
---|
196 | /*****************************************************************************/ |
---|
197 | /*{{{ Metrowerks Codewarrior |
---|
198 | *****************************************************************************/ |
---|
199 | #ifdef __MWERKS__ |
---|
200 | # if (__MWERKS__ <= 0x2201) |
---|
201 | # define NO_TEMPLATE_PARTS |
---|
202 | # endif |
---|
203 | |
---|
204 | // CW 6.0 and 7.0 still do not have it. |
---|
205 | # define ANTLR_REALLY_NO_STRCASECMP |
---|
206 | |
---|
207 | # undef ANTLR_C_USING |
---|
208 | # define ANTLR_C_USING(_x_) using std:: ## _x_; |
---|
209 | |
---|
210 | # define ANTLR_CCTYPE_NEEDS_STD |
---|
211 | # undef ANTLR_CXX_SUPPORTS_UNCAUGHT_EXCEPTION |
---|
212 | |
---|
213 | #endif // End of Metrowerks Codewarrior |
---|
214 | /*}}}*/ |
---|
215 | /*****************************************************************************/ |
---|
216 | /*{{{ SGI Irix 6.5.10 MIPSPro compiler |
---|
217 | *****************************************************************************/ |
---|
218 | // (contributed by Anna Winkler) |
---|
219 | // Note: you can't compile ANTLR with the MIPSPro compiler on |
---|
220 | // anything < 6.5.10 because SGI just fixed a big bug dealing with |
---|
221 | // namespaces in that release. |
---|
222 | #ifdef __sgi |
---|
223 | # define HAS_NOT_CCTYPE_H |
---|
224 | # define HAS_NOT_CSTRING_H |
---|
225 | # define HAS_NOT_CSTDIO_H |
---|
226 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
227 | #endif // End IRIX MIPSPro |
---|
228 | /*}}}*/ |
---|
229 | /*****************************************************************************/ |
---|
230 | /*{{{ G++ in various incarnations |
---|
231 | *****************************************************************************/ |
---|
232 | // With the gcc-2.95 and 3.0 being in the near future we should start handling |
---|
233 | // incompatabilities between the various libstdc++'s. |
---|
234 | #if defined(__GNUC__) || defined(__GNUG__) |
---|
235 | // gcc 2 branch.. |
---|
236 | # if (__GNUC__ == 2 ) |
---|
237 | # if (__GNUC_MINOR__ <= 8 ) |
---|
238 | # undef ANTLR_USE_NAMESPACE |
---|
239 | # define ANTLR_USE_NAMESPACE(_x_) |
---|
240 | # undef ANTLR_USING_NAMESPACE |
---|
241 | # define ANTLR_USING_NAMESPACE(_x_) |
---|
242 | # undef ANTLR_CXX_SUPPORTS_NAMESPACE |
---|
243 | # endif |
---|
244 | # if (__GNUC_MINOR__ > 8 && __GNUC_MINOR__ <= 95 ) |
---|
245 | # undef ANTLR_IOS_BASE |
---|
246 | # define ANTLR_IOS_BASE ios |
---|
247 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
248 | // compiling with -ansi ? |
---|
249 | # ifdef __STRICT_ANSI__ |
---|
250 | # undef ANTLR_REALLY_NO_STRCASECMP |
---|
251 | # define ANTLR_REALLY_NO_STRCASECMP |
---|
252 | # endif |
---|
253 | # else |
---|
254 | // experimental .96 .97 branches.. |
---|
255 | # undef ANTLR_CCTYPE_NEEDS_STD |
---|
256 | # endif |
---|
257 | # endif |
---|
258 | #endif // ! __GNUC__ |
---|
259 | /*}}}*/ |
---|
260 | /*****************************************************************************/ |
---|
261 | /*{{{ Digital CXX (Tru64) |
---|
262 | *****************************************************************************/ |
---|
263 | #ifdef __DECCXX |
---|
264 | #define __USE_STD_IOSTREAM |
---|
265 | #endif |
---|
266 | /*}}}*/ |
---|
267 | /*****************************************************************************/ |
---|
268 | #ifdef __BORLANDC__ |
---|
269 | # if __BORLANDC__ >= 560 |
---|
270 | # include <ctype> |
---|
271 | # include <stdlib> |
---|
272 | # define ANTLR_CCTYPE_NEEDS_STD |
---|
273 | # else |
---|
274 | # error "sorry, compiler is too old - consider an update." |
---|
275 | # endif |
---|
276 | #endif |
---|
277 | |
---|
278 | // Redefine these for backwards compatability.. |
---|
279 | #undef ANTLR_BEGIN_NAMESPACE |
---|
280 | #undef ANTLR_END_NAMESPACE |
---|
281 | |
---|
282 | #if ANTLR_CXX_SUPPORTS_NAMESPACE == 1 |
---|
283 | # define ANTLR_BEGIN_NAMESPACE(_x_) namespace _x_ { |
---|
284 | # define ANTLR_END_NAMESPACE } |
---|
285 | #else |
---|
286 | # define ANTLR_BEGIN_NAMESPACE(_x_) |
---|
287 | # define ANTLR_END_NAMESPACE |
---|
288 | #endif |
---|
289 | |
---|
290 | #endif //INC_config_hpp__ |
---|