mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-24 12:02:36 +08:00
Base regex code on char_class_type.
__get_classname() and __bracket_expression were assuming that char_class_type was ctype_base::mask rather than using regex_traits<_CharT>::char_class_type. This change allows char_class_type to be defined to something other than ctype_base::mask so that the implementation will still work for platforms with an 8-bit ctype mask (such as Android and OpenBSD). git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@214201 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -207,7 +207,7 @@ const collationnames collatenames[] =
|
||||
struct classnames
|
||||
{
|
||||
const char* elem_;
|
||||
ctype_base::mask mask_;
|
||||
regex_traits<char>::char_class_type mask_;
|
||||
};
|
||||
|
||||
#if defined(__clang__)
|
||||
@@ -254,12 +254,12 @@ __get_collation_name(const char* s)
|
||||
return r;
|
||||
}
|
||||
|
||||
ctype_base::mask
|
||||
regex_traits<char>::char_class_type
|
||||
__get_classname(const char* s, bool __icase)
|
||||
{
|
||||
const classnames* i =
|
||||
_VSTD::lower_bound(begin(ClassNames), end(ClassNames), s, use_strcmp());
|
||||
ctype_base::mask r = 0;
|
||||
regex_traits<char>::char_class_type r = 0;
|
||||
if (i != end(ClassNames) && strcmp(s, i->elem_) == 0)
|
||||
{
|
||||
r = i->mask_;
|
||||
|
||||
Reference in New Issue
Block a user