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();
   431 #if __cplusplus < 201103L   446     _M_add_reference() 
const throw()
   447     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
   450     _M_remove_reference() 
const throw()
   453       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
   454       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
   456           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
   464     const facet* _M_sso_shim(
const id*) 
const;
   465     const facet* _M_cow_shim(
const id*) 
const;
   487     friend class locale::_Impl;
   489     template<
typename _Facet>
   493     template<
typename _Facet>
   500     mutable size_t              _M_index;
   503     static _Atomic_word         _S_refcount;
   517     _M_id() 
const throw();
   529     template<
typename _Facet>
   533     template<
typename _Facet>
   537     template<
typename _Cache>
   538       friend struct __use_cache;
   542     _Atomic_word                        _M_refcount;
   543     const facet**                       _M_facets;
   544     size_t                              _M_facets_size;
   545     const facet**                       _M_caches;
   548     static const locale::id* 
const      _S_id_numeric[];
   549     static const locale::id* 
const      _S_id_collate[];
   551     static const locale::id* 
const      _S_id_monetary[];
   552     static const locale::id* 
const      _S_id_messages[];
   553     static const locale::id* 
const* 
const _S_facet_categories[];
   556     _M_add_reference() 
throw()
   557     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }
   560     _M_remove_reference() 
throw()
   563       _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&_M_refcount);
   564       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)
   566           _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&_M_refcount);
   574     _Impl(
const _Impl&, 
size_t);
   575     _Impl(
const char*, 
size_t);
   576     _Impl(
size_t) 
throw();
   591         for (
size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)
   592           __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0;
   597     _M_replace_categories(
const _Impl*, category);
   600     _M_replace_category(
const _Impl*, 
const locale::id* 
const*);
   603     _M_replace_facet(
const _Impl*, 
const locale::id*);
   608     template<
typename _Facet>
   610       _M_init_facet(_Facet* __facet)
   611       { _M_install_facet(&_Facet::id, __facet); }
   613     template<
typename _Facet>
   615       _M_init_facet_unchecked(_Facet* __facet)
   617         __facet->_M_add_reference();
   618         _M_facets[_Facet::id._M_id()] = __facet;
   622     _M_install_cache(
const facet*, 
size_t);
   624     void _M_init_extra(
facet**);
   625     void _M_init_extra(
void*, 
void*, 
const char*, 
const char*);
   641   template<
typename _CharT>
   655       __c_locale                        _M_c_locale_collate;
   670       : facet(__refs), _M_c_locale_collate(_S_get_c_locale())
   684       : facet(__refs), _M_c_locale_collate(_S_clone_c_locale(__cloc))
   700       compare(
const _CharT* __lo1, 
const _CharT* __hi1,
   701               const _CharT* __lo2, 
const _CharT* __hi2)
 const   702       { 
return this->do_compare(__lo1, __hi1, __lo2, __hi2); }
   720       { 
return this->do_transform(__lo, __hi); }
   733       hash(
const _CharT* __lo, 
const _CharT* __hi)
 const   734       { 
return this->do_hash(__lo, __hi); }
   738       _M_compare(
const _CharT*, 
const _CharT*) 
const throw();
   741       _M_transform(_CharT*, 
const _CharT*, 
size_t) 
const throw();
   747       { _S_destroy_c_locale(_M_c_locale_collate); }
   762       do_compare(
const _CharT* __lo1, 
const _CharT* __hi1,
   763                  const _CharT* __lo2, 
const _CharT* __hi2) 
const;
   776       do_transform(
const _CharT* __lo, 
const _CharT* __hi) 
const;
   789       do_hash(
const _CharT* __lo, 
const _CharT* __hi) 
const;
   792   template<
typename _CharT>
   804 #ifdef _GLIBCXX_USE_WCHAR_T   815   template<
typename _CharT>
   829         if (__builtin_strcmp(__s, 
"C") != 0
   830             && __builtin_strcmp(__s, 
"POSIX") != 0)
   832             this->_S_destroy_c_locale(this->_M_c_locale_collate);
   833             this->_S_create_c_locale(this->_M_c_locale_collate, __s);
   837 #if __cplusplus >= 201103L   848 _GLIBCXX_END_NAMESPACE_VERSION
 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. 
static const category time
Category values. 
static locale::id id
Numpunct facet id. 
locale(const std::string &__s)
Named locale constructor. 
long hash(const _CharT *__lo, const _CharT *__hi) const 
Return hash of a string. 
static const category monetary
Category values. 
Primary class template ctype facet.This template class defines classification and conversion function...
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. 
collate(size_t __refs=0)
Constructor performs initialization. 
Primary class template messages.This facet encapsulates the code to retrieve messages from message ca...
_CharT char_type
Public typedefs. 
locale()
Default constructor. 
const _CharT * c_str() const  noexcept
Return const pointer to null-terminated contents. 
collate(__c_locale __cloc, size_t __refs=0)
Internal constructor. Not for general use. 
_CharT char_type
Public typedefs. 
ISO C++ entities toplevel namespace is std. 
_GLIBCXX_DEFAULT_ABI_TAG string name() const 
Return locale name. 
facet(size_t __refs=0)
Facet constructor. 
static const locale & classic()
Return reference to the C locale. 
~locale()
Locale destructor. 
locale combine(const locale &__other) const 
Construct locale with another facet. 
Localization functionality base class.The facet class is the base class for a localization feature...
bool operator!=(const locale &__other) const 
Locale inequality. 
basic_string< _CharT > string_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. 
class collate_byname [22.2.4.2]. 
static const category all
Category values. 
int compare(const _CharT *__lo1, const _CharT *__hi1, const _CharT *__lo2, const _CharT *__hi2) const 
Compare two strings. 
Container class for localization functionality.The locale class is first a class wrapper for C librar...
int category
Definition of locale::category. 
virtual ~collate()
Destructor. 
const locale & operator=(const locale &__other)
Assignment operator. 
Facet for localized string comparison. 
basic_string< _CharT > string_type
Public typedefs. 
locale(const locale &__base, const std::string &__s, category __cat)
Construct locale with facets from another locale. 
static const category numeric
Category values. 
static locale global(const locale &__loc)
Set global locale. 
bool operator==(const locale &__other) const 
Locale equality.