Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. // -*- C++ -*- forwarding header.
  2.  
  3. // Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
  4. //
  5. // This file is part of the GNU ISO C++ Library.  This library is free
  6. // software; you can redistribute it and/or modify it under the
  7. // terms of the GNU General Public License as published by the
  8. // Free Software Foundation; either version 2, or (at your option)
  9. // any later version.
  10.  
  11. // This library is distributed in the hope that it will be useful,
  12. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. // GNU General Public License for more details.
  15.  
  16. // You should have received a copy of the GNU General Public License along
  17. // with this library; see the file COPYING.  If not, write to the Free
  18. // Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
  19. // USA.
  20.  
  21. // As a special exception, you may use this file as part of a free software
  22. // library without restriction.  Specifically, if other files instantiate
  23. // templates or use macros or inline functions from this file, or you compile
  24. // this file and link it with other files to produce an executable, this
  25. // file does not by itself cause the resulting executable to be covered by
  26. // the GNU General Public License.  This exception does not however
  27. // invalidate any other reasons why the executable file might be covered by
  28. // the GNU General Public License.
  29.  
  30. //
  31. // ISO C++ 14882: ???
  32. //
  33.  
  34. #ifndef _CPP_CWCHAR
  35. #define _CPP_CWCHAR 1
  36.  
  37. #include <bits/c++config.h>
  38. #include <bits/std_cstddef.h>
  39.  
  40. #if _GLIBCPP_HAVE_WCHAR_H
  41. #pragma GCC system_header
  42. #include_next <wchar.h>
  43. #endif
  44.  
  45. // Need to do a bit of trickery here with mbstate_t as char_traits
  46. // assumes it is in wchar.h, regardless of wchar_t specializations.
  47. #ifndef _GLIBCPP_HAVE_MBSTATE_T
  48. extern "C"
  49. {
  50.   typedef struct
  51.   {
  52.     int __fill[6];
  53.   } mbstate_t;
  54. }
  55. #endif
  56.  
  57. namespace std
  58. {
  59.   using ::mbstate_t;
  60. }
  61.  
  62. // Get rid of those macros defined in <wchar.h> in lieu of real functions.
  63. #undef btowc
  64. #undef fgetwc
  65. #undef fgetws
  66. #undef fputwc
  67. #undef fputws
  68. #undef fwide
  69. #undef fwprintf
  70. #undef fwscanf
  71. #undef getwc
  72. #undef getwchar
  73. #undef mbrlen
  74. #undef mbrtowc
  75. #undef mbsinit
  76. #undef mbsrtowcs
  77. #undef putwc
  78. #undef putwchar
  79. #undef swprintf
  80. #undef swscanf
  81. #undef ungetwc
  82. #undef vfwprintf
  83. #undef vfwscanf
  84. #undef vswprintf
  85. #undef vswscanf
  86. #undef vwprintf
  87. #undef vwscanf
  88. #undef wcrtomb
  89. #undef wcscat
  90. #undef wcschr
  91. #undef wcscmp
  92. #undef wcscoll
  93. #undef wcscpy
  94. #undef wcscspn
  95. #undef wcsftime
  96. #undef wcslen
  97. #undef wcsncat
  98. #undef wcsncmp
  99. #undef wcsncpy
  100. #undef wcspbrk
  101. #undef wcsrchr
  102. #undef wcsrtombs
  103. #undef wcsspn
  104. #undef wcsstr
  105. #undef wcstod
  106. #undef wcstof
  107. #undef wcstok
  108. #undef wcstol
  109. #undef wcstoul
  110. #undef wcsxfrm
  111. #undef wctob
  112. #undef wmemchr
  113. #undef wmemcmp
  114. #undef wmemcpy
  115. #undef wmemmove
  116. #undef wmemset
  117. #undef wprintf
  118. #undef wscanf
  119.  
  120. #if _GLIBCPP_USE_WCHAR_T
  121. namespace std
  122. {
  123.   using ::wint_t;
  124.  
  125.   using ::btowc;
  126.   using ::fgetwc;
  127.   using ::fgetws;
  128.   using ::fputwc;
  129.   using ::fputws;
  130.   using ::fwide;
  131.   using ::fwprintf;
  132.   using ::fwscanf;
  133.   using ::getwc;
  134.   using ::getwchar;
  135.   using ::mbrlen;
  136.   using ::mbrtowc;
  137.   using ::mbsinit;
  138.   using ::mbsrtowcs;
  139.   using ::putwc;
  140.   using ::putwchar;
  141.   using ::swprintf;
  142.   using ::swscanf;
  143.   using ::ungetwc;
  144.   using ::vfwprintf;
  145.   using ::vfwscanf;
  146.   using ::vswprintf;
  147.   using ::vswscanf;
  148.   using ::vwprintf;
  149.   using ::vwscanf;
  150.   using ::wcrtomb;
  151.   using ::wcscat;
  152.   using ::wcscmp;
  153.   using ::wcscoll;
  154.   using ::wcscpy;
  155.   using ::wcscspn;
  156.   using ::wcsftime;
  157.   using ::wcslen;
  158.   using ::wcsncat;
  159.   using ::wcsncmp;
  160.   using ::wcsncpy;
  161.   using ::wcsrtombs;
  162.   using ::wcsspn;
  163.   using ::wcstod;
  164.   using ::wcstof;
  165.   using ::wcstok;
  166.   using ::wcstol;
  167.   using ::wcstoul;
  168.   using ::wcsxfrm;
  169.   using ::wctob;
  170.   using ::wmemcmp;
  171.   using ::wmemcpy;
  172.   using ::wmemmove;
  173.   using ::wmemset;
  174.   using ::wprintf;
  175.   using ::wscanf;
  176.  
  177.   using ::wcschr;
  178.  
  179.   inline wchar_t*
  180.   wcschr(wchar_t* __p, wchar_t __c)
  181.   { return wcschr(const_cast<const wchar_t*>(__p), __c); }
  182.  
  183.   using ::wcspbrk;
  184.  
  185.   inline wchar_t*
  186.   wcspbrk(wchar_t* __s1, wchar_t* __s2)
  187.   { return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); }
  188.  
  189.   using ::wcsrchr;
  190.  
  191.   inline wchar_t*
  192.   wcsrchr(wchar_t* __p, wchar_t __c)
  193.   { return wcsrchr(const_cast<const wchar_t*>(__p), __c); }
  194.  
  195.   using ::wcsstr;
  196.  
  197.   inline wchar_t*
  198.   wcsstr(wchar_t* __s1, wchar_t* __s2)
  199.   { return wcsstr(const_cast<const wchar_t*>(__s1), __s2); }
  200.  
  201.   using ::wmemchr;
  202.  
  203.   inline wchar_t*
  204.   wmemchr(wchar_t* __p, wchar_t __c, size_t __n)
  205.   { return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); }
  206. }
  207.  
  208. #if _GLIBCPP_USE_C99
  209.  
  210. #undef wcstold
  211. #undef wcstoll
  212. #undef wcstoull
  213.  
  214. namespace __gnu_cxx
  215. {
  216.   using ::wcstold;
  217.   using ::wcstoll;
  218.   using ::wcstoull;
  219. }
  220.  
  221. namespace std
  222. {
  223.   using __gnu_cxx::wcstold;
  224.   using __gnu_cxx::wcstoll;
  225.   using __gnu_cxx::wcstoull;
  226. }
  227. #endif
  228.  
  229. #endif //_GLIBCPP_USE_WCHAR_T
  230.  
  231. #endif
  232.