예제 #1
0
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;
}
예제 #2
0
 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;
 }
예제 #3
0
 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;
   }
 }
예제 #4
0
 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;
   }
 }
예제 #5
0
 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;
 }