Subversion Repositories Kolibri OS

Rev

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  does not contain a bad_alloc class.  If a bad_alloc
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  header).  If not
131
//   defined, the STL will use old cfront-style iostreams (e.g. the
132
//    header).
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: