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;
    98     static const category 
none          = 0;
    99     static const category 
ctype         = 1L << 0;
   102     static const category 
time          = 1L << 3;
   126     locale(const locale& __other) throw();
   137     locale(const 
char* __s);
   151     locale(const locale& 
__base, const 
char* __s, category __cat);
   153 #if __cplusplus >= 201103L   178     : locale(__base, __s.c_str(), __cat) { }
   192     locale(
const locale& __base, 
const locale& __add, category __cat);
   205     template<
typename _Facet>
   206       locale(
const locale& __other, _Facet* __f);
   220     operator=(
const locale& __other) 
throw();
   234     template<
typename _Facet>
   236       combine(
const locale& __other) 
const;
   243     _GLIBCXX_DEFAULT_ABI_TAG
   255     operator==(
const locale& __other) 
const throw();
   282     template<
typename _Char, 
typename _Traits, 
typename _Alloc>
   299     global(
const locale& __loc);
   312     static _Impl*       _S_classic;
   315     static _Impl*       _S_global;
   321     static const char* 
const* 
const _S_categories;
   333     enum { _S_categories_size = 6 + _GLIBCXX_NUM_CATEGORIES };
   336     static __gthread_once_t _S_once;
   346     _S_initialize_once() 
throw();
   349     _S_normalize_category(category);
   352     _M_coalesce(
const locale& __base, 
const locale& __add, category __cat);
   354 #if _GLIBCXX_USE_CXX11_ABI   355     static const id* 
const _S_twinned_facets[];
   375     friend class locale::_Impl;
   377     mutable _Atomic_word                _M_refcount;
   380     static __c_locale                   _S_c_locale;
   383     static const char                   _S_c_name[2];
   386     static __gthread_once_t             _S_once;
   390     _S_initialize_once();
   403     facet(
size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)
   411     _S_create_c_locale(__c_locale& __cloc, 
const char* __s,
   412                        __c_locale __old = 0);
   415     _S_clone_c_locale(__c_locale& __cloc) 
throw();
   418     _S_destroy_c_locale(__c_locale& __cloc);
   421     _S_lc_ctype_c_locale(__c_locale __cloc, 
const char* __s);
   428     _GLIBCXX_CONST 
static const char*
   429     _S_get_c_name() 
throw();
   433     _M_add_reference() 
const throw()
   434     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
   437     _M_remove_reference() 
const throw()
   440       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
   441       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
   443           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
   458     const facet* _M_sso_shim(
const id*) 
const;
   459     const facet* _M_cow_shim(
const id*) 
const;
   478     friend class locale::_Impl;
   480     template<
typename _Facet>
   484     template<
typename _Facet>
   491     mutable size_t              _M_index;
   494     static _Atomic_word         _S_refcount;
   508     _M_id() 
const throw();
   520     template<
typename _Facet>
   524     template<
typename _Facet>
   528     template<
typename _Cache>
   529       friend struct __use_cache;
   533     _Atomic_word                        _M_refcount;
   534     const facet**                       _M_facets;
   535     size_t                              _M_facets_size;
   536     const facet**                       _M_caches;
   539     static const locale::id* 
const      _S_id_numeric[];
   540     static const locale::id* 
const      _S_id_collate[];
   542     static const locale::id* 
const      _S_id_monetary[];
   543     static const locale::id* 
const      _S_id_messages[];
   544     static const locale::id* 
const* 
const _S_facet_categories[];
   547     _M_add_reference() 
throw()
   548     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
   551     _M_remove_reference() 
throw()
   554       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
   555       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
   557           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
   565     _Impl(
const _Impl&, 
size_t);
   566     _Impl(
const char*, 
size_t);
   567     _Impl(
size_t) 
throw();
   582         for (
size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
   583           __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
   588     _M_replace_categories(
const _Impl*, category);
   591     _M_replace_category(
const _Impl*, 
const locale::id* 
const*);
   594     _M_replace_facet(
const _Impl*, 
const locale::id*);
   599     template<
typename _Facet>
   601       _M_init_facet(_Facet* __facet)
   602       { _M_install_facet(&_Facet::id, __facet); }
   604     template<
typename _Facet>
   606       _M_init_facet_unchecked(_Facet* __facet)
   608         __facet->_M_add_reference();
   609         _M_facets[_Facet::id._M_id()] = __facet;
   613     _M_install_cache(
const facet*, 
size_t);
   615     void _M_init_extra(
facet**);
   616     void _M_init_extra(
void*, 
void*, 
const char*, 
const char*);
   632   template<
typename _CharT>
   646       __c_locale                        _M_c_locale_collate;
   661       : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
   675       : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
   691       compare(
const _CharT* __lo1, 
const _CharT* __hi1,
   692               const _CharT* __lo2, 
const _CharT* __hi2)
 const   693       { 
return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
   711       { 
return this->do_transform(__lo, __hi); }
   724       hash(
const _CharT* __lo, 
const _CharT* __hi)
 const   725       { 
return this->do_hash(__lo, __hi); }
   729       _M_compare(
const _CharT*, 
const _CharT*) 
const throw();
   732       _M_transform(_CharT*, 
const _CharT*, 
size_t) 
const throw();
   738       { _S_destroy_c_locale(_M_c_locale_collate); }
   753       do_compare(
const _CharT* __lo1, 
const _CharT* __hi1,
   754                  const _CharT* __lo2, 
const _CharT* __hi2) 
const;
   767       do_transform(
const _CharT* __lo, 
const _CharT* __hi) 
const;
   780       do_hash(
const _CharT* __lo, 
const _CharT* __hi) 
const;
   783   template<
typename _CharT>
   795 #ifdef _GLIBCXX_USE_WCHAR_T   806   template<
typename _CharT>
   820         if (__builtin_strcmp(__s, 
"C") != 0
   821             && __builtin_strcmp(__s, 
"POSIX") != 0)
   823             this->_S_destroy_c_locale(this->_M_c_locale_collate);
   824             this->_S_create_c_locale(this->_M_c_locale_collate, __s);
   828 #if __cplusplus >= 201103L   839 _GLIBCXX_END_NAMESPACE_VERSION
 static const category time
Category values. 
 
locale(const std::string &__s)
Named locale constructor. 
 
_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...
 
string_type transform(const _CharT *__lo, const _CharT *__hi) const 
Transform string to comparable form. 
 
static const category all
Category values. 
 
class collate_byname [22.2.4.2]. 
 
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...
 
static const category none
Category values. 
 
int category
Definition of locale::category. 
 
Primary class template messages.This facet encapsulates the code to retrieve messages from message ca...
 
const locale & operator=(const locale &__other)
Assignment operator. 
 
Facet for localized string comparison. 
 
basic_string< _CharT > string_type
Public typedefs. 
 
basic_string< _CharT > string_type
Public typedefs. 
 
bool operator!=(const locale &__other) const 
Locale inequality. 
 
bool operator==(const locale &__other) const 
Locale equality. 
 
int compare(const _CharT *__lo1, const _CharT *__hi1, const _CharT *__lo2, const _CharT *__hi2) const 
Compare two strings. 
 
virtual ~collate()
Destructor. 
 
_CharT char_type
Public typedefs. 
 
locale combine(const locale &__other) const 
Construct locale with another facet. 
 
static const category monetary
Category values. 
 
bool operator()(const basic_string< _Char, _Traits, _Alloc > &__s1, const basic_string< _Char, _Traits, _Alloc > &__s2) const 
Compare two strings according to collate. 
 
collate(size_t __refs=0)
Constructor performs initialization. 
 
Localization functionality base class.The facet class is the base class for a localization feature...
 
const _CharT * c_str() const  noexcept
Return const pointer to null-terminated contents. 
 
static locale::id id
Numpunct facet id. 
 
long hash(const _CharT *__lo, const _CharT *__hi) const 
Return hash of a string. 
 
Primary class template ctype facet.This template class defines classification and conversion function...
 
_Siter_base< _Iterator >::iterator_type __base(_Iterator __it)
 
locale(const locale &__base, const std::string &__s, category __cat)
Construct locale with facets from another locale. 
 
static locale global(const locale &__loc)
Set global locale. 
 
collate(__c_locale __cloc, size_t __refs=0)
Internal constructor. Not for general use. 
 
locale()
Default constructor. 
 
Facet ID class.The ID class provides facets with an index used to identify them. Every facet class mu...
 
Container class for localization functionality.The locale class is first a class wrapper for C librar...
 
ISO C++ entities toplevel namespace is std. 
 
facet(size_t __refs=0)
Facet constructor. 
 
static const locale & classic()
Return reference to the C locale. 
 
~locale()
Locale destructor. 
 
_GLIBCXX_DEFAULT_ABI_TAG string name() const 
Return locale name. 
 
static const category numeric
Category values.