Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4680 | right-hear | 1 | /* |
2 | * |
||
3 | * Copyright (c) 1994 |
||
4 | * Hewlett-Packard Company |
||
5 | * |
||
6 | * Permission to use, copy, modify, distribute and sell this software |
||
7 | * and its documentation for any purpose is hereby granted without fee, |
||
8 | * provided that the above copyright notice appear in all copies and |
||
9 | * that both that copyright notice and this permission notice appear |
||
10 | * in supporting documentation. Hewlett-Packard Company makes no |
||
11 | * representations about the suitability of this software for any |
||
12 | * purpose. It is provided "as is" without express or implied warranty. |
||
13 | * |
||
14 | * Copyright (c) 1997 |
||
15 | * Silicon Graphics |
||
16 | * |
||
17 | * Permission to use, copy, modify, distribute and sell this software |
||
18 | * and its documentation for any purpose is hereby granted without fee, |
||
19 | * provided that the above copyright notice appear in all copies and |
||
20 | * that both that copyright notice and this permission notice appear |
||
21 | * in supporting documentation. Silicon Graphics makes no |
||
22 | * representations about the suitability of this software for any |
||
23 | * purpose. It is provided "as is" without express or implied warranty. |
||
24 | * |
||
25 | */ |
||
26 | |||
27 | #ifndef __STL_CONFIG_H |
||
28 | # define __STL_CONFIG_H |
||
29 | |||
30 | // Flags: |
||
31 | // * __STL_NO_BOOL: defined if the compiler doesn't have bool as a builtin |
||
32 | // type. |
||
33 | // * __STL_HAS_WCHAR_T: defined if the compier has wchar_t as a builtin type. |
||
34 | // * __STL_NO_DRAND48: defined if the compiler doesn't have the drand48 |
||
35 | // function. |
||
36 | // * __STL_STATIC_TEMPLATE_MEMBER_BUG: defined if the compiler can't handle |
||
37 | // static members of template classes. |
||
38 | // * __STL_STATIC_CONST_INIT_BUG: defined if the compiler can't handle a |
||
39 | // constant-initializer in the declaration of a static const data member |
||
40 | // of integer type. (See section 9.4.2, paragraph 4, of the C++ standard.) |
||
41 | // * __STL_CLASS_PARTIAL_SPECIALIZATION: defined if the compiler supports |
||
42 | // partial specialization of template classes. |
||
43 | // * __STL_PARTIAL_SPECIALIZATION_SYNTAX: defined if the compiler |
||
44 | // supports partial specialization syntax for full specialization of |
||
45 | // class templates. (Even if it doesn't actually support partial |
||
46 | // specialization itself.) |
||
47 | // * __STL_FUNCTION_TMPL_PARTIAL_ORDER: defined if the compiler supports |
||
48 | // partial ordering of function templates. (a.k.a partial specialization |
||
49 | // of function templates.) |
||
50 | // * __STL_MEMBER_TEMPLATES: defined if the compiler supports template |
||
51 | // member functions of classes. |
||
52 | // * __STL_MEMBER_TEMPLATE_CLASSES: defined if the compiler supports |
||
53 | // nested classes that are member templates of other classes. |
||
54 | // * __STL_TEMPLATE_FRIENDS: defined if the compiler supports templatized |
||
55 | // friend declarations. |
||
56 | // * __STL_EXPLICIT_FUNCTION_TMPL_ARGS: defined if the compiler |
||
57 | // supports calling a function template by providing its template |
||
58 | // arguments explicitly. |
||
59 | // * __STL_LIMITED_DEFAULT_TEMPLATES: defined if the compiler is unable |
||
60 | // to handle default template parameters that depend on previous template |
||
61 | // parameters. |
||
62 | // * __STL_NON_TYPE_TMPL_PARAM_BUG: defined if the compiler has trouble with |
||
63 | // function template argument deduction for non-type template parameters. |
||
64 | // * __SGI_STL_NO_ARROW_OPERATOR: defined if the compiler is unable |
||
65 | // to support the -> operator for iterators. |
||
66 | // * __STL_DEFAULT_CONSTRUCTOR_BUG: defined if T() does not work properly |
||
67 | // when T is a builtin type. |
||
68 | // * __STL_USE_EXCEPTIONS: defined if the compiler (in the current compilation |
||
69 | // mode) supports exceptions. |
||
70 | // * __STL_USE_NAMESPACES: defined if the compiler has the necessary |
||
71 | // support for namespaces. |
||
72 | // * __STL_NO_EXCEPTION_HEADER: defined if the compiler does not have a |
||
73 | // standard-conforming header |
||
74 | // * __STL_NO_BAD_ALLOC: defined if the compiler does not have a |
||
75 | // header, or if |
||
76 | // class exists, it is assumed to be in namespace std. |
||
77 | // * __STL_SGI_THREADS: defined if this is being compiled for an SGI IRIX |
||
78 | // system in multithreaded mode, using native SGI threads instead of |
||
79 | // pthreads. |
||
80 | // * __STL_WIN32THREADS: defined if this is being compiled on a WIN32 |
||
81 | // compiler in multithreaded mode. |
||
82 | // * __STL_PTHREADS: defined if we should use portable pthreads |
||
83 | // synchronization. |
||
84 | // * __STL_UITHREADS: defined if we should use UI / solaris / UnixWare threads |
||
85 | // synchronization. UIthreads are similar to pthreads, but are based |
||
86 | // on an earlier version of the Posix threads standard. |
||
87 | // * __STL_LONG_LONG if the compiler has long long and unsigned long long |
||
88 | // types. (They're not in the C++ standard, but they are included |
||
89 | // in the C99 standard.) |
||
90 | // * __STL_THREADS is defined if thread safety is needed. |
||
91 | // * __STL_VOLATILE is defined to be "volatile" if threads are being |
||
92 | // used, and the empty string otherwise. |
||
93 | // * __STL_USE_CONCEPT_CHECKS enables some extra compile-time error |
||
94 | // checking to make sure that user-defined template arguments satisfy |
||
95 | // all of the appropriate requirements. This may result in more |
||
96 | // comprehensible error messages. It incurs no runtime overhead. This |
||
97 | // feature requires member templates and partial specialization. |
||
98 | // * __STL_NO_USING_CLAUSE_IN_CLASS: The compiler does not handle "using" |
||
99 | // clauses inside of class definitions. |
||
100 | // * __STL_NO_FRIEND_TEMPLATE_CLASS: The compiler does not handle friend |
||
101 | // declaractions where the friend is a template class. |
||
102 | // * __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE: The compiler does not |
||
103 | // support the use of a function pointer type as the argument |
||
104 | // for a template. |
||
105 | // * __STL_MEMBER_TEMPLATE_KEYWORD: standard C++ requires the template |
||
106 | // keyword in a few new places (14.2.4). This flag is set for |
||
107 | // compilers that support (and require) this usage. |
||
108 | |||
109 | |||
110 | // User-settable macros that control compilation: |
||
111 | // * __STL_USE_SGI_ALLOCATORS: if defined, then the STL will use older |
||
112 | // SGI-style allocators, instead of standard-conforming allocators, |
||
113 | // even if the compiler supports all of the language features needed |
||
114 | // for standard-conforming allocators. |
||
115 | // * __STL_NO_NAMESPACES: if defined, don't put the library in namespace |
||
116 | // std, even if the compiler supports namespaces. |
||
117 | // * __STL_NO_RELOPS_NAMESPACE: if defined, don't put the relational |
||
118 | // operator templates (>, <=. >=, !=) in namespace std::rel_ops, even |
||
119 | // if the compiler supports namespaces and partial ordering of |
||
120 | // function templates. |
||
121 | // * __STL_ASSERTIONS: if defined, then enable runtime checking through the |
||
122 | // __stl_assert macro. |
||
123 | // * _PTHREADS: if defined, use Posix threads for multithreading support. |
||
124 | // * _UITHREADS:if defined, use SCO/Solaris/UI threads for multithreading |
||
125 | // support |
||
126 | // * _NOTHREADS: if defined, don't use any multithreading support. |
||
127 | // * _STL_NO_CONCEPT_CHECKS: if defined, disables the error checking that |
||
128 | // we get from __STL_USE_CONCEPT_CHECKS. |
||
129 | // * __STL_USE_NEW_IOSTREAMS: if defined, then the STL will use new, |
||
130 | // standard-conforming iostreams (e.g. the |
||
131 | // defined, the STL will use old cfront-style iostreams (e.g. the |
||
132 | // |
||
133 | |||
134 | // Other macros defined by this file: |
||
135 | |||
136 | // * bool, true, and false, if __STL_NO_BOOL is defined. |
||
137 | // * typename, as a null macro if it's not already a keyword. |
||
138 | // * explicit, as a null macro if it's not already a keyword. |
||
139 | // * namespace-related macros (__STD, __STL_BEGIN_NAMESPACE, etc.) |
||
140 | // * exception-related macros (__STL_TRY, __STL_UNWIND, etc.) |
||
141 | // * __stl_assert, either as a test or as a null macro, depending on |
||
142 | // whether or not __STL_ASSERTIONS is defined. |
||
143 | |||
144 | # if defined(_PTHREADS) && !defined(_NOTHREADS) |
||
145 | # define __STL_PTHREADS |
||
146 | # endif |
||
147 | |||
148 | # if defined(_UITHREADS) && !defined(_PTHREADS) && !defined(_NOTHREADS) |
||
149 | # define __STL_UITHREADS |
||
150 | # endif |
||
151 | |||
152 | # if defined(__sgi) && !defined(__GNUC__) |
||
153 | # include |
||
154 | # if !defined(_BOOL) |
||
155 | # define __STL_NO_BOOL |
||
156 | # endif |
||
157 | # if defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32 |
||
158 | # define __STL_STATIC_CONST_INIT_BUG |
||
159 | # endif |
||
160 | # if defined(_WCHAR_T_IS_KEYWORD) |
||
161 | # define __STL_HAS_WCHAR_T |
||
162 | # endif |
||
163 | # if !defined(_TYPENAME_IS_KEYWORD) |
||
164 | # define __STL_NEED_TYPENAME |
||
165 | # endif |
||
166 | # ifdef _PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES |
||
167 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
168 | # endif |
||
169 | # if (_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32 |
||
170 | # define __STL_FUNCTION_TMPL_PARTIAL_ORDER |
||
171 | # endif |
||
172 | # ifdef _MEMBER_TEMPLATES |
||
173 | # define __STL_MEMBER_TEMPLATES |
||
174 | # define __STL_TEMPLATE_FRIENDS |
||
175 | # define __STL_MEMBER_TEMPLATE_CLASSES |
||
176 | # endif |
||
177 | # if defined(_MEMBER_TEMPLATE_KEYWORD) |
||
178 | # define __STL_MEMBER_TEMPLATE_KEYWORD |
||
179 | # endif |
||
180 | # if defined(_STANDARD_C_PLUS_PLUS) |
||
181 | # define __STL_EXPLICIT_FUNCTION_TMPL_ARGS |
||
182 | # endif |
||
183 | # if (_COMPILER_VERSION >= 730) && defined(_MIPS_SIM) && _MIPS_SIM != _ABIO32 |
||
184 | # define __STL_MEMBER_TEMPLATE_KEYWORD |
||
185 | # endif |
||
186 | # if COMPILER_VERSION < 720 || (defined(_MIPS_SIM) && _MIPS_SIM == _ABIO32) |
||
187 | # define __STL_DEFAULT_CONSTRUCTOR_BUG |
||
188 | # endif |
||
189 | # if !defined(_EXPLICIT_IS_KEYWORD) |
||
190 | # define __STL_NEED_EXPLICIT |
||
191 | # endif |
||
192 | # ifdef __EXCEPTIONS |
||
193 | # define __STL_USE_EXCEPTIONS |
||
194 | # endif |
||
195 | # if (_COMPILER_VERSION >= 721) && defined(_NAMESPACES) |
||
196 | # define __STL_HAS_NAMESPACES |
||
197 | # endif |
||
198 | # if (_COMPILER_VERSION < 721) || \ |
||
199 | !defined(__STL_HAS_NAMESPACES) || defined(__STL_NO_NAMESPACES) |
||
200 | # define __STL_NO_EXCEPTION_HEADER |
||
201 | # endif |
||
202 | # if _COMPILER_VERSION < 730 || !defined(_STANDARD_C_PLUS_PLUS) || \ |
||
203 | !defined(_NAMESPACES) |
||
204 | # define __STL_NO_BAD_ALLOC |
||
205 | # endif |
||
206 | # if !defined(_NOTHREADS) && !defined(__STL_PTHREADS) |
||
207 | # define __STL_SGI_THREADS |
||
208 | # endif |
||
209 | # if defined(_LONGLONG) && defined(_SGIAPI) && _SGIAPI |
||
210 | # define __STL_LONG_LONG |
||
211 | # endif |
||
212 | # if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS) |
||
213 | # define __STL_USE_NEW_IOSTREAMS |
||
214 | # endif |
||
215 | # if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS) |
||
216 | # define __STL_CAN_THROW_RANGE_ERRORS |
||
217 | # endif |
||
218 | # if _COMPILER_VERSION >= 730 && defined(_STANDARD_C_PLUS_PLUS) |
||
219 | # define __SGI_STL_USE_AUTO_PTR_CONVERSIONS |
||
220 | # endif |
||
221 | # endif |
||
222 | |||
223 | |||
224 | /* |
||
225 | * Jochen Schlick '1999 - added new #defines (__STL)_UITHREADS (for |
||
226 | * providing SCO / Solaris / UI thread support) |
||
227 | * - added the necessary defines for the SCO UDK 7 |
||
228 | * compiler (and its template friend behavior) |
||
229 | * - all UDK7 specific STL changes are based on the |
||
230 | * macro __USLC__ being defined |
||
231 | */ |
||
232 | // SCO UDK 7 compiler (UnixWare 7x, OSR 5, UnixWare 2x) |
||
233 | # if defined(__USLC__) |
||
234 | # define __STL_HAS_WCHAR_T |
||
235 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
236 | # define __STL_PARTIAL_SPECIALIZATION_SYNTAX |
||
237 | # define __STL_FUNCTION_TMPL_PARTIAL_ORDER |
||
238 | # define __STL_MEMBER_TEMPLATES |
||
239 | # define __STL_MEMBER_TEMPLATE_CLASSES |
||
240 | # define __STL_USE_EXCEPTIONS |
||
241 | # define __STL_HAS_NAMESPACES |
||
242 | # define __STL_USE_NAMESPACES |
||
243 | # define __STL_LONG_LONG |
||
244 | # if defined(_REENTRANT) |
||
245 | # define _UITHREADS /* if UnixWare < 7.0.1 */ |
||
246 | # define __STL_UITHREADS |
||
247 | // use the following defines instead of the UI threads defines when |
||
248 | // you want to use POSIX threads |
||
249 | //# define _PTHREADS /* only if UnixWare >=7.0.1 */ |
||
250 | //# define __STL_PTHREADS |
||
251 | # endif |
||
252 | # endif |
||
253 | |||
254 | |||
255 | |||
256 | # ifdef __GNUC__ |
||
257 | # define __STL_HAS_WCHAR_T |
||
258 | # define __STL_MEMBER_TEMPLATES |
||
259 | # define __STL_MEMBER_TEMPLATE_CLASSES |
||
260 | # define __STL_TEMPLATE_FRIENDS |
||
261 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
262 | # define __STL_PARTIAL_SPECIALIZATION_SYNTAX |
||
263 | # define __STL_FUNCTION_TMPL_PARTIAL_ORDER |
||
264 | # define __STL_EXPLICIT_FUNCTION_TMPL_ARGS |
||
265 | # define __SGI_STL_USE_AUTO_PTR_CONVERSIONS |
||
266 | # define __STL_HAS_NAMESPACES |
||
267 | # define __STL_USE_NAMESPACES |
||
268 | # ifdef __EXCEPTIONS |
||
269 | # define __STL_USE_EXCEPTIONS |
||
270 | # endif |
||
271 | # define __STL_THROW_RANGE_ERRORS |
||
272 | # define __STL_CAN_THROW_RANGE_ERRORS |
||
273 | # define __STL_USE_STD_ALLOCATORS |
||
274 | # define __USE_MALLOC // As the "underlying allocator" |
||
275 | //# define __STL_USE_NEW_IOSTREAMS //990209 bkoz--use standard .h includes. |
||
276 | # ifdef _REENTRANT |
||
277 | # define __STL_THREADS |
||
278 | # endif |
||
279 | # ifdef _PTHREADS |
||
280 | # define __STL_PTHREADS |
||
281 | # endif |
||
282 | # ifndef __STRICT_ANSI__ |
||
283 | # define __STL_LONG_LONG |
||
284 | # endif |
||
285 | # if (__GNUC__ < 2) || (__GNUC__ == 2 && __GNUC_MINOR__ < 95) |
||
286 | # define __STL_NO_FUNCTION_PTR_IN_CLASS_TEMPLATE |
||
287 | # endif |
||
288 | # endif |
||
289 | |||
290 | # if defined(__SUNPRO_CC) |
||
291 | # define __STL_NO_BOOL |
||
292 | # define __STL_NEED_TYPENAME |
||
293 | # define __STL_NEED_EXPLICIT |
||
294 | # define __STL_USE_EXCEPTIONS |
||
295 | # ifdef _REENTRANT |
||
296 | # define __STL_PTHREADS |
||
297 | # endif |
||
298 | # define __SGI_STL_NO_ARROW_OPERATOR |
||
299 | # define __STL_PARTIAL_SPECIALIZATION_SYNTAX |
||
300 | # define __STL_NO_EXCEPTION_HEADER |
||
301 | # define __STL_NO_BAD_ALLOC |
||
302 | # endif |
||
303 | |||
304 | # if defined(__COMO__) |
||
305 | # define __STL_MEMBER_TEMPLATES |
||
306 | # define __STL_MEMBER_TEMPLATE_CLASSES |
||
307 | # define __STL_TEMPLATE_FRIENDS |
||
308 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
309 | # define __STL_USE_EXCEPTIONS |
||
310 | # define __STL_HAS_NAMESPACES |
||
311 | # endif |
||
312 | |||
313 | // Intel compiler, which uses the EDG front end. |
||
314 | # if defined(__ICL) |
||
315 | # define __STL_LONG_LONG |
||
316 | # define __STL_MEMBER_TEMPLATES |
||
317 | # define __STL_MEMBER_TEMPLATE_CLASSES |
||
318 | # define __STL_TEMPLATE_FRIENDS |
||
319 | # define __STL_FUNCTION_TMPL_PARTIAL_ORDER |
||
320 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
321 | # define __STL_NO_DRAND48 |
||
322 | # define __STL_HAS_NAMESPACES |
||
323 | # define __STL_USE_EXCEPTIONS |
||
324 | # define __STL_MEMBER_TEMPLATE_KEYWORD |
||
325 | # ifdef _CPPUNWIND |
||
326 | # define __STL_USE_EXCEPTIONS |
||
327 | # endif |
||
328 | # ifdef _MT |
||
329 | # define __STL_WIN32THREADS |
||
330 | # endif |
||
331 | # endif |
||
332 | |||
333 | // Mingw32, GCC compiler using the Microsoft C runtime |
||
334 | # if defined(__MINGW32__) |
||
335 | # define __STL_NO_DRAND48 |
||
336 | # ifdef _MT |
||
337 | # define __STL_WIN32THREADS |
||
338 | # endif |
||
339 | # endif |
||
340 | |||
341 | // Cygwin32, GCC compiler on MS Windows |
||
342 | # if defined(__CYGWIN__) |
||
343 | # define __STL_NO_DRAND48 |
||
344 | # endif |
||
345 | |||
346 | |||
347 | |||
348 | // Microsoft compiler. |
||
349 | # if defined(_MSC_VER) && !defined(__ICL) && !defined(__MWERKS__) |
||
350 | # define __STL_NO_DRAND48 |
||
351 | # define __STL_STATIC_CONST_INIT_BUG |
||
352 | # define __STL_NEED_TYPENAME |
||
353 | # define __STL_NO_USING_CLAUSE_IN_CLASS |
||
354 | # define __STL_NO_FRIEND_TEMPLATE_CLASS |
||
355 | # if _MSC_VER < 1100 /* 1000 is version 4.0, 1100 is 5.0, 1200 is 6.0. */ |
||
356 | # define __STL_NEED_EXPLICIT |
||
357 | # define __STL_NO_BOOL |
||
358 | # define __STL_NO_BAD_ALLOC |
||
359 | # endif |
||
360 | # if _MSC_VER > 1000 |
||
361 | # include |
||
362 | # define __STL_DONT_USE_BOOL_TYPEDEF |
||
363 | # endif |
||
364 | # define __STL_NON_TYPE_TMPL_PARAM_BUG |
||
365 | # define __SGI_STL_NO_ARROW_OPERATOR |
||
366 | # define __STL_DEFAULT_CONSTRUCTOR_BUG |
||
367 | # ifdef _CPPUNWIND |
||
368 | # define __STL_USE_EXCEPTIONS |
||
369 | # endif |
||
370 | # ifdef _MT |
||
371 | # define __STL_WIN32THREADS |
||
372 | # endif |
||
373 | # if _MSC_VER >= 1200 |
||
374 | # define __STL_PARTIAL_SPECIALIZATION_SYNTAX |
||
375 | # define __STL_HAS_NAMESPACES |
||
376 | # define __STL_CAN_THROW_RANGE_ERRORS |
||
377 | # define NOMINMAX |
||
378 | # undef min |
||
379 | # undef max |
||
380 | // disable warning 'initializers put in unrecognized initialization area' |
||
381 | # pragma warning ( disable : 4075 ) |
||
382 | // disable warning 'empty controlled statement found' |
||
383 | # pragma warning ( disable : 4390 ) |
||
384 | // disable warning 'debug symbol greater than 255 chars' |
||
385 | # pragma warning ( disable : 4786 ) |
||
386 | # endif |
||
387 | # if _MSC_VER < 1100 |
||
388 | # define __STL_NO_EXCEPTION_HEADER |
||
389 | # define __STL_NO_BAD_ALLOC |
||
390 | # endif |
||
391 | // Because of a Microsoft front end bug, we must not provide a |
||
392 | // namespace qualifier when declaring a friend function. |
||
393 | # define __STD_QUALIFIER |
||
394 | # endif |
||
395 | |||
396 | # if defined(__BORLANDC__) |
||
397 | # define __STL_NO_BAD_ALLOC |
||
398 | # define __STL_NO_DRAND48 |
||
399 | # define __STL_DEFAULT_CONSTRUCTOR_BUG |
||
400 | # if __BORLANDC__ >= 0x540 /* C++ Builder 4.0 */ |
||
401 | # define __STL_CLASS_PARTIAL_SPECIALIZATION |
||
402 | # define __STL_FUNCTION_TMPL_PARTIAL_ORDER |
||
403 | # define __STL_EXPLICIT_FUNCTION_TMPL_ARGS |
||
404 | # define __STL_MEMBER_TEMPLATES |
||
405 | # define __STL_TEMPLATE_FRIENDS |
||
406 | # else |
||
407 | # define __STL_NEED_TYPENAME |
||
408 | # define __STL_LIMITED_DEFAULT_TEMPLATES |
||
409 | # define __SGI_STL_NO_ARROW_OPERATOR |
||
410 | # define __STL_NON_TYPE_TMPL_PARAM_BUG |
||
411 | # endif |
||
412 | # ifdef _CPPUNWIND |
||
413 | # define __STL_USE_EXCEPTIONS |
||
414 | # endif |
||
415 | # ifdef __MT__ |
||
416 | # define __STL_WIN32THREADS |
||
417 | # endif |
||
418 | # endif |
||
419 | |||
420 | # if defined(__STL_NO_BOOL) && !defined(__STL_DONT_USE_BOOL_TYPEDEF) |
||
421 | typedef int bool; |
||
422 | # define true 1 |
||
423 | # define false 0 |
||
424 | # endif |
||
425 | |||
426 | # ifdef __STL_NEED_TYPENAME |
||
427 | # define typename |
||
428 | # endif |
||
429 | |||
430 | # ifdef __STL_LIMITED_DEFAULT_TEMPLATES |
||
431 | # define __STL_DEPENDENT_DEFAULT_TMPL(_Tp) |
||
432 | # else |
||
433 | # define __STL_DEPENDENT_DEFAULT_TMPL(_Tp) = _Tp |
||
434 | # endif |
||
435 | |||
436 | # ifdef __STL_MEMBER_TEMPLATE_KEYWORD |
||
437 | # define __STL_TEMPLATE template |
||
438 | # else |
||
439 | # define __STL_TEMPLATE |
||
440 | # endif |
||
441 | |||
442 | # ifdef __STL_NEED_EXPLICIT |
||
443 | # define explicit |
||
444 | # endif |
||
445 | |||
446 | # ifdef __STL_EXPLICIT_FUNCTION_TMPL_ARGS |
||
447 | # define __STL_NULL_TMPL_ARGS <> |
||
448 | # else |
||
449 | # define __STL_NULL_TMPL_ARGS |
||
450 | # endif |
||
451 | |||
452 | # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \ |
||
453 | || defined (__STL_PARTIAL_SPECIALIZATION_SYNTAX) |
||
454 | # define __STL_TEMPLATE_NULL template<> |
||
455 | # else |
||
456 | # define __STL_TEMPLATE_NULL |
||
457 | # endif |
||
458 | |||
459 | // Use standard-conforming allocators if we have the necessary language |
||
460 | // features. __STL_USE_SGI_ALLOCATORS is a hook so that users can |
||
461 | // disable new-style allocators, and continue to use the same kind of |
||
462 | // allocators as before, without having to edit library headers. |
||
463 | # if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) && \ |
||
464 | defined(__STL_MEMBER_TEMPLATES) && \ |
||
465 | defined(__STL_MEMBER_TEMPLATE_CLASSES) && \ |
||
466 | !defined(__STL_NO_BOOL) && \ |
||
467 | !defined(__STL_NON_TYPE_TMPL_PARAM_BUG) && \ |
||
468 | !defined(__STL_LIMITED_DEFAULT_TEMPLATES) && \ |
||
469 | !defined(__STL_USE_SGI_ALLOCATORS) |
||
470 | # define __STL_USE_STD_ALLOCATORS |
||
471 | # endif |
||
472 | |||
473 | # ifndef __STL_DEFAULT_ALLOCATOR |
||
474 | # ifdef __STL_USE_STD_ALLOCATORS |
||
475 | # define __STL_DEFAULT_ALLOCATOR(T) allocator< T > |
||
476 | # else |
||
477 | # define __STL_DEFAULT_ALLOCATOR(T) alloc |
||
478 | # endif |
||
479 | # endif |
||
480 | |||
481 | // __STL_NO_NAMESPACES is a hook so that users can disable namespaces |
||
482 | // without having to edit library headers. __STL_NO_RELOPS_NAMESPACE is |
||
483 | // a hook so that users can disable the std::rel_ops namespace, keeping |
||
484 | // the relational operator template in namespace std, without having to |
||
485 | // edit library headers. |
||
486 | # if defined(__STL_HAS_NAMESPACES) && !defined(__STL_NO_NAMESPACES) |
||
487 | # define __STL_USE_NAMESPACES |
||
488 | # define __STD std |
||
489 | # define __STL_BEGIN_NAMESPACE namespace std { |
||
490 | # define __STL_END_NAMESPACE } |
||
491 | # if defined(__STL_FUNCTION_TMPL_PARTIAL_ORDER) && \ |
||
492 | !defined(__STL_NO_RELOPS_NAMESPACE) |
||
493 | # define __STL_USE_NAMESPACE_FOR_RELOPS |
||
494 | # define __STL_BEGIN_RELOPS_NAMESPACE namespace std { namespace rel_ops { |
||
495 | # define __STL_END_RELOPS_NAMESPACE } } |
||
496 | # define __STD_RELOPS std::rel_ops |
||
497 | # else /* Use std::rel_ops namespace */ |
||
498 | # define __STL_USE_NAMESPACE_FOR_RELOPS |
||
499 | # define __STL_BEGIN_RELOPS_NAMESPACE namespace std { |
||
500 | # define __STL_END_RELOPS_NAMESPACE } |
||
501 | # define __STD_RELOPS std |
||
502 | # endif /* Use std::rel_ops namespace */ |
||
503 | # else |
||
504 | # define __STD |
||
505 | # define __STL_BEGIN_NAMESPACE |
||
506 | # define __STL_END_NAMESPACE |
||
507 | # undef __STL_USE_NAMESPACE_FOR_RELOPS |
||
508 | # define __STL_BEGIN_RELOPS_NAMESPACE |
||
509 | # define __STL_END_RELOPS_NAMESPACE |
||
510 | # define __STD_RELOPS |
||
511 | # undef __STL_USE_NAMESPACES |
||
512 | # endif |
||
513 | |||
514 | // Some versions of the EDG front end sometimes require an explicit |
||
515 | // namespace spec where they shouldn't. This macro facilitates that. |
||
516 | // If the bug becomes irrelevant, then all uses of __STD_QUALIFIER |
||
517 | // should be removed. The 7.3 beta SGI compiler has this bug, but the |
||
518 | // MR version is not expected to have it. |
||
519 | |||
520 | # if defined(__STL_USE_NAMESPACES) && !defined(__STD_QUALIFIER) |
||
521 | # define __STD_QUALIFIER std:: |
||
522 | # else |
||
523 | # define __STD_QUALIFIER |
||
524 | # endif |
||
525 | |||
526 | # ifdef __STL_USE_EXCEPTIONS |
||
527 | # define __STL_TRY try |
||
528 | # define __STL_CATCH_ALL catch(...) |
||
529 | # define __STL_THROW(x) throw x |
||
530 | # define __STL_RETHROW throw |
||
531 | # define __STL_NOTHROW throw() |
||
532 | # define __STL_UNWIND(action) catch(...) { action; throw; } |
||
533 | # else |
||
534 | # define __STL_TRY |
||
535 | # define __STL_CATCH_ALL if (false) |
||
536 | # define __STL_THROW(x) |
||
537 | # define __STL_RETHROW |
||
538 | # define __STL_NOTHROW |
||
539 | # define __STL_UNWIND(action) |
||
540 | # endif |
||
541 | |||
542 | #ifdef __STL_ASSERTIONS |
||
543 | # include |
||
544 | # define __stl_assert(expr) \ |
||
545 | if (!(expr)) { fprintf(stderr, "%s:%d STL assertion failure: %s\n", \ |
||
546 | __FILE__, __LINE__, # expr); abort(); } |
||
547 | #else |
||
548 | # define __stl_assert(expr) |
||
549 | #endif |
||
550 | |||
551 | #if defined(__STL_WIN32THREADS) || defined(__STL_SGI_THREADS) \ |
||
552 | || defined(__STL_PTHREADS) || defined(__STL_UITHREADS) |
||
553 | # define __STL_THREADS |
||
554 | # define __STL_VOLATILE volatile |
||
555 | #else |
||
556 | # define __STL_VOLATILE |
||
557 | #endif |
||
558 | |||
559 | // Because concept-checks do not presently work correctly, they |
||
560 | // are disabled. |
||
561 | #if 0 |
||
562 | #if defined(__STL_CLASS_PARTIAL_SPECIALIZATION) \ |
||
563 | && defined(__STL_MEMBER_TEMPLATES) \ |
||
564 | && !defined(_STL_NO_CONCEPT_CHECKS) |
||
565 | # define __STL_USE_CONCEPT_CHECKS |
||
566 | #endif |
||
567 | #endif |
||
568 | |||
569 | #endif /* __STL_CONFIG_H */ |
||
570 | |||
571 | // Local Variables: |
||
572 | // mode:C++ |
||
573 | // End:>>>>>>>>>>>=.> |