features.h revision 3a5d1fa525bd73df0c6df0bb66829f92af791064
19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block /*
29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Copyright (c) 1994
49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Hewlett-Packard Company
59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Copyright (c) 1996,1997
79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Silicon Graphics Computer Systems, Inc.
89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Copyright (c) 1997
109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Moscow Center for SPARC Technology
119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Copyright (c) 1999
139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Boris Fomitchev
149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * This material is provided "as is", with absolutely no warranty expressed
169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * or implied. Any use is at your own risk.
179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Permission to use or copy this software for any purpose is hereby granted
199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * without fee, provided the above notices are retained on all copies.
209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * Permission to modify the code and to distribute modified code is granted,
219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * provided the above notices are retained, and a notice that the code was
229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  * modified is included with the above copyright notice.
239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  *
249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  */
259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_FEATURES_H
279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_FEATURES_H
289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Purpose of this file:
319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Defines all STLport settings.
339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This file is actually a wrapper : it includes compiler-specific
349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * settings from <config/stlcomp.h>
359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * and user-defined settings from <config/user_config.h>.
369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * See <config/stl_mycomp.h> and <config/user_config.h> for the description
379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * of those macros
389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *
399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Definition of the STLport version informations */
429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/_stlport_version.h>
439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Other macros defined by this file:
459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * bool, true, and false, if _STLP_NO_BOOL is defined.
479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * typename, as a null macro if it's not already a keyword.
489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * explicit, as a null macro if it's not already a keyword.
499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.)
509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.)
519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * _STLP_ASSERT, either as a test or as a null macro, depending on
529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   whether or not _STLP_ASSERTIONS is defined.
539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block*/
549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Definition of the 2 STLport debug levels */
569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_STLPORT_DBG_LEVEL 1
579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_STANDARD_DBG_LEVEL 2
589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Placeholder for user to override settings.
609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * It could be also used to mask settings from
619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * different directories.
629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/user_config.h>
649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
65a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj#ifdef __GNUC__
66a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj#  define _STLP_UNUSED(x) x __attribute__((unused))
67a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj#else
68a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj#  define _STLP_UNUSED(x) x
69a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj#endif /* __GNUC__ */
70a721beb6d7372334152406a36e8db016650a9691Tareq A. Siraj
719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEBUG) && !defined (_STLP_DEBUG_LEVEL)
729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DEBUG_LEVEL _STLP_STLPORT_DBG_LEVEL
739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__BUILDING_STLPORT)
769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* For the STLport implementation we can use everything:
779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_ANACHRONISMS)
799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_NO_ANACHRONISMS
809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_EXTENSIONS)
829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_NO_EXTENSIONS
839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
84e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Moreover there are things that have no sens:
859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_IOSTREAMS)
879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    error If you do not use iostreams you do not need to build the STLport library.
889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* ========================================================= */
929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* This file is used for compatibility; it accepts old-style config
939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   switches */
949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/compat.h>
959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Common configuration file for this particular installation. */
979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/host.h>
989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Operational Environment specific */
1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/_system.h>
1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* ========================================================= */
1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* some fixes to configuration. This also includes modifications
1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * of STLport switches depending on compiler flags,
1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or settings applicable to a group of compilers, such as
1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * to all who use EDG front-end.
1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#include <stl/config/stl_confix.h>
1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MEMBER_TEMPLATES 1
1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MEMBER_TEMPLATE_CLASSES 1
1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE 1
1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_USE_SHORT_STRING_OPTIM) && !defined (_STLP_USE_SHORT_STRING_OPTIM)
1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_SHORT_STRING_OPTIM 1
1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_MEMBER_TEMPLATES) && !defined (_STLP_NO_EXTENSIONS) && \
1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   !defined (_STLP_NO_CONTAINERS_EXTENSION) && !defined (_STLP_USE_CONTAINERS_EXTENSION)
1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_CONTAINERS_EXTENSION
1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_CONTAINERS_EXTENSION)
1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_FOR_CONT_EXT
1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PTR_SPECIALIZATIONS) && \
1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    (defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  error Sorry but according the STLport settings your compiler can not support the pointer specialization feature.
149e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
151e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_WHOLE_NATIVE_STD) && defined (_STLP_NO_OWN_NAMESPACE)
152e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  error Sorry but asking for both STLport to be in the real std namespace and also having STLport import all native std stuff \
153e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott  is invalid, chose one or none.
154e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
155e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
156e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_VERBOSE) && !defined (_STLP_VERBOSE_MODE_SUPPORTED)
157e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  error Sorry but the verbose mode is not implemented for your compiler.
1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_IOSTREAMS) && \
1619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   !defined (_STLP_USE_NEWALLOC) && !defined (_STLP_USE_MALLOC)
1629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_NEWALLOC
1639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_BIG_ENDIAN) && !defined (_STLP_LITTLE_ENDIAN)
1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_MIPSEB) || defined (__sparc) || defined (_AIX) || \
1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block      defined (__hpux) || defined (macintosh) || defined (_MAC)
1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_BIG_ENDIAN 1
1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif defined (__i386) || defined (_M_IX86) || defined (_M_ARM) || \
1709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        defined (__amd64__) || defined (_M_AMD64) || defined (__x86_64__) || \
17189f07d6a92dab765c534266a640933ebd2f6d9e4Chris Dearman        defined (__alpha__) || defined (_MIPSEL)
1729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_LITTLE_ENDIAN 1
1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif defined (__ia64__)
1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    /* itanium allows both settings (for instance via gcc -mbig-endian) - hence a seperate check is required */
1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (__BIG_ENDIAN__)
1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define _STLP_BIG_ENDIAN 1
1779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define _STLP_LITTLE_ENDIAN 1
1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    error "can't determine endianess"
1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_BIG_ENDIAN */
1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* ==========================================================
1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * final workaround tuning based on given flags
1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * ========================================================== */
1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_UINT32_T
1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_UINT32_T unsigned long
1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_ABORT
1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_ABORT() abort()
1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_HAS_NO_NAMESPACES)
1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined _STLP_NO_NAMESPACES
1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_USE_NAMESPACES
1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* assume it as the default, turn it off later if NO_NAMESPACES selected */
2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_USE_NAMESPACES
2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USE_NAMESPACES 1
2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_IOSTREAMS)
2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_NO_IOSTREAMS
2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Operating system recognition (basic) */
211e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (defined(__unix) || defined(__linux__) || defined(__QNX__) || defined(_AIX)  || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__FreeBSD__) || defined(__Lynx__) || defined(__hpux) || defined(__sgi)) && \
212e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott     !defined (_STLP_UNIX)
2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_UNIX 1
2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* __unix */
2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_LONG_DOUBLE)
2179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_LONGEST_FLOAT_TYPE long double
2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_LONGEST_FLOAT_TYPE double
2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Native headers access macros */
223e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_HAS_INCLUDE_NEXT)
224e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  include <stl/config/_native_headers.h>
225e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*  shared library tune-up */
2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__BUILDING_STLPORT)
2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*  if we are rebuilding right now, place everything here */
2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef  _STLP_DESIGNATED_DLL
2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DESIGNATED_DLL 1
2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Use own namespace always if possible and not explicitly instructed otherwise */
2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   !defined (_STLP_NO_OWN_NAMESPACE)
2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef  _STLP_USE_OWN_NAMESPACE
2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_OWN_NAMESPACE  1
2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
2419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_WHOLE_NATIVE_STD
2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_NOTHREADS) && !defined (_STLP_THREADS_DEFINED)
2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_PTHREADS)
2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_PTHREADS
2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_THREADS
2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_UITHREADS)
2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_UITHREADS
2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_THREADS
2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
255e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_WIN32) && !defined (_STLP_PTHREADS)
2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_WIN32THREADS 1
2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif ((defined (__sun) && !defined (__linux__)) || defined (_UITHREADS) ) && \
2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        !defined(_STLP_PTHREADS)
2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_UITHREADS
2609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
2619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_PTHREADS
2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* __sgi */
2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_THREADS_DEFINED
2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
266e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if (defined (_REENTRANT) || defined (_THREAD_SAFE)) && !defined (_STLP_THREADS)
2679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_THREADS
2689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_STATIC_MUTEX
2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_STATIC_MUTEX _STLP_mutex_base
2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if (defined (_MFC_VER) || defined (_AFXDLL)) && !defined (_STLP_USE_MFC)
2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_MFC 1
2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_THREADS)
2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VOLATILE volatile
2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
2819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VOLATILE
2829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_USE_NEW_C_HEADERS) && !defined (_STLP_HAS_NO_NEW_C_HEADERS)
2859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_NEW_C_HEADERS
2869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* disable new-style headers if requested */
2889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_NEW_C_HEADERS)
2899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_USE_NEW_C_HEADERS
2909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
2929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_BASE_TYPEDEF_BUG)
2939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef  _STLP_BASE_TYPEDEF_OUTSIDE_BUG
2949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
2959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
2969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
297e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_NESTED_TYPE_PARAM_BUG)
2989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
2999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* SUNpro 4.2 inline string literal bug */
3029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_INLINE_STRING_LITERAL_BUG
3039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_FIX_LITERAL_BUG(__x) __x = __x;
3049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
3059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_FIX_LITERAL_BUG(__x)
3069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
3099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef  _STLP_NO_DEFAULT_NON_TYPE_PARAM
3109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
3119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_STATIC_ASSERT)
3149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Some compiler support 0 size array so we use negative size array to generate
3159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * a compilation time error.
3169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
3170e7a705cd6f755153c1f2cceb09af1e515ca9f1dMark Salyzyn#  define _STLP_STATIC_ASSERT(expr) typedef char __static_assert[expr ? 1 : -1] __attribute__((__unused__));
3189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* apple mpw exception handling bug */
3219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_MPWFIX_TRY
3229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MPWFIX_TRY
3239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_MPWFIX_CATCH
3259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MPWFIX_CATCH
3269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_MPWFIX_CATCH_ACTION
3289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MPWFIX_CATCH_ACTION(action)
3299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_WEAK)
3329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_WEAK
3339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* default parameters as template types derived from arguments ( not always supported ) */
3369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
3379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname
3389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
3399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_DEFAULT_TYPE_PARAM)
3409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DEFAULT_TYPE_PARAM 1
3419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
3429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_TMPL_PARAM( classname, defval ) class classname = defval
3439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
345e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
346e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
347e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
348e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
349e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott            class _Alloc = allocator< pair < _Key, _Tp > >
350e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
351e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
3529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* default parameters as complete types */
3539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEFAULT_TYPE_PARAM)
3549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname = defval
3559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name = val
3569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
3579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_TYPE_PARAM( classname, defval ) class classname
3589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DFL_NON_TYPE_PARAM(type,name,val) type name
3599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* SGI compatibility */
3629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_NO_WCHAR_T
3649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_NO_NATIVE_WIDE_STREAMS
3659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_NO_NATIVE_WIDE_STREAMS 1
3669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
3679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
3689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_HAS_WCHAR_T 1
3699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
3729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CAN_THROW_RANGE_ERRORS 1
3739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* debug mode tool */
3769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEBUG)
3779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NON_DBG_NAME(X) _NonDbg_##X
3789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* pointer specialization tool */
3819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_PTR_SPECIALIZATIONS)
3829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PTR_IMPL_NAME(X) _Impl_##X
3839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
385e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_USE_MSVC6_MEM_T_BUG_WORKAROUND) || \
386e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott    defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY) || defined (_STLP_CHECK_RUNTIME_COMPATIBILITY)
3879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_MEM_T_NAME(X) _NoMemT_##X
3889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* this always mean the C library is in global namespace */
3919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_HAS_NO_NEW_C_HEADERS) && !defined (_STLP_VENDOR_GLOBAL_CSTD)
3929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_GLOBAL_CSTD 1
3939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
3949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
3959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Depending of whether compiler supports namespaces,
3969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * tune the parameters for vendor-supplied libraries.
3979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES,
3989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * since it depends only on the native features, not on user's preference whether
3999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * to use namespace for STLport or not.
4009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
4019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_HAS_NO_NAMESPACES)
4029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Import some vendor's headers into corresponding STLport ones if they might be needed
4039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * (if we wrap native iostreams and use namepace other than std::) */
4049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_WHOLE_NATIVE_STD)
4059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_IMPORT_VENDOR_STD 1
4069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* if using stlport:: namespace or if C library stuff is not in vendor's std::,
4099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * try importing 'em.
4109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */
4119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_USE_NAMESPACES) && (defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
4129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_IMPORT_VENDOR_CSTD 1
4139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && !defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
4169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_NO_CSTD_FUNCTION_IMPORTS
4179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USING_NAMESPACE(x) using namespace x ;
4209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace std { }
4229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace __std_alias = std;
4239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* assume std:: namespace for C++ std library if not being told otherwise */
4259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_VENDOR_GLOBAL_STD)
4269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_VENDOR_STD
4279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
428e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_VENDOR_STD std
4299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* tune things that come from C library */
4329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if  defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
4339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*  in old-style headers, C functions go to global scope. */
4349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_VENDOR_CSTD
4359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USING_VENDOR_CSTD
4369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
4379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_VENDOR_CSTD  _STLP_VENDOR_STD
4389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
4399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* _STLP_VENDOR_CSTD */
4409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* exception, typeinfo, new - always come from the vendor */
4419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_VENDOR_EXCEPT_STD)
4429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (_STLP_VENDOR_GLOBAL_EXCEPT_STD)
4439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define _STLP_VENDOR_EXCEPT_STD
4449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
4459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
4469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
4479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_OLD_IO_NAMESPACE
4499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_VENDOR_MB_NAMESPACE)
4509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
4519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
4529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
4539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* compiler has no namespace support */
4549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_STD
4559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_CSTD
4569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USING_NAMESPACE(x)
4579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USING_VENDOR_CSTD
4589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_VENDOR_EXCEPT_STD
4599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
4609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_NAMESPACES)
4629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
4639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_USE_OWN_NAMESPACE)
4649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if !defined (_STLP_STD_NAME)
4659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if !defined (_STLP_DEBUG)
4669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
4679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          ifndef _STLP_THREADS
4689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpmtx_std
4699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          else
4709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlp_std
4719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          endif
4729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        else
4739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          ifndef _STLP_THREADS
4749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpxmtx_std
4759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          else
4769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpx_std
4779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          endif
4789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        endif
4799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
4809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
4819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * The STLport debug mode is binary incompatible with the other modes,
4829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * lets make it clear on the STLport namespace to generate link errors rather
483e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * than runtime ones.
4849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
4859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        if !defined (_STLP_USING_CROSS_NATIVE_RUNTIME_LIB)
4869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          ifndef _STLP_THREADS
4879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpdmtx_std
4889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          else
4899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpd_std
4909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          endif
4919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        else
4929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          ifndef _STLP_THREADS
4939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpdxmtx_std
4949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          else
4959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#            define _STLP_STD_NAME  stlpdx_std
4969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#          endif
4979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        endif
4989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
4999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
5009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace _STLP_STD_NAME { }
5019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
5029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_STD_NAME std
5039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* _STLP_USE_OWN_NAMESPACE */
5049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_BEGIN_NAMESPACE namespace _STLP_STD_NAME {
506e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_BEGIN_TR1_NAMESPACE namespace tr1 {
5079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_END_NAMESPACE }
5089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* decide whether or not we use separate namespace for rel ops */
5109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NO_RELOPS_NAMESPACE)
5119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
5129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_END_RELOPS_NAMESPACE }
5139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
5149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Use std::rel_ops namespace */
5159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
5169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_END_RELOPS_NAMESPACE } }
5179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
5189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* Use std::rel_ops namespace */
5199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_STD ::_STLP_STD_NAME
521e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_TR1)
522e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_TR1 _STLP_STD::tr1::
523e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
524e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
525e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if !defined (_STLP_DONT_USE_PRIV_NAMESPACE)
526e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_PRIV_NAME priv
527e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_PRIV _STLP_STD::_STLP_PRIV_NAME::
528e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_MOVE_TO_PRIV_NAMESPACE namespace _STLP_PRIV_NAME {
529e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_MOVE_TO_STD_NAMESPACE }
530e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
531e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      if !defined (_STLP_PRIV)
532e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#        define _STLP_PRIV _STLP_STD::
533e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#      endif
534e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_MOVE_TO_PRIV_NAMESPACE
535e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_MOVE_TO_STD_NAMESPACE
536e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
5379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Official STLport namespace when std is not redefined.
539e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * Here we don't use a macro because we do not need it and because
540e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * stlport is used as file name by boost and folder name under beos:
5419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
5429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace stlport = _STLP_STD_NAME;
5439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Backward compatibility:
5459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
5469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocknamespace _STL = _STLP_STD_NAME;
5479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef __STLPORT_NAMESPACE
5489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __STLPORT_NAMESPACE _STLP_STD_NAME
5499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* _STLP_USE_NAMESPACES */
5519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* STLport is being put into global namespace */
5529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_STD
5539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PRIV
554e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_TR1
5559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_BEGIN_NAMESPACE
556e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_BEGIN_TR1_NAMESPACE
5579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_END_NAMESPACE
5589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MOVE_TO_PRIV_NAMESPACE
5599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_MOVE_TO_STD_NAMESPACE
5609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE
5629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   causes less problems than having relational operator templates in global namespace
5639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   Please define _STLP_NO_RELOPS_NAMESPACE in config/user_config.h if your code rely on them. */
5649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_NO_RELOPS_NAMESPACE)
5659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
5669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
5679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_BEGIN_RELOPS_NAMESPACE
5689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_END_RELOPS_NAMESPACE
5699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef  _STLP_USE_OWN_NAMESPACE
5709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif  /* _STLP_USE_NAMESPACES */
5719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define STLPORT_CSTD _STLP_VENDOR_CSTD
5739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define STLPORT      _STLP_STD_NAME
5749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
5769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
5779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
5789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_SIMPLE_TYPE(T) T
5799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
5809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_RAND48
5829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_DRAND48
5839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
5849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* advanced keywords usage */
5869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __C_CAST(__x, __y) ((__x)(__y))
5879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef  _STLP_NO_NEW_STYLE_CASTS
5889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __CONST_CAST(__x,__y) const_cast<__x>(__y)
5899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
5909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
5919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
5929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __STATIC_CAST(__x,__y) __C_CAST(__x, __y)
5939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __CONST_CAST(__x,__y) __C_CAST(__x, __y)
5949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __REINTERPRET_CAST(__x,__y) __C_CAST(__x, __y)
5959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
5969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
5979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
5989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define typename
5999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
6029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TYPENAME_ON_RETURN_TYPE
6039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TYPENAME_ON_RETURN_TYPE typename
6059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
6089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_HEADER_TYPENAME
6099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_HEADER_TYPENAME typename
6119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
613e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#ifdef _STLP_NO_TYPENAME_BEFORE_NAMESPACE
614e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_TYPENAME
615e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
616e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_TYPENAME typename
617e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
618e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
6199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
6209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE template
6219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE
6239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_CONTAINERS_EXTENSION)
6269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type)
6279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_FOR_CONT_EXT template <class _KT>
6289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_KEY_TYPE_FOR_CONT_EXT(type) typedef type _KT;
6309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_FOR_CONT_EXT
6319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NEED_EXPLICIT) && !defined (explicit)
6349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define explicit
6359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NEED_MUTABLE)
638e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_MUTABLE(type, x) x
6399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
640e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_MUTABLE(type, x) __CONST_CAST(type*, this)->x
6419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define mutable
6429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NO_SIGNED_BUILTINS)
6459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* old HP-UX doesn't understand "signed" keyword */
6469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define signed
6479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_LOOP_INLINE_PROBLEMS)
6509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_INLINE_LOOP
6519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_INLINE_LOOP inline
6539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
6569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_NULL template<>
6579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TEMPLATE_NULL
6599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
6629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_OPERATOR_TEMPLATE
6639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
6649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
6659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
6689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* unless we have other compiler problem, try simulating partial spec here */
6699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
6709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
6719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
6729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */
6739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if  (defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
6749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
6759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define _STLP_USE_OLD_HP_ITERATOR_QUERIES
6769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
6779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif defined ( _STLP_NO_ANACHRONISMS )
6789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
6799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
6809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
6839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NULL_TMPL_ARGS <>
6849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else
6859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NULL_TMPL_ARGS
6869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_ALLOCATOR_TYPE_DFL)
6899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_DONT_SUP_DFLT_PARAM)
6909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS
6919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
6929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS)
6939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_ALLOCATOR_TYPE_DFL
6949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
6959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
6969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
6979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
6989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
6999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* When the compiler do not correctly initialized the basic types value in default parameters we prefer
7009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * to avoid them to be able to correct this bug.
7019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
7029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DEF_CONST_DEF_PARAM_BUG)
7039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DONT_SUP_DFLT_PARAM 1
7049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
7059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
7079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_ARROW_OPERATOR
7089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
7099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
7119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !(defined (_STLP_NO_ARROW_OPERATOR)) && \
7129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block       !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
7139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* this one is needed for proper reverse_iterator<> operator ->() handling */
7149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_MSVC50_COMPATIBILITY 1
7159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
7169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
7179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
7199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
7209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
7219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
7229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
7239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
7249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
7259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
7269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
7279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
7289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
7299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
7309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
7319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
7329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
7339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_MSVC50_COMPATIBILITY)
7349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
7359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
7369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    const_pointer, difference_type>  const_reverse_iterator; \
7379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
7389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    reverse_iterator
7399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
7409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
7419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
7429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    difference_type>  const_reverse_iterator; \
7439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
7449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    reference, difference_type> \
7459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    reverse_iterator
7469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
7479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
7489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
7509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
7519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
7529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
7539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __IMPORT_CONTAINER_TYPEDEFS(_Super)                              \
7559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::value_type value_type;                      \
7569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::size_type size_type;                        \
7579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::difference_type difference_type;            \
7589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::reference reference;                        \
7599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::const_reference const_reference;            \
7609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::pointer pointer;                            \
7619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::const_pointer const_pointer;                \
7629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::allocator_type allocator_type;
7639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __IMPORT_ITERATORS(_Super)                                       \
7669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::iterator iterator;                          \
7679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::const_iterator const_iterator;
7689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __IMPORT_REVERSE_ITERATORS(_Super)                                   \
7709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::const_reverse_iterator  const_reverse_iterator; \
7719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    typedef typename _Super::reverse_iterator reverse_iterator;
7729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define  __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER)       \
7749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    __derived_name(const _Super& __x) : _SUPER(__x) {}                       \
7759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _Self& operator=(const _Super& __x) {                                    \
7769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        *(_Super*)this = __x;                                                \
7779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        return *this;                                                        \
7789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    }                                                                        \
7799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    __derived_name(const _Self& __x) : _SUPER(__x) {}                        \
7809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    _Self& operator=(const _Self& __x) {                                     \
7819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        *(_Super*)this = __x;                                                \
7829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block        return *this;                                                        \
7839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block    }
7849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __IMPORT_WITH_ITERATORS(_Super) \
7869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
7879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
7899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
7909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG)
7929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __TRIVIAL_CONSTRUCTOR(__type) __type() {}
7939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
7949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __TRIVIAL_CONSTRUCTOR(__type)
7959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
7969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
7979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
7989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}
7999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
8009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define __TRIVIAL_DESTRUCTOR(__type)
8019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define __TRIVIAL_STUFF(__type)  \
8049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block  __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
8059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
806e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_STATIC_CONST_INIT_BUG)
807e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_STATIC_CONSTANT(__type, __assignment) enum { __assignment }
808e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
809e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_STATIC_CONSTANT(__type, __assignment) static const __type __assignment
810e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
811e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
8129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_HAS_NO_EXCEPTIONS)
8139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NO_EXCEPTIONS
8149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_DONT_USE_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_USE_EXCEPTIONS)
8179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_EXCEPTIONS
8189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_EXCEPTIONS)
8219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TRY try
8229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CATCH_ALL catch(...)
8239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_THROW
8249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_THROW(x) throw x
8259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
8269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_RETHROW throw
8279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_UNWIND(action) catch(...) { action; throw; }
8299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifdef _STLP_THROW_RETURN_BUG
8319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_RET_AFTER_THROW(data) return data;
8329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
8339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_RET_AFTER_THROW(data)
8349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
8359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_THROWS)
837e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_THROWS(x) throw(x)
8389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
8399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if !defined (_STLP_NOTHROW)
840e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    define _STLP_NOTHROW throw()
8419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
8429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
8439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_TRY
8449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CATCH_ALL if (false)
8459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_THROW
8463a5d1fa525bd73df0c6df0bb66829f92af791064Mark Salyzyn#    define _STLP_THROW(x) abort()
8479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
8483a5d1fa525bd73df0c6df0bb66829f92af791064Mark Salyzyn#  define _STLP_RETHROW abort()
8499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_UNWIND(action)
8509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_THROWS(x)
8519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NOTHROW
8529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_RET_AFTER_THROW(data)
8539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
8569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Here we check _STLP_NO_EXCEPTIONS which means that the compiler has no
8579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * exception support but not the _STLP_USE_EXCEPTIONS which simply means
8589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * that the user do not want to use them.
8599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
8609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_NO_EXCEPTIONS) && !defined (_STLP_NO_EXCEPTION_SPEC)
8619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_THROWS_INHERENTLY(x) throw x
8629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NOTHROW_INHERENTLY throw()
8639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
8649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_THROWS_INHERENTLY(x)
8659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_NOTHROW_INHERENTLY
8669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* STLport function not returning are functions that throw so we translate
8699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * the noreturn functions in throwing functions taking also into account
8709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * exception support activation.
8719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
8729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_NORETURN_FUNCTION) && !defined (_STLP_NO_EXCEPTIONS) && \
8739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   !defined (_STLP_FUNCTION_THROWS)
8749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_FUNCTION_THROWS _STLP_NORETURN_FUNCTION
8759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
8769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_FUNCTION_THROWS
8779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
8789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
8799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined(_STLP_NO_BOOL)
8809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
8819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    include <isynonym.hpp>
8829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined (__OS400__)
8839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktypedef int bool;
8849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    elif !( defined (__xlC__) || defined (_AIX))
8859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktypedef Boolean bool;
8869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
8879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
8889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    if defined(_STLP_YVALS_H)
8899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      include <yvals.h>
8909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    else
8919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
8929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#        define bool int
8939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      else
8949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktypedef int bool;
8959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      endif
8969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define true 1
8979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#      define false 0
8989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    endif
8999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif /* __IBMCPP__ */
9009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
9019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_BOOL_KEYWORD 1
9029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_NO_BOOL */
9039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* uninitialized value filler */
9059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_SHRED_BYTE
9069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* This value is designed to cause problems if an error occurs */
9079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_SHRED_BYTE 0xA3
9089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_SHRED_BYTE */
9099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* shared library tune-up */
9119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_IMPORT_DECLSPEC
9129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_IMPORT_DECLSPEC
9139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* a keyword used to instantiate export template */
9169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
9179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_EXPORT_TEMPLATE_KEYWORD
9189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
9209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_IMPORT_TEMPLATE_KEYWORD
9219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
923e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_NO_CONST_IN_PAIR)
924e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_CONST const
925e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#else
926e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_CONST
927e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
928e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
9299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_USE_NO_IOSTREAMS
9309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/*
9319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * If we do not use iostreams we do not use the export/import
9329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * techniques to avoid build of the STLport library.
9339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
9349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_USE_DECLSPEC
9359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* We also undef USE_DYNAMIC_LIB macro as this macro add some code
9369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * to use the dynamic (shared) STLport library for some platform/compiler
937e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott * configuration leading to problem when not linking to the STLport lib.
9389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
9399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  undef _STLP_USE_DYNAMIC_LIB
9409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if  defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
9439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if ! defined (_STLP_USE_TEMPLATE_EXPORT)
9449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* this setting turns on "extern template" extension use */
9459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_USE_TEMPLATE_EXPORT
9469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
9489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_NO_FORCE_INSTANTIATE
9499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
9539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define  _STLP_EXPORT _STLP_EXPORT_TEMPLATE_KEYWORD
9549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
9559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define  _STLP_EXPORT _STLP_IMPORT_TEMPLATE_KEYWORD
9569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_EXPORT_TEMPLATE
9599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define  _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
9609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined (_STLP_USE_DECLSPEC) /* using export/import technique */
9639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_EXPORT_DECLSPEC
9659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_EXPORT_DECLSPEC
9669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_IMPORT_DECLSPEC
9689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_IMPORT_DECLSPEC
9699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_CLASS_EXPORT_DECLSPEC
9719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CLASS_EXPORT_DECLSPEC
9729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  ifndef _STLP_CLASS_IMPORT_DECLSPEC
9749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_CLASS_IMPORT_DECLSPEC
9759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
9779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_DECLSPEC        _STLP_EXPORT_DECLSPEC
9789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_EXPORT_DECLSPEC
9799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  else
9809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_DECLSPEC        _STLP_IMPORT_DECLSPEC   /* Other modules, importing STLport exports */
9819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_IMPORT_DECLSPEC
9829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
9839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* Not using DLL export/import specifications */
9859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_DECLSPEC
9879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CLASS_DECLSPEC
9889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
9929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
993e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_NEED_ADDITIONAL_STATIC_DECLSPEC)
994e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_STATIC_DECLSPEC _STLP_DECLSPEC
9959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
996e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_STATIC_DECLSPEC
9979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
9989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
9999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined (_STLP_CALL)
10009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_CALL
10019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
10029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_USE_NO_IOSTREAMS
10049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
10069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define __USE_STD_IOSTREAM
10079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
10089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* We only need to expose details of streams implementation
10109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   if we use non-standard i/o or are building STLport*/
10119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO)
10129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
10139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
10149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* We only need to expose details of global implementation if we are building STLport
10169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   or have not instantiated everything in the lib */
10179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
10189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    undef  _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
10199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#    define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
10209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  endif
10219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else /* _STLP_USE_NO_IOSTREAMS */
10239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* when we are not using SGI iostreams, we must expose globals, but not streams implementation */
10249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
10259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_USE_NO_IOSTREAMS */
10269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
10289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PSPEC2(t1,t2) < t1,t2 >
10299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
10309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
10319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PSPEC2(t1,t2)  /* nothing */
10329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_PSPEC3(t1,t2,t3)  /* nothing */
10339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
10349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* Activation of the partial template workaround:
10369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */
10379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) &&\
10389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block   (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER))
10399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_USE_PARTIAL_SPEC_WORKAROUND
10409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
10419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
10439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
10449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
10459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y)  {return __y < __x;}\
10469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
10479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
10489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#else
10499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
10509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
10519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#if defined ( _STLP_USE_ABBREVS )
10539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#  include <stl/_abbrevs.h>
10549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif
10559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1056e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* Some really useful macro */
10579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_ARRAY_SIZE(A) sizeof(A) / sizeof(A[0])
10589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_ARRAY_AND_SIZE(A) A, sizeof(A) / sizeof(A[0])
10599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
1060e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if !defined (_STLP_MARK_PARAMETER_AS_UNUSED)
1061e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  define _STLP_MARK_PARAMETER_AS_UNUSED(X) (void*)X;
1062e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
1063e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
1064e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (_STLP_CHECK_RUNTIME_COMPATIBILITY)
1065e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  if defined (_STLP_USE_NO_IOSTREAMS)
1066e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#    undef _STLP_CHECK_RUNTIME_COMPATIBILITY
1067e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  else
1068e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott/* The extern "C" simply makes the symbol simpler. */
1069e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#if defined (__cplusplus)
1070e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottextern "C"
1071e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
1072e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottvoid _STLP_DECLSPEC _STLP_CALL _STLP_CHECK_RUNTIME_COMPATIBILITY();
1073e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#  endif
1074e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott#endif
1075e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott
10769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* some cleanup */
10779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_DONT_USE_BOOL_TYPEDEF
10789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_YVALS_H
10799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_LOOP_INLINE_PROBLEMS
10809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NEED_EXPLICIT
10819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NEED_TYPENAME
10829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef _STLP_NO_NEW_STYLE_CASTS
10839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#undef __AUTO_CONFIGURED
10849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block
10859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_FEATURES_H */
1086