epoc32/include/stdapis/stlport/stl/_config.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
equal deleted inserted replaced
1:666f914201fb 2:2fe1408b6811
     1 _config.h
     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 */