stdcpp/src/libstdcppwsd.h
changeset 0 e4d67989cc36
child 22 ddc455616bd6
equal deleted inserted replaced
-1:000000000000 0:e4d67989cc36
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 # ifndef LIBSTDCPPWSD_H
       
    21 # define LIBSTDCPPWSD_H
       
    22 
       
    23 # include "stlport_prefix.h"
       
    24 
       
    25 #include "locale_impl.h"
       
    26 #include <locale>
       
    27 #include <typeinfo>
       
    28 #include "c_locale.h"
       
    29 #include "aligned_buffer.h"
       
    30 
       
    31 #include <stl/_codecvt.h>
       
    32 #include <stl/_collate.h>
       
    33 #include <stl/_ctype.h>
       
    34 #include <stl/_monetary.h>
       
    35 #include "message_facets.h"
       
    36 
       
    37 #include <clocale>             // C locale header file.
       
    38 #include <vector>
       
    39 #include <string>
       
    40 #include <stl/_locale.h>
       
    41 #include "c_locale.h"
       
    42 #include <hash_map>
       
    43 
       
    44 #include <stl/_alloc.h>
       
    45 #include <stl/_fstream.h>
       
    46 
       
    47 #include "complex_impl.h"
       
    48 
       
    49 #include <cfloat>
       
    50 #include <cmath>
       
    51 # include "message_facets.h"
       
    52 
       
    53 #include <assert.h>
       
    54 #include <stl/_new.h>
       
    55 #include <stl/_map.h>
       
    56 
       
    57 #ifdef __WINSCW__
       
    58 extern void* GetGlobalTlsData();
       
    59 #endif
       
    60 #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
       
    61 void* SetBackendHeap();
       
    62 void ReSetUserHeap(void* oldHeap);
       
    63 #endif
       
    64 
       
    65 
       
    66 _STLP_BEGIN_NAMESPACE
       
    67 
       
    68 #define MAX_LOCALE_CLASSIC_FACETS 128
       
    69 
       
    70 //These are copied from locale_catalog.cpp
       
    71 //Changing names to aviod compilation errors
       
    72 struct __eqstr {
       
    73   bool operator()(const char* s1, const char* s2) const
       
    74     { return strcmp(s1, s2) == 0; }
       
    75 };
       
    76 
       
    77 class _Libcpp_wsd
       
    78 {
       
    79 public:
       
    80 
       
    81 	//local_impl.cpp
       
    82 	_Messages Locale_impl_Null_messages;
       
    83 
       
    84 	locale::facet* Locale_impl_S_classic_facets[MAX_LOCALE_CLASSIC_FACETS];
       
    85 
       
    86 	locale::id collate_char_id;
       
    87 
       
    88 	locale::id ctype_char_id;
       
    89 
       
    90 # ifndef _STLP_NO_MBSTATE_T
       
    91 	locale::id codecvt_char_char_mbstate_id;
       
    92 # ifndef _STLP_NO_WCHAR_T
       
    93 	locale::id codecvt_wchar_char_mbstate_id;
       
    94 # endif
       
    95 # endif
       
    96 
       
    97 	locale::id moneypunct_char_true_id;
       
    98 
       
    99 	locale::id moneypunct_char_false_id;
       
   100 
       
   101 	locale::id messages_char_id;
       
   102 
       
   103 	locale::id numpunct_char_id;
       
   104 
       
   105 # ifndef _STLP_NO_WCHAR_T
       
   106 	locale::id collate_wchar_id;
       
   107 
       
   108 	locale::id ctype_wchar_id;
       
   109 
       
   110 	locale::id moneypunct_wchar_true_id;
       
   111 
       
   112 	locale::id moneypunct_wchar_false_id;
       
   113 
       
   114 	locale::id numpunct_wchar_id;
       
   115 
       
   116 	locale::id messages_wchar_id;
       
   117 
       
   118 	locale::id num_get_wchar_istreambuf_iterator_id;
       
   119 
       
   120 	locale::id num_get_wchar_wchar_const_id;
       
   121 
       
   122 	locale::id num_put_wchar_ostreambuf_iterator_id;
       
   123 
       
   124 	locale::id num_put_wchar_wchar_id;
       
   125 
       
   126 	locale::id time_get_wchar_istreambuf_iterator_id;
       
   127 
       
   128 	locale::id time_get_wchar_wchar_const_id;
       
   129 
       
   130 	locale::id time_put_wchar_ostreambuf_iterator_id;
       
   131 
       
   132 	locale::id time_put_wchar_wchar_id;
       
   133 
       
   134 	locale::id money_get_wchar_istreambuf_iterator_id;
       
   135 
       
   136 	locale::id money_get_wchar_wchar_const_id;
       
   137 
       
   138 	locale::id money_put_wchar_ostreambuf_iterator_id;
       
   139 
       
   140 	locale::id money_put_wchar_wchar_id;
       
   141 #endif
       
   142 
       
   143 	locale::id time_get_char_istreambuf_iterator_id;
       
   144 
       
   145 	locale::id time_get_char_char_const_id;
       
   146 
       
   147 	locale::id time_put_char_ostreambuf_iterator_id;
       
   148 
       
   149 	locale::id time_put_char_char_id;
       
   150 
       
   151 	locale::id num_get_char_istreambuf_iterator_id;
       
   152 
       
   153 	locale::id num_get_char_char_const_id;
       
   154 
       
   155 	locale::id num_put_char_ostreambuf_iterator_id;
       
   156 
       
   157 	locale::id num_put_char_char_id;
       
   158 
       
   159 	locale::id num_put_char_back_insert_iterator_id;
       
   160 
       
   161 	locale::id money_get_char_istreambuf_iterator_id;
       
   162 
       
   163 	locale::id money_get_char_char_const_id;
       
   164 
       
   165 	locale::id money_put_char_ostreambuf_iterator_id;
       
   166 
       
   167 	locale::id money_put_char_char_id;
       
   168 
       
   169 	_Stl_aligned_buffer<_Locale_impl> Locale_impl_S_classic_locale;
       
   170 
       
   171 	_Stl_aligned_buffer<collate<char> > Locale_impl_S_collate_char;
       
   172 
       
   173 	_Stl_aligned_buffer<ctype<char> > Locale_impl_S_ctype_char;
       
   174 
       
   175 # ifndef _STLP_NO_MBSTATE_T
       
   176 	_Stl_aligned_buffer<codecvt<char, char, mbstate_t> > Locale_impl_S_codecvt_char;
       
   177 # endif
       
   178 
       
   179 	_Stl_aligned_buffer<moneypunct<char, true> > Locale_impl_S_moneypunct_true_char;
       
   180 	_Stl_aligned_buffer<moneypunct<char, false> > Locale_impl_S_moneypunct_false_char;
       
   181 	_Stl_aligned_buffer<numpunct<char> > Locale_impl_S_numpunct_char;
       
   182 	_Stl_aligned_buffer<messages<char> > Locale_impl_S_messages_char;
       
   183 
       
   184 	_Stl_aligned_buffer<money_get<char, istreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_money_get_char;
       
   185 	_Stl_aligned_buffer<money_put<char, ostreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_money_put_char;
       
   186 	_Stl_aligned_buffer<num_get<char, istreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_num_get_char;
       
   187 	_Stl_aligned_buffer<num_put<char, ostreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_num_put_char;
       
   188 	_Stl_aligned_buffer<time_get<char, istreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_time_get_char;
       
   189 	_Stl_aligned_buffer<time_put<char, ostreambuf_iterator<char, char_traits<char> > > > Locale_impl_S_time_put_char;
       
   190 
       
   191 	_Stl_aligned_buffer<money_get<char, const char*> > Locale_impl_S_money_get_char_const_char;
       
   192 	_Stl_aligned_buffer<money_put<char, char*> > Locale_impl_S_money_put_char_char;
       
   193 	_Stl_aligned_buffer<num_get<char, const char*> > Locale_impl_S_num_get_char_const_char;
       
   194 	_Stl_aligned_buffer<num_put<char, char*> > Locale_impl_S_num_put_char_char;
       
   195 	_Stl_aligned_buffer<num_put<char, back_insert_iterator<string> > > Locale_impl_S_num_put_char_back_insert_iterator;
       
   196 	_Stl_aligned_buffer<time_get<char, const char*> > Locale_impl_S_time_get_char_const_char;
       
   197 	_Stl_aligned_buffer<time_put<char, char*> > Locale_impl_S_time_put_char_char;
       
   198 
       
   199 # ifndef _STLP_NO_WCHAR_T
       
   200 	_Stl_aligned_buffer<collate<wchar_t> > Locale_impl_S_collate_wchar;
       
   201 	_Stl_aligned_buffer<ctype<wchar_t> > Locale_impl_S_ctype_wchar;
       
   202 # ifndef _STLP_NO_MBSTATE_T
       
   203 	_Stl_aligned_buffer<codecvt<wchar_t, char, mbstate_t> > Locale_impl_S_codecvt_wchar;
       
   204 # endif
       
   205 
       
   206 	_Stl_aligned_buffer<moneypunct<wchar_t, true> > Locale_impl_S_moneypunct_true_wchar;
       
   207 	_Stl_aligned_buffer<moneypunct<wchar_t, false> > Locale_impl_S_moneypunct_false_wchar;
       
   208 	_Stl_aligned_buffer<numpunct<wchar_t> > Locale_impl_S_numpunct_wchar;
       
   209 	_Stl_aligned_buffer<messages<wchar_t> > Locale_impl_S_messages_wchar;
       
   210 
       
   211 	_Stl_aligned_buffer<money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_money_get_wchar;
       
   212 	_Stl_aligned_buffer<money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_money_put_wchar;
       
   213 	_Stl_aligned_buffer<num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_num_get_wchar;
       
   214 	_Stl_aligned_buffer<num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_num_put_wchar;
       
   215 	_Stl_aligned_buffer<time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_time_get_wchar;
       
   216 	_Stl_aligned_buffer<time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > > Locale_impl_S_time_put_wchar;
       
   217 
       
   218 
       
   219 	_Stl_aligned_buffer<money_get<wchar_t, const wchar_t*> > Locale_impl_S_money_get_wchar_const_wchar;
       
   220 	_Stl_aligned_buffer<money_put<wchar_t, wchar_t*> > Locale_impl_S_money_put_wchar_wchar;
       
   221 	_Stl_aligned_buffer<num_get<wchar_t, const wchar_t*> > Locale_impl_S_num_get_wchar_const_wchar;
       
   222 	_Stl_aligned_buffer<num_put<wchar_t, wchar_t*> > Locale_impl_S_num_put_wchar_wchar;
       
   223 	_Stl_aligned_buffer<time_get<wchar_t, const wchar_t*> > Locale_impl_S_time_get_wchar_const_wchar;
       
   224 	_Stl_aligned_buffer<time_put<wchar_t, wchar_t*> > Locale_impl_S_time_put_wchar_wchar;
       
   225 #endif
       
   226 
       
   227 	_Stl_aligned_buffer<locale> Locale_impl_S_b_classic;
       
   228 
       
   229 	string locale_impl_nameless;
       
   230 
       
   231 	//_locale.h
       
   232 	size_t locale_id_S_max;
       
   233 
       
   234 	//locale_impl.h
       
   235 	_Locale_impl*   Locale_impl_S_global_impl;
       
   236 	_STLP_STATIC_MUTEX Locale_impl_S_global_locale_lock;
       
   237 
       
   238 	//_fstream.h
       
   239 	size_t fstream_Filebuf_base_M_page_size;
       
   240 
       
   241 	//ios.cpp
       
   242 	_STLP_STATIC_MUTEX ios_xalloc_L;
       
   243 	long ios_iword_dummy;
       
   244 	void* ios_pword_dummy;
       
   245 
       
   246 	//complex_exp.cpp
       
   247 	float complex_exp_float_ln10_inv;
       
   248 	double complex_exp_double_ln10_inv;
       
   249 	long double complex_exp_long_double_ln10_inv;
       
   250 
       
   251 	//num_get.cpp
       
   252 	char num_get_narrow_digits[11];
       
   253 	char num_get_narrow_xdigits[13];
       
   254 
       
   255 	//locale.cpp
       
   256 	_STLP_STATIC_MUTEX locale_Index_lock;
       
   257 
       
   258 	//_ios_base.h
       
   259 	bool ios_base_S_was_synced;
       
   260 	int ios_base_S_index;
       
   261 	long ios_base_Init_S_count; //ios_base::Init class
       
   262 	long ios_base_Loc_init_S_count; //ios_base::_Loc_init class
       
   263 	ios_base::_Loc_init *_LocInit;
       
   264 	ios_base::Init *_IosInit;
       
   265 
       
   266 
       
   267 	//locale_catalog.cpp
       
   268 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_ctype_hash;
       
   269 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_numeric_hash;
       
   270 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_time_hash;
       
   271 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_collate_hash;
       
   272 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_monetary_hash;
       
   273 	hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>* locale_catalog_messages_hash;
       
   274 	_STLP_STATIC_MUTEX locale_catalog_category_hash_lock;
       
   275 
       
   276 	//numpunct.cpp
       
   277 	string numpunct_char_m_truename;
       
   278 	string numpunct_char_m_falsename;
       
   279 	string numpunct_char_m_grouping;
       
   280 # ifndef _STLP_NO_WCHAR_T
       
   281 	wstring numpunct_wchar_m_truename;
       
   282 	wstring numpunct_wchar_m_falsename;
       
   283 	string  numpunct_wchar_m_grouping;
       
   284 # endif
       
   285 
       
   286 	//iostream.cpp
       
   287 	istream* cin;
       
   288 	ostream* cout;
       
   289 	ostream* cerr;
       
   290 	ostream* clog;
       
   291 
       
   292 #ifndef _STLP_NO_WCHAR_T
       
   293 	wistream* wcin;
       
   294 	wostream* wcout;
       
   295 	wostream* wcerr;
       
   296 	wostream* wclog;
       
   297 #endif
       
   298 
       
   299 	//complex_trig.cpp
       
   300 	float complex_trig_float_limit;
       
   301 	double complex_trig_double_limit;
       
   302 
       
   303 	//monetary.cpp
       
   304 	string monetary_S_empty_string;
       
   305 # ifndef _STLP_NO_WCHAR_T
       
   306 	wstring monetary_S_empty_wstring;
       
   307 # endif //_STLP_NO_WCHAR_T
       
   308     new_handler _new_handler;
       
   309     //variable to check whether lib is initialized
       
   310     bool is_Initialized;
       
   311 	//constructor
       
   312 	_Libcpp_wsd();
       
   313 
       
   314 	//destructor
       
   315 	~_Libcpp_wsd();
       
   316 	map<string, locale::id> ctype_charT_ids; //for ctype<charT>
       
   317 	map<string, locale::id> numpunct_charT_ids; //for numpunct<charT>
       
   318 	map<string, locale::id> moneypunct_charT_ids;//for moneypunct<charT>
       
   319 	
       
   320 };
       
   321 #ifndef __WINSCW__
       
   322 extern _Libcpp_wsd* g_libcpp_wsd;
       
   323 #endif
       
   324 
       
   325 
       
   326 //return the global class pointer
       
   327 inline _Libcpp_wsd&
       
   328 get_libcpp_wsdptr()
       
   329 	{
       
   330 		//get the TLS pointer
       
   331 #ifdef __WINSCW__
       
   332 void* oldHeap = SetBackendHeap();
       
   333 
       
   334 		_Libcpp_wsd* g_libcpp_wsd = (_Libcpp_wsd*)GetGlobalTlsData();		
       
   335 #else
       
   336 		void* oldHeap = SetBackendHeap();
       
   337 		if(g_libcpp_wsd == NULL)
       
   338 		{
       
   339 			g_libcpp_wsd = new _Libcpp_wsd();
       
   340 			g_libcpp_wsd->is_Initialized = false;			
       
   341 		}
       
   342 #endif //__WINSCW__
       
   343 
       
   344 		if(g_libcpp_wsd->is_Initialized != true)
       
   345   		{
       
   346 			//this has to be here to avoid infinite recursion
       
   347 			g_libcpp_wsd->is_Initialized = true;
       
   348 			g_libcpp_wsd->_LocInit = new ios_base::_Loc_init();
       
   349 			g_libcpp_wsd->_IosInit = new ios_base::Init();
       
   350 		}
       
   351 #if defined(__LIBSTD_CPP_SYMBIAN32_WSD__) || defined(_STLP_LIBSTD_CPP_NO_STATIC_VAR_)
       
   352 		ReSetUserHeap(oldHeap);
       
   353 #endif //__WINSCW__		
       
   354 		return (*g_libcpp_wsd);
       
   355 	}
       
   356 
       
   357 #define LIBCPP_WSD_PTR ( get_libcpp_wsdptr())
       
   358 
       
   359 inline _Locale_impl*&
       
   360 get_locale_impl_S_global_impl()
       
   361 	{
       
   362 		return get_libcpp_wsdptr().Locale_impl_S_global_impl;
       
   363 	}
       
   364 
       
   365 inline _STLP_STATIC_MUTEX&
       
   366 get_locale_impl_S_global_locale_lock()
       
   367 	{
       
   368 		return get_libcpp_wsdptr().Locale_impl_S_global_locale_lock;
       
   369 	}
       
   370 
       
   371 inline _Messages&
       
   372 get_locale_impl_messages()
       
   373 	{
       
   374 		return get_libcpp_wsdptr().Locale_impl_Null_messages;
       
   375 	}
       
   376 
       
   377 inline locale::facet**
       
   378 get_locale_impl_S_classic_facets()
       
   379 	{
       
   380 		return get_libcpp_wsdptr().Locale_impl_S_classic_facets;
       
   381 	}
       
   382 
       
   383 # ifndef _STLP_NO_MBSTATE_T
       
   384 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   385 codecvt<char, char, mbstate_t>::GetFacetLocaleId()
       
   386     {
       
   387     	return get_libcpp_wsdptr().codecvt_char_char_mbstate_id;
       
   388     }
       
   389 #  ifndef _STLP_NO_WCHAR_T
       
   390 
       
   391 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   392 codecvt<wchar_t, char, mbstate_t>::GetFacetLocaleId()
       
   393     {
       
   394    	 	return get_libcpp_wsdptr().codecvt_wchar_char_mbstate_id;
       
   395     }
       
   396 #  endif//_STLP_NO_WCHAR_T
       
   397 # endif//_STLP_NO_MBSTATE_T
       
   398 
       
   399 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   400 collate<char>::GetFacetLocaleId()
       
   401     {
       
   402    		return get_libcpp_wsdptr().collate_char_id;
       
   403     }
       
   404 
       
   405 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   406 ctype<char>::GetFacetLocaleId()
       
   407     {
       
   408     	return get_libcpp_wsdptr().ctype_char_id;
       
   409     }
       
   410 
       
   411 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   412 moneypunct<char, true>::GetFacetLocaleId()
       
   413 	{
       
   414 		return get_libcpp_wsdptr().moneypunct_char_true_id;
       
   415 	}
       
   416 
       
   417 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   418 moneypunct<char, false>::GetFacetLocaleId()
       
   419     {
       
   420     	return get_libcpp_wsdptr().moneypunct_char_false_id;
       
   421     }
       
   422 
       
   423 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   424 messages<char>::GetFacetLocaleId()
       
   425     {
       
   426     	return get_libcpp_wsdptr().messages_char_id;
       
   427     }
       
   428 
       
   429 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   430 numpunct<char>::GetFacetLocaleId()
       
   431     {
       
   432     	return get_libcpp_wsdptr().numpunct_char_id;
       
   433     }
       
   434 
       
   435 # ifndef _STLP_NO_WCHAR_T
       
   436 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   437 collate<wchar_t>::GetFacetLocaleId()
       
   438 	{
       
   439 		return get_libcpp_wsdptr().collate_wchar_id;
       
   440 	}
       
   441 
       
   442 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   443 ctype<wchar_t>::GetFacetLocaleId()
       
   444 	{
       
   445 		return get_libcpp_wsdptr().ctype_wchar_id;
       
   446 	}
       
   447 
       
   448 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   449 moneypunct<wchar_t, true>::GetFacetLocaleId()
       
   450 	{
       
   451 		return get_libcpp_wsdptr().moneypunct_wchar_true_id;
       
   452 	}
       
   453 
       
   454 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   455 moneypunct<wchar_t, false>::GetFacetLocaleId()
       
   456 	{
       
   457 		return get_libcpp_wsdptr().moneypunct_wchar_false_id;
       
   458 	}
       
   459 
       
   460 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   461 numpunct<wchar_t>::GetFacetLocaleId()
       
   462 	{
       
   463 		return get_libcpp_wsdptr().numpunct_wchar_id;
       
   464 	}
       
   465 
       
   466 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   467 messages<wchar_t>::GetFacetLocaleId()
       
   468 	{
       
   469 		return get_libcpp_wsdptr().messages_wchar_id;
       
   470 	}
       
   471 
       
   472 template <class _CharT, class _InputIter>
       
   473 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   474 num_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >* )
       
   475     {
       
   476    	 	return get_libcpp_wsdptr().num_get_wchar_istreambuf_iterator_id;
       
   477     }
       
   478 
       
   479 template <class _CharT, class _InputIter>
       
   480 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   481 num_get<_CharT, _InputIter>::GetFacetLocaleId(const wchar_t**)
       
   482     {
       
   483     	return get_libcpp_wsdptr().num_get_wchar_wchar_const_id;
       
   484     }
       
   485 
       
   486 template <class _CharT, class _OutputIter>
       
   487 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   488 num_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> > *)
       
   489 	{
       
   490 		return get_libcpp_wsdptr().num_put_wchar_ostreambuf_iterator_id;
       
   491 	}
       
   492 
       
   493 template <class _CharT, class _OutputIter>
       
   494 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   495 num_put<_CharT, _OutputIter>::GetFacetLocaleId(wchar_t**)
       
   496 	{
       
   497 		return get_libcpp_wsdptr().num_put_wchar_wchar_id;
       
   498 	}
       
   499 
       
   500 template <class _CharT, class _InputIter>
       
   501 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   502 time_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >*)
       
   503     {
       
   504 		return get_libcpp_wsdptr().time_get_wchar_istreambuf_iterator_id;
       
   505     }
       
   506 
       
   507 template <class _CharT, class _InputIter>
       
   508 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   509 time_get<_CharT, _InputIter>::GetFacetLocaleId(const wchar_t**)
       
   510     {
       
   511 		return get_libcpp_wsdptr().time_get_wchar_wchar_const_id;
       
   512     }
       
   513 
       
   514 template <class _CharT, class _OutputIter>
       
   515 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   516 time_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> >*)
       
   517     {
       
   518 		return get_libcpp_wsdptr().time_put_wchar_ostreambuf_iterator_id;
       
   519     }
       
   520 
       
   521 template <class _CharT, class _OutputIter>
       
   522 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   523 time_put<_CharT, _OutputIter>::GetFacetLocaleId(wchar_t**)
       
   524     {
       
   525 		return get_libcpp_wsdptr().time_put_wchar_wchar_id;
       
   526     }
       
   527 
       
   528 template <class _CharT, class _InputIter>
       
   529 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   530 money_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<wchar_t, char_traits<wchar_t> >*)
       
   531     {
       
   532 		return get_libcpp_wsdptr().money_get_wchar_istreambuf_iterator_id;
       
   533     }
       
   534 
       
   535 template <class _CharT, class _InputIter>
       
   536 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   537 money_get<_CharT, _InputIter>::GetFacetLocaleId(const wchar_t**)
       
   538     {
       
   539 		return get_libcpp_wsdptr().money_get_wchar_wchar_const_id;
       
   540     }
       
   541 
       
   542 template <class _CharT, class _OutputIter>
       
   543 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   544 money_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<wchar_t, char_traits<wchar_t> >*)
       
   545 	{
       
   546 		return get_libcpp_wsdptr().money_put_wchar_ostreambuf_iterator_id;
       
   547 	}
       
   548 
       
   549 template <class _CharT, class _OutputIter>
       
   550 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   551 money_put<_CharT, _OutputIter>::GetFacetLocaleId(wchar_t**)
       
   552 	{
       
   553 		return get_libcpp_wsdptr().money_put_wchar_wchar_id;
       
   554 	}
       
   555 # endif //_STLP_NO_WCHAR_T
       
   556 
       
   557 template <class _CharT, class _InputIter>
       
   558 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   559 num_get<_CharT, _InputIter>::GetFacetLocaleId()
       
   560     {
       
   561     	_InputIter* dummyPtr = NULL;
       
   562    		return GetFacetLocaleId(dummyPtr);
       
   563     }
       
   564 
       
   565 template <class _CharT, class _OutputIter>
       
   566 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   567 num_put<_CharT, _OutputIter>::GetFacetLocaleId()
       
   568 	{
       
   569 		_OutputIter* dummyPtr = NULL;
       
   570 		return GetFacetLocaleId(dummyPtr);
       
   571 	}
       
   572 
       
   573 template <class _CharT, class _InputIter>
       
   574 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   575 time_get<_CharT, _InputIter>::GetFacetLocaleId()
       
   576     {
       
   577     	_InputIter* dummyPtr = NULL;
       
   578     	return GetFacetLocaleId(dummyPtr);
       
   579     }
       
   580 
       
   581 template <class _CharT, class _OutputIter>
       
   582 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   583 time_put<_CharT, _OutputIter>::GetFacetLocaleId()
       
   584 	{
       
   585 		_OutputIter* dummyPtr = NULL;
       
   586 		return GetFacetLocaleId(dummyPtr);
       
   587 	}
       
   588 
       
   589 template <class _CharT, class _InputIter>
       
   590 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   591 money_get<_CharT, _InputIter>::GetFacetLocaleId()
       
   592     {
       
   593     	_InputIter* dummyPtr = NULL;
       
   594     	return GetFacetLocaleId(dummyPtr);
       
   595     }
       
   596 template <class _CharT, class _OutputIter>
       
   597 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   598 money_put<_CharT, _OutputIter>::GetFacetLocaleId()
       
   599 	{
       
   600 		_OutputIter* dummyPtr = NULL;
       
   601 		return GetFacetLocaleId(dummyPtr);
       
   602 	}
       
   603 
       
   604 template <class _CharT, class _InputIter>
       
   605 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   606 money_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >*)
       
   607     {
       
   608 		return get_libcpp_wsdptr().money_get_char_istreambuf_iterator_id;
       
   609     }
       
   610 
       
   611 template <class _CharT, class _InputIter>
       
   612 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   613 money_get<_CharT, _InputIter>::GetFacetLocaleId(const char  **)
       
   614     {
       
   615 		return get_libcpp_wsdptr().money_get_char_char_const_id;
       
   616     }
       
   617 
       
   618 template <class _CharT, class _OutputIter>
       
   619 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   620 money_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> >*)
       
   621 	{
       
   622 		return get_libcpp_wsdptr().money_put_char_ostreambuf_iterator_id;
       
   623 	}
       
   624 
       
   625 template <class _CharT, class _OutputIter>
       
   626 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   627 money_put<_CharT, _OutputIter>::GetFacetLocaleId(char**)
       
   628 	{
       
   629 		return get_libcpp_wsdptr().money_put_char_char_id;
       
   630 	}
       
   631 
       
   632 template <class _CharT, class _InputIter>
       
   633 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   634 num_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >* )
       
   635     {
       
   636    		return get_libcpp_wsdptr().num_get_char_istreambuf_iterator_id;
       
   637     }
       
   638 
       
   639 template <class _CharT, class _InputIter>
       
   640 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   641 num_get<_CharT, _InputIter>::GetFacetLocaleId(const char**)
       
   642     {
       
   643     	return get_libcpp_wsdptr().num_get_char_char_const_id;
       
   644     }
       
   645 
       
   646 template <class _CharT, class _OutputIter>
       
   647 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   648 num_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> > *)
       
   649 	{
       
   650 		return get_libcpp_wsdptr().num_put_char_ostreambuf_iterator_id;
       
   651 	}
       
   652 
       
   653 template <class _CharT, class _OutputIter>
       
   654 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   655 num_put<_CharT, _OutputIter>::GetFacetLocaleId(char**)
       
   656 	{
       
   657 		return get_libcpp_wsdptr().num_put_char_char_id;
       
   658 	}
       
   659 
       
   660 template <class _CharT, class _OutputIter>
       
   661 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   662 num_put<_CharT, _OutputIter>::GetFacetLocaleId(back_insert_iterator<string> *)
       
   663 	{
       
   664 		return get_libcpp_wsdptr().num_put_char_back_insert_iterator_id;
       
   665 	}
       
   666 
       
   667 template <class _CharT, class _InputIter>
       
   668 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   669 time_get<_CharT, _InputIter>::GetFacetLocaleId(istreambuf_iterator<char, char_traits<char> >*)
       
   670     {
       
   671 		return get_libcpp_wsdptr().time_get_char_istreambuf_iterator_id;
       
   672     }
       
   673 
       
   674 template <class _CharT, class _InputIter>
       
   675 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   676 time_get<_CharT, _InputIter>::GetFacetLocaleId(const char**)
       
   677     {
       
   678 		return get_libcpp_wsdptr().time_get_char_char_const_id;
       
   679     }
       
   680 
       
   681 template <class _CharT, class _OutputIter>
       
   682 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   683 time_put<_CharT, _OutputIter>::GetFacetLocaleId(ostreambuf_iterator<char, char_traits<char> >*)
       
   684 	{
       
   685 		return get_libcpp_wsdptr().time_put_char_ostreambuf_iterator_id;
       
   686 	}
       
   687 
       
   688 template <class _CharT, class _OutputIter>
       
   689 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC locale::id&
       
   690 time_put<_CharT, _OutputIter>::GetFacetLocaleId(char**)
       
   691 	{
       
   692 		return get_libcpp_wsdptr().time_put_char_char_id;
       
   693 	}
       
   694 
       
   695 inline _STLP_EXP_DECLSPEC locale::id&
       
   696 Ctype_charT_GetFacetLocaleId(const char* type)
       
   697     {
       
   698     		if((get_libcpp_wsdptr().ctype_charT_ids).find(type)!= (get_libcpp_wsdptr().ctype_charT_ids).end())
       
   699 				return (get_libcpp_wsdptr().ctype_charT_ids)[type];
       
   700 		else
       
   701 			{
       
   702 				locale::id id;
       
   703 				id._M_index = (size_t)-1;
       
   704 				//(get_libcpp_wsdptr().ctype_charT_ids)[type] = id;
       
   705 				memmove((void*)&get_libcpp_wsdptr().ctype_charT_ids[type],&id, sizeof(id));
       
   706 
       
   707 				return (get_libcpp_wsdptr().ctype_charT_ids)[type];
       
   708 			}
       
   709     }
       
   710 
       
   711 inline _STLP_EXP_DECLSPEC locale::id&
       
   712 Numpunct_charT_GetFacetLocaleId(const char* type)
       
   713     {
       
   714     		if((get_libcpp_wsdptr().numpunct_charT_ids).find(type)!= (get_libcpp_wsdptr().numpunct_charT_ids).end())
       
   715 				return (get_libcpp_wsdptr().numpunct_charT_ids)[type];
       
   716 		else
       
   717 			{
       
   718 				locale::id id;
       
   719 				id._M_index = (size_t)-1;
       
   720 				//(get_libcpp_wsdptr().numpunct_charT_ids)[type] = id;
       
   721 				memmove((void*)&get_libcpp_wsdptr().numpunct_charT_ids[type],&id, sizeof(id));
       
   722 
       
   723 				return (get_libcpp_wsdptr().numpunct_charT_ids)[type];
       
   724 			}
       
   725     }
       
   726 inline _STLP_EXP_DECLSPEC locale::id&
       
   727 Moneypunct_charT_GetFacetLocaleId(const char* type)
       
   728     {
       
   729     		if((get_libcpp_wsdptr().moneypunct_charT_ids).find(type)!= (get_libcpp_wsdptr().moneypunct_charT_ids).end())
       
   730 				return (get_libcpp_wsdptr().moneypunct_charT_ids)[type];
       
   731 		else
       
   732 			{
       
   733 				locale::id id;
       
   734 				id._M_index = (size_t)-1;
       
   735 				//(get_libcpp_wsdptr().moneypunct_charT_ids)[type] = id;
       
   736 				memmove((void*)&get_libcpp_wsdptr().moneypunct_charT_ids[type],&id, sizeof(id));
       
   737 				return (get_libcpp_wsdptr().moneypunct_charT_ids)[type];
       
   738 			}
       
   739     }
       
   740 
       
   741 inline _Stl_aligned_buffer<_Locale_impl>&
       
   742 get_locale_impl_S_classic_locale()
       
   743 	{
       
   744 		return get_libcpp_wsdptr().Locale_impl_S_classic_locale;
       
   745 	}
       
   746 
       
   747 inline _Stl_aligned_buffer<collate<char> >&
       
   748 get_locale_impl_S_collate_char()
       
   749 	{
       
   750 		return get_libcpp_wsdptr().Locale_impl_S_collate_char;
       
   751 	}
       
   752 
       
   753 inline _Stl_aligned_buffer<ctype<char> >&
       
   754 get_locale_impl_S_ctype_char()
       
   755 	{
       
   756 		return get_libcpp_wsdptr().Locale_impl_S_ctype_char;
       
   757 	}
       
   758 
       
   759 # ifndef _STLP_NO_MBSTATE_T
       
   760 inline _Stl_aligned_buffer<codecvt<char, char, mbstate_t> >&
       
   761 get_locale_impl_S_codecvt_char()
       
   762 	{
       
   763 		return get_libcpp_wsdptr().Locale_impl_S_codecvt_char;
       
   764 	}
       
   765 # endif
       
   766 
       
   767 inline _Stl_aligned_buffer<moneypunct<char, true> >&
       
   768 get_locale_impl_S_moneypunct_true_char()
       
   769 	{
       
   770 		return get_libcpp_wsdptr().Locale_impl_S_moneypunct_true_char;
       
   771 	}
       
   772 
       
   773 inline _Stl_aligned_buffer<moneypunct<char, false> >&
       
   774 get_locale_impl_S_moneypunct_false_char()
       
   775 	{
       
   776 		return get_libcpp_wsdptr().Locale_impl_S_moneypunct_false_char;
       
   777 	}
       
   778 
       
   779 inline _Stl_aligned_buffer<numpunct<char> >&
       
   780 get_locale_impl_S_numpunct_char()
       
   781 	{
       
   782 		return get_libcpp_wsdptr().Locale_impl_S_numpunct_char;
       
   783 	}
       
   784 
       
   785 inline _Stl_aligned_buffer<messages<char> >&
       
   786 get_locale_impl_S_messages_char()
       
   787 	{
       
   788 		return get_libcpp_wsdptr().Locale_impl_S_messages_char;
       
   789 	}
       
   790 
       
   791 inline 	_Stl_aligned_buffer<money_get<char, istreambuf_iterator<char, char_traits<char> > > >&
       
   792 get_locale_impl_S_money_get_char()
       
   793 	{
       
   794 		return get_libcpp_wsdptr().Locale_impl_S_money_get_char;
       
   795 	}
       
   796 
       
   797 inline _Stl_aligned_buffer<money_put<char, ostreambuf_iterator<char, char_traits<char> > > >&
       
   798 get_locale_impl_S_money_put_char()
       
   799 	{
       
   800 		return get_libcpp_wsdptr().Locale_impl_S_money_put_char;
       
   801 	}
       
   802 
       
   803 inline 	_Stl_aligned_buffer<num_get<char, istreambuf_iterator<char, char_traits<char> > > >&
       
   804 get_locale_impl_S_num_get_char()
       
   805 	{
       
   806 		return get_libcpp_wsdptr().Locale_impl_S_num_get_char;
       
   807 	}
       
   808 
       
   809 inline _Stl_aligned_buffer<num_put<char, ostreambuf_iterator<char, char_traits<char> > > >&
       
   810 get_locale_impl_S_num_put_char()
       
   811 	{
       
   812 		return get_libcpp_wsdptr().Locale_impl_S_num_put_char;
       
   813 	}
       
   814 
       
   815 inline _Stl_aligned_buffer<time_get<char, istreambuf_iterator<char, char_traits<char> > > >&
       
   816 get_locale_impl_S_time_get_char()
       
   817 	{
       
   818 		return get_libcpp_wsdptr().Locale_impl_S_time_get_char;
       
   819 	}
       
   820 
       
   821 inline _Stl_aligned_buffer<time_put<char, ostreambuf_iterator<char, char_traits<char> > > >&
       
   822 get_locale_impl_S_time_put_char()
       
   823 	{
       
   824 		return get_libcpp_wsdptr().Locale_impl_S_time_put_char;
       
   825 	}
       
   826 
       
   827 inline _Stl_aligned_buffer<money_get<char, const char*> >&
       
   828 get_locale_impl_S_money_get_char_const_char()
       
   829 	{
       
   830 		return get_libcpp_wsdptr().Locale_impl_S_money_get_char_const_char;
       
   831 	}
       
   832 
       
   833 inline _Stl_aligned_buffer<money_put<char, char*> >&
       
   834 get_locale_impl_S_money_put_char_char()
       
   835 	{
       
   836 		return get_libcpp_wsdptr().Locale_impl_S_money_put_char_char;
       
   837 	}
       
   838 
       
   839 inline _Stl_aligned_buffer<num_get<char, const char*> >&
       
   840 get_locale_impl_S_num_get_char_const_char()
       
   841 	{
       
   842 		return get_libcpp_wsdptr().Locale_impl_S_num_get_char_const_char;
       
   843 	}
       
   844 
       
   845 inline _Stl_aligned_buffer<num_put<char, char*> >&
       
   846 get_locale_impl_S_num_put_char_char()
       
   847 	{
       
   848 		return get_libcpp_wsdptr().Locale_impl_S_num_put_char_char;
       
   849 	}
       
   850 
       
   851 inline _Stl_aligned_buffer<num_put<char,back_insert_iterator<string> > >&
       
   852 get_locale_impl_S_num_put_char_back_insert_iterator()
       
   853 	{
       
   854 		return get_libcpp_wsdptr().Locale_impl_S_num_put_char_back_insert_iterator;
       
   855 	}
       
   856 
       
   857 inline _Stl_aligned_buffer<time_get<char, const char*> >&
       
   858 get_locale_impl_S_time_get_char_const_char()
       
   859 	{
       
   860 		return get_libcpp_wsdptr().Locale_impl_S_time_get_char_const_char;
       
   861 	}
       
   862 
       
   863 inline _Stl_aligned_buffer<time_put<char, char*> >&
       
   864 get_locale_impl_S_time_put_char_char()
       
   865 	{
       
   866 		return get_libcpp_wsdptr().Locale_impl_S_time_put_char_char;
       
   867 	}
       
   868 
       
   869 # ifndef _STLP_NO_WCHAR_T
       
   870 inline _Stl_aligned_buffer<collate<wchar_t> >&
       
   871 get_locale_impl_S_collate_wchar()
       
   872 	{
       
   873 		return get_libcpp_wsdptr().Locale_impl_S_collate_wchar;
       
   874 	}
       
   875 
       
   876 inline _Stl_aligned_buffer<ctype<wchar_t> >&
       
   877 get_locale_impl_S_ctype_wchar()
       
   878 	{
       
   879 		return get_libcpp_wsdptr().Locale_impl_S_ctype_wchar;
       
   880 	}
       
   881 # ifndef _STLP_NO_MBSTATE_T
       
   882 inline _Stl_aligned_buffer<codecvt<wchar_t, char, mbstate_t> >&
       
   883 get_locale_impl_S_codecvt_wchar()
       
   884 	{
       
   885 		return get_libcpp_wsdptr().Locale_impl_S_codecvt_wchar;
       
   886 	}
       
   887 # endif //!_STLP_NO_MBSTATE_T
       
   888 
       
   889 inline _Stl_aligned_buffer<moneypunct<wchar_t, true> >&
       
   890 get_locale_impl_S_moneypunct_true_wchar()
       
   891 	{
       
   892 		return get_libcpp_wsdptr().Locale_impl_S_moneypunct_true_wchar;
       
   893 	}
       
   894 
       
   895 inline _Stl_aligned_buffer<moneypunct<wchar_t, false> >&
       
   896 get_locale_impl_S_moneypunct_false_wchar()
       
   897 	{
       
   898 		return get_libcpp_wsdptr().Locale_impl_S_moneypunct_false_wchar;
       
   899 	}
       
   900 
       
   901 inline _Stl_aligned_buffer<numpunct<wchar_t> >&
       
   902 get_locale_impl_S_numpunct_wchar()
       
   903 	{
       
   904 		return get_libcpp_wsdptr().Locale_impl_S_numpunct_wchar;
       
   905 	}
       
   906 
       
   907 inline _Stl_aligned_buffer<messages<wchar_t> >&
       
   908 get_locale_impl_S_messages_wchar()
       
   909 	{
       
   910 		return get_libcpp_wsdptr().Locale_impl_S_messages_wchar;
       
   911 	}
       
   912 
       
   913 inline _Stl_aligned_buffer<money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   914 get_locale_impl_S_money_get_wchar()
       
   915 	{
       
   916 		return get_libcpp_wsdptr().Locale_impl_S_money_get_wchar;
       
   917 	}
       
   918 
       
   919 inline _Stl_aligned_buffer<money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   920 get_locale_impl_S_money_put_wchar()
       
   921 	{
       
   922 		return get_libcpp_wsdptr().Locale_impl_S_money_put_wchar;
       
   923 	}
       
   924 
       
   925 inline _Stl_aligned_buffer<num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   926 get_locale_impl_S_num_get_wchar()
       
   927 	{
       
   928 		return get_libcpp_wsdptr().Locale_impl_S_num_get_wchar;
       
   929 	}
       
   930 
       
   931 inline _Stl_aligned_buffer<num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   932 get_locale_impl_S_num_put_wchar()
       
   933 	{
       
   934 		return get_libcpp_wsdptr().Locale_impl_S_num_put_wchar;
       
   935 	}
       
   936 
       
   937 inline _Stl_aligned_buffer<time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   938 get_locale_impl_S_time_get_wchar()
       
   939 	{
       
   940 		return get_libcpp_wsdptr().Locale_impl_S_time_get_wchar;
       
   941 	}
       
   942 
       
   943 inline _Stl_aligned_buffer<time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > > >&
       
   944 get_locale_impl_S_time_put_wchar()
       
   945 	{
       
   946 		return get_libcpp_wsdptr().Locale_impl_S_time_put_wchar;
       
   947 	}
       
   948 
       
   949 inline _Stl_aligned_buffer<money_get<wchar_t, const wchar_t*> >&
       
   950 get_locale_impl_S_money_get_wchar_const_wchar()
       
   951 	{
       
   952 		return get_libcpp_wsdptr().Locale_impl_S_money_get_wchar_const_wchar;
       
   953 	}
       
   954 
       
   955 inline _Stl_aligned_buffer<money_put<wchar_t, wchar_t*> >&
       
   956 get_locale_impl_S_money_put_wchar_wchar()
       
   957 	{
       
   958 		return get_libcpp_wsdptr().Locale_impl_S_money_put_wchar_wchar;
       
   959 	}
       
   960 
       
   961 inline _Stl_aligned_buffer<num_get<wchar_t, const wchar_t*> >&
       
   962 get_locale_impl_S_num_get_wchar_const_wchar()
       
   963 	{
       
   964 		return get_libcpp_wsdptr().Locale_impl_S_num_get_wchar_const_wchar;
       
   965 	}
       
   966 
       
   967 inline _Stl_aligned_buffer<num_put<wchar_t, wchar_t*> >&
       
   968 get_locale_impl_S_num_put_wchar_wchar()
       
   969 	{
       
   970 		return get_libcpp_wsdptr().Locale_impl_S_num_put_wchar_wchar;
       
   971 	}
       
   972 
       
   973 inline _Stl_aligned_buffer<time_get<wchar_t, const wchar_t*> >&
       
   974 get_locale_impl_S_time_get_wchar_const_wchar()
       
   975 	{
       
   976 		return get_libcpp_wsdptr().Locale_impl_S_time_get_wchar_const_wchar;
       
   977 	}
       
   978 
       
   979 inline _Stl_aligned_buffer<time_put<wchar_t, wchar_t*> >&
       
   980 get_locale_impl_S_time_put_wchar_wchar()
       
   981 	{
       
   982 		return get_libcpp_wsdptr().Locale_impl_S_time_put_wchar_wchar;
       
   983 	}
       
   984 # endif //!_STLP_NO_WCHAR_T
       
   985 
       
   986 inline _Stl_aligned_buffer<locale>&
       
   987 get_locale_impl_S_b_classic()
       
   988 	{
       
   989 		return get_libcpp_wsdptr().Locale_impl_S_b_classic;
       
   990 	}
       
   991 
       
   992 //_locale.h
       
   993 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC size_t&
       
   994 get_locale_id_S_max()
       
   995 	{
       
   996 		return get_libcpp_wsdptr().locale_id_S_max;
       
   997 	}
       
   998 
       
   999 //_fstream.h
       
  1000 inline _STLP_EXPORT_DECLSPEC size_t&
       
  1001 get_fstream_Filebuf_Base_GetPageSize()
       
  1002 	{
       
  1003 		return get_libcpp_wsdptr().fstream_Filebuf_base_M_page_size;
       
  1004 	}
       
  1005 
       
  1006 //ios.cpp
       
  1007 inline _STLP_STATIC_MUTEX&
       
  1008 get_ios_xalloc_L()
       
  1009 	{
       
  1010 		return get_libcpp_wsdptr().ios_xalloc_L;
       
  1011 	}
       
  1012 
       
  1013 inline long&
       
  1014 get_ios_iword_dummy()
       
  1015 	{
       
  1016 		return get_libcpp_wsdptr().ios_iword_dummy;
       
  1017 	}
       
  1018 
       
  1019 inline void*&
       
  1020 get_ios_pword_dummy()
       
  1021 	{
       
  1022 		return get_libcpp_wsdptr().ios_pword_dummy;
       
  1023 	}
       
  1024 
       
  1025 //complex_exp.cpp
       
  1026 inline float&
       
  1027 get_complex_exp_float_ln10_inv()
       
  1028 	{
       
  1029 		return get_libcpp_wsdptr().complex_exp_float_ln10_inv;
       
  1030 	}
       
  1031 
       
  1032 inline double&
       
  1033 get_complex_exp_double_ln10_inv()
       
  1034 	{
       
  1035 		return get_libcpp_wsdptr().complex_exp_double_ln10_inv;
       
  1036 	}
       
  1037 
       
  1038 inline long double&
       
  1039 get_complex_exp_long_double_ln10_inv()
       
  1040 	{
       
  1041 		return get_libcpp_wsdptr().complex_exp_long_double_ln10_inv;
       
  1042 	}
       
  1043 
       
  1044 //num_get.cpp
       
  1045 inline char*
       
  1046 get_num_get_narrow_digits()
       
  1047 	{
       
  1048 		return get_libcpp_wsdptr().num_get_narrow_digits;
       
  1049 	}
       
  1050 
       
  1051 inline char*
       
  1052 get_num_get_narrow_xdigits()
       
  1053 	{
       
  1054 		return get_libcpp_wsdptr().num_get_narrow_xdigits;
       
  1055 	}
       
  1056 
       
  1057 //locale.cpp
       
  1058 inline _STLP_STATIC_MUTEX&
       
  1059 get_locale_Index_lock()
       
  1060 	{
       
  1061 		return get_libcpp_wsdptr().locale_Index_lock;
       
  1062 	}
       
  1063 
       
  1064 //_ios_base.h
       
  1065 inline bool&
       
  1066 get_ios_base_S_was_synced()
       
  1067 	{
       
  1068 		return get_libcpp_wsdptr().ios_base_S_was_synced;
       
  1069 	}
       
  1070 
       
  1071 inline int&
       
  1072 get_ios_base_S_index()
       
  1073 	{
       
  1074 		return get_libcpp_wsdptr().ios_base_S_index;
       
  1075 	}
       
  1076 
       
  1077 inline long&
       
  1078 get_ios_base_Init_S_count()
       
  1079 	{
       
  1080 		return get_libcpp_wsdptr().ios_base_Init_S_count;
       
  1081 	}
       
  1082 
       
  1083 inline long&
       
  1084 get_ios_base_Loc_init_S_count()
       
  1085 	{
       
  1086 		return get_libcpp_wsdptr().ios_base_Loc_init_S_count;
       
  1087 	}
       
  1088 
       
  1089 //locale_catalog.cpp
       
  1090 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1091 get_locale_catalog_ctype_hash()
       
  1092 	{
       
  1093 		return get_libcpp_wsdptr().locale_catalog_ctype_hash;
       
  1094 	}
       
  1095 
       
  1096 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1097 get_locale_catalog_numeric_hash()
       
  1098 	{
       
  1099 		return get_libcpp_wsdptr().locale_catalog_numeric_hash;
       
  1100 	}
       
  1101 
       
  1102 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1103 get_locale_catalog_time_hash()
       
  1104 	{
       
  1105 		return get_libcpp_wsdptr().locale_catalog_time_hash;
       
  1106 	}
       
  1107 
       
  1108 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1109 get_locale_catalog_collate_hash()
       
  1110 	{
       
  1111 		return get_libcpp_wsdptr().locale_catalog_collate_hash;
       
  1112 	}
       
  1113 
       
  1114 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1115 get_locale_catalog_monetary_hash()
       
  1116 	{
       
  1117 		return get_libcpp_wsdptr().locale_catalog_monetary_hash;
       
  1118 	}
       
  1119 
       
  1120 inline hash_map<const char*, pair<void*, size_t>, hash<const char*>, __eqstr>*&
       
  1121 get_locale_catalog_messages_hash()
       
  1122 	{
       
  1123 		return get_libcpp_wsdptr().locale_catalog_messages_hash;
       
  1124 	}
       
  1125 
       
  1126 inline _STLP_STATIC_MUTEX&
       
  1127 get_locale_catalog_category_hash_lock()
       
  1128 	{
       
  1129 		return get_libcpp_wsdptr().locale_catalog_category_hash_lock;
       
  1130 	}
       
  1131 
       
  1132 //numpunct.cpp
       
  1133 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC string&
       
  1134 numpunct<char>::GetNumPunct_M_truename()
       
  1135     {
       
  1136     	return get_libcpp_wsdptr().numpunct_char_m_truename;
       
  1137     }
       
  1138 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC string&
       
  1139 numpunct<char>::GetNumPunct_M_falsename()
       
  1140     {
       
  1141     	return get_libcpp_wsdptr().numpunct_char_m_falsename;
       
  1142     }
       
  1143 
       
  1144 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC string&
       
  1145 numpunct<char>::GetNumPunct_M_grouping()
       
  1146     {
       
  1147     	return get_libcpp_wsdptr().numpunct_char_m_grouping;
       
  1148     }
       
  1149 
       
  1150 #  ifndef _STLP_NO_WCHAR_T
       
  1151 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC wstring&
       
  1152 numpunct<wchar_t>::GetNumPunct_M_Wchar_truename()
       
  1153     {
       
  1154     	return get_libcpp_wsdptr().numpunct_wchar_m_truename;
       
  1155     }
       
  1156 
       
  1157 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC wstring&
       
  1158 numpunct<wchar_t>::GetNumPunct_M_Wchar_falsename()
       
  1159     {
       
  1160     	return get_libcpp_wsdptr().numpunct_wchar_m_falsename;
       
  1161     }
       
  1162 
       
  1163 inline _STLP_STATIC_MEMBER_EXP_DECLSPEC string&
       
  1164 numpunct<wchar_t>::GetNumPunct_M_Wchar_grouping()
       
  1165     {
       
  1166     	return get_libcpp_wsdptr().numpunct_wchar_m_grouping;
       
  1167     }
       
  1168 # endif
       
  1169 //iostream.cpp
       
  1170 inline ostream*&
       
  1171 getCErrStream()
       
  1172 	{
       
  1173 		return get_libcpp_wsdptr().cerr;
       
  1174 	}
       
  1175 
       
  1176 inline ostream*&
       
  1177 getCoutStream()
       
  1178     {
       
  1179 	    return get_libcpp_wsdptr().cout;
       
  1180     }
       
  1181 
       
  1182 inline ostream*&
       
  1183 getClogStream()
       
  1184     {
       
  1185 	    return get_libcpp_wsdptr().clog;
       
  1186     }
       
  1187 
       
  1188 inline istream*&
       
  1189 getCinStream()
       
  1190     {
       
  1191 	    return get_libcpp_wsdptr().cin;
       
  1192     }
       
  1193 
       
  1194 #ifndef _STLP_NO_WCHAR_T
       
  1195 inline wostream*&
       
  1196 getWCErrStream()
       
  1197     {
       
  1198 	    return get_libcpp_wsdptr().wcerr;
       
  1199     }
       
  1200 
       
  1201 inline wostream*&
       
  1202 getWCoutStream()
       
  1203     {
       
  1204 	    return get_libcpp_wsdptr().wcout;
       
  1205     }
       
  1206 
       
  1207 inline wostream*&
       
  1208 getWClogStream()
       
  1209     {
       
  1210 	    return get_libcpp_wsdptr().wclog;
       
  1211     }
       
  1212 
       
  1213 inline wistream*&
       
  1214 getWCinStream()
       
  1215     {
       
  1216  	   return get_libcpp_wsdptr().wcin;
       
  1217     }
       
  1218 #endif //_STLP_NO_WCHAR_T
       
  1219 //complex_trig.cpp
       
  1220 inline float&
       
  1221 get_complex_trig_float_limit()
       
  1222 	{
       
  1223 		return get_libcpp_wsdptr().complex_trig_float_limit;
       
  1224 	}
       
  1225 
       
  1226 inline double&
       
  1227 get_complex_trig_double_limit()
       
  1228 	{
       
  1229 		return get_libcpp_wsdptr().complex_trig_double_limit;
       
  1230 	}
       
  1231 
       
  1232 //locale_impl.cpp
       
  1233 inline string&
       
  1234 get_locale_impl_nameless()
       
  1235 	{
       
  1236 		return get_libcpp_wsdptr().locale_impl_nameless;
       
  1237 	}
       
  1238 
       
  1239 //monetary.cpp
       
  1240 inline string&
       
  1241 get_monetary_S_empty_string()
       
  1242 	{
       
  1243 		return get_libcpp_wsdptr().monetary_S_empty_string;
       
  1244 	}
       
  1245 
       
  1246 # ifndef _STLP_NO_WCHAR_T
       
  1247 inline wstring&
       
  1248 get_monetary_S_empty_wstring()
       
  1249 	{
       
  1250 		return get_libcpp_wsdptr().monetary_S_empty_wstring;
       
  1251 	}
       
  1252 #endif //_STLP_NO_WCHAR_T
       
  1253 inline new_handler& get_new_handler()
       
  1254     {
       
  1255     return get_libcpp_wsdptr()._new_handler;
       
  1256     }
       
  1257 
       
  1258 _STLP_END_NAMESPACE
       
  1259 # endif //LIBSTDCPPWSD_H