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

📄 locale_facets.h

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 H
📖 第 1 页 / 共 5 页
字号:
	return __hi;      }    private:      void _M_widen_init() const      {	char __tmp[sizeof(_M_widen)];	for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)	  __tmp[__i] = __i;	do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);	_M_widen_ok = 1;	// Set _M_widen_ok to 2 if memcpy can't be used.	if (memcmp(__tmp, _M_widen, sizeof(_M_widen)))	  _M_widen_ok = 2;      }      // Fill in the narrowing cache and flag whether all values are      // valid or not.  _M_narrow_ok is set to 2 if memcpy can't      // be used.      void _M_narrow_init() const      {	char __tmp[sizeof(_M_narrow)];	for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)	  __tmp[__i] = __i;	do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);	_M_narrow_ok = 1;	if (memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))	  _M_narrow_ok = 2;	else	  {	    // Deal with the special case of zero: renarrow with a	    // different default and compare.	    char __c;	    do_narrow(__tmp, __tmp + 1, 1, &__c);	    if (__c == 1)	      _M_narrow_ok = 2;	  }      }    };  template<>    const ctype<char>&    use_facet<ctype<char> >(const locale& __loc);#ifdef _GLIBCXX_USE_WCHAR_T  // 22.2.1.3  ctype<wchar_t> specialization  /**   *  @brief  The ctype<wchar_t> specialization.   *   *  This class defines classification and conversion functions for the   *  wchar_t type.  It gets used by wchar_t streams for many I/O operations.   *  The wchar_t specialization provides a number of optimizations as well.   *   *  ctype<wchar_t> inherits its public methods from   *  __ctype_abstract_base<wchar_t>.  */  template<>    class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>    {    public:      // Types:      /// Typedef for the template parameter wchar_t.      typedef wchar_t		char_type;      typedef wctype_t		__wmask_type;    protected:      __c_locale		_M_c_locale_ctype;      // Pre-computed narrowed and widened chars.      bool                      _M_narrow_ok;      char                      _M_narrow[128];      wint_t                    _M_widen[1 + static_cast<unsigned char>(-1)];      // Pre-computed elements for do_is.      mask                      _M_bit[16];      __wmask_type              _M_wmask[16];    public:      // Data Members:      /// The facet id for ctype<wchar_t>      static locale::id		id;      /**       *  @brief  Constructor performs initialization.       *       *  This is the constructor provided by the standard.       *       *  @param refs  Passed to the base facet class.      */      explicit      ctype(size_t __refs = 0);      /**       *  @brief  Constructor performs static initialization.       *       *  This constructor is used to construct the initial C locale facet.       *       *  @param cloc  Handle to C locale data.       *  @param refs  Passed to the base facet class.      */      explicit      ctype(__c_locale __cloc, size_t __refs = 0);    protected:      __wmask_type      _M_convert_to_wmask(const mask __m) const;      /// Destructor      virtual      ~ctype();      /**       *  @brief  Test wchar_t classification.       *       *  This function finds a mask M for @a c and compares it to mask @a m.       *       *  do_is() is a hook for a derived facet to change the behavior of       *  classifying.  do_is() must always return the same result for the       *  same input.       *       *  @param c  The wchar_t to find the mask of.       *  @param m  The mask to compare against.       *  @return  (M & m) != 0.      */      virtual bool      do_is(mask __m, char_type __c) const;      /**       *  @brief  Return a mask array.       *       *  This function finds the mask for each wchar_t in the range [lo,hi)       *  and successively writes it to vec.  vec must have as many elements       *  as the input.       *       *  do_is() is a hook for a derived facet to change the behavior of       *  classifying.  do_is() must always return the same result for the       *  same input.       *       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @param vec  Pointer to an array of mask storage.       *  @return  @a hi.      */      virtual const char_type*      do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;      /**       *  @brief  Find wchar_t matching mask       *       *  This function searches for and returns the first wchar_t c in       *  [lo,hi) for which is(m,c) is true.       *       *  do_scan_is() is a hook for a derived facet to change the behavior of       *  match searching.  do_is() must always return the same result for the       *  same input.       *       *  @param m  The mask to compare against.       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @return  Pointer to a matching wchar_t if found, else @a hi.      */      virtual const char_type*      do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;      /**       *  @brief  Find wchar_t not matching mask       *       *  This function searches for and returns a pointer to the first       *  wchar_t c of [lo,hi) for which is(m,c) is false.       *       *  do_scan_is() is a hook for a derived facet to change the behavior of       *  match searching.  do_is() must always return the same result for the       *  same input.       *       *  @param m  The mask to compare against.       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @return  Pointer to a non-matching wchar_t if found, else @a hi.      */      virtual const char_type*      do_scan_not(mask __m, const char_type* __lo,		  const char_type* __hi) const;      /**       *  @brief  Convert to uppercase.       *       *  This virtual function converts the wchar_t argument to uppercase if       *  possible.  If not possible (for example, '2'), returns the argument.       *       *  do_toupper() is a hook for a derived facet to change the behavior of       *  uppercasing.  do_toupper() must always return the same result for       *  the same input.       *       *  @param c  The wchar_t to convert.       *  @return  The uppercase wchar_t if convertible, else @a c.      */      virtual char_type      do_toupper(char_type) const;      /**       *  @brief  Convert array to uppercase.       *       *  This virtual function converts each wchar_t in the range [lo,hi) to       *  uppercase if possible.  Other elements remain untouched.       *       *  do_toupper() is a hook for a derived facet to change the behavior of       *  uppercasing.  do_toupper() must always return the same result for       *  the same input.       *       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @return  @a hi.      */      virtual const char_type*      do_toupper(char_type* __lo, const char_type* __hi) const;      /**       *  @brief  Convert to lowercase.       *       *  This virtual function converts the argument to lowercase if       *  possible.  If not possible (for example, '2'), returns the argument.       *       *  do_tolower() is a hook for a derived facet to change the behavior of       *  lowercasing.  do_tolower() must always return the same result for       *  the same input.       *       *  @param c  The wchar_t to convert.       *  @return  The lowercase wchar_t if convertible, else @a c.      */      virtual char_type      do_tolower(char_type) const;      /**       *  @brief  Convert array to lowercase.       *       *  This virtual function converts each wchar_t in the range [lo,hi) to       *  lowercase if possible.  Other elements remain untouched.       *       *  do_tolower() is a hook for a derived facet to change the behavior of       *  lowercasing.  do_tolower() must always return the same result for       *  the same input.       *       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @return  @a hi.      */      virtual const char_type*      do_tolower(char_type* __lo, const char_type* __hi) const;      /**       *  @brief  Widen char to wchar_t       *       *  This virtual function converts the char to wchar_t using the       *  simplest reasonable transformation.  For an underived ctype<wchar_t>       *  facet, the argument will be cast to wchar_t.       *       *  do_widen() is a hook for a derived facet to change the behavior of       *  widening.  do_widen() must always return the same result for the       *  same input.       *       *  Note: this is not what you want for codepage conversions.  See       *  codecvt for that.       *       *  @param c  The char to convert.       *  @return  The converted wchar_t.      */      virtual char_type      do_widen(char) const;      /**       *  @brief  Widen char array to wchar_t array       *       *  This function converts each char in the input to wchar_t using the       *  simplest reasonable transformation.  For an underived ctype<wchar_t>       *  facet, the argument will be copied, casting each element to wchar_t.       *       *  do_widen() is a hook for a derived facet to change the behavior of       *  widening.  do_widen() must always return the same result for the       *  same input.       *       *  Note: this is not what you want for codepage conversions.  See       *  codecvt for that.       *       *  @param lo  Pointer to start range.       *  @param hi  Pointer to end of range.       *  @param to  Pointer to the destination array.       *  @return  @a hi.      */      virtual const char*      do_widen(const char* __lo, const char* __hi, char_type* __dest) const;      /**       *  @brief  Narrow wchar_t to char       *       *  This virtual function converts the argument to char using       *  the simplest reasonable transformation.  If the conversion       *  fails, dfault is returned instead.  For an underived       *  ctype<wchar_t> facet, @a c will be cast to char and       *  returned.       *       *  do_narrow() is a hook for a derived facet to change the       *  behavior of narrowing.  do_narrow() must always return the       *  same result for the same input.       *       *  Note: this is not what you want for codepage conversions.  See       *  codecvt for that.       *       *  @param c  The wchar_t to convert.       *  @param dfault  Char to return if conversion fails.       *  @return  The converted char.      */      virtual char      do_narrow(char_type, char __dfault) const;      /**       *  @brief  Narrow wchar_t array to char array       *       *  This virtual function converts each wchar_t in the range [lo,hi) to       *  char using the simplest reasonable transformation and writes the       *  results to the destination array.  For any wchar_t in the input that       *  cannot be converted, @a dfault is used instead.  For an underived       *  ctype<wchar_t> facet, the argument will be copied, casting each       *  element to char.       *       *  do_narrow() is a hook for a derived facet to change the behavior of       *  narrowing.  do_narrow() must always return the same result for the       *  same input.       *       *  Note: this is not what you want for codepage conversions.  See       *  codecvt for that.       *       *  @param lo  Pointer to start of range.       *  @param hi  Pointer to end of range.       *  @param dfault  Char to use if conversion fails.       *  @param to  Pointer to the destination array.       *  @return  @a hi.      */      virtual const char_type*      do_narrow(const char_type* __lo, const char_type* __hi,		char __dfault, char* __dest) const;      // For use at construction time only.      void      _M_initialize_ctype();    };  template<>    const ctype<wchar_t>&    use_facet<ctype<wchar_t> >(const locale& __loc);#endif //_GLIBCXX_USE_WCHAR_T  // Include host and configuration specific ctype inlines.  #include <bits/ctype_inline.h>  // 22.2.1.2  Template class ctype_byname  template<typename _CharT>    class ctype_byname : public ctype<_CharT>    {    public:      typedef _CharT		char_type;      explicit      ctype_byname(const char* __s, size_t __refs = 0);    protected:      virtual      ~ctype_byname() { };    };  // 22.2.1.4  Class ctype_byname specializations.  template<>    ctype_byname<char>::ctype_byname(const char*, size_t refs);  template<>    ctype_byname<wchar_t>::ctype_byname(const char*, size_t refs);  // 22.2.1.5  Template class codecvt  #include <bits/codecvt.h>  // 22.2.2  The numeric category.  class __num_base

⌨️ 快捷键说明

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