Fix regex_traits<T>::char_class_type for Android.

Android can't use ctype_base::mask for its char_class_type because the
bionic ctype implementation comes from openbsd, which uses an 8-bit
ctype mask which isn't large enough to encode the standard ctypes and
__regex_word.

Change-Id: Iee4b8dd465ff2cb358ed2b10e1c3a499437403b7
This commit is contained in:
Dan Albert
2014-07-22 18:37:52 -07:00
parent 5d14883f1b
commit e7a75ccf2d

View File

@@ -962,9 +962,18 @@ public:
typedef _CharT char_type; typedef _CharT char_type;
typedef basic_string<char_type> string_type; typedef basic_string<char_type> string_type;
typedef locale locale_type; typedef locale locale_type;
#ifdef __ANDROID__
typedef uint16_t char_class_type;
#else
typedef ctype_base::mask char_class_type; typedef ctype_base::mask char_class_type;
#endif
#ifdef __ANDROID__
static const char_class_type __regex_word = 0x8000;
#else
static const char_class_type __regex_word = 0x80; static const char_class_type __regex_word = 0x80;
#endif
private: private:
locale __loc_; locale __loc_;
const ctype<char_type>* __ct_; const ctype<char_type>* __ct_;