19720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block/* 29720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 39720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Silicon Graphics Computer Systems, Inc. 49720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 59720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Copyright (c) 1999 69720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Boris Fomitchev 79720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 89720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * This material is provided "as is", with absolutely no warranty expressed 99720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * or implied. Any use is at your own risk. 109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to use or copy this software for any purpose is hereby granted 129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * without fee, provided the above notices are retained on all copies. 139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * Permission to modify the code and to distribute modified code is granted, 149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * provided the above notices are retained, and a notice that the code was 159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * modified is included with the above copyright notice. 169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block * 179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block */ 189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// WARNING: This is an internal header file, included by other C++ 199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// standard library headers. You should not attempt to use this header 209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// file directly. 219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_CTYPE_H 239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#define _STLP_INTERNAL_CTYPE_H 249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_C_LOCALE_H 269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/c_locale.h> 279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_LOCALE_H 309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_locale.h> 319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_INTERNAL_ALGOBASE_H 349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# include <stl/_algobase.h> 359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_BEGIN_NAMESPACE 389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC ctype_base { 409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block enum mask { 429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block space = _Locale_SPACE, 439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block print = _Locale_PRINT, 449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block cntrl = _Locale_CNTRL, 459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block upper = _Locale_UPPER, 469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block lower = _Locale_LOWER, 479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block alpha = _Locale_ALPHA, 489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block digit = _Locale_DIGIT, 499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block punct = _Locale_PUNCT, 509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block xdigit = _Locale_XDIGIT, 519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block alnum = alpha | digit, 529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block graph = alnum | punct 539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// ctype<> template 579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class charT> class ctype {}; 599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blocktemplate <class charT> class ctype_byname {}; 609720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 619720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block//ctype specializations 629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC ctype<char> : public locale::facet, public ctype_base { 659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#ifndef _STLP_NO_WCHAR_T 669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifdef _STLP_MSVC 679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef ctype<wchar_t> _Wctype; 689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend _Wctype; 699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# else 709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block friend class ctype<wchar_t>; 719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif 729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif 739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef char char_type; 769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit ctype(const mask* __tab = 0, bool __del = false, size_t __refs = 0); 789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool is(mask __m, char __c) const 799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return ((*(_M_ctype_table+(unsigned char)__c)) & __m) != 0; } 809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* is(const char* __low, const char* __high, mask* __vec) const { 829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block for (const char* __p = __low;__p != __high; ++__p, ++__vec) { 839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block *__vec = _M_ctype_table[(unsigned char)*__p]; 849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return __high; 869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* scan_is(mask __m, const char* __low, const char* __high) const; 899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* scan_not(mask __m, const char* __low, const char* __high) const; 909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char (toupper)(char __c) const { return do_toupper(__c); } 929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* (toupper)(char* __low, const char* __high) const { 939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return do_toupper(__low, __high); 949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char (tolower)(char __c) const { return do_tolower(__c); } 979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* (tolower)(char* __low, const char* __high) const { 989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return do_tolower(__low, __high); 999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char widen(char __c) const { return do_widen(__c); } 1029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* widen(const char* __low, const char* __high, char* __to) const { 1039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return do_widen(__low, __high, __to); 1049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char narrow(char __c, char __dfault) const { 1079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return do_narrow(__c, __dfault); 1089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* narrow(const char* __low, const char* __high, 1109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __dfault, char* __to) const { 1119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block return do_narrow(__low, __high, __dfault, __to); 1129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block } 1139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 114e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static _STLP_STATIC_DECLSPEC locale::id id; 115e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _STLP_STATIC_CONSTANT(size_t, table_size = 256); 1169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1179720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const mask* table() const _STLP_NOTHROW { return _M_ctype_table; } 1199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block static const mask* _STLP_CALL classic_table() _STLP_NOTHROW; 1209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~ctype(); 1229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_toupper(char __c) const; 1249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_tolower(char __c) const; 1259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_toupper(char* __low, const char* __high) const; 1269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_tolower(char* __low, const char* __high) const; 1279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_widen(char __c) const; 1289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_widen(const char* __low, const char* __high, 1299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char* __to) const; 1309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_narrow(char __c, char /* dfault */ ) const; 1319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_narrow(const char* __low, const char* __high, 1329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char /* dfault */, char* __to) const; 1339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block struct _Is_mask { 1359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block mask __m; 1369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Is_mask(mask __x): __m(__x) {} 1379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool operator()(char __c) {return (__m & (unsigned char) __c) != 0;} 1389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block }; 1399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 1419720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const mask* _M_ctype_table; 1429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 1439720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool _M_delete; 1449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 1479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC ctype_byname<char>: public ctype<char> { 148e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott friend class _Locale_impl; 1499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 150e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit ctype_byname(const char*, size_t = 0); 1519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~ctype_byname(); 1529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_toupper(char __c) const; 1549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_tolower(char __c) const; 1559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_toupper(char*, const char*) const; 1579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_tolower(char*, const char*) const; 1589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 160e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ctype_byname(_Locale_ctype* __ctype) 161e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : _M_ctype(__ctype) 162e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott { _M_init(); } 163e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 164e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott void _M_init(); 1659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //explicitely defined as private to avoid warnings: 1679720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef ctype_byname<char> _Self; 1689720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ctype_byname(_Self const&); 1699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator = (_Self const&); 170e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 171e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott mask _M_byname_table[table_size]; 172e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Locale_ctype* _M_ctype; 1739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 1749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# ifndef _STLP_NO_WCHAR_T 1769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 177e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scottclass _STLP_CLASS_DECLSPEC ctype<wchar_t> : public locale::facet, public ctype_base { 1789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 1799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef wchar_t char_type; 1809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1819720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block explicit ctype(size_t __refs = 0) : locale::facet(__refs) {} 1829720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1839720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block bool is(mask __m, wchar_t __c) const 1849720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_is(__m, __c); } 1859720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1869720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* is(const wchar_t* __low, const wchar_t* __high, 1879720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block mask* __vec) const 1889720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_is(__low, __high, __vec); } 1899720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1909720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* scan_is(mask __m, 1919720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* __low, const wchar_t* __high) const 1929720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_scan_is(__m, __low, __high); } 1939720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1949720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* scan_not (mask __m, 1959720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* __low, const wchar_t* __high) const 1969720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_scan_not(__m, __low, __high); } 1979720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 1989720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block wchar_t (toupper)(wchar_t __c) const { return do_toupper(__c); } 1999720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* (toupper)(wchar_t* __low, const wchar_t* __high) const 2009720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_toupper(__low, __high); } 2019720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2029720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block wchar_t (tolower)(wchar_t __c) const { return do_tolower(__c); } 2039720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* (tolower)(wchar_t* __low, const wchar_t* __high) const 2049720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_tolower(__low, __high); } 2059720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2069720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block wchar_t widen(char __c) const { return do_widen(__c); } 2079720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const char* widen(const char* __low, const char* __high, 2089720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block wchar_t* __to) const 2099720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_widen(__low, __high, __to); } 2109720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2119720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char narrow(wchar_t __c, char __dfault) const 2129720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_narrow(__c, __dfault); } 2139720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t* narrow(const wchar_t* __low, const wchar_t* __high, 2149720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char __dfault, char* __to) const 2159720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block { return do_narrow(__low, __high, __dfault, __to); } 2169720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 217e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott static _STLP_STATIC_DECLSPEC locale::id id; 2189720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2199720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2209720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~ctype(); 2219720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2229720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual bool do_is(mask __m, wchar_t __c) const; 2239720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; 2249720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_scan_is(mask, 2259720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t*, const wchar_t*) const; 2269720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_scan_not(mask, 2279720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t*, const wchar_t*) const; 2289720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual wchar_t do_toupper(wchar_t __c) const; 2299720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; 2309720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual wchar_t do_tolower(wchar_t c) const; 2319720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; 2329720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual wchar_t do_widen(char c) const; 2339720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const char* do_widen(const char*, const char*, wchar_t*) const; 2349720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual char do_narrow(wchar_t __c, char __dfault) const; 2359720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_narrow(const wchar_t*, const wchar_t*, 2369720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block char, char*) const; 2379720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2389720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2399720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_TEMPLATE_NULL 2409720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockclass _STLP_CLASS_DECLSPEC ctype_byname<wchar_t>: public ctype<wchar_t> { 241e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott friend class _Locale_impl; 2429720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockpublic: 243e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott explicit ctype_byname(const char* __name, size_t __refs = 0); 2449720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2459720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprotected: 2469720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ~ctype_byname(); 2479720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2489720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual bool do_is(mask __m, wchar_t __c) const; 2499720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; 2509720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_scan_is(mask, 2519720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t*, const wchar_t*) const; 2529720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_scan_not(mask, 2539720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block const wchar_t*, const wchar_t*) const; 2549720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual wchar_t do_toupper(wchar_t __c) const; 2559720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; 2569720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual wchar_t do_tolower(wchar_t c) const; 2579720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; 2589720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2599720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Blockprivate: 260e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott ctype_byname(_Locale_ctype* __ctype) 261e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott : _M_ctype(__ctype) {} 2629720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2639720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block //explicitely defined as private to avoid warnings: 2649720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block typedef ctype_byname<wchar_t> _Self; 2659720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block ctype_byname(_Self const&); 2669720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block _Self& operator = (_Self const&); 267e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott 268e46c9386c4f79aa40185f79a19fc5b2a7ef528b3Patrick Scott _Locale_ctype* _M_ctype; 2699720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block}; 2709720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2719720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block# endif /* WCHAR_T */ 2729720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2739720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block_STLP_END_NAMESPACE 2749720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2759720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block#endif /* _STLP_INTERNAL_CTYPE_H */ 2769720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 2779720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// Local Variables: 2789720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// mode:C++ 2799720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block// End: 2809720d5f59b9c1f5d1b9ecbc9173dbcb71bd557beSteve Block 281