123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262 |
- /*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Copyright (c) 1997
- * Moscow Center for SPARC Technology
- *
- * Copyright (c) 1999
- * Boris Fomitchev
- *
- * This material is provided "as is", with absolutely no warranty expressed
- * or implied. Any use is at your own risk.
- *
- * Permission to use or copy this software for any purpose is hereby granted
- * without fee, provided the above notices are retained on all copies.
- * Permission to modify the code and to distribute modified code is granted,
- * provided the above notices are retained, and a notice that the code was
- * modified is included with the above copyright notice.
- *
- */
- #define _STLP_EXPOSE_GLOBALS_IMPLEMENTATION
- #include "stlport_prefix.h"
- #if !defined (_STLP_DEBUG) && ! defined (_STLP_ASSERTIONS)
- # if !defined (__APPLE__) || !defined (__GNUC__) || (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
- /* dums: Please if the following code was being uncommented please explain why
- * as for the moment it only looks like a source of inconsistency in the way
- * STLport different translation units are compiled.
- */
- //# define _STLP_ASSERTIONS 1
- # endif
- #endif
- #include <utility>
- #include <memory>
- #include <vector>
- #include <set>
- #include <list>
- #include <slist>
- #include <deque>
- #include <hash_map>
- #include <limits>
- #include <string>
- #include <stdexcept>
- #include <bitset>
- #include <locale>
- #if defined (__DMC__)
- // for rope static members
- # include <rope>
- #endif
- #include <stl/_range_errors.c>
- _STLP_BEGIN_NAMESPACE
- #if defined (_STLP_NO_EXCEPTION_HEADER) || defined (_STLP_BROKEN_EXCEPTION_CLASS)
- exception::exception() _STLP_NOTHROW {}
- exception::~exception() _STLP_NOTHROW {}
- bad_exception::bad_exception() _STLP_NOTHROW {}
- bad_exception::~bad_exception() _STLP_NOTHROW {}
- const char* exception::what() const _STLP_NOTHROW { return "class exception"; }
- const char* bad_exception::what() const _STLP_NOTHROW { return "class bad_exception"; }
- #endif
- #if defined (_STLP_OWN_STDEXCEPT)
- # include <stl/_stdexcept_base.c>
- // boris : those are needed to force typeinfo nodes to be created in here only
- logic_error::~logic_error() _STLP_NOTHROW_INHERENTLY {}
- runtime_error::~runtime_error() _STLP_NOTHROW_INHERENTLY {}
- domain_error::~domain_error() _STLP_NOTHROW_INHERENTLY {}
- invalid_argument::~invalid_argument() _STLP_NOTHROW_INHERENTLY {}
- length_error::~length_error() _STLP_NOTHROW_INHERENTLY {}
- out_of_range::~out_of_range() _STLP_NOTHROW_INHERENTLY {}
- range_error::~range_error() _STLP_NOTHROW_INHERENTLY {}
- overflow_error::~overflow_error() _STLP_NOTHROW_INHERENTLY {}
- underflow_error::~underflow_error() _STLP_NOTHROW_INHERENTLY {}
- #endif
- #if !defined(_STLP_WCE_EVC3)
- # if defined (_STLP_NO_BAD_ALLOC)
- const nothrow_t nothrow /* = {} */;
- # endif
- #endif
- #if !defined (_STLP_NO_FORCE_INSTANTIATE)
- # if defined (_STLP_DEBUG) || defined (_STLP_ASSERTIONS)
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC __stl_debug_engine<bool>;
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif
- template class _STLP_CLASS_DECLSPEC __debug_alloc<__node_alloc>;
- template class _STLP_CLASS_DECLSPEC __debug_alloc<__new_alloc>;
- //Export of the types used to represent buckets in the hashtable implementation.
- /*
- * For the vector class we do not use any MSVC6 workaround even if we export it from
- * the STLport dynamic libraries because we know what methods are called and none is
- * a template method. Moreover the exported class is an instanciation of vector with
- * _Slist_node_base struct that is an internal STLport class that no user should ever
- * use.
- */
- # if !defined (_STLP_USE_PTR_SPECIALIZATIONS)
- template class _STLP_CLASS_DECLSPEC allocator<_STLP_PRIV _Slist_node_base*>;
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_Slist_node_base**, _Slist_node_base*,
- allocator<_Slist_node_base*> >;
- template class _STLP_CLASS_DECLSPEC _Vector_base<_Slist_node_base*,
- allocator<_Slist_node_base*> >;
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif
- # if defined (_STLP_DEBUG)
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC _STLP_NON_DBG_NAME(vector)<_Slist_node_base*,
- allocator<_Slist_node_base*> >;
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif
- template class _STLP_CLASS_DECLSPEC vector<_STLP_PRIV _Slist_node_base*,
- allocator<_STLP_PRIV _Slist_node_base*> >;
- //End of hashtable bucket types export.
- //Export of _Locale_impl facets container:
- # if !defined (_STLP_USE_PTR_SPECIALIZATIONS)
- template class _STLP_CLASS_DECLSPEC allocator<locale::facet*>;
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<locale::facet**, locale::facet*, allocator<locale::facet*> >;
- template class _STLP_CLASS_DECLSPEC _Vector_base<locale::facet*, allocator<locale::facet*> >;
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif
- # if defined (_STLP_DEBUG)
- _STLP_MOVE_TO_PRIV_NAMESPACE
- # define _STLP_NON_DBG_VECTOR _STLP_NON_DBG_NAME(vector)
- template class _STLP_CLASS_DECLSPEC __construct_checker<_STLP_PRIV _STLP_NON_DBG_VECTOR<locale::facet*, allocator<locale::facet*> > >;
- template class _STLP_CLASS_DECLSPEC _STLP_NON_DBG_VECTOR<locale::facet*, allocator<locale::facet*> >;
- # undef _STLP_NON_DBG_VECTOR
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif
- template class _STLP_CLASS_DECLSPEC vector<locale::facet*, allocator<locale::facet*> >;
- //End of export of _Locale_impl facets container.
- # if defined (_STLP_USE_PTR_SPECIALIZATIONS)
- template class _STLP_CLASS_DECLSPEC allocator<void*>;
- typedef _STLP_PRIV _List_node<void*> _VoidPtr_Node;
- template class _STLP_CLASS_DECLSPEC allocator<_VoidPtr_Node>;
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<void**, void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _Vector_base<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(vector)<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _List_node<void*>;
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_List_node_base, _VoidPtr_Node, allocator<_VoidPtr_Node> >;
- template class _STLP_CLASS_DECLSPEC _List_base<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(list)<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _Slist_node<void*>;
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<_Slist_node_base, _Slist_node<void*>, allocator<_Slist_node<void*> > >;
- template class _STLP_CLASS_DECLSPEC _Slist_base<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(slist)<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<size_t, void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_alloc_proxy<void***, void**, allocator<void**> >;
- template struct _STLP_CLASS_DECLSPEC _Deque_iterator<void*, _Nonconst_traits<void*> >;
- template class _STLP_CLASS_DECLSPEC _Deque_base<void*, allocator<void*> >;
- template class _STLP_CLASS_DECLSPEC _STLP_PTR_IMPL_NAME(deque)<void*, allocator<void*> >;
- _STLP_MOVE_TO_STD_NAMESPACE
- # endif /* _STLP_USE_PTR_SPECIALIZATIONS */
- _STLP_MOVE_TO_PRIV_NAMESPACE
- template class _STLP_CLASS_DECLSPEC _Rb_global<bool>;
- template class _STLP_CLASS_DECLSPEC _List_global<bool>;
- template class _STLP_CLASS_DECLSPEC _Sl_global<bool>;
- template class _STLP_CLASS_DECLSPEC _Stl_prime<bool>;
- template class _STLP_CLASS_DECLSPEC _LimG<bool>;
- _STLP_MOVE_TO_STD_NAMESPACE
- #endif /* _STLP_NO_FORCE_INSTANTIATE */
- _STLP_END_NAMESPACE
- #if defined (_STLP_SIGNAL_RUNTIME_COMPATIBILITY)
- extern "C" void _STLP_DECLSPEC _STLP_CALL _STLP_SIGNAL_RUNTIME_COMPATIBILITY() {}
- #endif
- #define FORCE_SYMBOL extern
- #if defined (_WIN32) && defined (_STLP_USE_DECLSPEC) && !defined (_STLP_USE_STATIC_LIB)
- // stlportmt.cpp : Defines the entry point for the DLL application.
- //
- # undef FORCE_SYMBOL
- # define FORCE_SYMBOL APIENTRY
- extern "C" {
- BOOL APIENTRY DllMain( HANDLE hModule,
- DWORD ul_reason_for_call,
- LPVOID) {
- switch (ul_reason_for_call) {
- case DLL_PROCESS_ATTACH:
- DisableThreadLibraryCalls((HINSTANCE)hModule);
- case DLL_THREAD_ATTACH:
- case DLL_THREAD_DETACH:
- case DLL_PROCESS_DETACH:
- break;
- }
- return TRUE;
- }
- } /* extern "C" */
- #if !defined (_STLP_MSVC) && !defined (__MINGW32__)
- _STLP_BEGIN_NAMESPACE
- static void FORCE_SYMBOL
- force_link() {
- set<int>::iterator iter;
- // _M_increment; _M_decrement instantiation
- ++iter;
- --iter;
- }
- _STLP_END_NAMESPACE
- #endif
- #endif /* _WIN32 */
- #if defined (__ICL) && (__ICL >= 900) && (_STLP_MSVC_LIB < 1300)
- # undef std
- namespace std
- {
- void _STLP_CALL unexpected() {
- unexpected_handler hdl;
- set_unexpected(hdl = set_unexpected((unexpected_handler)0));
- hdl();
- }
- }
- #endif
|