ReactOS  0.4.13-dev-100-gc8611ae
locale_impl.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1999
3  * Silicon Graphics Computer Systems, Inc.
4  *
5  * Copyright (c) 1999
6  * Boris Fomitchev
7  *
8  * This material is provided "as is", with absolutely no warranty expressed
9  * or implied. Any use is at your own risk.
10  *
11  * Permission to use or copy this software for any purpose is hereby granted
12  * without fee, provided the above notices are retained on all copies.
13  * Permission to modify the code and to distribute modified code is granted,
14  * provided the above notices are retained, and a notice that the code was
15  * modified is included with the above copyright notice.
16  *
17  */
18 #include "stlport_prefix.h"
19 
20 #include <locale>
21 #include <algorithm>
22 #include <typeinfo>
23 
24 #include "c_locale.h"
25 #include "aligned_buffer.h"
26 #include "acquire_release.h"
27 #include "locale_impl.h"
28 
30 
31 static const string _Nameless("*");
32 
33 static inline bool is_C_locale_name (const char* name)
34 { return ((name[0] == 'C') && (name[1] == 0)); }
35 
37 {
38  if (f != 0)
39  f->_M_incr();
40  return f;
41 }
42 
44 {
45  if ((f != 0) && (f->_M_decr() == 0)) {
46  delete f;
47  f = 0;
48  }
49 }
50 
51 size_t locale::id::_S_max = 27;
52 
53 static void _Stl_loc_assign_ids();
54 
56 
58  if (_M_count()._M_incr() == 1) {
60  }
61 }
62 
64  if (_M_count()._M_decr() == 0) {
66  }
67 }
68 
70  static _Refcount_Base _S_count(0);
71  return _S_count;
72 }
73 
75  : _Refcount_Base(0), name(s), facets_vec() {
77  new (&__Loc_init_buf) Init();
78 }
79 
81  : _Refcount_Base(0), name(locimpl.name), facets_vec() {
82  for_each( locimpl.facets_vec.begin(), locimpl.facets_vec.end(), _get_facet);
83  facets_vec = locimpl.facets_vec;
84  new (&__Loc_init_buf) Init();
85 }
86 
87 _Locale_impl::_Locale_impl( size_t n, const char* s)
88  : _Refcount_Base(0), name(s), facets_vec(n, 0) {
89  new (&__Loc_init_buf) Init();
90 }
91 
93  (&__Loc_init_buf)->~Init();
95 }
96 
97 // Initialization of the locale system. This must be called before
98 // any locales are constructed. (Meaning that it must be called when
99 // the I/O library itself is initialized.)
103 }
104 
105 // Release of the classic locale ressources. Has to be called after the last
106 // locale destruction and not only after the classic locale destruction as
107 // the facets can be shared between different facets.
109  //Not necessary anymore as classic facets are now 'normal' dynamically allocated
110  //facets with a reference counter telling to _release_facet when the facet can be
111  //deleted.
112  //free_classic_locale();
113 }
114 
115 // _Locale_impl non-inline member functions.
117  _STLP_THROW(bad_cast());
118 }
119 
121  if (n._M_index > 0 && n._M_index < from->size()) {
122  this->insert(from->facets_vec[n._M_index], n);
123  }
124 }
125 
127  if (f == 0 || n._M_index == 0)
128  return 0;
129 
130  if (n._M_index >= facets_vec.size()) {
131  facets_vec.resize(n._M_index + 1);
132  }
133 
134  if (f != facets_vec[n._M_index])
135  {
136  _release_facet(facets_vec[n._M_index]);
137  facets_vec[n._M_index] = _get_facet(f);
138  }
139 
140  return f;
141 }
142 
143 //
144 // <locale> content which is dependent on the name
145 //
146 
147 /* Six functions, one for each category. Each of them takes a
148  * a name, constructs that appropriate category facets by name,
149  * and inserts them into the locale. */
151  if (name[0] == 0)
153 
154  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
156  this->insert(i2, ctype<char>::id);
158 #ifndef _STLP_NO_WCHAR_T
159  this->insert(i2, ctype<wchar_t>::id);
161 #endif
162  } else {
163  locale::facet* ct = 0;
164  locale::facet* cvt = 0;
165 #ifndef _STLP_NO_WCHAR_T
166  locale::facet* wct = 0;
167  locale::facet* wcvt = 0;
168 #endif
169  int __err_code;
170  _Locale_ctype *__lct = _STLP_PRIV __acquire_ctype(name, buf, hint, &__err_code);
171  if (!__lct) {
172  locale::_M_throw_on_creation_failure(__err_code, name, "ctype");
173  return hint;
174  }
175 
176  if (hint == 0) hint = _Locale_get_ctype_hint(__lct);
177 
178  _STLP_TRY {
179  ct = new ctype_byname<char>(__lct);
180  }
182 
183  _STLP_TRY {
185  }
186  _STLP_UNWIND(delete ct);
187 
188 #ifndef _STLP_NO_WCHAR_T
189  _STLP_TRY {
190  _Locale_ctype *__lwct = _STLP_PRIV __acquire_ctype(name, buf, hint, &__err_code);
191  if (!__lwct) {
192  locale::_M_throw_on_creation_failure(__err_code, name, "ctype");
193  return hint;
194  }
195 
196  _STLP_TRY {
197  wct = new ctype_byname<wchar_t>(__lwct);
198  }
200 
201  _Locale_codecvt *__lwcvt = _STLP_PRIV __acquire_codecvt(name, buf, hint, &__err_code);
202  if (__lwcvt) {
203  _STLP_TRY {
204  wcvt = new codecvt_byname<wchar_t, char, mbstate_t>(__lwcvt);
205  }
206  _STLP_UNWIND(_STLP_PRIV __release_codecvt(__lwcvt); delete wct);
207  }
208  }
209  _STLP_UNWIND(delete cvt; delete ct);
210 #endif
211 
212  this->insert(ct, ctype<char>::id);
214 #ifndef _STLP_NO_WCHAR_T
215  this->insert(wct, ctype<wchar_t>::id);
216  if (wcvt) this->insert(wcvt, codecvt<wchar_t, char, mbstate_t>::id);
217 #endif
218  }
219  return hint;
220 }
221 
223  if (name[0] == 0)
225 
227 
228  // We first insert name independant facets taken from the classic locale instance:
229  this->insert(i2,
230  num_put<char, ostreambuf_iterator<char, char_traits<char> > >::id);
231  this->insert(i2,
232  num_get<char, istreambuf_iterator<char, char_traits<char> > >::id);
233 #ifndef _STLP_NO_WCHAR_T
234  this->insert(i2,
235  num_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
236  this->insert(i2,
237  num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
238 #endif
239 
240  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
241  this->insert(i2, numpunct<char>::id);
242 #ifndef _STLP_NO_WCHAR_T
243  this->insert(i2, numpunct<wchar_t>::id);
244 #endif
245  }
246  else {
247  locale::facet* punct = 0;
248 #ifndef _STLP_NO_WCHAR_T
249  locale::facet* wpunct = 0;
250 #endif
251 
252  int __err_code;
253  _Locale_numeric *__lpunct = _STLP_PRIV __acquire_numeric(name, buf, hint, &__err_code);
254  if (!__lpunct) {
255  locale::_M_throw_on_creation_failure(__err_code, name, "numpunct");
256  return hint;
257  }
258 
259  if (hint == 0) hint = _Locale_get_numeric_hint(__lpunct);
260  _STLP_TRY {
261  punct = new numpunct_byname<char>(__lpunct);
262  }
264 
265 #ifndef _STLP_NO_WCHAR_T
266  _Locale_numeric *__lwpunct = _STLP_PRIV __acquire_numeric(name, buf, hint, &__err_code);
267  if (!__lwpunct) {
268  delete punct;
269  locale::_M_throw_on_creation_failure(__err_code, name, "numpunct");
270  return hint;
271  }
272  if (__lwpunct) {
273  _STLP_TRY {
274  wpunct = new numpunct_byname<wchar_t>(__lwpunct);
275  }
276  _STLP_UNWIND(_STLP_PRIV __release_numeric(__lwpunct); delete punct);
277  }
278 #endif
279 
280  this->insert(punct, numpunct<char>::id);
281 #ifndef _STLP_NO_WCHAR_T
282  this->insert(wpunct, numpunct<wchar_t>::id);
283 #endif
284  }
285  return hint;
286 }
287 
289  if (name[0] == 0)
291 
292  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
294  this->insert(i2,
295  time_get<char, istreambuf_iterator<char, char_traits<char> > >::id);
296  this->insert(i2,
297  time_put<char, ostreambuf_iterator<char, char_traits<char> > >::id);
298 #ifndef _STLP_NO_WCHAR_T
299  this->insert(i2,
300  time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
301  this->insert(i2,
302  time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
303 #endif
304  } else {
305  locale::facet *get = 0;
306  locale::facet *put = 0;
307 #ifndef _STLP_NO_WCHAR_T
308  locale::facet *wget = 0;
309  locale::facet *wput = 0;
310 #endif
311 
312  int __err_code;
313  _Locale_time *__time = _STLP_PRIV __acquire_time(name, buf, hint, &__err_code);
314  if (!__time) {
315  // time facets category is not mandatory for correct stream behavior so if platform
316  // do not support it we do not generate a runtime_error exception.
317  if (__err_code == _STLP_LOC_NO_MEMORY) {
319  }
320  return hint;
321  }
322 
323  if (!hint) hint = _Locale_get_time_hint(__time);
324  _STLP_TRY {
327 #ifndef _STLP_NO_WCHAR_T
330 #endif
331  }
332 #ifndef _STLP_NO_WCHAR_T
333  _STLP_UNWIND(delete wget; delete put; delete get; _STLP_PRIV __release_time(__time));
334 #else
335  _STLP_UNWIND(delete get; _STLP_PRIV __release_time(__time));
336 #endif
337 
338  _STLP_PRIV __release_time(__time);
339 
340  this->insert(get, time_get<char, istreambuf_iterator<char, char_traits<char> > >::id);
341  this->insert(put, time_put<char, ostreambuf_iterator<char, char_traits<char> > >::id);
342 #ifndef _STLP_NO_WCHAR_T
343  this->insert(wget, time_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
344  this->insert(wput, time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
345 #endif
346  }
347  return hint;
348 }
349 
351  if (name[0] == 0)
353 
354  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
356  this->insert(i2, collate<char>::id);
357 #ifndef _STLP_NO_WCHAR_T
358  this->insert(i2, collate<wchar_t>::id);
359 #endif
360  }
361  else {
362  locale::facet *col = 0;
363 #ifndef _STLP_NO_WCHAR_T
364  locale::facet *wcol = 0;
365 #endif
366 
367  int __err_code;
368  _Locale_collate *__coll = _STLP_PRIV __acquire_collate(name, buf, hint, &__err_code);
369  if (!__coll) {
370  if (__err_code == _STLP_LOC_NO_MEMORY) {
372  }
373  return hint;
374  }
375 
376  if (hint == 0) hint = _Locale_get_collate_hint(__coll);
377  _STLP_TRY {
378  col = new collate_byname<char>(__coll);
379  }
381 
382 #ifndef _STLP_NO_WCHAR_T
383  _Locale_collate *__wcoll = _STLP_PRIV __acquire_collate(name, buf, hint, &__err_code);
384  if (!__wcoll) {
385  if (__err_code == _STLP_LOC_NO_MEMORY) {
386  delete col;
388  }
389  }
390  if (__wcoll) {
391  _STLP_TRY {
392  wcol = new collate_byname<wchar_t>(__wcoll);
393  }
394  _STLP_UNWIND(_STLP_PRIV __release_collate(__wcoll); delete col);
395  }
396 #endif
397 
398  this->insert(col, collate<char>::id);
399 #ifndef _STLP_NO_WCHAR_T
400  if (wcol) this->insert(wcol, collate<wchar_t>::id);
401 #endif
402  }
403  return hint;
404 }
405 
407  if (name[0] == 0)
409 
411 
412  // We first insert name independant facets taken from the classic locale instance:
413  this->insert(i2, money_get<char, istreambuf_iterator<char, char_traits<char> > >::id);
414  this->insert(i2, money_put<char, ostreambuf_iterator<char, char_traits<char> > >::id);
415 #ifndef _STLP_NO_WCHAR_T
416  this->insert(i2, money_get<wchar_t, istreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
417  this->insert(i2, money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >::id);
418 #endif
419 
420  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
423 #ifndef _STLP_NO_WCHAR_T
426 #endif
427  }
428  else {
429  locale::facet *punct = 0;
430  locale::facet *ipunct = 0;
431 
432 #ifndef _STLP_NO_WCHAR_T
433  locale::facet* wpunct = 0;
434  locale::facet* wipunct = 0;
435 #endif
436 
437  int __err_code;
438  _Locale_monetary *__mon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code);
439  if (!__mon) {
440  if (__err_code == _STLP_LOC_NO_MEMORY) {
442  }
443  return hint;
444  }
445 
446  if (hint == 0) hint = _Locale_get_monetary_hint(__mon);
447 
448  _STLP_TRY {
449  punct = new moneypunct_byname<char, false>(__mon);
450  }
452 
453  _Locale_monetary *__imon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code);
454  if (!__imon) {
455  delete punct;
456  if (__err_code == _STLP_LOC_NO_MEMORY) {
458  }
459  return hint;
460  }
461 
462  _STLP_TRY {
463  ipunct = new moneypunct_byname<char, true>(__imon);
464  }
465  _STLP_UNWIND(_STLP_PRIV __release_monetary(__imon); delete punct);
466 
467 #ifndef _STLP_NO_WCHAR_T
468  _STLP_TRY {
469  _Locale_monetary *__wmon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code);
470  if (!__wmon) {
471  if (__err_code == _STLP_LOC_NO_MEMORY) {
473  }
474  }
475 
476  if (__wmon) {
477  _STLP_TRY {
478  wpunct = new moneypunct_byname<wchar_t, false>(__wmon);
479  }
481 
482  _Locale_monetary *__wimon = _STLP_PRIV __acquire_monetary(name, buf, hint, &__err_code);
483  if (!__wimon) {
484  delete wpunct;
485  if (__err_code == _STLP_LOC_NO_MEMORY) {
487  }
488  wpunct = 0;
489  }
490  else {
491  _STLP_TRY {
492  wipunct = new moneypunct_byname<wchar_t, true>(__wimon);
493  }
494  _STLP_UNWIND(_STLP_PRIV __release_monetary(__wimon); delete wpunct);
495  }
496  }
497  }
498  _STLP_UNWIND(delete ipunct; delete punct);
499 #endif
500 
501  this->insert(punct, moneypunct<char, false>::id);
502  this->insert(ipunct, moneypunct<char, true>::id);
503 #ifndef _STLP_NO_WCHAR_T
504  if (wpunct) this->insert(wpunct, moneypunct<wchar_t, false>::id);
505  if (wipunct) this->insert(wipunct, moneypunct<wchar_t, true>::id);
506 #endif
507  }
508  return hint;
509 }
510 
512  if (name[0] == 0)
514 
515  if (name == 0 || name[0] == 0 || is_C_locale_name(name)) {
517  this->insert(i2, messages<char>::id);
518 #ifndef _STLP_NO_WCHAR_T
519  this->insert(i2, messages<wchar_t>::id);
520 #endif
521  }
522  else {
523  locale::facet *msg = 0;
524 #ifndef _STLP_NO_WCHAR_T
525  locale::facet *wmsg = 0;
526 #endif
527 
528  int __err_code;
529  _Locale_messages *__msg = _STLP_PRIV __acquire_messages(name, buf, hint, &__err_code);
530  if (!__msg) {
531  if (__err_code == _STLP_LOC_NO_MEMORY) {
533  }
534  return hint;
535  }
536 
537  _STLP_TRY {
538  msg = new messages_byname<char>(__msg);
539  }
541 
542 #ifndef _STLP_NO_WCHAR_T
543  _STLP_TRY {
544  _Locale_messages *__wmsg = _STLP_PRIV __acquire_messages(name, buf, hint, &__err_code);
545  if (!__wmsg) {
546  if (__err_code == _STLP_LOC_NO_MEMORY) {
548  }
549  }
550 
551  if (__wmsg) {
552  _STLP_TRY {
553  wmsg = new messages_byname<wchar_t>(__wmsg);
554  }
556  }
557  }
558  _STLP_UNWIND(delete msg);
559 #endif
560 
561  this->insert(msg, messages<char>::id);
562 #ifndef _STLP_NO_WCHAR_T
563  if (wmsg) this->insert(wmsg, messages<wchar_t>::id);
564 #endif
565  }
566  return hint;
567 }
568 
569 static void _Stl_loc_assign_ids() {
570  // This assigns ids to every facet that is a member of a category,
571  // and also to money_get/put, num_get/put, and time_get/put
572  // instantiated using ordinary pointers as the input/output
573  // iterators. (The default is [io]streambuf_iterator.)
574 
581 
582 #ifndef _STLP_NO_WCHAR_T
589 #endif
590  // locale::id::_S_max = 27;
591 }
592 
593 // To access those static instance use the getter below, they guaranty
594 // a correct initialization.
597 
599  static _Locale_impl::Init init;
600  return _Stl_classic_locale;
601 }
602 
604  static _Locale_impl::Init init;
605  return _Stl_global_locale;
606 }
607 
608 #if defined (_STLP_MSVC) || defined (__ICL) || defined (__ISCPP__) || defined (__DMC__)
609 /*
610  * The following static variable needs to be initialized before STLport
611  * users static variable in order for him to be able to use Standard
612  * streams in its variable initialization.
613  * This variable is here because MSVC do not allow to change the initialization
614  * segment in a given translation unit, iostream.cpp already contains an
615  * initialization segment specification.
616  */
617 # pragma warning (disable : 4073)
618 # pragma init_seg(lib)
619 #endif
620 
622 
624  // This funcion will be called once: during build classic _Locale_impl
625 
626  // The classic locale contains every facet that belongs to a category.
627  static _Stl_aligned_buffer<_Locale_impl> _Locale_classic_impl_buf;
628  _Locale_impl *classic = new(&_Locale_classic_impl_buf) _Locale_impl("C");
629 
630  locale::facet* classic_facets[] = {
631  0,
632  new collate<char>(1),
633  new ctype<char>(0, false, 1),
635  new moneypunct<char, true>(1),
637  new numpunct<char>(1),
638  new messages<char>(1),
640  new money_put<char, ostreambuf_iterator<char, char_traits<char> > >(1),
642  new num_put<char, ostreambuf_iterator<char, char_traits<char> > >(1),
644  new time_put<char, ostreambuf_iterator<char, char_traits<char> > >(1),
645 #ifndef _STLP_NO_WCHAR_T
646  new collate<wchar_t>(1),
647  new ctype<wchar_t>(1),
651  new numpunct<wchar_t>(1),
652  new messages<wchar_t>(1),
654  new money_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >(1),
656  new num_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >(1),
658  new time_put<wchar_t, ostreambuf_iterator<wchar_t, char_traits<wchar_t> > >(1),
659 #endif
660  0
661  };
662 
663  const size_t nb_classic_facets = sizeof(classic_facets) / sizeof(locale::facet *);
664  classic->facets_vec.reserve(nb_classic_facets);
665  classic->facets_vec.assign(&classic_facets[0], &classic_facets[0] + nb_classic_facets);
666 
667  static locale _Locale_classic(classic);
668  _Stl_classic_locale = &_Locale_classic;
669 
670  static locale _Locale_global(classic);
671  _Stl_global_locale = &_Locale_global;
672 }
673 
674 // Declarations of (non-template) facets' static data members
675 // size_t locale::id::_S_max = 27; // made before
676 
684 
685 #ifndef _STLP_NO_WCHAR_T
693 #endif
694 
696 {
697  _STLP_ASSERT( loc != 0 );
698  loc->_M_incr();
699  return loc;
700 }
701 
703 {
704  _STLP_ASSERT( loc != 0 );
705  if (loc->_M_decr() == 0) {
706  if (*loc != *_Stl_classic_locale)
707  delete loc;
708  else
709  loc->~_Locale_impl();
710  loc = 0;
711  }
712 }
713 
715 {
716  _STLP_ASSERT( loc != 0 );
717  _Locale_impl *loc_new = new _Locale_impl(*loc);
718  loc_new->name = _Nameless;
719  return loc_new;
720 }
721 
722 /* _GetFacetId implementation have to be here in order to be in the same translation unit
723  * as where id are initialize (in _Stl_loc_assign_ids) */
725 
730 #ifndef _STLP_NO_WCHAR_T
735 #endif
736 
739 #ifndef _STLP_NO_WCHAR_T
742 #endif
743 
746 #ifndef _STLP_NO_WCHAR_T
749 #endif
750 
755 #ifndef _STLP_NO_WCHAR_T
760 #endif
761 
763 
765 
struct _Locale_name_hint * _Locale_get_monetary_hint(struct _Locale_monetary *)
_Locale_name_hint * insert_numeric_facets(const char *&name, char *buf, _Locale_name_hint *hint)
locale::facet * insert(locale::facet *, const locale::id &n)
basic_string< char, char_traits< char >, allocator< char > > name
Definition: locale_impl.h:72
_STLP_TEMPLATE_NULL class ctype< wchar_t >
Definition: _iosfwd.h:109
_Locale_collate *_STLP_CALL __acquire_collate(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
iterator end()
Definition: _vector.h:184
const char * _Locale_messages_default(char *__buf)
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
static void _Stl_loc_assign_ids()
void _STLP_CALL _release_Locale_impl(_Locale_impl *&loc)
_STLP_TEMPLATE_NULL class collate< wchar_t >
Definition: _iosfwd.h:111
static bool is_C_locale_name(const char *name)
Definition: locale_impl.cpp:33
_Locale_name_hint * insert_monetary_facets(const char *&name, char *buf, _Locale_name_hint *hint)
void resize(size_type __new_size, const _Tp &__x=_STLP_DEFAULT_CONSTRUCTED(_Tp))
Definition: _vector.h:636
GLdouble n
Definition: glext.h:7729
const char * _Locale_monetary_default(char *__buf)
const char * _Locale_time_default(char *__buf)
void _STLP_CALL __release_collate(_Locale_collate *cat)
_STLP_TEMPLATE_NULL class collate< char >
Definition: _iosfwd.h:105
_STLP_TEMPLATE_NULL class ctype_byname< wchar_t >
Definition: _iosfwd.h:110
static int init
Definition: wintirpc.c:33
#define put(ret, state, sp, n)
Definition: match.c:105
#define _STLP_MOVE_TO_PRIV_NAMESPACE
Definition: features.h:524
static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_bad_cast()
__stl_atomic_t _M_incr()
Definition: _threads.h:479
_Refcount_Base & _M_count() const
Definition: locale_impl.cpp:69
struct _Locale_name_hint * _Locale_get_ctype_hint(struct _Locale_ctype *)
_Locale_messages *_STLP_CALL __acquire_messages(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
void _STLP_CALL __release_messages(_Locale_messages *cat)
const char * _Locale_numeric_default(char *__buf)
Definition: _locale.h:75
_STLP_MOVE_TO_PRIV_NAMESPACE _STLP_DECLSPEC locale::id &_STLP_CALL _GetFacetId(const money_get< char, istreambuf_iterator< char, char_traits< char > > > *)
static const locale &_STLP_CALL classic()
Definition: locale.cpp:404
static locale * _Stl_classic_locale
_STLP_TEMPLATE_NULL class collate_byname< wchar_t >
Definition: _iosfwd.h:112
friend class Init
Definition: locale_impl.h:94
void _STLP_CALL __release_numeric(_Locale_numeric *cat)
#define _STLP_LOC_NO_MEMORY
Definition: c_locale.h:103
static void _STLP_FUNCTION_THROWS _STLP_CALL _M_throw_on_creation_failure(int __err_code, const char *name, const char *facet)
Definition: locale.cpp:68
#define _STLP_UNWIND(action)
Definition: features.h:824
static void make_classic_locale()
_Locale_time *_STLP_CALL __acquire_time(const char *&name, char *buf, _Locale_name_hint *, int *__err_code)
_Locale_name_hint * insert_collate_facets(const char *&name, char *buf, _Locale_name_hint *hint)
_STLP_DECLSPEC _Locale_impl *_STLP_CALL _copy_Nameless_Locale_impl(_Locale_impl *loc)
const char * _Locale_ctype_default(char *__buf)
vector< locale::facet * > facets_vec
Definition: locale_impl.h:112
#define _STLP_MOVE_TO_STD_NAMESPACE
Definition: features.h:525
GLfloat f
Definition: glext.h:7540
void get(int argc, const char *argv[])
Definition: cmds.c:480
_Locale_name_hint * insert_time_facets(const char *&name, char *buf, _Locale_name_hint *hint)
Definition: _ctype.h:58
_STLP_DECLSPEC _Locale_impl *_STLP_CALL _get_Locale_impl(_Locale_impl *loc)
_STLP_TEMPLATE_NULL class ctype< char >
Definition: _iosfwd.h:103
_Locale_name_hint * insert_ctype_facets(const char *&name, char *buf, _Locale_name_hint *hint)
void _STLP_CALL __release_monetary(_Locale_monetary *cat)
__stl_atomic_t _M_decr()
Definition: _threads.h:480
_STLP_BEGIN_NAMESPACE _STLP_INLINE_LOOP _Function for_each(_InputIter __first, _InputIter __last, _Function __f)
Definition: _algo.h:59
_Locale_name_hint * insert_messages_facets(const char *&name, char *buf, _Locale_name_hint *hint)
static void _STLP_CALL _S_initialize()
static _STLP_BEGIN_NAMESPACE const string _Nameless("*")
iterator begin()
Definition: _vector.h:182
#define _STLP_PRIV
Definition: _dm.h:70
#define _STLP_DECLSPEC
Definition: features.h:982
_Locale_impl(const char *s)
Definition: locale_impl.cpp:74
struct _Locale_name_hint * _Locale_get_numeric_hint(struct _Locale_numeric *)
GLdouble s
Definition: gl.h:2039
_Locale_codecvt *_STLP_CALL __acquire_codecvt(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
void _STLP_CALL __release_time(_Locale_time *__time)
locale::facet *_STLP_CALL _get_facet(locale::facet *f)
Definition: locale_impl.cpp:36
static void _STLP_CALL _S_uninitialize()
locale * _Stl_get_classic_locale()
void assign(size_type __n, const _Tp &__val)
Definition: _vector.h:315
static char * cvt(double arg, int ndigits, int *decpt, int *sign, char *buf, int eflag)
Definition: fcvtbuf.c:45
DWORD hint
Definition: vfdcmd.c:88
_Locale_impl * _M_impl
Definition: _locale.h:203
#define f
Definition: ke_i.h:83
#define _STLP_END_NAMESPACE
Definition: features.h:503
static ios_base::Init _IosInit
#define _STLP_TRY
Definition: features.h:817
#define _STLP_THROW(x)
Definition: features.h:820
#define _STLP_ASSERT(expr)
Definition: _debug.h:165
const char * _Locale_collate_default(char *__buf)
#define msg(x)
Definition: auth_time.c:54
_Locale_numeric *_STLP_CALL __acquire_numeric(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
void _STLP_CALL _release_facet(locale::facet *&f)
Definition: locale_impl.cpp:43
Definition: name.c:36
_STLP_TEMPLATE_NULL class collate_byname< char >
Definition: _iosfwd.h:106
size_type size() const
Definition: _vector.h:192
GLenum GLuint id
Definition: glext.h:5579
void _STLP_CALL __release_codecvt(_Locale_codecvt *cat)
void _STLP_CALL __release_ctype(_Locale_ctype *cat)
#define _STLP_BEGIN_NAMESPACE
Definition: features.h:501
static locale * _Stl_global_locale
CardRegion * from
Definition: spigame.cpp:19
static size_t _S_max
Definition: _locale.h:104
_STLP_BEGIN_NAMESPACE _STLP_MOVE_TO_PRIV_NAMESPACE _Locale_ctype *_STLP_CALL __acquire_ctype(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
struct _Locale_name_hint * _Locale_get_time_hint(struct _Locale_time *)
#define _STLP_CALL
Definition: _bc.h:131
#define _STLP_THROW_BAD_ALLOC
Definition: _new.h:116
static _Stl_aligned_buffer< _Locale_impl::Init > __Loc_init_buf
Definition: locale_impl.cpp:55
void reserve(size_type __n)
Definition: _vector.c:62
_STLP_TEMPLATE_NULL class ctype_byname< char >
Definition: _iosfwd.h:104
struct _Locale_name_hint * _Locale_get_collate_hint(struct _Locale_collate *)
_Locale_monetary *_STLP_CALL __acquire_monetary(const char *&name, char *buf, _Locale_name_hint *hint, int *__err_code)
locale * _Stl_get_global_locale()