177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner/* 277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Silicon Graphics Computer Systems, Inc. 477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Copyright (c) 1999 677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Boris Fomitchev 777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * This material is provided "as is", with absolutely no warranty expressed 977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * or implied. Any use is at your own risk. 1077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to use or copy this software for any purpose is hereby granted 1277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * without fee, provided the above notices are retained on all copies. 1377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * Permission to modify the code and to distribute modified code is granted, 1477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * provided the above notices are retained, and a notice that the code was 1577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * modified is included with the above copyright notice. 1677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner * 1777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner */ 1877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// WARNING: This is an internal header file, included by other C++ 1977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// standard library headers. You should not attempt to use this header 2077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// file directly. 2177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_CTYPE_H 2377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#define _STLP_INTERNAL_CTYPE_H 2477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_C_LOCALE_H 2677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/c_locale.h> 2777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 2877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 2977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_LOCALE_H 3077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_locale.h> 3177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_INTERNAL_ALGOBASE_H 3477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# include <stl/_algobase.h> 3577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 3677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_BEGIN_NAMESPACE 3877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 3977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass _STLP_CLASS_DECLSPEC ctype_base { 4077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 4177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner enum mask { 4277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner space = _Locale_SPACE, 4377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner print = _Locale_PRINT, 4477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner cntrl = _Locale_CNTRL, 4577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner upper = _Locale_UPPER, 4677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner lower = _Locale_LOWER, 4777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner alpha = _Locale_ALPHA, 4877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner digit = _Locale_DIGIT, 4977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner punct = _Locale_PUNCT, 5077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner xdigit = _Locale_XDIGIT, 5177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner alnum = alpha | digit, 5277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner graph = alnum | punct 5377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner }; 5477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 5577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// ctype<> template 5777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 5877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class charT> class ctype {}; 5977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnertemplate <class charT> class ctype_byname {}; 6077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner//ctype specializations 6277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 6377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 6477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass _STLP_CLASS_DECLSPEC ctype<char> : public locale::facet, public ctype_base { 6577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#ifndef _STLP_NO_WCHAR_T 6677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# ifdef _STLP_MSVC 6777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef ctype<wchar_t> _Wctype; 6877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner friend _Wctype; 6977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# else 7077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner friend class ctype<wchar_t>; 7177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif 7277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif 7377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 7477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef char char_type; 7677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 7777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit ctype(const mask* __tab = 0, bool __del = false, size_t __refs = 0); 7877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool is(mask __m, char __c) const 7977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return ((*(_M_ctype_table+(unsigned char)__c)) & __m) != 0; } 8077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* is(const char* __low, const char* __high, mask* __vec) const { 8277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner for (const char* __p = __low;__p != __high; ++__p, ++__vec) { 8377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner *__vec = _M_ctype_table[(unsigned char)*__p]; 8477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 8577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return __high; 8677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 8777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 8877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* scan_is(mask __m, const char* __low, const char* __high) const; 8977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* scan_not(mask __m, const char* __low, const char* __high) const; 9077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char (toupper)(char __c) const { return do_toupper(__c); } 9277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* (toupper)(char* __low, const char* __high) const { 9377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return do_toupper(__low, __high); 9477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 9577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 9677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char (tolower)(char __c) const { return do_tolower(__c); } 9777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* (tolower)(char* __low, const char* __high) const { 9877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return do_tolower(__low, __high); 9977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 10077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char widen(char __c) const { return do_widen(__c); } 10277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* widen(const char* __low, const char* __high, char* __to) const { 10377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return do_widen(__low, __high, __to); 10477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 10577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 10677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char narrow(char __c, char __dfault) const { 10777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return do_narrow(__c, __dfault); 10877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 10977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* narrow(const char* __low, const char* __high, 11077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char __dfault, char* __to) const { 11177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner return do_narrow(__low, __high, __dfault, __to); 11277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner } 11377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static _STLP_STATIC_DECLSPEC locale::id id; 11577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _STLP_STATIC_CONSTANT(size_t, table_size = 256); 11677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 11777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 11877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const mask* table() const _STLP_NOTHROW { return _M_ctype_table; } 11977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static const mask* _STLP_CALL classic_table() _STLP_NOTHROW; 12077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~ctype(); 12277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 12377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_toupper(char __c) const; 12477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_tolower(char __c) const; 12577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_toupper(char* __low, const char* __high) const; 12677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_tolower(char* __low, const char* __high) const; 12777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_widen(char __c) const; 12877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_widen(const char* __low, const char* __high, 12977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char* __to) const; 13077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_narrow(char __c, char /* dfault */ ) const; 13177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_narrow(const char* __low, const char* __high, 13277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char /* dfault */, char* __to) const; 13377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 13477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner struct _Is_mask { 13577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner mask __m; 13677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Is_mask(mask __x): __m(__x) {} 13777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool operator()(char __c) {return (__m & (unsigned char) __c) != 0;} 13877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner }; 13977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 14177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const mask* _M_ctype_table; 14277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 14377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool _M_delete; 14477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 14577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 14677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 14777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass _STLP_CLASS_DECLSPEC ctype_byname<char>: public ctype<char> { 14877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner friend class _Locale_impl; 14977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 15077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit ctype_byname(const char*, size_t = 0); 15177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~ctype_byname(); 15277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_toupper(char __c) const; 15477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_tolower(char __c) const; 15577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_toupper(char*, const char*) const; 15777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_tolower(char*, const char*) const; 15877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 15977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 16077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ctype_byname(_Locale_ctype* __ctype) 16177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_ctype(__ctype) 16277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { _M_init(); } 16377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner void _M_init(); 16577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 16677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //explicitely defined as private to avoid warnings: 16777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef ctype_byname<char> _Self; 16877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ctype_byname(_Self const&); 16977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator = (_Self const&); 17077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner mask _M_byname_table[table_size]; 17277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Locale_ctype* _M_ctype; 17377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 17477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 17577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# ifndef _STLP_NO_WCHAR_T 17677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 17777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass _STLP_CLASS_DECLSPEC ctype<wchar_t> : public locale::facet, public ctype_base { 17877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 17977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef wchar_t char_type; 18077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit ctype(size_t __refs = 0) : locale::facet(__refs) {} 18277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner bool is(mask __m, wchar_t __c) const 18477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_is(__m, __c); } 18577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 18677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* is(const wchar_t* __low, const wchar_t* __high, 18777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner mask* __vec) const 18877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_is(__low, __high, __vec); } 18977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* scan_is(mask __m, 19177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* __low, const wchar_t* __high) const 19277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_scan_is(__m, __low, __high); } 19377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* scan_not (mask __m, 19577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* __low, const wchar_t* __high) const 19677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_scan_not(__m, __low, __high); } 19777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 19877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner wchar_t (toupper)(wchar_t __c) const { return do_toupper(__c); } 19977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* (toupper)(wchar_t* __low, const wchar_t* __high) const 20077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_toupper(__low, __high); } 20177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner wchar_t (tolower)(wchar_t __c) const { return do_tolower(__c); } 20377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* (tolower)(wchar_t* __low, const wchar_t* __high) const 20477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_tolower(__low, __high); } 20577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 20677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner wchar_t widen(char __c) const { return do_widen(__c); } 20777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const char* widen(const char* __low, const char* __high, 20877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner wchar_t* __to) const 20977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_widen(__low, __high, __to); } 21077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char narrow(wchar_t __c, char __dfault) const 21277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_narrow(__c, __dfault); } 21377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t* narrow(const wchar_t* __low, const wchar_t* __high, 21477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char __dfault, char* __to) const 21577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner { return do_narrow(__low, __high, __dfault, __to); } 21677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner static _STLP_STATIC_DECLSPEC locale::id id; 21877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 21977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 22077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~ctype(); 22177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 22277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual bool do_is(mask __m, wchar_t __c) const; 22377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; 22477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_scan_is(mask, 22577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t*, const wchar_t*) const; 22677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_scan_not(mask, 22777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t*, const wchar_t*) const; 22877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual wchar_t do_toupper(wchar_t __c) const; 22977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; 23077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual wchar_t do_tolower(wchar_t c) const; 23177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; 23277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual wchar_t do_widen(char c) const; 23377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const char* do_widen(const char*, const char*, wchar_t*) const; 23477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual char do_narrow(wchar_t __c, char __dfault) const; 23577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_narrow(const wchar_t*, const wchar_t*, 23677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner char, char*) const; 23777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 23877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 23977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_TEMPLATE_NULL 24077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerclass _STLP_CLASS_DECLSPEC ctype_byname<wchar_t>: public ctype<wchar_t> { 24177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner friend class _Locale_impl; 24277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerpublic: 24377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner explicit ctype_byname(const char* __name, size_t __refs = 0); 24477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprotected: 24677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ~ctype_byname(); 24777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 24877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual bool do_is(mask __m, wchar_t __c) const; 24977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_is(const wchar_t*, const wchar_t*, mask*) const; 25077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_scan_is(mask, 25177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t*, const wchar_t*) const; 25277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_scan_not(mask, 25377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner const wchar_t*, const wchar_t*) const; 25477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual wchar_t do_toupper(wchar_t __c) const; 25577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_toupper(wchar_t*, const wchar_t*) const; 25677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual wchar_t do_tolower(wchar_t c) const; 25777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner virtual const wchar_t* do_tolower(wchar_t*, const wchar_t*) const; 25877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 25977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turnerprivate: 26077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ctype_byname(_Locale_ctype* __ctype) 26177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner : _M_ctype(__ctype) {} 26277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner //explicitely defined as private to avoid warnings: 26477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner typedef ctype_byname<wchar_t> _Self; 26577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner ctype_byname(_Self const&); 26677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Self& operator = (_Self const&); 26777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 26877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner _Locale_ctype* _M_ctype; 26977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner}; 27077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27177dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner# endif /* WCHAR_T */ 27277dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27377dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner_STLP_END_NAMESPACE 27477dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27577dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner#endif /* _STLP_INTERNAL_CTYPE_H */ 27677dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 27777dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// Local Variables: 27877dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// mode:C++ 27977dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner// End: 28077dc872c5c4ae67e051d1bf7edf96ce36c7b9be2David 'Digit' Turner 281