⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 locale_classes.h

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 H
📖 第 1 页 / 共 2 页
字号:
// Locale support -*- C++ -*-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004// Free Software Foundation, Inc.//// This file is part of the GNU ISO C++ Library.  This library is free// software; you can redistribute it and/or modify it under the// terms of the GNU General Public License as published by the// Free Software Foundation; either version 2, or (at your option)// any later version.// This library is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License along// with this library; see the file COPYING.  If not, write to the Free// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,// USA.// As a special exception, you may use this file as part of a free software// library without restriction.  Specifically, if other files instantiate// templates or use macros or inline functions from this file, or you compile// this file and link it with other files to produce an executable, this// file does not by itself cause the resulting executable to be covered by// the GNU General Public License.  This exception does not however// invalidate any other reasons why the executable file might be covered by// the GNU General Public License.//// ISO C++ 14882: 22.1  Locales///** @file localefwd.h *  This is an internal header file, included by other library headers. *  You should not attempt to use it directly. */#ifndef _LOCALE_CLASSES_H#define _LOCALE_CLASSES_H 1#pragma GCC system_header#include <bits/localefwd.h>#include <cstring>		// For strcmp.#include <string>#include <bits/atomicity.h>#include <bits/gthr.h>namespace std{  // 22.1.1 Class locale  /**   *  @brief  Container class for localization functionality.   *   *  The locale class is first a class wrapper for C library locales.  It is   *  also an extensible container for user-defined localization.  A locale is   *  a collection of facets that implement various localization features such   *  as money, time, and number printing.   *   *  Constructing C++ locales does not change the C library locale.   *   *  This library supports efficient construction and copying of locales   *  through a reference counting implementation of the locale class.  */  class locale  {  public:    // Types:    /// Definition of locale::category.    typedef int	category;    // Forward decls and friends:    class facet;    class id;    class _Impl;    friend class facet;    friend class _Impl;    template<typename _Facet>      friend bool      has_facet(const locale&) throw();    template<typename _Facet>      friend const _Facet&      use_facet(const locale&);    template<typename _Cache>      friend struct __use_cache;    //@{    /**     *  @brief  Category values.     *     *  The standard category values are none, ctype, numeric, collate, time,     *  monetary, and messages.  They form a bitmask that supports union and     *  intersection.  The category all is the union of these values.     *     *  @if maint     *  NB: Order must match _S_facet_categories definition in locale.cc     *  @endif    */    static const category none		= 0;    static const category ctype		= 1L << 0;    static const category numeric	= 1L << 1;    static const category collate	= 1L << 2;    static const category time		= 1L << 3;    static const category monetary	= 1L << 4;    static const category messages	= 1L << 5;    static const category all		= (ctype | numeric | collate |					   time  | monetary | messages);    //@}    // Construct/copy/destroy:    /**     *  @brief  Default constructor.     *     *  Constructs a copy of the global locale.  If no locale has been     *  explicitly set, this is the "C" locale.    */    locale() throw();    /**     *  @brief  Copy constructor.     *     *  Constructs a copy of @a other.     *     *  @param  other  The locale to copy.    */    locale(const locale& __other) throw();    /**     *  @brief  Named locale constructor.     *     *  Constructs a copy of the named C library locale.     *     *  @param  s  Name of the locale to construct.     *  @throw  std::runtime_error if s is null or an undefined locale.    */    explicit    locale(const char* __s);    /**     *  @brief  Construct locale with facets from another locale.     *     *  Constructs a copy of the locale @a base.  The facets specified by @a     *  cat are replaced with those from the locale named by @a s.  If base is     *  named, this locale instance will also be named.     *     *  @param  base  The locale to copy.     *  @param  s  Name of the locale to use facets from.     *  @param  cat  Set of categories defining the facets to use from s.     *  @throw  std::runtime_error if s is null or an undefined locale.    */    locale(const locale& __base, const char* __s, category __cat);    /**     *  @brief  Construct locale with facets from another locale.     *     *  Constructs a copy of the locale @a base.  The facets specified by @a     *  cat are replaced with those from the locale @a add.  If @a base and @a     *  add are named, this locale instance will also be named.     *     *  @param  base  The locale to copy.     *  @param  add  The locale to use facets from.     *  @param  cat  Set of categories defining the facets to use from add.    */    locale(const locale& __base, const locale& __add, category __cat);    /**     *  @brief  Construct locale with another facet.     *     *  Constructs a copy of the locale @a other.  The facet @f is added to     *  @other, replacing an existing facet of type Facet if there is one.  If     *  @f is null, this locale is a copy of @a other.     *     *  @param  other  The locale to copy.     *  @param  f  The facet to add in.    */    template<typename _Facet>      locale(const locale& __other, _Facet* __f);    /// Locale destructor.    ~locale() throw();    /**     *  @brief  Assignment operator.     *     *  Set this locale to be a copy of @a other.     *     *  @param  other  The locale to copy.     *  @return  A reference to this locale.    */    const locale&    operator=(const locale& __other) throw();    /**     *  @brief  Construct locale with another facet.     *     *  Constructs and returns a new copy of this locale.  Adds or replaces an     *  existing facet of type Facet from the locale @a other into the new     *  locale.     *     *  @param  Facet  The facet type to copy from other     *  @param  other  The locale to copy from.     *  @return  Newly constructed locale.     *  @throw  std::runtime_error if other has no facet of type Facet.    */    template<typename _Facet>      locale      combine(const locale& __other) const;    // Locale operations:    /**     *  @brief  Return locale name.     *  @return  Locale name or "*" if unnamed.    */    string    name() const;    /**     *  @brief  Locale equality.     *     *  @param  other  The locale to compare against.     *  @return  True if other and this refer to the same locale instance, are     *		 copies, or have the same name.  False otherwise.    */    bool    operator==(const locale& __other) const throw ();    /**     *  @brief  Locale inequality.     *     *  @param  other  The locale to compare against.     *  @return  ! (*this == other)    */    inline bool    operator!=(const locale& __other) const throw ()    { return !(this->operator==(__other));  }    /**     *  @brief  Compare two strings according to collate.     *     *  Template operator to compare two strings using the compare function of     *  the collate facet in this locale.  One use is to provide the locale to     *  the sort function.  For example, a vector v of strings could be sorted     *  according to locale loc by doing:     *  @code     *  std::sort(v.begin(), v.end(), loc);     *  @endcode     *     *  @param  s1  First string to compare.     *  @param  s2  Second string to compare.     *  @return  True if collate<Char> facet compares s1 < s2, else false.    */    template<typename _Char, typename _Traits, typename _Alloc>      bool      operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,		 const basic_string<_Char, _Traits, _Alloc>& __s2) const;    // Global locale objects:    /**     *  @brief  Set global locale     *     *  This function sets the global locale to the argument and returns a     *  copy of the previous global locale.  If the argument has a name, it     *  will also call std::setlocale(LC_ALL, loc.name()).     *     *  @param  locale  The new locale to make global.     *  @return  Copy of the old global locale.    */    static locale    global(const locale&);    /**     *  @brief  Return reference to the "C" locale.    */    static const locale&    classic();  private:    // The (shared) implementation    _Impl*		_M_impl;    // The "C" reference locale    static _Impl*       _S_classic;    // Current global locale    static _Impl*	_S_global;    // Names of underlying locale categories.    // NB: locale::global() has to know how to modify all the    // underlying categories, not just the ones required by the C++    // standard.    static const char* const* const _S_categories;    // Number of standard categories. For C++, these categories are

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -