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

📄 mstl_char_traits.hpp

📁 一个类STL的多平台可移植的算法容器库,主要用于嵌入式系统编程时的内存管理等方面
💻 HPP
📖 第 1 页 / 共 3 页
字号:

    static char_type to_char_type( const int_type& i )
        {  return static_cast<char_type>( i );  }
    static int_type to_int_type( const char_type& c )
        {  return static_cast<int_type>( c );  }
    static bool eq_int_type( const int_type& i1, const int_type& i2 )
        {  return ( i1 == i2 );  }

    static int_type eof()
        {  return static_cast<int_type>( WEOF );  }
    static int_type not_eof( const int_type& i )
        {  return ( i == eof() ? 0 : i );  }

    static size_type length( const char_type* s )
        {  return wcslen(s);  }

    static int compare( const char_type* s1, const char_type* s2, size_type count )
        {  return wcharcmp_lower( s1, s2, count );  }

    static char_type* copy( char_type* d, const char_type* s, size_type count )
        {  return wmemcpy( d, s, count );  }

    static char_type* move( char_type* d, const char_type* s, size_type count )
        {  return wmemmove( d, s, count );  }

    static char_type* assign( char_type* d, size_type count, const char_type& c )
        {  return wmemset( d, c, count );  }

    static const char_type*
    find( const char_type* buf, size_type count, const char_type& c )
        {  return wmemchr( buf, c, count );  }

}; //end cmp_no_case_wchar_traits

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

class lower_wchar_traits  //全部是小写wchar_t的traits
{
public:
    typedef  wchar_t     char_type;
    typedef  wint_t      int_type;
    typedef  wstreamoff  pos_type;
    typedef  wstreampos  off_type;
    typedef  mbstate_t   state_type;
    typedef  def_size_t  size_type;

    static char_type eos()             {  return 0;  }
    static bool is_del( char_type c )  {  return iswspace(c);  }

    static void assign( char_type& d, const char_type& s )
        {  d = towlower(s);  }
    static bool eq( const char_type& c1, const char_type& c2 )
        {  return ( c1 == c2 );  }
    static bool lt( const char_type& c1, const char_type& c2 )
        {  return ( c1 < c2 );  }

    static char_type to_char_type( const int_type& i )
        {  return static_cast<char_type>( i );  }
    static int_type to_int_type( const char_type& c )
        {  return static_cast<int_type>( c );  }
    static bool eq_int_type( const int_type& i1, const int_type& i2 )
        {  return ( i1 == i2 );  }

    static int_type eof()
        {  return static_cast<int_type>( WEOF );  }
    static int_type not_eof( const int_type& i )
        {  return ( i == eof() ? 0 : i );  }

    static size_type length( const char_type* s )
        {  return wcslen(s);  }

    static int compare( const char_type* s1, const char_type* s2, size_type count )
    {
        int result = wmemcmp( s1, s2, count );
        if( result == 0 )
            return 0;
        else
            return ( result < 0 ? -1 : 1 );
    }

    static char_type* copy( char_type* d, const char_type* s, size_type count )
        {  return wcharcopy_lower( d, s, count );  }

    static char_type* move( char_type* d, const char_type* s, size_type count )
        {  return wcharmove_lower( d, s, count );  }

    static char_type* assign( char_type* d, size_type count, const char_type& c )
        {  return wcharset_lower( d, c, count );  }

    static const char_type*
    find( const char_type* buf, size_type count, const char_type& c )
        {  return wmemchr( buf, c, count );  }

}; //end lower_wchar_traits

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

class upper_wchar_traits  //全部是大写wchar_t的traits
{
public:
    typedef  wchar_t     char_type;
    typedef  wint_t      int_type;
    typedef  wstreamoff  pos_type;
    typedef  wstreampos  off_type;
    typedef  mbstate_t   state_type;
    typedef  def_size_t  size_type;

    static char_type eos()             {  return 0;  }
    static bool is_del( char_type c )  {  return iswspace(c);  }

    static void assign( char_type& d, const char_type& s )
        {  d = towupper(s);  }
    static bool eq( const char_type& c1, const char_type& c2 )
        {  return ( c1 == c2 );  }
    static bool lt( const char_type& c1, const char_type& c2 )
        {  return ( c1 < c2 );  }

    static char_type to_char_type( const int_type& i )
        {  return static_cast<char_type>( i );  }
    static int_type to_int_type( const char_type& c )
        {  return static_cast<int_type>( c );  }
    static bool eq_int_type( const int_type& i1, const int_type& i2 )
        {  return ( i1 == i2 );  }

    static int_type eof()
        {  return static_cast<int_type>( WEOF );  }
    static int_type not_eof( const int_type& i )
        {  return ( i == eof() ? 0 : i );  }

    static size_type length( const char_type* s )
        {  return wcslen(s);  }

    static int compare( const char_type* s1, const char_type* s2, size_type count )
    {
        int result = wmemcmp( s1, s2, count );
        if( result == 0 )
            return 0;
        else
            return ( result < 0 ? -1 : 1 );
    }

    static char_type* copy( char_type* d, const char_type* s, size_type count )
        {  return wcharcopy_upper( d, s, count );  }

    static char_type* move( char_type* d, const char_type* s, size_type count )
        {  return wcharmove_upper( d, s, count );  }

    static char_type* assign( char_type* d, size_type count, const char_type& c )
        {  return wcharset_upper( d, c, count );  }

    static const char_type*
    find( const char_type* buf, size_type count, const char_type& c )
        {  return wmemchr( buf, c, count );  }

}; //end upper_wchar_traits

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

//字符串内全部是小写wchar_t并且和其他字符串进行比较时不区分大小写的traits
class cmp_no_case_lower_wchar_traits
{
public:
    typedef  wchar_t     char_type;
    typedef  wint_t      int_type;
    typedef  wstreamoff  pos_type;
    typedef  wstreampos  off_type;
    typedef  mbstate_t   state_type;
    typedef  def_size_t  size_type;

    static char_type eos()             {  return 0;  }
    static bool is_del( char_type c )  {  return iswspace(c);  }

    static void assign( char_type& d, const char_type& s )
        {  d = towlower(s);  }
    static bool eq( const char_type& c1, const char_type& c2 )
        {  return ( towlower(c1) == towlower(c2) );  }
    static bool lt( const char_type& c1, const char_type& c2 )
        {  return ( towlower(c1) < towlower(c2) );  }

    static char_type to_char_type( const int_type& i )
        {  return static_cast<char_type>( i );  }
    static int_type to_int_type( const char_type& c )
        {  return static_cast<int_type>( c );  }
    static bool eq_int_type( const int_type& i1, const int_type& i2 )
        {  return ( i1 == i2 );  }

    static int_type eof()
        {  return static_cast<int_type>( WEOF );  }
    static int_type not_eof( const int_type& i )
        {  return ( i == eof() ? 0 : i );  }

    static size_type length( const char_type* s )
        {  return wcslen(s);  }

    static int compare( const char_type* s1, const char_type* s2, size_type count )
        {  return wcharcmp_lower( s1, s2, count );  }

    static char_type* copy( char_type* d, const char_type* s, size_type count )
        {  return wcharcopy_lower( d, s, count );  }

    static char_type* move( char_type* d, const char_type* s, size_type count )
        {  return wcharmove_lower( d, s, count );  }

    static char_type* assign( char_type* d, size_type count, const char_type& c )
        {  return wcharset_lower( d, c, count );  }

    static const char_type*
    find( const char_type* buf, size_type count, const char_type& c )
        {  return wmemchr( buf, c, count );  }

}; //end cmp_no_case_lower_wchar_traits

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

//字符串内全部是大写wchar_t并且和其他字符串进行比较时不区分大小写的traits
class cmp_no_case_upper_wchar_traits
{
public:
    typedef  wchar_t     char_type;
    typedef  wint_t      int_type;
    typedef  wstreamoff  pos_type;
    typedef  wstreampos  off_type;
    typedef  mbstate_t   state_type;
    typedef  def_size_t  size_type;

    static char_type eos()             {  return 0;  }
    static bool is_del( char_type c )  {  return iswspace(c);  }

    static void assign( char_type& d, const char_type& s )
        {  d = towupper(s);  }
    static bool eq( const char_type& c1, const char_type& c2 )
        {  return ( towupper(c1) == towupper(c2) );  }
    static bool lt( const char_type& c1, const char_type& c2 )
        {  return ( towupper(c1) < towupper(c2) );  }

    static char_type to_char_type( const int_type& i )
        {  return static_cast<char_type>( i );  }
    static int_type to_int_type( const char_type& c )
        {  return static_cast<int_type>( c );  }
    static bool eq_int_type( const int_type& i1, const int_type& i2 )
        {  return ( i1 == i2 );  }

    static int_type eof()
        {  return static_cast<int_type>( WEOF );  }
    static int_type not_eof( const int_type& i )
        {  return ( i == eof() ? 0 : i );  }

    static size_type length( const char_type* s )
        {  return wcslen(s);  }

    static int compare( const char_type* s1, const char_type* s2, size_type count )
        {  return wcharcmp_upper( s1, s2, count );  }

    static char_type* copy( char_type* d, const char_type* s, size_type count )
        {  return wcharcopy_upper( d, s, count );  }

    static char_type* move( char_type* d, const char_type* s, size_type count )
        {  return wcharmove_upper( d, s, count );  }

    static char_type* assign( char_type* d, size_type count, const char_type& c )
        {  return wcharset_upper( d, c, count );  }

    static const char_type*
    find( const char_type* buf, size_type count, const char_type& c )
        {  return wmemchr( buf, c, count );  }

}; //end cmp_no_case_upper_wchar_traits

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
__MACRO_CPLUSPLUS_MINI_STL_END_NAMESPACE__
#endif
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------

⌨️ 快捷键说明

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