const charT* ctype<charT>::do_scan_not(ctype_base::mask m, const charT* low, const charT* high) const { while (low!= high && do_is(m,*low)) ++low; return low; }
virtual const Ch* do_is(const Ch* b, const Ch* e, mask* v) const { while(b != e) { if( -128 <= *b && *b < 0 ) *v = ext_table[static_cast<size_t>(*b*(-1))]; else do_is(b, b+1, v); ++b; ++v; } return b; }
virtual Ch do_tolower(Ch c) const { if(!do_is(upper, c)) return c; if( 0 <= c && c <= 127 ) { return std::ctype<Ch>::do_tolower(c); } else if( -128 <= c && c < 0 && do_is(upper, c)) { if( c != -67 && c != -78 && c != -96 && c != -127 ) return c + 32; else if( c == -127 ) return -125; else return c + 1; } else { return c; } }
virtual Ch do_toupper(Ch c) const { if(!do_is(lower, c)) return c; if( 0 <= c && c <= 127 ) { return std::ctype<Ch>::do_toupper(c); } else if( -128 <= c && c < 0 && do_is(lower, c)) { if( c != -66 && c != -77 && c != -95 && c != -125 ) return c - 32; else if( c == -125 ) return -127; else return c - 1; } else { return c; } }
virtual const Ch* do_scan_not(mask m, const Ch* b, const Ch* e) const { while(b != e && do_is(m,*b)) ++b; return b; }