100db7afdSDavid E. O'Brien // -*- C++ -*- forwarding header. 200db7afdSDavid E. O'Brien 3*f8a1b7d9SAlexander Kabaev // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 400db7afdSDavid E. O'Brien // Free Software Foundation, Inc. 500db7afdSDavid E. O'Brien // 600db7afdSDavid E. O'Brien // This file is part of the GNU ISO C++ Library. This library is free 700db7afdSDavid E. O'Brien // software; you can redistribute it and/or modify it under the 800db7afdSDavid E. O'Brien // terms of the GNU General Public License as published by the 900db7afdSDavid E. O'Brien // Free Software Foundation; either version 2, or (at your option) 1000db7afdSDavid E. O'Brien // any later version. 1100db7afdSDavid E. O'Brien 1200db7afdSDavid E. O'Brien // This library is distributed in the hope that it will be useful, 1300db7afdSDavid E. O'Brien // but WITHOUT ANY WARRANTY; without even the implied warranty of 1400db7afdSDavid E. O'Brien // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1500db7afdSDavid E. O'Brien // GNU General Public License for more details. 1600db7afdSDavid E. O'Brien 1700db7afdSDavid E. O'Brien // You should have received a copy of the GNU General Public License along 1800db7afdSDavid E. O'Brien // with this library; see the file COPYING. If not, write to the Free 19*f8a1b7d9SAlexander Kabaev // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, 2000db7afdSDavid E. O'Brien // USA. 2100db7afdSDavid E. O'Brien 2200db7afdSDavid E. O'Brien // As a special exception, you may use this file as part of a free software 2300db7afdSDavid E. O'Brien // library without restriction. Specifically, if other files instantiate 2400db7afdSDavid E. O'Brien // templates or use macros or inline functions from this file, or you compile 2500db7afdSDavid E. O'Brien // this file and link it with other files to produce an executable, this 2600db7afdSDavid E. O'Brien // file does not by itself cause the resulting executable to be covered by 2700db7afdSDavid E. O'Brien // the GNU General Public License. This exception does not however 2800db7afdSDavid E. O'Brien // invalidate any other reasons why the executable file might be covered by 2900db7afdSDavid E. O'Brien // the GNU General Public License. 3000db7afdSDavid E. O'Brien 31*f8a1b7d9SAlexander Kabaev /** @file include/cwchar 3200db7afdSDavid E. O'Brien * This is a Standard C++ Library file. You should @c #include this file 3300db7afdSDavid E. O'Brien * in your programs, rather than any of the "*.h" implementation files. 3400db7afdSDavid E. O'Brien * 3500db7afdSDavid E. O'Brien * This is the C++ version of the Standard C Library header @c wchar.h, 3600db7afdSDavid E. O'Brien * and its contents are (mostly) the same as that header, but are all 37*f8a1b7d9SAlexander Kabaev * contained in the namespace @c std (except for names which are defined 38*f8a1b7d9SAlexander Kabaev * as macros in C). 3900db7afdSDavid E. O'Brien */ 4000db7afdSDavid E. O'Brien 41*f8a1b7d9SAlexander Kabaev // 42*f8a1b7d9SAlexander Kabaev // ISO C++ 14882: 21.4 43*f8a1b7d9SAlexander Kabaev // 44*f8a1b7d9SAlexander Kabaev 45ffeaf689SAlexander Kabaev #ifndef _GLIBCXX_CWCHAR 46ffeaf689SAlexander Kabaev #define _GLIBCXX_CWCHAR 1 4700db7afdSDavid E. O'Brien 4800db7afdSDavid E. O'Brien #pragma GCC system_header 4900db7afdSDavid E. O'Brien 5000db7afdSDavid E. O'Brien #include <bits/c++config.h> 5100db7afdSDavid E. O'Brien #include <cstddef> 5200db7afdSDavid E. O'Brien #include <ctime> 5300db7afdSDavid E. O'Brien 54ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_WCHAR_H 5500db7afdSDavid E. O'Brien #include <wchar.h> 5600db7afdSDavid E. O'Brien #endif 5700db7afdSDavid E. O'Brien 5800db7afdSDavid E. O'Brien // Need to do a bit of trickery here with mbstate_t as char_traits 5900db7afdSDavid E. O'Brien // assumes it is in wchar.h, regardless of wchar_t specializations. 60ffeaf689SAlexander Kabaev #ifndef _GLIBCXX_HAVE_MBSTATE_T 6100db7afdSDavid E. O'Brien extern "C" 6200db7afdSDavid E. O'Brien { 6300db7afdSDavid E. O'Brien typedef struct 6400db7afdSDavid E. O'Brien { 6500db7afdSDavid E. O'Brien int __fill[6]; 6600db7afdSDavid E. O'Brien } mbstate_t; 6700db7afdSDavid E. O'Brien } 6800db7afdSDavid E. O'Brien #endif 6900db7afdSDavid E. O'Brien 70*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(std) 71*f8a1b7d9SAlexander Kabaev 7200db7afdSDavid E. O'Brien using ::mbstate_t; 73*f8a1b7d9SAlexander Kabaev 74*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 7500db7afdSDavid E. O'Brien 7600db7afdSDavid E. O'Brien // Get rid of those macros defined in <wchar.h> in lieu of real functions. 7700db7afdSDavid E. O'Brien #undef btowc 7800db7afdSDavid E. O'Brien #undef fgetwc 7900db7afdSDavid E. O'Brien #undef fgetws 8000db7afdSDavid E. O'Brien #undef fputwc 8100db7afdSDavid E. O'Brien #undef fputws 8200db7afdSDavid E. O'Brien #undef fwide 8300db7afdSDavid E. O'Brien #undef fwprintf 8400db7afdSDavid E. O'Brien #undef fwscanf 8500db7afdSDavid E. O'Brien #undef getwc 8600db7afdSDavid E. O'Brien #undef getwchar 8700db7afdSDavid E. O'Brien #undef mbrlen 8800db7afdSDavid E. O'Brien #undef mbrtowc 8900db7afdSDavid E. O'Brien #undef mbsinit 9000db7afdSDavid E. O'Brien #undef mbsrtowcs 9100db7afdSDavid E. O'Brien #undef putwc 9200db7afdSDavid E. O'Brien #undef putwchar 9300db7afdSDavid E. O'Brien #undef swprintf 9400db7afdSDavid E. O'Brien #undef swscanf 9500db7afdSDavid E. O'Brien #undef ungetwc 9600db7afdSDavid E. O'Brien #undef vfwprintf 97ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VFWSCANF 9800db7afdSDavid E. O'Brien # undef vfwscanf 99ffeaf689SAlexander Kabaev #endif 10000db7afdSDavid E. O'Brien #undef vswprintf 101ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VSWSCANF 10200db7afdSDavid E. O'Brien # undef vswscanf 103ffeaf689SAlexander Kabaev #endif 10400db7afdSDavid E. O'Brien #undef vwprintf 105ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VWSCANF 10600db7afdSDavid E. O'Brien # undef vwscanf 107ffeaf689SAlexander Kabaev #endif 10800db7afdSDavid E. O'Brien #undef wcrtomb 10900db7afdSDavid E. O'Brien #undef wcscat 11000db7afdSDavid E. O'Brien #undef wcschr 11100db7afdSDavid E. O'Brien #undef wcscmp 11200db7afdSDavid E. O'Brien #undef wcscoll 11300db7afdSDavid E. O'Brien #undef wcscpy 11400db7afdSDavid E. O'Brien #undef wcscspn 11500db7afdSDavid E. O'Brien #undef wcsftime 11600db7afdSDavid E. O'Brien #undef wcslen 11700db7afdSDavid E. O'Brien #undef wcsncat 11800db7afdSDavid E. O'Brien #undef wcsncmp 11900db7afdSDavid E. O'Brien #undef wcsncpy 12000db7afdSDavid E. O'Brien #undef wcspbrk 12100db7afdSDavid E. O'Brien #undef wcsrchr 12200db7afdSDavid E. O'Brien #undef wcsrtombs 12300db7afdSDavid E. O'Brien #undef wcsspn 12400db7afdSDavid E. O'Brien #undef wcsstr 12500db7afdSDavid E. O'Brien #undef wcstod 126ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_WCSTOF 12700db7afdSDavid E. O'Brien # undef wcstof 128ffeaf689SAlexander Kabaev #endif 12900db7afdSDavid E. O'Brien #undef wcstok 13000db7afdSDavid E. O'Brien #undef wcstol 13100db7afdSDavid E. O'Brien #undef wcstoul 13200db7afdSDavid E. O'Brien #undef wcsxfrm 13300db7afdSDavid E. O'Brien #undef wctob 13400db7afdSDavid E. O'Brien #undef wmemchr 13500db7afdSDavid E. O'Brien #undef wmemcmp 13600db7afdSDavid E. O'Brien #undef wmemcpy 13700db7afdSDavid E. O'Brien #undef wmemmove 13800db7afdSDavid E. O'Brien #undef wmemset 13900db7afdSDavid E. O'Brien #undef wprintf 14000db7afdSDavid E. O'Brien #undef wscanf 14100db7afdSDavid E. O'Brien 142ffeaf689SAlexander Kabaev #if _GLIBCXX_USE_WCHAR_T 143*f8a1b7d9SAlexander Kabaev 144*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(std) 145*f8a1b7d9SAlexander Kabaev 14600db7afdSDavid E. O'Brien using ::wint_t; 14700db7afdSDavid E. O'Brien 14800db7afdSDavid E. O'Brien using ::btowc; 14900db7afdSDavid E. O'Brien using ::fgetwc; 15000db7afdSDavid E. O'Brien using ::fgetws; 15100db7afdSDavid E. O'Brien using ::fputwc; 15200db7afdSDavid E. O'Brien using ::fputws; 15300db7afdSDavid E. O'Brien using ::fwide; 15400db7afdSDavid E. O'Brien using ::fwprintf; 15500db7afdSDavid E. O'Brien using ::fwscanf; 15600db7afdSDavid E. O'Brien using ::getwc; 15700db7afdSDavid E. O'Brien using ::getwchar; 15800db7afdSDavid E. O'Brien using ::mbrlen; 15900db7afdSDavid E. O'Brien using ::mbrtowc; 16000db7afdSDavid E. O'Brien using ::mbsinit; 16100db7afdSDavid E. O'Brien using ::mbsrtowcs; 16200db7afdSDavid E. O'Brien using ::putwc; 16300db7afdSDavid E. O'Brien using ::putwchar; 16400db7afdSDavid E. O'Brien using ::swprintf; 16500db7afdSDavid E. O'Brien using ::swscanf; 16600db7afdSDavid E. O'Brien using ::ungetwc; 16700db7afdSDavid E. O'Brien using ::vfwprintf; 168ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VFWSCANF 16900db7afdSDavid E. O'Brien using ::vfwscanf; 170ffeaf689SAlexander Kabaev #endif 17100db7afdSDavid E. O'Brien using ::vswprintf; 172ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VSWSCANF 17300db7afdSDavid E. O'Brien using ::vswscanf; 174ffeaf689SAlexander Kabaev #endif 17500db7afdSDavid E. O'Brien using ::vwprintf; 176ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_VWSCANF 17700db7afdSDavid E. O'Brien using ::vwscanf; 178ffeaf689SAlexander Kabaev #endif 17900db7afdSDavid E. O'Brien using ::wcrtomb; 18000db7afdSDavid E. O'Brien using ::wcscat; 18100db7afdSDavid E. O'Brien using ::wcscmp; 18200db7afdSDavid E. O'Brien using ::wcscoll; 18300db7afdSDavid E. O'Brien using ::wcscpy; 18400db7afdSDavid E. O'Brien using ::wcscspn; 18500db7afdSDavid E. O'Brien using ::wcsftime; 18600db7afdSDavid E. O'Brien using ::wcslen; 18700db7afdSDavid E. O'Brien using ::wcsncat; 18800db7afdSDavid E. O'Brien using ::wcsncmp; 18900db7afdSDavid E. O'Brien using ::wcsncpy; 19000db7afdSDavid E. O'Brien using ::wcsrtombs; 19100db7afdSDavid E. O'Brien using ::wcsspn; 19200db7afdSDavid E. O'Brien using ::wcstod; 193ffeaf689SAlexander Kabaev #if _GLIBCXX_HAVE_WCSTOF 19400db7afdSDavid E. O'Brien using ::wcstof; 195ffeaf689SAlexander Kabaev #endif 19600db7afdSDavid E. O'Brien using ::wcstok; 19700db7afdSDavid E. O'Brien using ::wcstol; 19800db7afdSDavid E. O'Brien using ::wcstoul; 19900db7afdSDavid E. O'Brien using ::wcsxfrm; 20000db7afdSDavid E. O'Brien using ::wctob; 20100db7afdSDavid E. O'Brien using ::wmemcmp; 20200db7afdSDavid E. O'Brien using ::wmemcpy; 20300db7afdSDavid E. O'Brien using ::wmemmove; 20400db7afdSDavid E. O'Brien using ::wmemset; 20500db7afdSDavid E. O'Brien using ::wprintf; 20600db7afdSDavid E. O'Brien using ::wscanf; 20700db7afdSDavid E. O'Brien 20800db7afdSDavid E. O'Brien using ::wcschr; 20900db7afdSDavid E. O'Brien 21000db7afdSDavid E. O'Brien inline wchar_t* wcschr(wchar_t * __p,wchar_t __c)21100db7afdSDavid E. O'Brien wcschr(wchar_t* __p, wchar_t __c) 21200db7afdSDavid E. O'Brien { return wcschr(const_cast<const wchar_t*>(__p), __c); } 21300db7afdSDavid E. O'Brien 21400db7afdSDavid E. O'Brien using ::wcspbrk; 21500db7afdSDavid E. O'Brien 21600db7afdSDavid E. O'Brien inline wchar_t* wcspbrk(wchar_t * __s1,const wchar_t * __s2)217*f8a1b7d9SAlexander Kabaev wcspbrk(wchar_t* __s1, const wchar_t* __s2) 21800db7afdSDavid E. O'Brien { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); } 21900db7afdSDavid E. O'Brien 22000db7afdSDavid E. O'Brien using ::wcsrchr; 22100db7afdSDavid E. O'Brien 22200db7afdSDavid E. O'Brien inline wchar_t* wcsrchr(wchar_t * __p,wchar_t __c)22300db7afdSDavid E. O'Brien wcsrchr(wchar_t* __p, wchar_t __c) 22400db7afdSDavid E. O'Brien { return wcsrchr(const_cast<const wchar_t*>(__p), __c); } 22500db7afdSDavid E. O'Brien 22600db7afdSDavid E. O'Brien using ::wcsstr; 22700db7afdSDavid E. O'Brien 22800db7afdSDavid E. O'Brien inline wchar_t* wcsstr(wchar_t * __s1,const wchar_t * __s2)229ffeaf689SAlexander Kabaev wcsstr(wchar_t* __s1, const wchar_t* __s2) 23000db7afdSDavid E. O'Brien { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); } 23100db7afdSDavid E. O'Brien 23200db7afdSDavid E. O'Brien using ::wmemchr; 23300db7afdSDavid E. O'Brien 23400db7afdSDavid E. O'Brien inline wchar_t* wmemchr(wchar_t * __p,wchar_t __c,size_t __n)23500db7afdSDavid E. O'Brien wmemchr(wchar_t* __p, wchar_t __c, size_t __n) 23600db7afdSDavid E. O'Brien { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); } 237*f8a1b7d9SAlexander Kabaev 238*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 23900db7afdSDavid E. O'Brien 240ffeaf689SAlexander Kabaev #if _GLIBCXX_USE_C99 24100db7afdSDavid E. O'Brien 24200db7afdSDavid E. O'Brien #undef wcstold 24300db7afdSDavid E. O'Brien #undef wcstoll 24400db7afdSDavid E. O'Brien #undef wcstoull 24500db7afdSDavid E. O'Brien 246*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) 247*f8a1b7d9SAlexander Kabaev 248ffeaf689SAlexander Kabaev #if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC 2491b86b14eSAlexander Kabaev extern "C" long double 2501b86b14eSAlexander Kabaev (wcstold)(const wchar_t * restrict, wchar_t ** restrict); 2511b86b14eSAlexander Kabaev #endif 252ffeaf689SAlexander Kabaev #if !_GLIBCXX_USE_C99_DYNAMIC 25300db7afdSDavid E. O'Brien using ::wcstold; 2541b86b14eSAlexander Kabaev #endif 255ffeaf689SAlexander Kabaev #if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 2561b86b14eSAlexander Kabaev extern "C" long long int 2571b86b14eSAlexander Kabaev (wcstoll)(const wchar_t * restrict, wchar_t ** restrict, int); 2581b86b14eSAlexander Kabaev extern "C" unsigned long long int 2591b86b14eSAlexander Kabaev (wcstoull)(const wchar_t * restrict, wchar_t ** restrict, int); 2601b86b14eSAlexander Kabaev #endif 261ffeaf689SAlexander Kabaev #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC 26200db7afdSDavid E. O'Brien using ::wcstoll; 26300db7afdSDavid E. O'Brien using ::wcstoull; 2641b86b14eSAlexander Kabaev #endif 26500db7afdSDavid E. O'Brien 266*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 267*f8a1b7d9SAlexander Kabaev 268*f8a1b7d9SAlexander Kabaev _GLIBCXX_BEGIN_NAMESPACE(std) 269*f8a1b7d9SAlexander Kabaev 270*f8a1b7d9SAlexander Kabaev using ::__gnu_cxx::wcstold; 271*f8a1b7d9SAlexander Kabaev using ::__gnu_cxx::wcstoll; 272*f8a1b7d9SAlexander Kabaev using ::__gnu_cxx::wcstoull; 273*f8a1b7d9SAlexander Kabaev 274*f8a1b7d9SAlexander Kabaev _GLIBCXX_END_NAMESPACE 275*f8a1b7d9SAlexander Kabaev 27600db7afdSDavid E. O'Brien #endif 27700db7afdSDavid E. O'Brien 278ffeaf689SAlexander Kabaev #endif //_GLIBCXX_USE_WCHAR_T 27900db7afdSDavid E. O'Brien 28000db7afdSDavid E. O'Brien #endif 281