home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / stlpt453.zip / STLport-4.5.3 / stlport / stl / _config.h < prev    next >
C/C++ Source or Header  |  2002-01-18  |  34KB  |  1,018 lines

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