epoc32/include/stdapis/stlport/stl/_config.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 0 061f57f2323e
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
     1  /*
     2  * © Portions copyright (c) 2006-2007 Nokia Corporation.  All rights reserved.
     3  *
     4  * Copyright (c) 1994
     5  * Hewlett-Packard Company
     6  *
     7  * Copyright (c) 1996,1997
     8  * Silicon Graphics Computer Systems, Inc.
     9  *
    10  * Copyright (c) 1997
    11  * Moscow Center for SPARC Technology
    12  *
    13  * Copyright (c) 1999 
    14  * Boris Fomitchev
    15  *
    16  * This material is provided "as is", with absolutely no warranty expressed
    17  * or implied. Any use is at your own risk.
    18  *
    19  * Permission to use or copy this software for any purpose is hereby granted 
    20  * without fee, provided the above notices are retained on all copies.
    21  * Permission to modify the code and to distribute modified code is granted,
    22  * provided the above notices are retained, and a notice that the code was
    23  * modified is included with the above copyright notice.
    24  *
    25  */
    26 
    27 #ifndef _STLP_CONFIG_H
    28 # define _STLP_CONFIG_H
    29 
    30 /*
    31  * Purpose of this file :
    32  *
    33  * Defines all STLport settings.
    34  * This file is actually a wrapper : it includes compiler-specific
    35  * settings from <config/stlcomp.h>
    36  * and user-defined settings from <stl_user_config.h>.
    37  * See <config/stl_mycomp.h> and <stl_user_config.h> for the description
    38  * of those macros
    39  * 
    40  */
    41 
    42 /* Other macros defined by this file:
    43 
    44  * bool, true, and false, if _STLP_NO_BOOL is defined.
    45  * typename, as a null macro if it's not already a keyword.
    46  * explicit, as a null macro if it's not already a keyword.
    47  * namespace-related macros (_STLP_STD, _STLP_BEGIN_NAMESPACE, etc.)
    48  * exception-related macros (_STLP_TRY, _STLP_UNWIND, etc.)
    49  * _STLP_ASSERT, either as a test or as a null macro, depending on
    50    whether or not _STLP_ASSERTIONS is defined.
    51 */
    52 
    53 /* The last SGI STL release we merged with */
    54 #   define __SGI_STL                                      0x330
    55 
    56 /* STLport version */
    57 #   define _STLPORT_VERSION                               0x463
    58 
    59 /* Placeholder for user to override settings.
    60  * It could be also used to mask settings from 
    61  * different directories.
    62  */
    63 # include <stl_user_config.h>
    64 
    65 /* ========================================================= */
    66 /* This file is used for compatibility; it accepts old-style config
    67    switches */
    68 #  include <stl/_config_compat.h>
    69 
    70 /* Common configuration file for this particular installation. */
    71 
    72 # include <stl/_site_config.h>
    73 
    74 /* Use per-version compiler recognition */
    75 #  include <config/stlcomp.h>
    76 
    77 /* ========================================================= */
    78 
    79 /* some fixes to configuration. This also includes modifications
    80  * of STLport switches depending on compiler flags,
    81  * or settings applicable to a group of compilers, such as
    82  * to all who use EDG front-end.
    83  */
    84 # include <config/stl_confix.h>
    85 
    86 
    87 /*
    88  * Performs integrity check on user-specified parameters
    89  * and site-specific settings.
    90  */
    91 // # include <stl/_check_config.h>
    92 
    93 /* SGI terms */
    94 
    95 # if !defined (_STLP_NO_MEMBER_TEMPLATES) && !defined (_STLP_MEMBER_TEMPLATES)
    96 #  define _STLP_MEMBER_TEMPLATES 1
    97 # endif
    98 
    99 # if !defined (_STLP_NO_FRIEND_TEMPLATES) && !defined (_STLP_FRIEND_TEMPLATES)
   100 #  define _STLP_FRIEND_TEMPLATES 1
   101 # endif
   102 
   103 # if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_MEMBER_TEMPLATE_CLASSES)
   104 #  define _STLP_MEMBER_TEMPLATE_CLASSES 1
   105 # endif
   106 
   107 # if !defined (_STLP_NO_MEMBER_TEMPLATE_CLASSES) && !defined (_STLP_DONT_USE_NESTED_TCLASS_THROUGHT_TPARAM) && !defined (_STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM)
   108 #  define _STLP_USE_NESTED_TCLASS_THROUGHT_TPARAM 1
   109 # endif
   110 
   111 #if !defined (_STLP_NO_CLASS_PARTIAL_SPECIALIZATION) && !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
   112 #  define _STLP_CLASS_PARTIAL_SPECIALIZATION 1
   113 #endif
   114 
   115 #if !defined (_STLP_FUNCTION_TMPL_PARTIAL_ORDER) && !defined (_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER)
   116 #  define _STLP_FUNCTION_TMPL_PARTIAL_ORDER 1
   117 #endif
   118 
   119 # if !defined (_STLP_BIG_ENDIAN) && ! defined (_STLP_LITTLE_ENDIAN)
   120 #  if defined(_MIPSEB) || defined (__sparc) || \
   121       defined (_AIX) || defined (__hpux) || defined(macintosh) || defined (_MAC)
   122 #   define _STLP_BIG_ENDIAN 1
   123 #  elif defined(__i386) || defined(_M_IX86) 
   124 #   define _STLP_LITTLE_ENDIAN 1
   125 #  else
   126 #   define _STLP_UNKNOWN_ENDIAN 1
   127 #  endif
   128 # endif /* _STLP_BIG_ENDIAN */
   129 
   130 /* ==========================================================
   131  * final workaround tuning based on given flags
   132  * ========================================================== */
   133 
   134 #ifndef _STLP_UINT32_T
   135 # define _STLP_UINT32_T unsigned long
   136 #endif
   137 #ifndef _STLP_ABORT
   138 # define _STLP_ABORT() abort()
   139 #endif
   140 
   141 # if !defined (_STLP_HAS_NO_NAMESPACES)
   142 # if defined _STLP_NO_NAMESPACES
   143 #  undef _STLP_USE_NAMESPACES
   144 # else
   145 /* assume it as the default, turn it off later if NO_NAMESPACES selected */
   146 #  undef _STLP_USE_NAMESPACES
   147 #  define _STLP_USE_NAMESPACES 1
   148 # endif
   149 # endif
   150 /*
   151 # if defined (_STLP_NO_IOSTREAMS)
   152 #  define _STLP_USE_NO_IOSTREAMS
   153 # endif
   154 
   155 # if defined (_STLP_USE_NO_IOSTREAMS)
   156 #  undef _STLP_USE_NEW_IOSTREAMS
   157 # endif
   158 
   159 # if ( defined (_STLP_OWN_IOSTREAMS) || ! defined (_STLP_HAS_NO_NEW_IOSTREAMS)) \
   160    && ! defined (_STLP_USE_NO_IOSTREAMS) && !defined (_STLP_USE_NEW_IOSTREAMS)
   161 #  define _STLP_USE_NEW_IOSTREAMS
   162 # endif
   163 
   164 # if defined (_STLP_NO_NEW_IOSTREAMS)
   165 #  undef _STLP_USE_NEW_IOSTREAMS
   166 #  undef _STLP_OWN_IOSTREAMS
   167 # endif
   168 */
   169 /* Operating system recognition (basic) */
   170 # if defined (__unix) || defined (__linux__) || defined (__QNX__) || defined (_AIX)  || defined (__NetBSD__) || defined (__Lynx__) || defined (__SYMBIAN32__)
   171 #  define _STLP_UNIX 1
   172 #  if defined (__linux__) && ! defined (_STLP_USE_GLIBC)
   173 #   define _STLP_USE_GLIBC 1
   174 #  endif
   175 # elif defined(macintosh) || defined (_MAC)
   176 #  define _STLP_MAC  1
   177 # elif defined (_WIN32) || defined (__WIN32) || defined (WIN32) || defined (__WIN32__) && !defined (__SYMBIAN32__)
   178 #  define _STLP_WIN32 1
   179 # elif defined (__WIN16) || defined (WIN16) || defined (_WIN16)
   180 #  define _STLP_WIN16
   181 # endif /* __unix */
   182 
   183 # if !defined(_STLP_MAKE_HEADER)
   184 #  define _STLP_MAKE_HEADER(path, header) <path/header>
   185 # endif
   186 #if !defined (_STLP_NATIVE_HEADER)
   187 # if !defined (_STLP_NATIVE_INCLUDE_PATH)
   188 #ifdef __SYMBIAN32__
   189 #  define _STLP_NATIVE_INCLUDE_PATH .
   190 #else
   191 #  define _STLP_NATIVE_INCLUDE_PATH ../include
   192 #endif
   193 # endif
   194 # define _STLP_NATIVE_HEADER(header) _STLP_MAKE_HEADER(_STLP_NATIVE_INCLUDE_PATH,header)
   195 #endif
   196 /* For some compilers, C headers like <stdio.h> are located in separate directory */
   197 #if !defined (_STLP_NATIVE_C_HEADER)
   198 # if !defined (_STLP_NATIVE_C_INCLUDE_PATH)
   199 #  define _STLP_NATIVE_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
   200 # endif
   201 # define _STLP_NATIVE_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_C_INCLUDE_PATH,header)
   202 #endif
   203 
   204 /* For some compilers, C-library headers like <cstdio> are located in separate directory */
   205 #if !defined (_STLP_NATIVE_CPP_C_HEADER)
   206 # if !defined (_STLP_NATIVE_CPP_C_INCLUDE_PATH)
   207 #  define _STLP_NATIVE_CPP_C_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
   208 # endif
   209 # define _STLP_NATIVE_CPP_C_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_C_INCLUDE_PATH,header)
   210 #endif
   211 
   212 /* Some compilers have weird placement of old-style iostream headers */
   213 #if !defined ( _STLP_NATIVE_OLD_STREAMS_HEADER )
   214 # if !defined (_STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH)
   215 #  define _STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
   216 # endif
   217 # define _STLP_NATIVE_OLD_STREAMS_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_OLD_STREAMS_INCLUDE_PATH,header)
   218 #endif
   219 
   220 /* Some compilers locate basic C++ runtime support headers (<new>, <typeinfo>, <exception>) in separate directory */
   221 #if !defined ( _STLP_NATIVE_CPP_RUNTIME_HEADER )
   222 # if !defined (_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH)
   223 #  define _STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH _STLP_NATIVE_INCLUDE_PATH
   224 # endif
   225 # define _STLP_NATIVE_CPP_RUNTIME_HEADER(header)  _STLP_MAKE_HEADER(_STLP_NATIVE_CPP_RUNTIME_INCLUDE_PATH,header)
   226 #endif
   227 
   228 /*  shared library tune-up */
   229 
   230 #if defined (__BUILDING_STLPORT)
   231 /*  if we are rebuilding right now as a DLL, place everything here */
   232 #  undef  _STLP_DESIGNATED_DLL
   233 #  define _STLP_DESIGNATED_DLL 1
   234 #endif
   235 
   236 /* Use own namespace always if possible and not explicitly instructed otherwise */
   237 # if defined (_STLP_USE_NAMESPACES) && !defined (_STLP_BROKEN_USING_DIRECTIVE) && \
   238      /* !defined (_STLP_OWN_IOSTREAMS) && */ !defined(_STLP_NO_OWN_NAMESPACE)
   239 #  undef  _STLP_USE_OWN_NAMESPACE
   240 #  define _STLP_USE_OWN_NAMESPACE  1
   241 # else
   242 #  undef _STLP_WHOLE_NATIVE_STD
   243 # endif
   244 
   245 #  undef _STLP_NAMESPACE
   246 
   247 # if !defined(_NOTHREADS) && ! defined (_STLP_THREADS_DEFINED)
   248 
   249 #  ifndef _REENTRANT
   250 #     define _REENTRANT
   251 #  endif
   252 
   253 #  if defined(_PTHREADS)
   254 #     define _STLP_PTHREADS
   255 #     define _STLP_THREADS
   256 #  endif
   257 #  if defined(_UITHREADS)
   258 #     define _STLP_UITHREADS
   259 #     define _STLP_THREADS
   260 #  endif
   261 
   262 #   if defined (__sgi) && ! defined (__KCC) && ! defined (__GNUC__)  
   263 #    define _STLP_SGI_THREADS
   264 #   elif defined(__DECC) || defined(__DECCXX)
   265 #    define _STLP_DEC_THREADS
   266 #   elif defined (_STLP_WIN32) && ! defined (_STLP_PTHREADS) && ! defined (__WINS__)
   267 #    define _STLP_WIN32THREADS 1
   268 #   elif ((defined (__sun) && !defined (__linux__)) \
   269      || defined(_UITHREADS) ) && !defined(_STLP_PTHREADS)
   270 #     define _STLP_UITHREADS
   271 #   elif defined (__OS2__)
   272 #     define _STLP_OS2THREADS
   273 #   elif defined(__BEOS__)
   274 #     define _STLP_BETHREADS
   275 #   else
   276 #     define _STLP_PTHREADS
   277 #   endif /* __sgi */
   278 #   define _STLP_THREADS_DEFINED
   279 # endif
   280 
   281 #  if defined (_REENTRANT) && ! defined (_STLP_THREADS)
   282 #   define _STLP_THREADS
   283 #  endif /* _REENTRANT */
   284 
   285 // warning : pthread_spinlock code was reported not to work on RedHat 3
   286 # if defined(__linux__) && defined(_STLP_USE_PTHREAD_SPINLOCK)
   287 #  include <features.h>
   288 #  ifndef __USE_XOPEN2K
   289 #   undef _STLP_USE_PTHREAD_SPINLOCK
   290 #  endif /* __USE_XOPEN2K */
   291 # endif /* __linux__ && _STLP_PTHREADS */
   292 
   293 # ifndef _STLP_STATIC_MUTEX
   294 #  define _STLP_STATIC_MUTEX _STLP_mutex_base
   295 # endif
   296 
   297 
   298 # if defined (_MFC_VER) && !defined (_STLP_USE_MFC)
   299 #  define _STLP_USE_MFC 1
   300 # endif
   301 
   302 #if defined (_STLP_THREADS)
   303 #   define _STLP_VOLATILE volatile
   304 /* windows.h _MUST be included before bool definition ;( */
   305 # if defined  (_STLP_WIN32THREADS) && defined (_STLP_NO_BOOL)
   306 #   undef  NOMINMAX
   307 #   define NOMINMAX
   308 #   ifdef _STLP_USE_MFC
   309 #    include <afx.h>
   310 #   else
   311 #    include <windows.h>
   312 #   endif
   313 #   define _STLP_WINDOWS_H_INCLUDED
   314 # endif
   315 #else
   316 #   define _STLP_VOLATILE
   317 #endif
   318 
   319 # if !defined ( _STLP_USE_NEW_C_HEADERS ) && !defined ( _STLP_HAS_NO_NEW_C_HEADERS )
   320 #  define _STLP_USE_NEW_C_HEADERS
   321 # endif
   322 /* disable new-style headers if requested */
   323 # if defined ( _STLP_NO_NEW_C_HEADERS )
   324 #  undef _STLP_USE_NEW_C_HEADERS
   325 # endif
   326 
   327 # if !defined ( _STLP_STATIC_TEMPLATE_DATA )
   328 # define _STLP_STATIC_TEMPLATE_DATA 1
   329 # endif
   330 
   331 # if defined (_STLP_BASE_TYPEDEF_BUG)
   332 #  undef  _STLP_BASE_TYPEDEF_OUTSIDE_BUG
   333 #  define _STLP_BASE_TYPEDEF_OUTSIDE_BUG 1
   334 # endif
   335 
   336 # if defined ( _STLP_NESTED_TYPE_PARAM_BUG ) || (defined (_STLP_MSVC) && (_STLP_MSVC < 1100))
   337 #  define _STLP_GLOBAL_NESTED_RETURN_TYPE_PARAM_BUG
   338 # endif
   339 
   340 /* SUNpro 4.2 inline string literal bug */
   341 #ifdef _STLP_INLINE_STRING_LITERAL_BUG
   342 # define _STLP_FIX_LITERAL_BUG(__x) __x=__x;
   343 #else
   344 # define _STLP_FIX_LITERAL_BUG(__x)
   345 #endif
   346 
   347 # if defined (_STLP_NON_TYPE_TMPL_PARAM_BUG)
   348 #  undef  _STLP_NO_DEFAULT_NON_TYPE_PARAM
   349 #  define _STLP_NO_DEFAULT_NON_TYPE_PARAM 1
   350 # endif
   351 
   352 # ifdef _STLP_DEBUG
   353 #  define _STLP_ASSERTIONS 1
   354 # endif
   355 
   356 /* apple mpw exception handling bug */
   357 #ifndef _STLP_MPWFIX_TRY
   358 # define _STLP_MPWFIX_TRY
   359 #endif
   360 #ifndef _STLP_MPWFIX_CATCH
   361 # define _STLP_MPWFIX_CATCH
   362 #endif
   363 #ifndef _STLP_MPWFIX_CATCH_ACTION
   364 # define _STLP_MPWFIX_CATCH_ACTION(action)
   365 #endif
   366 
   367 /* if _STLP_DEBUG or _STLP_ASSERTIONS are set, stl/debug/_debug.h defines those */
   368 
   369 # if !defined( _STLP_ASSERTIONS ) && !defined(_STLP_DEBUG) && !defined(_STLP_DEBUG_ALLOC)
   370 #  define _STLP_ASSERT(expr)
   371 # endif
   372 
   373 # ifndef _STLP_DEBUG
   374 #  define _STLP_VERBOSE_ASSERT(expr,diagnostic)
   375 #  define _STLP_DEBUG_CHECK(expr)
   376 #  define _STLP_DEBUG_DO(expr)
   377 # endif
   378 
   379 #  if !defined (_STLP_WEAK)
   380 #   define _STLP_WEAK 
   381 #  endif
   382 
   383 /* default parameters as template types derived from arguments ( not always supported ) */
   384 #  if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
   385 #   define __DFL_TMPL_PARAM( classname, defval ) class classname
   386 #   define __DFL_TMPL_ARG(classname) , classname
   387 #  else
   388 #   define _STLP_DEFAULT_TYPE_PARAM 1
   389 #   define __DFL_TMPL_PARAM( classname, defval ) class classname = defval
   390 #   define __DFL_TMPL_ARG(classname)  
   391 #  endif
   392 
   393 /* default parameters as complete types */
   394 # if defined ( _STLP_DEFAULT_TYPE_PARAM )
   395 #   define __DFL_TYPE_PARAM( classname, defval ) class classname = defval
   396 #   define __DFL_NON_TYPE_PARAM(type,name,val) type name = val
   397 #   define __DFL_TYPE_ARG(classname)
   398 # else
   399 #   define __DFL_TYPE_PARAM( classname, defval ) class classname
   400 #   define __DFL_NON_TYPE_PARAM(type,name,val) type name
   401 #   define __DFL_TYPE_ARG(classname) , classname
   402 # endif
   403 
   404 /* SGI compatibility */
   405 
   406 #ifdef _STLP_NO_WCHAR_T
   407 # ifndef _STLP_NO_NATIVE_WIDE_STREAMS
   408 #  define  _STLP_NO_NATIVE_WIDE_STREAMS 1
   409 # endif
   410 #else
   411 # define _STLP_HAS_WCHAR_T 1
   412 #endif
   413 
   414 #if !defined (_STLP_NO_AT_MEMBER_FUNCTION)
   415 # define _STLP_CAN_THROW_RANGE_ERRORS 1
   416 #endif
   417 
   418 # if !defined (_STLP_USE_RAW_SGI_ALLOCATORS)
   419 #   define _STLP_DEFAULT_ALLOCATOR(_Tp) allocator< _Tp >
   420 #   define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) __DFL_TMPL_PARAM(_Alloc, allocator< _Tp >)
   421 #   define _STLP_DEFAULT_PAIR_ALLOCATOR(_Key, _Tp) allocator< pair < _Key, _Tp > >
   422 #   if defined (_STLP_LIMITED_DEFAULT_TEMPLATES)
   423 #     define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) class _Alloc
   424 #     define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
   425 #   else
   426 #     define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) \
   427              class _Alloc = allocator< pair < _Key, _Tp > >
   428 #   endif
   429 # else
   430 #   define _STLP_DEFAULT_ALLOCATOR( _Tp ) __sgi_alloc
   431 #   define _STLP_DEFAULT_ALLOCATOR_SELECT( _Tp ) __DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
   432 #   define _STLP_DEFAULT_PAIR_ALLOCATOR( _Key, _Tp ) __sgi_alloc
   433 #   define _STLP_DEFAULT_PAIR_ALLOCATOR_SELECT(_Key, _Tp ) __DFL_TYPE_PARAM(_Alloc,__sgi_alloc)
   434 #   if defined (_STLP_LIMITED_DEFAULT_TEMPLATES) && !defined (_STLP_DEFAULT_TYPE_PARAM)
   435 #    define _STLP_USE_WRAPPER_FOR_ALLOC_PARAM 1
   436 #   endif
   437 # endif
   438 
   439 /* default parameters workaround tuning */
   440 #  if defined ( _STLP_USE_WRAPPER_FOR_ALLOC_PARAM )
   441 #    define __WORKAROUND_RENAME(X) __##X
   442 #  else
   443 #    define __WORKAROUND_RENAME(X) X
   444 #  endif
   445 #  if defined ( _STLP_DEBUG )
   446 #    define __WORKAROUND_DBG_RENAME(X) __##X
   447 #  else
   448 #    define __WORKAROUND_DBG_RENAME(X) __WORKAROUND_RENAME(X)
   449 #  endif
   450 #  define __FULL_NAME(X) __WORKAROUND_RENAME(X)
   451 
   452 /* this always mean the C library is in global namespace */
   453 # if defined (_STLP_HAS_NO_NEW_C_HEADERS) && ! defined (_STLP_VENDOR_GLOBAL_CSTD)
   454 #  define _STLP_VENDOR_GLOBAL_CSTD 1
   455 # endif
   456 
   457 /* Depending of whether compiler supports namespaces,
   458  * tune the parameters for vendor-supplied libraries.
   459  * This section is guarded by _STLP_HAS_NO_NAMESPACES, not by _STLP_USE_NAMESPACES,
   460  * since it depends only on the native features, not on user's preference whether
   461  * to use namespace for STLport or not.
   462  */
   463 # if !defined (_STLP_HAS_NO_NAMESPACES)
   464 /* Import some vendor's headers into corresponding STLport ones if they might be needed
   465  * (if we wrap native iostreams and use namepace other than std::) */
   466 #  if defined (_STLP_WHOLE_NATIVE_STD)
   467 #    define  _STLP_IMPORT_VENDOR_STD 1
   468 #    undef   _STLP_MINIMUM_IMPORT_STD
   469 #  elif (defined (_STLP_USE_OWN_NAMESPACE) || ( defined (_STLP_DEBUG) && defined (_STLP_USE_NAMESPACES))) \
   470        && defined (_STLP_USE_NEW_IOSTREAMS) && ! defined (_STLP_OWN_IOSTREAMS)
   471 #    define  _STLP_IMPORT_VENDOR_STD 1
   472 #  endif
   473 
   474 /* if using stlport:: namespace or if C library stuff is not in vendor's std::,
   475  * try importing 'em.
   476  * MSVC has ambiguity problem when we try to import C-style std:: stuff back into global namespace */
   477 #  if defined (_STLP_USE_NAMESPACES) && /* ! defined (_STLP_OWN_IOSTREAMS) && */ \
   478    ( defined(_STLP_USE_OWN_NAMESPACE) || defined (_STLP_VENDOR_GLOBAL_CSTD))
   479 #    define  _STLP_IMPORT_VENDOR_CSTD 1
   480 #  endif
   481 
   482 # if defined (_STLP_NO_USING_FOR_GLOBAL_FUNCTIONS) && ! defined (_STLP_DO_IMPORT_CSTD_FUNCTIONS)
   483 #  define _STLP_NO_CSTD_FUNCTION_IMPORTS
   484 # endif
   485 
   486 #  define  _STLP_USING_NAMESPACE(x) using namespace x ;
   487 
   488 namespace std { }
   489 namespace __std_alias = std;
   490 
   491 /* assume std:: namespace for C++ std library if not being told otherwise */
   492 #  ifdef _STLP_VENDOR_GLOBAL_STD
   493 #   define _STLP_VENDOR_STD
   494 #   define _STLP_USING_VENDOR_STD
   495 #  else
   496 #   define _STLP_VENDOR_STD __std_alias
   497 #   define _STLP_USING_VENDOR_STD _STLP_USING_NAMESPACE(_STLP_VENDOR_STD)
   498 // #   define _STLP_USING_VENDOR_STD
   499 #  endif
   500 
   501 /* tune things that come from C library */
   502 #  if  defined (_STLP_VENDOR_GLOBAL_CSTD) || !defined(_STLP_USE_NEW_C_HEADERS)
   503 /*  in old-style headers, C functions go to global scope. */
   504 #   define _STLP_VENDOR_CSTD
   505 #   define _STLP_USING_VENDOR_CSTD
   506 #  else
   507 #   define _STLP_VENDOR_CSTD  _STLP_VENDOR_STD
   508 #   define _STLP_USING_VENDOR_CSTD _STLP_USING_NAMESPACE(_STLP_VENDOR_CSTD)
   509 #  endif /* _STLP_VENDOR_CSTD */
   510 /* exception, typeinfo, new - always come from the vendor */
   511 #  ifndef _STLP_VENDOR_EXCEPT_STD
   512 #   ifdef _STLP_VENDOR_GLOBAL_EXCEPT_STD
   513 #    define _STLP_VENDOR_EXCEPT_STD
   514 #   else
   515 #    define _STLP_VENDOR_EXCEPT_STD _STLP_VENDOR_STD
   516 #   endif
   517 #  endif
   518 # define _STLP_OLD_IO_NAMESPACE
   519 # ifndef _STLP_VENDOR_MB_NAMESPACE
   520 #  define _STLP_VENDOR_MB_NAMESPACE _STLP_VENDOR_CSTD
   521 # endif
   522 # else 
   523 /* compiler has no namespace support */
   524 #  define _STLP_VENDOR_STD 
   525 #  define _STLP_VENDOR_CSTD
   526 #  define _STLP_USING_NAMESPACE(x)
   527 #  define _STLP_USING_VENDOR_CSTD
   528 #  define _STLP_USING_VENDOR_STD 
   529 #  define _STLP_VENDOR_EXCEPT_STD
   530 # endif
   531 
   532 # if defined (_STLP_USE_NAMESPACES)
   533 
   534 #  if defined (_STLP_USE_OWN_NAMESPACE)
   535 #   define _STLP_STD      _STL
   536 #  else
   537 #   ifdef _STLP_DEBUG
   538 namespace stdD = std;
   539 #   endif
   540 #   define _STLP_STD      std
   541 #  endif /* _STLP_USE_OWN_NAMESPACE */
   542 
   543 #  define _STLP_BEGIN_NAMESPACE namespace _STLP_STD {
   544 #  define _STLP_END_NAMESPACE }
   545 
   546 _STLP_BEGIN_NAMESPACE _STLP_END_NAMESPACE
   547 
   548 namespace stlport = _STLP_STD;
   549 // backward compatibility 
   550 # undef __STLPORT_NAMESPACE
   551 # define __STLPORT_NAMESPACE _STLP_STD
   552 
   553 /* decide whether or not we use separate namespace for rel ops */
   554 #   if defined(_STLP_NO_RELOPS_NAMESPACE)
   555 #     define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {}
   556 #     define _STLP_END_RELOPS_NAMESPACE }
   557 #   else
   558 /* Use std::rel_ops namespace */
   559 #     define _STLP_BEGIN_RELOPS_NAMESPACE _STLP_BEGIN_NAMESPACE namespace rel_ops {
   560 #     define _STLP_END_RELOPS_NAMESPACE } }
   561 #     define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
   562 #   endif /* Use std::rel_ops namespace */
   563 
   564 # else /* _STLP_USE_NAMESPACES */
   565 /* STLport is being put into global namespace */
   566 #  define _STLP_STD
   567 #  define _STLP_BEGIN_NAMESPACE
   568 #  define _STLP_END_NAMESPACE
   569 
   570 /* boris : it was found out that _STLP_USE_SEPARATE_RELOPS_NAMESPACE 
   571    causes less problems than having relational operator templates in global namespace
   572    Please define _STLP_NO_RELOPS_NAMESPACE in stl_user_config.h if your code rely on them. */
   573 #  ifndef _STLP_NO_RELOPS_NAMESPACE
   574 #   define _STLP_USE_SEPARATE_RELOPS_NAMESPACE
   575 #  endif
   576 #  define _STLP_BEGIN_RELOPS_NAMESPACE 
   577 #  define _STLP_END_RELOPS_NAMESPACE 
   578 #  undef  _STLP_USE_OWN_NAMESPACE
   579 # endif  /* _STLP_USE_NAMESPACES */
   580 
   581 # define STLPORT_CSTD _STLP_VENDOR_CSTD
   582 # define STLPORT      _STLP_STD
   583 
   584 #if defined(_STLP_BOGUS_TEMPLATE_TYPE_MATCHING_BUG)
   585 #  define _STLP_SIMPLE_TYPE(T) _stl_trivial_proxy<T>
   586 #else
   587 #  define _STLP_SIMPLE_TYPE(T) T
   588 #endif
   589 
   590 /* if we are going to use native new iostreams, use native <string> and <stdexcept> */
   591 #  if defined (_STLP_USE_NEW_IOSTREAMS) && !defined (_STLP_OWN_IOSTREAMS)
   592 #ifndef __SYMBIAN32__
   593 #   define _STLP_USE_NATIVE_STRING      1
   594 #   define _STLP_USE_NATIVE_STDEXCEPT   1
   595 #endif
   596 # endif
   597 
   598 # ifndef _STLP_RAND48
   599 # define _STLP_NO_DRAND48
   600 # endif
   601 
   602 /* backwards compatibility */
   603 # define __STL_NAMESPACE _STLP_STD
   604 # define __STL_NAME(name) _STLP_STD::name
   605 
   606 /* advanced keywords usage */
   607 #  ifndef  _STLP_NO_NEW_STYLE_CASTS
   608 #   define __CONST_CAST(__x,__y) const_cast<__x>(__y)
   609 #   define __STATIC_CAST(__x,__y) static_cast<__x>(__y)
   610 #   define __REINTERPRET_CAST(__x,__y) reinterpret_cast<__x>(__y)
   611 #   define __DYNAMIC_CAST(__x,__y) dynamic_cast<__x>(__y)
   612 #  else
   613 #   define __STATIC_CAST(__x,__y) ((__x)(__y))
   614 #   define __CONST_CAST(__x,__y) ((__x)(__y))
   615 #   define __REINTERPRET_CAST(__x,__y) ((__x)(__y))
   616 #   define __DYNAMIC_CAST(__x,__y) ((__x)(__y))
   617 #  endif
   618 #  if defined (_STLP_NEED_TYPENAME) && ! defined (typename)
   619 #   define typename
   620 #  endif
   621 #  if defined (_STLP_NEED_TYPENAME) || defined (_STLP_NO_TYPENAME_ON_RETURN_TYPE )
   622 #    define _STLP_TYPENAME_ON_RETURN_TYPE
   623 #  else
   624 #    define _STLP_TYPENAME_ON_RETURN_TYPE typename
   625 #  endif
   626 # ifdef _STLP_NO_TYPENAME_IN_TEMPLATE_HEADER
   627 #  define _STLP_HEADER_TYPENAME
   628 # else
   629 #  define _STLP_HEADER_TYPENAME typename
   630 # endif
   631 # ifndef _STLP_NO_MEMBER_TEMPLATE_KEYWORD
   632 #   define _STLP_TEMPLATE template
   633 # else
   634 #   define _STLP_TEMPLATE
   635 # endif
   636 #  if defined (_STLP_NEED_EXPLICIT) && ! defined (explicit)
   637 #   define explicit
   638 #  endif
   639 #  ifndef _STLP_NEED_MUTABLE
   640 #   define __ASSIGN_MUTABLE(type,x,y) x=y
   641 #  else
   642 #   define __ASSIGN_MUTABLE(type,x,y) __CONST_CAST(type,x)=y
   643 #   define mutable
   644 #  endif
   645 # if defined (_STLP_NO_SIGNED_BUILTINS)
   646 /* old HP-UX doesn't understand "signed" keyword */
   647 #  define signed
   648 # endif
   649 
   650 #  if defined (_STLP_LOOP_INLINE_PROBLEMS)
   651 #   define _STLP_INLINE_LOOP
   652 #  else
   653 #   define _STLP_INLINE_LOOP inline 
   654 #  endif
   655 
   656 #  define _STLP_PRIVATE public
   657 #  define _STLP_PROTECTED public
   658 
   659 #  ifndef _STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX
   660 #   define _STLP_TEMPLATE_NULL template<>
   661 #  else
   662 #   define _STLP_TEMPLATE_NULL
   663 #  endif
   664 
   665 #ifdef _STLP_FUNCTION_TMPL_PARTIAL_ORDER
   666 #  define _STLP_OPERATOR_TEMPLATE
   667 # else 
   668 #  define _STLP_OPERATOR_TEMPLATE _STLP_TEMPLATE_NULL
   669 #endif
   670 
   671 # ifndef _STLP_CLASS_PARTIAL_SPECIALIZATION
   672 /* unless we have other compiler problem, try simulating partial spec here */
   673 # if ! defined (_STLP_DONT_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS)
   674 #  define  _STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS
   675 # endif
   676 /* For your own iterators, please use inheritance from iterator<> instead of these obsolete queries. */
   677 #  if  ( defined (_STLP_NESTED_TYPE_PARAM_BUG) || !defined (_STLP_SIMULATE_PARTIAL_SPEC_FOR_TYPE_TRAITS))
   678 #   if ! defined ( _STLP_USE_OLD_HP_ITERATOR_QUERIES )
   679 #    define _STLP_USE_OLD_HP_ITERATOR_QUERIES
   680 #   endif
   681 #  elif defined ( _STLP_NO_ANACHRONISMS )
   682 #   undef _STLP_USE_OLD_HP_ITERATOR_QUERIES
   683 #  endif
   684 # endif
   685 
   686 # ifndef _STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS
   687 #   define _STLP_NULL_TMPL_ARGS <>
   688 # else
   689 #   define _STLP_NULL_TMPL_ARGS
   690 # endif
   691 
   692 # ifndef _STLP_ALLOCATOR_TYPE_DFL
   693 #  ifdef _STLP_NEEDS_EXTRA_TEMPLATE_CONSTRUCTORS 
   694 #   define _STLP_ALLOCATOR_TYPE_DFL 
   695 #  else
   696 #   define _STLP_ALLOCATOR_TYPE_DFL = allocator_type()
   697 #  endif
   698 # endif
   699 
   700 //When the compiler do not correctly initialized the basic types value in default parameters we prefer
   701 //to avoid them to be able to correct this bug.
   702 # if defined (_STLP_DEF_CONST_DEF_PARAM_BUG)
   703 #  define _STLP_DONT_SUP_DFLT_PARAM 1
   704 # endif
   705 
   706 # if defined (__SGI_STL_NO_ARROW_OPERATOR) && ! defined (_STLP_NO_ARROW_OPERATOR)
   707 # define _STLP_NO_ARROW_OPERATOR
   708 # endif
   709 
   710 # if !defined (_STLP_CLASS_PARTIAL_SPECIALIZATION)
   711 #  if !( defined (_STLP_NO_ARROW_OPERATOR)) \
   712       && !defined (_STLP_NO_MSVC50_COMPATIBILITY) && !defined (_STLP_MSVC50_COMPATIBILITY)
   713 /* this one is needed for proper reverse_iterator<> operator ->() handling */
   714 #   define _STLP_MSVC50_COMPATIBILITY 1
   715 #  endif
   716 # endif
   717 
   718 #if defined ( _STLP_CLASS_PARTIAL_SPECIALIZATION )
   719 # if (defined(__IBMCPP__) && (500 <= __IBMCPP__) && (__IBMCPP__ < 600) )
   720 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
   721    typedef typename _STLP_STD :: reverse_iterator<const_iterator> const_reverse_iterator; \
   722    typedef typename _STLP_STD :: reverse_iterator<iterator> reverse_iterator
   723 # elif (defined (__sgi) && ! defined (__GNUC__)) || defined (__SUNPRO_CC) || defined (__xlC__)
   724 #  define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
   725    typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<const_iterator> const_reverse_iterator; \
   726    typedef _STLP_STD:: _STLP_TEMPLATE reverse_iterator<iterator> reverse_iterator
   727 # else
   728 #  define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
   729    typedef _STLP_STD::reverse_iterator<const_iterator> const_reverse_iterator; \
   730    typedef _STLP_STD::reverse_iterator<iterator> reverse_iterator
   731 # endif
   732 #else /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
   733 # if defined (_STLP_MSVC50_COMPATIBILITY)
   734 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
   735   typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
   736     const_pointer, difference_type>  const_reverse_iterator; \
   737   typedef _STLP_STD::__reverse_iterator<iterator, value_type, reference, pointer, difference_type> \
   738     reverse_iterator
   739 # else
   740 # define _STLP_DECLARE_REVERSE_ITERATORS(__reverse_iterator) \
   741   typedef _STLP_STD::__reverse_iterator<const_iterator, value_type, const_reference, \
   742     difference_type>  const_reverse_iterator; \
   743   typedef _STLP_STD::__reverse_iterator<iterator, value_type, \
   744     reference, difference_type> \
   745     reverse_iterator
   746 # endif
   747 #endif /* _STLP_CLASS_PARTIAL_SPECIALIZATION */
   748 
   749 # define _STLP_DECLARE_BIDIRECTIONAL_REVERSE_ITERATORS \
   750          _STLP_DECLARE_REVERSE_ITERATORS(reverse_bidirectional_iterator)
   751 # define _STLP_DECLARE_RANDOM_ACCESS_REVERSE_ITERATORS \
   752          _STLP_DECLARE_REVERSE_ITERATORS(reverse_iterator)
   753 
   754 #  define __IMPORT_CONTAINER_TYPEDEFS(_Super)                            \
   755     typedef typename _Super::value_type value_type;                      \
   756     typedef typename _Super::size_type size_type;                        \
   757     typedef typename _Super::difference_type difference_type;            \
   758     typedef typename _Super::reference reference;                        \
   759     typedef typename _Super::const_reference const_reference;            \
   760     typedef typename _Super::pointer pointer;                            \
   761     typedef typename _Super::const_pointer const_pointer;                \
   762     typedef typename _Super::allocator_type allocator_type;
   763 
   764 
   765 #  define __IMPORT_ITERATORS(_Super)                                     \
   766     typedef typename _Super::iterator iterator;                                   \
   767     typedef typename _Super::const_iterator const_iterator; 
   768 
   769 #  define __IMPORT_REVERSE_ITERATORS(_Super)                             \
   770     typedef typename _Super::const_reverse_iterator  const_reverse_iterator;      \
   771     typedef typename _Super::reverse_iterator reverse_iterator;
   772 
   773 #  define  __IMPORT_SUPER_COPY_ASSIGNMENT(__derived_name, _Self, _SUPER)         \
   774     __derived_name(const _Super& __x) : _SUPER(__x) {}          \
   775     _Self& operator=(const _Super& __x) {                       \
   776         *(_Super*)this = __x;                                   \
   777         return *this;                                           \
   778     }  \
   779     __derived_name(const _Self& __x) : _SUPER(__x) {}          \
   780     _Self& operator=(const _Self& __x) {                       \
   781         *(_Super*)this = __x;                                   \
   782         return *this;                                           \
   783     }
   784 
   785 # define __IMPORT_WITH_ITERATORS(_Super) \
   786 __IMPORT_CONTAINER_TYPEDEFS(_Super) __IMPORT_ITERATORS(_Super)
   787 
   788 # define __IMPORT_WITH_REVERSE_ITERATORS(_Super) \
   789 __IMPORT_WITH_ITERATORS(_Super) __IMPORT_REVERSE_ITERATORS(_Super)
   790 
   791 # if defined (_STLP_TRIVIAL_CONSTRUCTOR_BUG) 
   792 #  define __TRIVIAL_CONSTRUCTOR(__type) __type() {}  
   793 # else
   794 #  define __TRIVIAL_CONSTRUCTOR(__type)
   795 # endif
   796 # if defined (_STLP_TRIVIAL_DESTRUCTOR_BUG)
   797 #  define __TRIVIAL_DESTRUCTOR(__type) ~__type() {}  
   798 # else
   799 #  define __TRIVIAL_DESTRUCTOR(__type) 
   800 # endif
   801 
   802 #  define __TRIVIAL_STUFF(__type)  \
   803   __TRIVIAL_CONSTRUCTOR(__type) __TRIVIAL_DESTRUCTOR(__type)
   804 
   805 # if ! (defined ( _STLP_NO_EXCEPTIONS ) || defined (_STLP_HAS_NO_EXCEPTIONS) \
   806 	|| defined ( _STLP_USE_EXCEPTIONS ))
   807 #  define _STLP_USE_EXCEPTIONS
   808 # endif 
   809 
   810 #define _STLP_NOPUSH 
   811 
   812 # ifdef _STLP_USE_EXCEPTIONS
   813 #   define _STLP_LEAVE_VOLATILE
   814 #   define _STLP_TRY try
   815 #   define _STLP_CATCH_ALL catch(...)
   816 #   ifndef _STLP_THROW
   817 #    define _STLP_THROW(x) throw x
   818 #   endif
   819 #   define _STLP_RETHROW throw
   820 #   define _STLP_UNWIND(action) catch(...) { action; throw; }
   821 #   define _STLP_UNWIND_BEGIN(action) catch(...) 
   822 
   823 #   ifdef _STLP_THROW_RETURN_BUG
   824 #     define _STLP_RET_AFTER_THROW(data) return data
   825 #   else
   826 #     define _STLP_RET_AFTER_THROW(data)
   827 #   endif
   828 
   829 #   if !defined ( _STLP_NO_EXCEPTION_SPEC )
   830 #    define _STLP_THROWS_INHERENTLY(x) throw x
   831 #    define _STLP_NOTHROW_INHERENTLY throw()
   832 #   else
   833 #    define _STLP_THROWS_INHERENTLY(x)
   834 #    define _STLP_NOTHROW_INHERENTLY 
   835 #   endif
   836 /* We do not use exception throw specifications unless we are forced to */
   837 #   define _STLP_THROWS(x)
   838 #   define _STLP_NOTHROW 
   839 
   840 # elif defined _STLP_USE_TRAP_LEAVE
   841 
   842 #include <bldvariant.hrh>
   843 
   844 #ifdef __SERIES60_30__
   845 #include <e32cmn.h>
   846 #else
   847 #include <e32base.h>
   848 #endif  // __SERIES60_30__
   849 
   850 
   851 class _TStUntrap {
   852 public:
   853     ~_TStUntrap() { 
   854       TTrap::UnTrap(); }
   855 };
   856 
   857 // this does not work for MSVC 6.0
   858 # if defined (_MSC_VER) && (_MSC_VER <= 1200)
   859 # define _STLP_LEAVE_VOLATILE
   860 # else
   861 # define _STLP_LEAVE_VOLATILE volatile
   862 # endif
   863 
   864 template<class T> inline void _STLP_no_unused_variable_warning(const T &) {}
   865 
   866 #   define _STLP_TRY TInt _STL_TrapExitCode; { TTrap _STL_Trap;	\
   867   if (_STL_Trap.Trap(_STL_TrapExitCode)==0) { \
   868     _TStUntrap _STL_Untrap;	\
   869     _STLP_no_unused_variable_warning( _STL_Untrap );
   870 
   871 #   define _STLP_CATCH_ALL \
   872    } } if (_STL_TrapExitCode)
   873 
   874 # define _STLP_TRY_C
   875 # define _STLP_UNWIND_C(x) 
   876 # define _STLP_CATCH_ALL_C
   877 
   878 #   ifndef _STLP_THROW
   879 #    define _STLP_THROW(x)
   880 #   endif
   881 
   882 #   define _STLP_RETHROW User::Leave(_STL_TrapExitCode)
   883 #   define _STLP_UNWIND(__action) _STLP_CATCH_ALL { __action; _STLP_RETHROW; }
   884 
   885 #   define __THROW_BAD_ALLOC User::Leave(STDEX_bad_alloc);
   886 
   887 #   ifdef _STLP_THROW_RETURN_BUG
   888 #     define _STLP_RET_AFTER_THROW(data) return data
   889 #   else
   890 #     define _STLP_RET_AFTER_THROW(data)
   891 #   endif
   892 /* We do not use exception throw specifications unless we are forced to */
   893 #   define _STLP_THROWS(x)
   894 #   define _STLP_NOTHROW 
   895 #   define _STLP_THROWS_INHERENTLY(x)
   896 #   define _STLP_NOTHROW_INHERENTLY 
   897 
   898 # else
   899 #   define _STLP_LEAVE_VOLATILE
   900 #   define _STLP_TRY 
   901 #   define _STLP_CATCH_ALL if (false)
   902 #   ifndef _STLP_THROW
   903 #    define _STLP_THROW(x)
   904 #   endif
   905 #   define _STLP_RETHROW {}
   906 #   define _STLP_UNWIND(action) 
   907 #   define _STLP_THROWS(x)
   908 #   define _STLP_NOTHROW
   909 #   define _STLP_RET_AFTER_THROW(data)
   910 #   define _STLP_THROWS_INHERENTLY(x)
   911 #   define _STLP_NOTHROW_INHERENTLY 
   912 # endif
   913 
   914 #if defined(_STLP_NO_BOOL)
   915 # if (defined (__IBMCPP__) && (__IBMCPP__ < 400)) && ! defined (_AIX)
   916 #  include <isynonym.hpp>
   917 #  if defined (__OS400__)
   918     typedef int bool;
   919 #  elif !( defined (__xlC__) || defined (_AIX))
   920     typedef Boolean bool;
   921 #  endif
   922 # else
   923 #  if defined(_STLP_YVALS_H)
   924 #   include <yvals.h>
   925 #  else
   926 #    if defined (_STLP_DONT_USE_BOOL_TYPEDEF)
   927 #     define bool int
   928 #    else
   929       typedef int bool;
   930 #    endif
   931 #    define true 1
   932 #    define false 0
   933 #  endif
   934 # endif /* __IBMCPP__ */
   935 #else
   936 #    define _STLP_BOOL_KEYWORD 1
   937 #endif /* _STLP_NO_BOOL */
   938 
   939 # ifndef _STLP_MPW_EXTRA_CONST
   940 #  define _STLP_MPW_EXTRA_CONST
   941 # endif
   942 
   943 # ifndef _STLP_DEFAULTCHAR
   944 #  define _STLP_DEFAULTCHAR char
   945 # endif
   946 
   947 # if defined (_STLP_DEBUG_ALLOC) && ! defined (_STLP_ASSERTIONS)
   948 #  define _STLP_ASSERTIONS 1
   949 # endif
   950 
   951 /* uninitialized value filler */
   952 # ifndef _STLP_SHRED_BYTE
   953 /* This value is designed to cause problems if an error occurs */
   954 #   define _STLP_SHRED_BYTE 0xA3
   955 # endif /* _STLP_SHRED_BYTE */
   956 
   957 /* shared library tune-up */
   958 # ifndef _STLP_IMPORT_DECLSPEC
   959 //#  define _STLP_IMPORT_DECLSPEC
   960 # endif
   961 /* a keyword used to instantiate export template */
   962 #  ifndef _STLP_EXPORT_TEMPLATE_KEYWORD
   963 #   define _STLP_EXPORT_TEMPLATE_KEYWORD EXPORT_C
   964 #  endif
   965 # ifndef _STLP_IMPORT_TEMPLATE_KEYWORD
   966 #  define _STLP_IMPORT_TEMPLATE_KEYWORD IMPORT_C
   967 # endif
   968 
   969 
   970 # if  defined (_STLP_DLLEXPORT_NEEDS_PREDECLARATION) && defined (_STLP_USE_DECLSPEC)
   971 #  if ! defined (_STLP_USE_TEMPLATE_EXPORT)
   972 /* this setting turns on "extern template" extension use */
   973 #   define _STLP_USE_TEMPLATE_EXPORT
   974 #  endif
   975 #  if defined (_STLP_DESIGNATED_DLL) && ! defined (_STLP_NO_FORCE_INSTANTIATE)
   976 #   define _STLP_NO_FORCE_INSTANTIATE
   977 #  endif
   978 # endif
   979 
   980 #   if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
   981 #    define  _STLP_EXPORT          _STLP_EXPORT_TEMPLATE_KEYWORD
   982 #   else
   983 #    define  _STLP_EXPORT          _STLP_IMPORT_TEMPLATE_KEYWORD
   984 #  endif
   985 
   986 # ifndef _STLP_EXPORT_TEMPLATE
   987 #  define  _STLP_EXPORT_TEMPLATE _STLP_EXPORT template
   988 # endif
   989 
   990 # if defined (_STLP_USE_DECLSPEC) /* using export/import technique */
   991 
   992 #  ifndef _STLP_EXPORT_DECLSPEC
   993 #ifdef __SYMBIAN32__
   994 #   define _STLP_EXPORT_DECLSPEC EXPORT_C
   995 #else
   996 #   define _STLP_EXPORT_DECLSPEC
   997 #endif
   998 #  endif
   999 #  ifndef _STLP_IMPORT_DECLSPEC
  1000 #ifdef __SYMBIAN32__
  1001 #   define _STLP_IMPORT_DECLSPEC IMPORT_C
  1002 #else
  1003 #   define _STLP_IMPORT_DECLSPEC
  1004 #endif
  1005 #  endif
  1006 #  ifndef _STLP_CLASS_EXPORT_DECLSPEC
  1007 #   define _STLP_CLASS_EXPORT_DECLSPEC
  1008 #  endif
  1009 #  ifndef _STLP_CLASS_IMPORT_DECLSPEC
  1010 #   define _STLP_CLASS_IMPORT_DECLSPEC
  1011 #  endif
  1012 #  if defined (_STLP_DESIGNATED_DLL) /* This is a lib which will contain STLport exports */
  1013 #   define  _STLP_DECLSPEC        _STLP_IMPORT_DECLSPEC 
  1014 #   define  _STLP_EXP_DECLSPEC    _STLP_EXPORT_DECLSPEC
  1015 #   define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_EXPORT_DECLSPEC 
  1016 #  else
  1017 #   define  _STLP_DECLSPEC        //_STLP_IMPORT_DECLSPEC   /* Other modules, importing STLport exports */
  1018 #   define  _STLP_EXP_DECLSPEC    //_STLP_EXPORT_DECLSPEC
  1019 #   define  _STLP_CLASS_DECLSPEC  _STLP_CLASS_IMPORT_DECLSPEC
  1020 #   undef _STLP_USE_NAMESPACES
  1021 #   define _STLP_USE_NAMESPACES
  1022 #  endif
  1023 
  1024 #  ifndef _STLP_STATIC_CONST_INIT_BUG
  1025 // constant data members cannot be exported; using workaround here
  1026 #   define _STLP_STATIC_CONST_INIT_BUG
  1027 #  endif
  1028 # else /* Not using DLL export/import specifications */
  1029 
  1030 #  define _STLP_DECLSPEC
  1031 #  define _STLP_CLASS_DECLSPEC
  1032 
  1033 # endif
  1034 
  1035 #  define _STLP_EXPORT_TEMPLATE_CLASS _STLP_EXPORT template class _STLP_CLASS_DECLSPEC
  1036 
  1037 #ifndef _STLP_EXPORT_METHOD
  1038 # define _STLP_EXPORT_METHOD 
  1039 #endif
  1040 
  1041 #  if defined (_STLP_MSVC) || defined (__ICL)
  1042 #   define _STLP_STATIC_MEMBER_DECLSPEC
  1043 #   define _STLP_STATIC_MEMBER_EXP_DECLSPEC
  1044 #  else
  1045 #   define _STLP_STATIC_MEMBER_DECLSPEC _STLP_DECLSPEC
  1046 #   define _STLP_STATIC_MEMBER_EXP_DECLSPEC _STLP_EXPORT_DECLSPEC
  1047 #  endif
  1048 
  1049 # if !defined (_STLP_CALL)
  1050 #   define _STLP_CALL
  1051 # endif
  1052 
  1053 #ifdef _STLP_OWN_IOSTREAMS
  1054 
  1055 #  if defined (__DECCXX) && ! defined (__USE_STD_IOSTREAM)
  1056 #   define __USE_STD_IOSTREAM
  1057 #  endif
  1058 
  1059 /* We only need to expose details of streams implementation 
  1060    if we use non-standard i/o or are building STLport*/
  1061 # if defined (__BUILDING_STLPORT) ||  defined (_STLP_NO_FORCE_INSTANTIATE) || !defined(_STLP_NO_CUSTOM_IO) || defined (__SYMBIAN32__)
  1062 #  define _STLP_EXPOSE_STREAM_IMPLEMENTATION 1
  1063 # endif
  1064 
  1065 /* We only need to expose details of global implementation if we are building STLport 
  1066    or have not instantiated everything in the lib */
  1067 
  1068 //# if defined (__BUILDING_STLPORT) || defined (_STLP_NO_FORCE_INSTANTIATE)
  1069 #   undef  _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
  1070 #   define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION 1
  1071 //# endif
  1072 
  1073 #else
  1074 /* when we are not using SGI iostreams, we must expose globals, but not streams implementation */
  1075 #  define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
  1076 #endif
  1077 
  1078 # ifdef _STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS
  1079 #  define _STLP_PSPEC2(t1,t2) < t1,t2 >
  1080 #  define _STLP_PSPEC3(t1,t2,t3) < t1,t2,t3 >
  1081 # else
  1082 #  define _STLP_PSPEC2(t1,t2)	/* nothing */
  1083 #  define _STLP_PSPEC3(t1,t2,t3)	/* nothing */
  1084 # endif
  1085 
  1086 # ifdef _STLP_OPERATOR_SPEC_NEEDS_TEMPLATE_ARGS
  1087 #  define _STLP_OPSPEC2(t1,t2) < t1,t2 >
  1088 # else
  1089 #  define _STLP_OPSPEC2(t1,t2)	/* nothing */
  1090 # endif
  1091 
  1092 //Activation of the partial template workaround:
  1093 # if !defined(_STLP_DONT_USE_PARTIAL_SPEC_WRKD) \
  1094     && (!defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || !defined(_STLP_FUNCTION_TMPL_PARTIAL_ORDER))
  1095 #  define _STLP_USE_PARTIAL_SPEC_WORKAROUND
  1096 # endif
  1097 
  1098 # if defined (_STLP_OWN_IOSTREAMS)
  1099 #  define _STLP_NEW_IO_NAMESPACE _STLP_STD
  1100 #  define _STLP_NO_WIDE_STREAMS  _STLP_NO_WCHAR_T
  1101 # else
  1102 #  ifdef _STLP_USE_NEW_IOSTREAMS
  1103 #   define _STLP_NEW_IO_NAMESPACE _STLP_VENDOR_STD
  1104 #   ifdef _STLP_NO_NATIVE_WIDE_STREAMS
  1105 #    define _STLP_NO_WIDE_STREAMS _STLP_NO_NATIVE_WIDE_STREAMS
  1106 #   endif /* _STLP_NO_NATIVE_WIDE_STREAMS */
  1107 #  else
  1108 #   define _STLP_NO_WIDE_STREAMS
  1109 #   define _STLP_NEW_IO_NAMESPACE
  1110 #  endif
  1111 # endif
  1112 
  1113 #ifdef _STLP_USE_SEPARATE_RELOPS_NAMESPACE
  1114 # define _STLP_RELOPS_OPERATORS(_TMPL, _TP) \
  1115 _TMPL inline bool _STLP_CALL operator!=(const _TP& __x, const _TP& __y) {return !(__x == __y);}\
  1116 _TMPL inline bool _STLP_CALL operator>(const _TP& __x, const _TP& __y)  {return __y < __x;}\
  1117 _TMPL inline bool _STLP_CALL operator<=(const _TP& __x, const _TP& __y) { return !(__y < __x);}\
  1118 _TMPL inline bool _STLP_CALL operator>=(const _TP& __x, const _TP& __y) { return !(__x < __y);}
  1119 # else
  1120 #  define _STLP_RELOPS_OPERATORS(_TMPL, _TP)
  1121 # endif
  1122 
  1123 # if defined (_STLP_FULL_ADL_IMPLEMENTED) && defined (_STLP_NO_OWN_IOSTREAMS)
  1124 #  error "Invalid configuration, STLport wrapper iostream mode can't be used with compiler"\
  1125          "implementing full Argument Dependent Lookup. Please remove _STLP_NO_OWN_IOSTREAMS switch"\
  1126          "and build STLport library."
  1127 # endif /* _STLP_FULL_ADL_IMPLEMENTED && _STLP_NO_OWN_IOSTREAMS */
  1128 
  1129 # if defined ( _STLP_USE_ABBREVS )
  1130 #  include <stl/_abbrevs.h>
  1131 # endif
  1132 
  1133 /* some cleanup */
  1134 # undef _STLP_DONT_USE_BOOL_TYPEDEF
  1135 # undef _STLP_YVALS_H
  1136 # undef _STLP_LOOP_INLINE_PROBLEMS
  1137 # undef _STLP_NEED_EXPLICIT
  1138 # undef _STLP_NEED_TYPENAME
  1139 # undef _STLP_NO_NEW_STYLE_CASTS
  1140 # undef __AUTO_CONFIGURED
  1141 
  1142 #   define _STLP_EXPORT_METHOD 
  1143 #   define _STLP_EXPORT_CONCRETE_METHOD
  1144 #   define _STLP_EXPORT_METHOD
  1145 #   define _STLP_EXPORT_CONCRETE_METHOD
  1146 #   define _STLP_IMPORT_METHOD
  1147 
  1148 #ifdef __SYMBIAN32__
  1149 #define __STLP_NO_WRITE_SIDE_BUFFERING__
  1150 #endif
  1151 #endif /* _STLP_CONFIG_H */
  1152 
  1153 /*
  1154  Local Variables:
  1155  mode:C++
  1156  End:
  1157 */