imgtools/imglib/boostlibrary/boost/regex/v4/c_regex_traits.hpp
changeset 600 6d08f4a05d93
equal deleted inserted replaced
599:fa7a3cc6effd 600:6d08f4a05d93
       
     1 /*
       
     2  *
       
     3  * Copyright (c) 2004
       
     4  * John Maddock
       
     5  *
       
     6  * Use, modification and distribution are subject to the 
       
     7  * Boost Software License, Version 1.0. (See accompanying file 
       
     8  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       
     9  *
       
    10  */
       
    11  
       
    12  /*
       
    13   *   LOCATION:    see http://www.boost.org for most recent version.
       
    14   *   FILE         c_regex_traits.hpp
       
    15   *   VERSION      see <boost/version.hpp>
       
    16   *   DESCRIPTION: Declares regular expression traits class that wraps the global C locale.
       
    17   */
       
    18 
       
    19 #ifndef BOOST_C_REGEX_TRAITS_HPP_INCLUDED
       
    20 #define BOOST_C_REGEX_TRAITS_HPP_INCLUDED
       
    21 
       
    22 #ifndef BOOST_REGEX_CONFIG_HPP
       
    23 #include <boost/regex/config.hpp>
       
    24 #endif
       
    25 #ifndef BOOST_REGEX_WORKAROUND_HPP
       
    26 #include <boost/regex/v4/regex_workaround.hpp>
       
    27 #endif
       
    28 
       
    29 #include <cctype>
       
    30 
       
    31 #ifdef BOOST_NO_STDC_NAMESPACE
       
    32 namespace std{
       
    33    using ::strlen; using ::tolower;
       
    34 }
       
    35 #endif
       
    36 
       
    37 #ifdef BOOST_MSVC
       
    38 #pragma warning(push)
       
    39 #pragma warning(disable: 4103)
       
    40 #endif
       
    41 #ifdef BOOST_HAS_ABI_HEADERS
       
    42 #  include BOOST_ABI_PREFIX
       
    43 #endif
       
    44 #ifdef BOOST_MSVC
       
    45 #pragma warning(pop)
       
    46 #endif
       
    47 
       
    48 namespace boost{
       
    49 
       
    50 template <class charT>
       
    51 struct c_regex_traits;
       
    52 
       
    53 template<>
       
    54 struct BOOST_REGEX_DECL c_regex_traits<char>
       
    55 {
       
    56    c_regex_traits(){}
       
    57    typedef char char_type;
       
    58    typedef std::size_t size_type;
       
    59    typedef std::string string_type;
       
    60    struct locale_type{};
       
    61    typedef boost::uint32_t char_class_type;
       
    62 
       
    63    static size_type length(const char_type* p) 
       
    64    { 
       
    65       return (std::strlen)(p); 
       
    66    }
       
    67 
       
    68    char translate(char c) const 
       
    69    { 
       
    70       return c; 
       
    71    }
       
    72    char translate_nocase(char c) const 
       
    73    { 
       
    74       return static_cast<char>((std::tolower)(static_cast<unsigned char>(c))); 
       
    75    }
       
    76 
       
    77    static string_type BOOST_REGEX_CALL transform(const char* p1, const char* p2);
       
    78    static string_type BOOST_REGEX_CALL transform_primary(const char* p1, const char* p2);
       
    79 
       
    80    static char_class_type BOOST_REGEX_CALL lookup_classname(const char* p1, const char* p2);
       
    81    static string_type BOOST_REGEX_CALL lookup_collatename(const char* p1, const char* p2);
       
    82 
       
    83    static bool BOOST_REGEX_CALL isctype(char, char_class_type);
       
    84    static int BOOST_REGEX_CALL value(char, int);
       
    85 
       
    86    locale_type imbue(locale_type l)
       
    87    { return l; }
       
    88    locale_type getloc()const
       
    89    { return locale_type(); }
       
    90 
       
    91 private:
       
    92    // this type is not copyable:
       
    93    c_regex_traits(const c_regex_traits&);
       
    94    c_regex_traits& operator=(const c_regex_traits&);
       
    95 };
       
    96 
       
    97 #ifndef BOOST_NO_WREGEX
       
    98 template<>
       
    99 struct BOOST_REGEX_DECL c_regex_traits<wchar_t>
       
   100 {
       
   101    c_regex_traits(){}
       
   102    typedef wchar_t char_type;
       
   103    typedef std::size_t size_type;
       
   104    typedef std::wstring string_type;
       
   105    struct locale_type{};
       
   106    typedef boost::uint32_t char_class_type;
       
   107 
       
   108    static size_type length(const char_type* p) 
       
   109    { 
       
   110       return (std::wcslen)(p); 
       
   111    }
       
   112 
       
   113    wchar_t translate(wchar_t c) const 
       
   114    { 
       
   115       return c; 
       
   116    }
       
   117    wchar_t translate_nocase(wchar_t c) const 
       
   118    { 
       
   119       return (std::towlower)(c); 
       
   120    }
       
   121 
       
   122    static string_type BOOST_REGEX_CALL transform(const wchar_t* p1, const wchar_t* p2);
       
   123    static string_type BOOST_REGEX_CALL transform_primary(const wchar_t* p1, const wchar_t* p2);
       
   124 
       
   125    static char_class_type BOOST_REGEX_CALL lookup_classname(const wchar_t* p1, const wchar_t* p2);
       
   126    static string_type BOOST_REGEX_CALL lookup_collatename(const wchar_t* p1, const wchar_t* p2);
       
   127 
       
   128    static bool BOOST_REGEX_CALL isctype(wchar_t, char_class_type);
       
   129    static int BOOST_REGEX_CALL value(wchar_t, int);
       
   130 
       
   131    locale_type imbue(locale_type l)
       
   132    { return l; }
       
   133    locale_type getloc()const
       
   134    { return locale_type(); }
       
   135 
       
   136 private:
       
   137    // this type is not copyable:
       
   138    c_regex_traits(const c_regex_traits&);
       
   139    c_regex_traits& operator=(const c_regex_traits&);
       
   140 };
       
   141 
       
   142 #ifdef BOOST_REGEX_HAS_OTHER_WCHAR_T
       
   143 //
       
   144 // Provide an unsigned short version as well, so the user can link to this
       
   145 // no matter whether they build with /Zc:wchar_t or not (MSVC specific).
       
   146 //
       
   147 template<>
       
   148 struct BOOST_REGEX_DECL c_regex_traits<unsigned short>
       
   149 {
       
   150    c_regex_traits(){}
       
   151    typedef unsigned short char_type;
       
   152    typedef std::size_t size_type;
       
   153    typedef std::basic_string<unsigned short> string_type;
       
   154    struct locale_type{};
       
   155    typedef boost::uint32_t char_class_type;
       
   156 
       
   157    static size_type length(const char_type* p) 
       
   158    { 
       
   159       return (std::wcslen)((const wchar_t*)p); 
       
   160    }
       
   161 
       
   162    unsigned short translate(unsigned short c) const 
       
   163    { 
       
   164       return c; 
       
   165    }
       
   166    unsigned short translate_nocase(unsigned short c) const 
       
   167    { 
       
   168       return (std::towlower)((wchar_t)c); 
       
   169    }
       
   170 
       
   171    static string_type BOOST_REGEX_CALL transform(const unsigned short* p1, const unsigned short* p2);
       
   172    static string_type BOOST_REGEX_CALL transform_primary(const unsigned short* p1, const unsigned short* p2);
       
   173 
       
   174    static char_class_type BOOST_REGEX_CALL lookup_classname(const unsigned short* p1, const unsigned short* p2);
       
   175    static string_type BOOST_REGEX_CALL lookup_collatename(const unsigned short* p1, const unsigned short* p2);
       
   176 
       
   177    static bool BOOST_REGEX_CALL isctype(unsigned short, char_class_type);
       
   178    static int BOOST_REGEX_CALL value(unsigned short, int);
       
   179 
       
   180    locale_type imbue(locale_type l)
       
   181    { return l; }
       
   182    locale_type getloc()const
       
   183    { return locale_type(); }
       
   184 
       
   185 private:
       
   186    // this type is not copyable:
       
   187    c_regex_traits(const c_regex_traits&);
       
   188    c_regex_traits& operator=(const c_regex_traits&);
       
   189 };
       
   190 
       
   191 #endif
       
   192 
       
   193 #endif // BOOST_NO_WREGEX
       
   194 
       
   195 }
       
   196 
       
   197 #ifdef BOOST_MSVC
       
   198 #pragma warning(push)
       
   199 #pragma warning(disable: 4103)
       
   200 #endif
       
   201 #ifdef BOOST_HAS_ABI_HEADERS
       
   202 #  include BOOST_ABI_SUFFIX
       
   203 #endif
       
   204 #ifdef BOOST_MSVC
       
   205 #pragma warning(pop)
       
   206 #endif
       
   207 
       
   208 #endif
       
   209 
       
   210 
       
   211