51extern const _STD::ctype_base::mask
52__rw_classic_tab [_STD::ctype<char>::table_size] = {
55#define MASK(x) _STD::ctype_base::mask (x)
58#define LETTER(m) MASK (__rw_print | __rw_alpha | __rw_graph | m)
71 MASK (__rw_space | __rw_cntrl),
72 MASK (__rw_space | __rw_cntrl),
73 MASK (__rw_space | __rw_cntrl),
74 MASK (__rw_space | __rw_cntrl),
75 MASK (__rw_space | __rw_cntrl),
94 MASK (__rw_space | __rw_print),
95 MASK (__rw_print | __rw_punct | __rw_graph),
96 MASK (__rw_print | __rw_punct | __rw_graph),
97 MASK (__rw_print | __rw_punct | __rw_graph),
98 MASK (__rw_print | __rw_punct | __rw_graph),
99 MASK (__rw_print | __rw_punct | __rw_graph),
100 MASK (__rw_print | __rw_punct | __rw_graph),
101 MASK (__rw_print | __rw_punct | __rw_graph),
102 MASK (__rw_print | __rw_punct | __rw_graph),
103 MASK (__rw_print | __rw_punct | __rw_graph),
104 MASK (__rw_print | __rw_punct | __rw_graph),
105 MASK (__rw_print | __rw_punct | __rw_graph),
106 MASK (__rw_print | __rw_punct | __rw_graph),
107 MASK (__rw_print | __rw_punct | __rw_graph),
108 MASK (__rw_print | __rw_punct | __rw_graph),
109 MASK (__rw_print | __rw_punct | __rw_graph),
110 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
111 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
112 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
113 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
114 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
115 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
116 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
117 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
118 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
119 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
120 MASK (__rw_print | __rw_punct | __rw_graph),
121 MASK (__rw_print | __rw_punct | __rw_graph),
122 MASK (__rw_print | __rw_punct | __rw_graph),
123 MASK (__rw_print | __rw_punct | __rw_graph),
124 MASK (__rw_print | __rw_punct | __rw_graph),
125 MASK (__rw_print | __rw_punct | __rw_graph),
126 MASK (__rw_print | __rw_punct | __rw_graph),
128 LETTER (__rw_upper | __rw_xdigit),
129 LETTER (__rw_upper | __rw_xdigit),
130 LETTER (__rw_upper | __rw_xdigit),
131 LETTER (__rw_upper | __rw_xdigit),
132 LETTER (__rw_upper | __rw_xdigit),
133 LETTER (__rw_upper | __rw_xdigit),
154 MASK (__rw_print | __rw_punct | __rw_graph),
155 MASK (__rw_print | __rw_punct | __rw_graph),
156 MASK (__rw_print | __rw_punct | __rw_graph),
157 MASK (__rw_print | __rw_punct | __rw_graph),
158 MASK (__rw_print | __rw_punct | __rw_graph),
159 MASK (__rw_print | __rw_punct | __rw_graph),
160 LETTER (__rw_lower | __rw_xdigit),
161 LETTER (__rw_lower | __rw_xdigit),
162 LETTER (__rw_lower | __rw_xdigit),
163 LETTER (__rw_lower | __rw_xdigit),
164 LETTER (__rw_lower | __rw_xdigit),
165 LETTER (__rw_lower | __rw_xdigit),
186 MASK (__rw_print | __rw_punct | __rw_graph),
187 MASK (__rw_print | __rw_punct | __rw_graph),
188 MASK (__rw_print | __rw_punct | __rw_graph),
189 MASK (__rw_print | __rw_punct | __rw_graph),
268 MASK (__rw_print | __rw_punct | __rw_graph),
269 MASK (__rw_print | __rw_punct | __rw_graph),
270 MASK (__rw_print | __rw_punct | __rw_graph),
271 MASK (__rw_print | __rw_punct | __rw_graph),
272 MASK (__rw_print | __rw_punct | __rw_graph),
273 MASK (__rw_print | __rw_punct | __rw_graph),
274 MASK (__rw_print | __rw_punct | __rw_graph),
284 MASK (__rw_print | __rw_punct | __rw_graph),
285 MASK (__rw_print | __rw_punct | __rw_graph),
286 MASK (__rw_print | __rw_punct | __rw_graph),
287 MASK (__rw_print | __rw_punct | __rw_graph),
288 MASK (__rw_print | __rw_punct | __rw_graph),
289 MASK (__rw_print | __rw_punct | __rw_graph),
290 MASK (__rw_print | __rw_punct | __rw_graph),
291 MASK (__rw_print | __rw_punct | __rw_graph),
301 MASK (__rw_print | __rw_punct | __rw_graph),
302 MASK (__rw_print | __rw_punct | __rw_graph),
303 MASK (__rw_print | __rw_punct | __rw_graph),
304 MASK (__rw_print | __rw_punct | __rw_graph),
305 MASK (__rw_print | __rw_punct | __rw_graph),
316 MASK (__rw_print | __rw_punct | __rw_graph),
317 MASK (__rw_print | __rw_punct | __rw_graph),
318 MASK (__rw_print | __rw_punct | __rw_graph),
319 MASK (__rw_print | __rw_punct | __rw_graph),
320 MASK (__rw_print | __rw_punct | __rw_graph),
321 MASK (__rw_print | __rw_punct | __rw_graph),
323 LETTER (__rw_lower | __rw_xdigit),
324 LETTER (__rw_lower | __rw_xdigit),
325 LETTER (__rw_lower | __rw_xdigit),
326 LETTER (__rw_lower | __rw_xdigit),
327 LETTER (__rw_lower | __rw_xdigit),
328 LETTER (__rw_lower | __rw_xdigit),
386 LETTER (__rw_upper | __rw_xdigit),
387 LETTER (__rw_upper | __rw_xdigit),
388 LETTER (__rw_upper | __rw_xdigit),
389 LETTER (__rw_upper | __rw_xdigit),
390 LETTER (__rw_upper | __rw_xdigit),
391 LETTER (__rw_upper | __rw_xdigit),
433 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
434 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
435 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
436 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
437 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
438 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
439 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
440 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
441 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
442 MASK (__rw_print | __rw_digit | __rw_graph | __rw_xdigit),
451# error unknown character set (neither ASCII nor EBCDIC)
458extern const unsigned char
459__rw_upper_tab [_STD::ctype<char>::table_size + 1] = {
467 "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
469 "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
471 "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
473 "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
475 "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
477 "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
479 "\x60\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
481 "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x7b\x7c\x7d\x7e\x7f"
484 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
485 "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
486 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
487 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
488 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
489 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
490 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
491 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
499 "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
501 "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
503 "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
505 "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
507 "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
509 "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
511 "\x60\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
513 "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
515 "\x80\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\x8a\x8b\x8c\x8d\x8e\x8f"
517 "\x90\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\x9a\x9b\x9c\x9d\x9e\x9f"
519 "\xa0\xa1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xaa\xab\xac\xad\xae\xaf"
521 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
523 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
525 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
527 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
529 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
532# error unknown character set (neither ASCII nor EBCDIC)
539extern const unsigned char
540__rw_lower_tab [_STD::ctype<char>::table_size + 1] = {
548 "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
550 "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
552 "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
554 "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
556 "\x40\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
558 "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x5b\x5c\x5d\x5e\x5f"
560 "\x60\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6a\x6b\x6c\x6d\x6e\x6f"
562 "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
565 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
566 "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
567 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
568 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
569 "\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7\xc8\xc9\xca\xcb\xcc\xcd\xce\xcf"
570 "\xd0\xd1\xd2\xd3\xd4\xd5\xd6\xd7\xd8\xd9\xda\xdb\xdc\xdd\xde\xdf"
571 "\xe0\xe1\xe2\xe3\xe4\xe5\xe6\xe7\xe8\xe9\xea\xeb\xec\xed\xee\xef"
572 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
580 "\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
582 "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
584 "\x20\x21\x22\x23\x24\x25\x26\x27\x28\x29\x2a\x2b\x2c\x2d\x2e\x2f"
586 "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x3a\x3b\x3c\x3d\x3e\x3f"
588 "\x40\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
590 "\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5a\x5b\x5c\x5d\x5e\x5f"
592 "\x60\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4a\x4b\x4c\x4d\x4e\x4f"
594 "\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7a\x7b\x7c\x7d\x7e\x7f"
596 "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f"
598 "\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"
600 "\xa0\xa1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xaa\xab\xac\xad\xae\xaf"
602 "\xb0\xb1\xb2\xb3\xb4\xb5\xb6\xb7\xb8\xb9\xba\xbb\xbc\xbd\xbe\xbf"
604 "\xc0\x81\x82\x83\x84\x85\x86\x87\x88\x89\xca\xcb\xcc\xcd\xce\xcf"
606 "\xd0\x91\x92\x93\x94\x95\x96\x97\x98\x99\xda\xdb\xdc\xdd\xde\xdf"
608 "\xe0\xe1\xa2\xa3\xa4\xa5\xa6\xa7\xa8\xa9\xea\xeb\xec\xed\xee\xef"
610 "\xf0\xf1\xf2\xf3\xf4\xf5\xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff"
613# error unknown character set (neither ASCII nor EBCDIC)
626 pfacet =
new _STD::ctype_byname<char>(
name, ref);
631 char data_ [
sizeof (_STD::ctype<char>)];
633 static __rw_facet*
const pf =
634 new (&
f) _STD::ctype<char>(__rw_classic_tab,
false, ref);
639 __rw_access::_C_get_pid (*pfacet) =
640 &(__rw_access::_C_get_id (_STD::ctype<char>::id));
657_RW::__rw_facet_id ctype<char>::id;
660ctype<char>::ctype (
const mask *tab,
bool del, _RWSTD_SIZE_T refs)
661 : _RW::__rw_facet (refs),
667 _C_mask_tab = _RW::__rw_classic_tab;
669 _C_delete_it =
false;
675 memset (_C_narrow_tab, 0,
sizeof _C_narrow_tab);
676 memset (_C_wide_tab, 0,
sizeof _C_wide_tab);
680ctype<char>::~ctype ()
685 if (_C_upper_tab != _RW::__rw_upper_tab) {
688 delete[] _C_upper_tab;
694const ctype<char>::mask* ctype<char>::classic_table ()
_THROWS (())
696 return _RW::__rw_classic_tab;
700const ctype<char>::char_type*
702is (
const char_type *lo,
const char_type *hi, mask *vec)
const
710 *vec++ =
table ()[_UChar (*lo++)];
716const ctype<char>::char_type*
718scan_is (mask
m,
const char_type *lo,
const char_type *hi)
const
724 while (lo != hi && !(
table ()[_UChar (*lo)] &
m))
731const ctype<char>::char_type*
733scan_not (mask
m,
const char_type *lo,
const char_type *hi)
const
739 while (lo != hi && (
table ()[_UChar (*lo)] &
m))
746 ctype<char>::char_type
748do_toupper (char_type ch)
const
750#if _RWSTD_UCHAR_MAX <= 255
751 return _C_upper_tab [_UChar (ch)];
753 return ch < table_size ? _C_upper_tab [_UChar (ch)] : ch;
758 const ctype<char>::char_type*
760do_toupper (char_type *lo,
const char_type *hi)
const
766 for ( ; lo < hi; ++lo)
767 *lo = _C_upper_tab [_UChar (*lo)];
773 ctype<char>::char_type
775do_tolower (char_type ch)
const
777#if _RWSTD_UCHAR_MAX <= 255
778 return _C_lower_tab [_UChar (ch)];
780 return ch < table_size ? _C_lower_tab [_UChar (ch)] : ch;
785 const ctype<char>::char_type*
787do_tolower (char_type *lo,
const char_type *hi)
const
793 for ( ; lo < hi; ++lo)
794 *lo = _C_lower_tab [_UChar (*lo)];
800 ctype<char>::char_type
802do_widen (
char ch)
const
804#if _RWSTD_UCHAR_MAX <= 255
806 if (_C_wide_tab [_UChar (ch)])
807 return _C_wide_tab [_UChar (ch)];
810 _C_wide_tab [_UChar (ch)] = char_type (ch);
812 return char_type (ch);
817 const ctype<char>::char_type*
819do_widen (
const char_type* lo,
const char_type* hi, char_type* dst)
const
824 ::memcpy (dst, lo, hi - lo);
830 ctype<char>::char_type
832do_narrow (char_type ch, char_type)
const
838 const ctype<char>::char_type*
840do_narrow (
const char_type* lo,
const char_type* hi, char_type,
841 char_type* dst)
const
846 ::memcpy (dst, lo, hi - lo);
852ctype_byname<char>::ctype_byname (
const char *
name, _RWSTD_SIZE_T refs)
853 : ctype<char>(0,
false, refs)
859 this->_C_set_name (
name, _C_namebuf,
sizeof _C_namebuf);
861 if (
'C' ==
name [0] &&
'\0' ==
name [1])
865 _RW::__rw_ctype_t* impl =
868 _RW::__rw_get_facet_data (
LC_CTYPE, _C_impsize, _C_name)));
872 if (impl == 0 || (this->_C_opts & this->_C_use_libc)) {
878 _C_mask_tab =
new mask [table_size];
883 _C_upper_tab =
new unsigned char [table_size * 2];
884 _C_lower_tab = _C_upper_tab + table_size;
896 for (
i = 0;
i != _RWSTD_UCHAR_MAX + 1; ++
i) {
901 m |= _RW::__rw_space;
903 m |= _RW::__rw_print;
905 m |= _RW::__rw_cntrl;
907 m |= _RW::__rw_upper;
909 m |= _RW::__rw_lower;
911 m |= _RW::__rw_alpha;
913 m |= _RW::__rw_digit;
915 m |= _RW::__rw_punct;
917 m |= _RW::__rw_xdigit;
919 m |= _RW::__rw_graph;
924 typedef unsigned char UChar;
927 for (
p = _C_upper_tab,
i = 0;
i != _RWSTD_UCHAR_MAX + 1; ++
i, ++
p) {
928 const int upr = (::toupper)(
i);
929 *
p =
UChar (_RWSTD_EOF == upr ? 0 : upr);
932 for (
p = _C_lower_tab,
i = 0;
i != _RWSTD_UCHAR_MAX + 1; ++
i, ++
p) {
933 const int lwr = (::tolower)(
i);
934 *
p =
UChar (_RWSTD_EOF == lwr ? 0 : lwr);
938 _C_delete_it =
false;
940 _C_upper_tab = impl->toupper_tab;
941 _C_lower_tab = impl->tolower_tab;
943 const mask *mask_tab =
#define _RWSTD_REINTERPRET_CAST(T, x)
#define _RWSTD_STATIC_CAST(T, x)
#define _RWSTD_NAMESPACE(name)
#define _RWSTD_ASSERT(ignore)
#define _RWSTD_CONST_CAST(T, x)
_STD::ctype< char > __rw_ctype_facet
#define _RWSTD_SPECIALIZE_USE_FACET(fid)