34 #ifndef _LOCALE_CLASSES_H 
   35 #define _LOCALE_CLASSES_H 1 
   37 #pragma GCC system_header 
   43 namespace std _GLIBCXX_VISIBILITY(default)
 
   45 _GLIBCXX_BEGIN_NAMESPACE_VERSION
 
   77     template<
typename _Facet>
 
   81     template<typename _Facet>
 
   85     template<typename _Cache>
 
   86       friend struct __use_cache;
 
  126     locale(const locale& __other) throw();
 
  137     locale(const 
char* __s);
 
  164     locale(const locale& __base, const locale& __add, 
category __cat);
 
  177     template<typename _Facet>
 
  178       locale(const locale& __other, _Facet* __f);
 
  192     operator=(const locale& __other) throw();
 
  206     template<typename _Facet>
 
  208       combine(const locale& __other) const;
 
  226     operator==(const locale& __other) const throw();
 
  235     operator!=(const locale& __other) const throw()
 
  253     template<
typename _Char, 
typename _Traits, 
typename _Alloc>
 
  283     static _Impl*       _S_classic;
 
  286     static _Impl*   _S_global;
 
  292     static const char* 
const* 
const _S_categories;
 
  304     enum { _S_categories_size = 6 + _GLIBCXX_NUM_CATEGORIES };
 
  307     static __gthread_once_t _S_once;
 
  317     _S_initialize_once() throw();
 
  342     friend class locale::_Impl;
 
  344     mutable _Atomic_word        _M_refcount;
 
  347     static __c_locale                   _S_c_locale;
 
  350     static const char           _S_c_name[2];
 
  353     static __gthread_once_t     _S_once;
 
  357     _S_initialize_once();
 
  370     facet(
size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
 
  378     _S_create_c_locale(__c_locale& __cloc, 
const char* __s,
 
  379                __c_locale __old = 0);
 
  382     _S_clone_c_locale(__c_locale& __cloc) 
throw();
 
  385     _S_destroy_c_locale(__c_locale& __cloc);
 
  388     _S_lc_ctype_c_locale(__c_locale __cloc, 
const char* __s);
 
  395     _GLIBCXX_CONST 
static const char*
 
  396     _S_get_c_name() throw();
 
  400     _M_add_reference() const throw()
 
  401     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
 
  404     _M_remove_reference() 
const throw()
 
  407       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
 
  408       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
 
  410           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
 
  440     friend class locale::_Impl;
 
  442     template<
typename _Facet>
 
  446     template<
typename _Facet>
 
  453     mutable size_t      _M_index;
 
  456     static _Atomic_word     _S_refcount;
 
  470     _M_id() 
const throw();
 
  482     template<
typename _Facet>
 
  486     template<typename _Facet>
 
  490     template<typename _Cache>
 
  491       friend struct __use_cache;
 
  495     _Atomic_word            _M_refcount;
 
  496     const facet**           _M_facets;
 
  497     size_t              _M_facets_size;
 
  498     const facet**           _M_caches;
 
  500     static const locale::
id* const  _S_id_ctype[];
 
  501     static const locale::
id* const  _S_id_numeric[];
 
  502     static const locale::
id* const  _S_id_collate[];
 
  503     static const locale::
id* const  _S_id_time[];
 
  504     static const locale::
id* const  _S_id_monetary[];
 
  505     static const locale::
id* const  _S_id_messages[];
 
  506     static const locale::
id* const* const _S_facet_categories[];
 
  509     _M_add_reference() throw()
 
  510     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
 
  513     _M_remove_reference() throw()
 
  516       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
 
  517       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
 
  519           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
 
  527     _Impl(
const _Impl&, 
size_t);
 
  528     _Impl(
const char*, 
size_t);
 
  529     _Impl(
size_t) throw();
 
  536     operator=(const _Impl&);  
 
  544     for (
size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
 
  545       __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
 
  550     _M_replace_categories(
const _Impl*, category);
 
  553     _M_replace_category(
const _Impl*, 
const locale::id* 
const*);
 
  556     _M_replace_facet(
const _Impl*, 
const locale::id*);
 
  559     _M_install_facet(
const locale::id*, 
const facet*);
 
  561     template<
typename _Facet>
 
  563       _M_init_facet(_Facet* __facet)
 
  564       { _M_install_facet(&_Facet::id, __facet); }
 
  567     _M_install_cache(
const facet*, 
size_t);
 
  583   template<
typename _CharT>
 
  597       __c_locale            _M_c_locale_collate;
 
  612       : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
 
  626       : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
 
  642       compare(
const _CharT* __lo1, 
const _CharT* __hi1,
 
  643           const _CharT* __lo2, 
const _CharT* __hi2)
 const 
  644       { 
return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
 
  662       { 
return this->do_transform(__lo, __hi); }
 
  675       hash(
const _CharT* __lo, 
const _CharT* __hi)
 const 
  676       { 
return this->do_hash(__lo, __hi); }
 
  680       _M_compare(
const _CharT*, 
const _CharT*) 
const throw();
 
  683       _M_transform(_CharT*, const _CharT*, 
size_t) const throw();
 
  689       { _S_destroy_c_locale(_M_c_locale_collate); }
 
  704       do_compare(
const _CharT* __lo1, 
const _CharT* __hi1,
 
  705          const _CharT* __lo2, 
const _CharT* __hi2) 
const;
 
  718       do_transform(
const _CharT* __lo, 
const _CharT* __hi) 
const;
 
  731       do_hash(
const _CharT* __lo, 
const _CharT* __hi) 
const;
 
  734   template<
typename _CharT>
 
  735     locale::id collate<_CharT>::id;
 
  740     collate<char>::_M_compare(
const char*, 
const char*) 
const throw();
 
  744     collate<
char>::_M_transform(
char*, const 
char*, 
size_t) const throw();
 
  746 #ifdef _GLIBCXX_USE_WCHAR_T 
  749     collate<wchar_t>::_M_compare(
const wchar_t*, 
const wchar_t*) 
const throw();
 
  753     collate<
wchar_t>::_M_transform(
wchar_t*, const 
wchar_t*, 
size_t) const throw();
 
  757   template<
typename _CharT>
 
  771     if (__builtin_strcmp(__s, 
"C") != 0
 
  772         && __builtin_strcmp(__s, 
"POSIX") != 0)
 
  774         this->_S_destroy_c_locale(this->_M_c_locale_collate);
 
  775         this->_S_create_c_locale(this->_M_c_locale_collate, __s);
 
  784 _GLIBCXX_END_NAMESPACE_VERSION
 
Primary class template ctype facet.This template class defines classification and conversion function...
 
locale()
Default constructor. 
 
static const category all
Category values. 
 
collate(size_t __refs=0)
Constructor performs initialization. 
 
class collate_byname [22.2.4.2]. 
 
basic_string< _CharT > string_type
Public typedefs. 
 
static locale::id id
Numpunct facet id. 
 
collate(__c_locale __cloc, size_t __refs=0)
Internal constructor. Not for general use. 
 
static const category numeric
Category values. 
 
static const category none
Category values. 
 
string_type transform(const _CharT *__lo, const _CharT *__hi) const 
Transform string to comparable form. 
 
Localization functionality base class.The facet class is the base class for a localization feature...
 
_CharT char_type
Public typedefs. 
 
friend bool has_facet(const locale &)
Test for the presence of a facet.has_facet tests the locale argument for the presence of the facet ty...
 
_CharT char_type
Public typedefs. 
 
Facet for localized string comparison. 
 
static locale global(const locale &__loc)
Set global locale. 
 
friend const _Facet & use_facet(const locale &)
Return a facet.use_facet looks for and returns a reference to a facet of type Facet where Facet is th...
 
bool operator==(const locale &__other) const 
Locale equality. 
 
static const category collate
Category values. 
 
Container class for localization functionality.The locale class is first a class wrapper for C librar...
 
Primary class template messages.This facet encapsulates the code to retrieve messages from message ca...
 
const locale & operator=(const locale &__other)
Assignment operator. 
 
string name() const 
Return locale name. 
 
facet(size_t __refs=0)
Facet constructor. 
 
static const locale & classic()
Return reference to the C locale. 
 
int compare(const _CharT *__lo1, const _CharT *__hi1, const _CharT *__lo2, const _CharT *__hi2) const 
Compare two strings. 
 
long hash(const _CharT *__lo, const _CharT *__hi) const 
Return hash of a string. 
 
_Siter_base< _Iterator >::iterator_type __base(_Iterator __it)
 
Managing sequences of characters and character-like objects. 
 
basic_string< _CharT > string_type
Public typedefs. 
 
locale combine(const locale &__other) const 
Construct locale with another facet. 
 
static const category time
Category values. 
 
int category
Definition of locale::category. 
 
static const category monetary
Category values. 
 
Facet ID class.The ID class provides facets with an index used to identify them. Every facet class mu...
 
bool operator()(const basic_string< _Char, _Traits, _Alloc > &__s1, const basic_string< _Char, _Traits, _Alloc > &__s2) const 
Compare two strings according to collate.