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

📄 locale_facets.h

📁 openRisc2000编译链接器等,用于i386 cygwin
💻 H
📖 第 1 页 / 共 5 页
字号:
       *  @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 = 0;      /**       *  @brief  Find char_type matching mask       *       *  This function searches for and returns the first char_type 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 char_type if found, else @a hi.      */      virtual const char_type*      do_scan_is(mask __m, const char_type* __lo,		 const char_type* __hi) const = 0;      /**       *  @brief  Find char_type not matching mask       *       *  This function searches for and returns a pointer to the first       *  char_type 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 char_type if found, else @a hi.      */      virtual const char_type*      do_scan_not(mask __m, const char_type* __lo,		  const char_type* __hi) const = 0;      /**       *  @brief  Convert to uppercase.       *       *  This virtual function converts the char_type 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 char_type to convert.       *  @return  The uppercase char_type if convertible, else @a c.      */      virtual char_type      do_toupper(char_type) const = 0;      /**       *  @brief  Convert array to uppercase.       *       *  This virtual function converts each char_type 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 = 0;      /**       *  @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 char_type to convert.       *  @return  The lowercase char_type if convertible, else @a c.      */      virtual char_type      do_tolower(char_type) const = 0;      /**       *  @brief  Convert array to lowercase.       *       *  This virtual function converts each char_type 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 = 0;      /**       *  @brief  Widen char       *       *  This virtual function converts the char to char_type using the       *  simplest reasonable transformation.       *       *  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 char_type      */      virtual char_type      do_widen(char) const = 0;      /**       *  @brief  Widen char array       *       *  This function converts each char in the input to char_type using the       *  simplest reasonable transformation.       *       *  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 = 0;      /**       *  @brief  Narrow char_type to char       *       *  This virtual function converts the argument to char using the       *  simplest reasonable transformation.  If the conversion fails, dfault       *  is returned instead.       *       *  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 char_type to convert.       *  @param dfault  Char to return if conversion fails.       *  @return  The converted char.      */      virtual char      do_narrow(char_type, char __dfault) const = 0;      /**       *  @brief  Narrow char_type array to char       *       *  This virtual function converts each char_type in the range [lo,hi) to       *  char using the simplest reasonable transformation and writes the       *  results to the destination array.  For any element in the input that       *  cannot be converted, @a dfault is used instead.       *       *  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 = 0;    };  // NB: Generic, mostly useless implementation.  /**   *  @brief  Template ctype facet   *   *  This template class defines classification and conversion functions for   *  character sets.  It wraps <cctype> functionality.  Ctype gets used by   *  streams for many I/O operations.   *   *  This template provides the protected virtual functions the developer   *  will have to replace in a derived class or specialization to make a   *  working facet.  The public functions that access them are defined in   *  __ctype_abstract_base, to allow for implementation flexibility.  See   *  ctype<wchar_t> for an example.  The functions are documented in   *  __ctype_abstract_base.   *   *  Note: implementations are provided for all the protected virtual   *  functions, but will likely not be useful.  */  template<typename _CharT>    class ctype : public __ctype_abstract_base<_CharT>    {    public:      // Types:      typedef _CharT			char_type;      typedef typename __ctype_abstract_base<_CharT>::mask mask;      /// The facet id for ctype<char_type>      static locale::id			id;      explicit      ctype(size_t __refs = 0) : __ctype_abstract_base<_CharT>(__refs) { }   protected:      virtual      ~ctype();      virtual bool      do_is(mask __m, char_type __c) const;      virtual const char_type*      do_is(const char_type* __lo, const char_type* __hi, mask* __vec) const;      virtual const char_type*      do_scan_is(mask __m, const char_type* __lo, const char_type* __hi) const;      virtual const char_type*      do_scan_not(mask __m, const char_type* __lo,		  const char_type* __hi) const;      virtual char_type      do_toupper(char_type __c) const;      virtual const char_type*      do_toupper(char_type* __lo, const char_type* __hi) const;      virtual char_type      do_tolower(char_type __c) const;      virtual const char_type*      do_tolower(char_type* __lo, const char_type* __hi) const;      virtual char_type      do_widen(char __c) const;      virtual const char*      do_widen(const char* __lo, const char* __hi, char_type* __dest) const;      virtual char      do_narrow(char_type, char __dfault) const;      virtual const char_type*      do_narrow(const char_type* __lo, const char_type* __hi,		char __dfault, char* __dest) const;    };  template<typename _CharT>    locale::id ctype<_CharT>::id;  // 22.2.1.3  ctype<char> specialization.  /**   *  @brief  The ctype<char> specialization.   *   *  This class defines classification and conversion functions for   *  the char type.  It gets used by char streams for many I/O   *  operations.  The char specialization provides a number of   *  optimizations as well.  */  template<>    class ctype<char> : public locale::facet, public ctype_base    {    public:      // Types:      /// Typedef for the template parameter char.      typedef char		char_type;    protected:      // Data Members:      __c_locale		_M_c_locale_ctype;      bool			_M_del;      __to_type			_M_toupper;      __to_type			_M_tolower;      const mask*		_M_table;      mutable char		_M_widen_ok;      mutable char		_M_widen[1 + static_cast<unsigned char>(-1)];      mutable char		_M_narrow[1 + static_cast<unsigned char>(-1)];      mutable char		_M_narrow_ok;	// 0 uninitialized, 1 init,						// 2 memcpy can't be used    public:      /// The facet id for ctype<char>      static locale::id        id;      /// The size of the mask table.  It is SCHAR_MAX + 1.      static const size_t      table_size = 1 + static_cast<unsigned char>(-1);      /**       *  @brief  Constructor performs initialization.       *       *  This is the constructor provided by the standard.       *       *  @param table If non-zero, table is used as the per-char mask.       *               Else classic_table() is used.       *  @param del   If true, passes ownership of table to this facet.       *  @param refs  Passed to the base facet class.      */      explicit      ctype(const mask* __table = 0, bool __del = false, 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 table If non-zero, table is used as the per-char mask.       *  @param del   If true, passes ownership of table to this facet.       *  @param refs  Passed to the base facet class.      */      explicit      ctype(__c_locale __cloc, const mask* __table = 0, bool __del = false,	    size_t __refs = 0);      /**       *  @brief  Test char classification.       *       *  This function compares the mask table[c] to @a m.       *       *  @param c  The char to compare the mask of.       *  @param m  The mask to compare against.       *  @return  True if m & table[c] is true, false otherwise.      */      inline bool      is(mask __m, char __c) const;      /**       *  @brief  Return a mask array.       *       *  This function finds the mask for each char in the range [lo, hi) and       *  successively writes it to vec.  vec must have as many elements as       *  the char array.       *       *  @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.      */      inline const char*      is(const char* __lo, const char* __hi, mask* __vec) const;      /**       *  @brief  Find char matching a mask       *       *  This function searches for and returns the first char in [lo,hi) for       *  which is(m,char) is true.       *       *  @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 char if found, else @a hi.      */      inline const char*      scan_is(mask __m, const char* __lo, const char* __hi) const;

⌨️ 快捷键说明

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