cwchar

Go to the documentation of this file.
00001 // -*- C++ -*- forwarding header.
00002 
00003 // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
00004 // Free Software Foundation, Inc.
00005 //
00006 // This file is part of the GNU ISO C++ Library.  This library is free
00007 // software; you can redistribute it and/or modify it under the
00008 // terms of the GNU General Public License as published by the
00009 // Free Software Foundation; either version 2, or (at your option)
00010 // any later version.
00011 
00012 // This library is distributed in the hope that it will be useful,
00013 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015 // GNU General Public License for more details.
00016 
00017 // You should have received a copy of the GNU General Public License along
00018 // with this library; see the file COPYING.  If not, write to the Free
00019 // Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
00020 // USA.
00021 
00022 // As a special exception, you may use this file as part of a free software
00023 // library without restriction.  Specifically, if other files instantiate
00024 // templates or use macros or inline functions from this file, or you compile
00025 // this file and link it with other files to produce an executable, this
00026 // file does not by itself cause the resulting executable to be covered by
00027 // the GNU General Public License.  This exception does not however
00028 // invalidate any other reasons why the executable file might be covered by
00029 // the GNU General Public License.
00030 
00031 //
00032 // ISO C++ 14882: 21.4
00033 //
00034 
00045 #ifndef _GLIBCXX_CWCHAR
00046 #define _GLIBCXX_CWCHAR 1
00047 
00048 #pragma GCC system_header
00049 
00050 #include <bits/c++config.h>
00051 #include <cstddef>
00052 #include <ctime>
00053 
00054 #if _GLIBCXX_HAVE_WCHAR_H
00055 #include <wchar.h>
00056 #endif
00057 
00058 // Need to do a bit of trickery here with mbstate_t as char_traits
00059 // assumes it is in wchar.h, regardless of wchar_t specializations.
00060 #ifndef _GLIBCXX_HAVE_MBSTATE_T
00061 extern "C"
00062 {
00063   typedef struct
00064   {
00065     int __fill[6];
00066   } mbstate_t;
00067 }
00068 #endif
00069 
00070 namespace std
00071 {
00072   using ::mbstate_t;
00073 }
00074 
00075 // Get rid of those macros defined in <wchar.h> in lieu of real functions.
00076 #undef btowc
00077 #undef fgetwc
00078 #undef fgetws
00079 #undef fputwc
00080 #undef fputws
00081 #undef fwide
00082 #undef fwprintf
00083 #undef fwscanf
00084 #undef getwc
00085 #undef getwchar
00086 #undef mbrlen
00087 #undef mbrtowc
00088 #undef mbsinit
00089 #undef mbsrtowcs
00090 #undef putwc
00091 #undef putwchar
00092 #undef swprintf
00093 #undef swscanf
00094 #undef ungetwc
00095 #undef vfwprintf
00096 #if _GLIBCXX_HAVE_VFWSCANF
00097 # undef vfwscanf
00098 #endif
00099 #undef vswprintf
00100 #if _GLIBCXX_HAVE_VSWSCANF
00101 # undef vswscanf
00102 #endif
00103 #undef vwprintf
00104 #if _GLIBCXX_HAVE_VWSCANF
00105 # undef vwscanf
00106 #endif
00107 #undef wcrtomb
00108 #undef wcscat
00109 #undef wcschr
00110 #undef wcscmp
00111 #undef wcscoll
00112 #undef wcscpy
00113 #undef wcscspn
00114 #undef wcsftime
00115 #undef wcslen
00116 #undef wcsncat
00117 #undef wcsncmp
00118 #undef wcsncpy
00119 #undef wcspbrk
00120 #undef wcsrchr
00121 #undef wcsrtombs
00122 #undef wcsspn
00123 #undef wcsstr
00124 #undef wcstod
00125 #if _GLIBCXX_HAVE_WCSTOF
00126 # undef wcstof
00127 #endif
00128 #undef wcstok
00129 #undef wcstol
00130 #undef wcstoul
00131 #undef wcsxfrm
00132 #undef wctob
00133 #undef wmemchr
00134 #undef wmemcmp
00135 #undef wmemcpy
00136 #undef wmemmove
00137 #undef wmemset
00138 #undef wprintf
00139 #undef wscanf
00140 
00141 #if _GLIBCXX_USE_WCHAR_T
00142 namespace std
00143 {
00144   using ::wint_t;
00145 
00146   using ::btowc;
00147   using ::fgetwc;
00148   using ::fgetws;
00149   using ::fputwc;
00150   using ::fputws;
00151   using ::fwide;
00152   using ::fwprintf;
00153   using ::fwscanf;
00154   using ::getwc;
00155   using ::getwchar;
00156   using ::mbrlen;
00157   using ::mbrtowc;
00158   using ::mbsinit;
00159   using ::mbsrtowcs;
00160   using ::putwc;
00161   using ::putwchar;
00162   using ::swprintf;
00163   using ::swscanf;
00164   using ::ungetwc;
00165   using ::vfwprintf;
00166 #if _GLIBCXX_HAVE_VFWSCANF
00167   using ::vfwscanf;
00168 #endif
00169   using ::vswprintf;
00170 #if _GLIBCXX_HAVE_VSWSCANF
00171   using ::vswscanf;
00172 #endif
00173   using ::vwprintf;
00174 #if _GLIBCXX_HAVE_VWSCANF
00175   using ::vwscanf;
00176 #endif
00177   using ::wcrtomb;
00178   using ::wcscat;
00179   using ::wcscmp;
00180   using ::wcscoll;
00181   using ::wcscpy;
00182   using ::wcscspn;
00183   using ::wcsftime;
00184   using ::wcslen;
00185   using ::wcsncat;
00186   using ::wcsncmp;
00187   using ::wcsncpy;
00188   using ::wcsrtombs;
00189   using ::wcsspn;
00190   using ::wcstod;
00191 #if _GLIBCXX_HAVE_WCSTOF
00192   using ::wcstof;
00193 #endif
00194   using ::wcstok;
00195   using ::wcstol;
00196   using ::wcstoul;
00197   using ::wcsxfrm;
00198   using ::wctob;
00199   using ::wmemcmp;
00200   using ::wmemcpy;
00201   using ::wmemmove;
00202   using ::wmemset;
00203   using ::wprintf;
00204   using ::wscanf;
00205 
00206   using ::wcschr;
00207 
00208   inline wchar_t*
00209   wcschr(wchar_t* __p, wchar_t __c)
00210   { return wcschr(const_cast<const wchar_t*>(__p), __c); }
00211 
00212   using ::wcspbrk;
00213 
00214   inline wchar_t*
00215   wcspbrk(wchar_t* __s1, const wchar_t* __s2)
00216   { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
00217 
00218   using ::wcsrchr;
00219 
00220   inline wchar_t*
00221   wcsrchr(wchar_t* __p, wchar_t __c)
00222   { return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
00223 
00224   using ::wcsstr;
00225 
00226   inline wchar_t*
00227   wcsstr(wchar_t* __s1, const wchar_t* __s2)
00228   { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
00229 
00230   using ::wmemchr;
00231 
00232   inline wchar_t*
00233   wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
00234   { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
00235 }
00236 
00237 #if _GLIBCXX_USE_C99
00238 
00239 #undef wcstold
00240 #undef wcstoll
00241 #undef wcstoull
00242 
00243 namespace __gnu_cxx
00244 {
00245 #if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
00246   extern "C" long double
00247     (wcstold)(const wchar_t * restrict, wchar_t ** restrict);
00248 #endif
00249 #if !_GLIBCXX_USE_C99_DYNAMIC
00250   using ::wcstold;
00251 #endif
00252 #if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
00253   extern "C" long long int
00254     (wcstoll)(const wchar_t * restrict, wchar_t ** restrict, int);
00255   extern "C" unsigned long long int
00256     (wcstoull)(const wchar_t * restrict, wchar_t ** restrict, int);
00257 #endif
00258 #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
00259   using ::wcstoll;
00260   using ::wcstoull;
00261 #endif
00262 }
00263 
00264 namespace std
00265 {
00266   using __gnu_cxx::wcstold;
00267   using __gnu_cxx::wcstoll;
00268   using __gnu_cxx::wcstoull;
00269 }
00270 #endif
00271 
00272 #endif //_GLIBCXX_USE_WCHAR_T
00273 
00274 #endif

Generated on Tue Feb 2 16:55:52 2010 for GNU C++ STL by  doxygen 1.4.7