| 1 | // -*- C++ -*- forwarding header. | 
| 2 |  | 
| 3 | // Copyright (C) 1997-2019 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 3, 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 | // Under Section 7 of GPL version 3, you are granted additional | 
| 17 | // permissions described in the GCC Runtime Library Exception, version | 
| 18 | // 3.1, as published by the Free Software Foundation. | 
| 19 |  | 
| 20 | // You should have received a copy of the GNU General Public License and | 
| 21 | // a copy of the GCC Runtime Library Exception along with this program; | 
| 22 | // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see | 
| 23 | // <http://www.gnu.org/licenses/>. | 
| 24 |  | 
| 25 | /** @file include/cstdio | 
| 26 |  *  This is a Standard C++ Library file.  You should @c \#include this file | 
| 27 |  *  in your programs, rather than any of the @a *.h implementation files. | 
| 28 |  * | 
| 29 |  *  This is the C++ version of the Standard C Library header @c stdio.h, | 
| 30 |  *  and its contents are (mostly) the same as that header, but are all | 
| 31 |  *  contained in the namespace @c std (except for names which are defined | 
| 32 |  *  as macros in C). | 
| 33 |  */ | 
| 34 |  | 
| 35 | // | 
| 36 | // ISO C++ 14882: 27.8.2  C Library files | 
| 37 | // | 
| 38 |  | 
| 39 | #pragma GCC system_header | 
| 40 |  | 
| 41 | #include <bits/c++config.h> | 
| 42 | #include <stdio.h> | 
| 43 |  | 
| 44 | #ifndef _GLIBCXX_CSTDIO | 
| 45 | #define _GLIBCXX_CSTDIO 1 | 
| 46 |  | 
| 47 | #if __cplusplus <= 201103L && !defined(_GLIBCXX_HAVE_GETS) | 
| 48 | extern "C"  char* gets (char* __s) __attribute__((__deprecated__)); | 
| 49 | #endif | 
| 50 |  | 
| 51 | // Get rid of those macros defined in <stdio.h> in lieu of real functions. | 
| 52 | #undef clearerr | 
| 53 | #undef fclose | 
| 54 | #undef feof | 
| 55 | #undef ferror | 
| 56 | #undef fflush | 
| 57 | #undef fgetc | 
| 58 | #undef fgetpos | 
| 59 | #undef fgets | 
| 60 | #undef fopen | 
| 61 | #undef fprintf | 
| 62 | #undef fputc | 
| 63 | #undef fputs | 
| 64 | #undef fread | 
| 65 | #undef freopen | 
| 66 | #undef fscanf | 
| 67 | #undef fseek | 
| 68 | #undef fsetpos | 
| 69 | #undef ftell | 
| 70 | #undef fwrite | 
| 71 | #undef getc | 
| 72 | #undef getchar | 
| 73 | #if __cplusplus <= 201103L | 
| 74 | # undef gets | 
| 75 | #endif | 
| 76 | #undef perror | 
| 77 | #undef printf | 
| 78 | #undef putc | 
| 79 | #undef putchar | 
| 80 | #undef puts | 
| 81 | #undef remove | 
| 82 | #undef rename | 
| 83 | #undef rewind | 
| 84 | #undef scanf | 
| 85 | #undef setbuf | 
| 86 | #undef setvbuf | 
| 87 | #undef sprintf | 
| 88 | #undef sscanf | 
| 89 | #undef tmpfile | 
| 90 | #undef tmpnam | 
| 91 | #undef ungetc | 
| 92 | #undef vfprintf | 
| 93 | #undef vprintf | 
| 94 | #undef vsprintf | 
| 95 |  | 
| 96 | namespace std | 
| 97 | { | 
| 98 |   using ::FILE; | 
| 99 |   using ::fpos_t; | 
| 100 |  | 
| 101 |   using ::clearerr; | 
| 102 |   using ::fclose; | 
| 103 |   using ::feof; | 
| 104 |   using ::ferror; | 
| 105 |   using ::fflush; | 
| 106 |   using ::fgetc; | 
| 107 |   using ::fgetpos; | 
| 108 |   using ::fgets; | 
| 109 |   using ::fopen; | 
| 110 |   using ::fprintf; | 
| 111 |   using ::fputc; | 
| 112 |   using ::fputs; | 
| 113 |   using ::fread; | 
| 114 |   using ::freopen; | 
| 115 |   using ::fscanf; | 
| 116 |   using ::fseek; | 
| 117 |   using ::fsetpos; | 
| 118 |   using ::ftell; | 
| 119 |   using ::fwrite; | 
| 120 |   using ::getc; | 
| 121 |   using ::getchar; | 
| 122 | #if __cplusplus <= 201103L | 
| 123 |   // LWG 2249 | 
| 124 |   using ::gets; | 
| 125 | #endif | 
| 126 |   using ::perror; | 
| 127 |   using ::printf; | 
| 128 |   using ::putc; | 
| 129 |   using ::putchar; | 
| 130 |   using ::puts; | 
| 131 |   using ::remove; | 
| 132 |   using ::rename; | 
| 133 |   using ::rewind; | 
| 134 |   using ::scanf; | 
| 135 |   using ::setbuf; | 
| 136 |   using ::setvbuf; | 
| 137 |   using ::sprintf; | 
| 138 |   using ::sscanf; | 
| 139 |   using ::tmpfile; | 
| 140 | #if _GLIBCXX_USE_TMPNAM | 
| 141 |   using ::tmpnam; | 
| 142 | #endif | 
| 143 |   using ::ungetc; | 
| 144 |   using ::vfprintf; | 
| 145 |   using ::vprintf; | 
| 146 |   using ::vsprintf; | 
| 147 | } // namespace | 
| 148 |  | 
| 149 | #if _GLIBCXX_USE_C99_STDIO | 
| 150 |  | 
| 151 | #undef snprintf | 
| 152 | #undef vfscanf | 
| 153 | #undef vscanf | 
| 154 | #undef vsnprintf | 
| 155 | #undef vsscanf | 
| 156 |  | 
| 157 | namespace __gnu_cxx | 
| 158 | { | 
| 159 | #if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC | 
| 160 |   extern "C"  int | 
| 161 |   (snprintf)(char * __restrict, std::size_t, const char * __restrict, ...) | 
| 162 |   throw (); | 
| 163 |   extern "C"  int | 
| 164 |   (vfscanf)(FILE * __restrict, const char * __restrict, __gnuc_va_list); | 
| 165 |   extern "C"  int (vscanf)(const char * __restrict, __gnuc_va_list); | 
| 166 |   extern "C"  int | 
| 167 |   (vsnprintf)(char * __restrict, std::size_t, const char * __restrict, | 
| 168 | 	      __gnuc_va_list) throw (); | 
| 169 |   extern "C"  int | 
| 170 |   (vsscanf)(const char * __restrict, const char * __restrict, __gnuc_va_list) | 
| 171 |   throw (); | 
| 172 | #endif | 
| 173 |  | 
| 174 | #if !_GLIBCXX_USE_C99_DYNAMIC | 
| 175 |   using ::snprintf; | 
| 176 |   using ::vfscanf; | 
| 177 |   using ::vscanf; | 
| 178 |   using ::vsnprintf; | 
| 179 |   using ::vsscanf; | 
| 180 | #endif | 
| 181 | } // namespace __gnu_cxx | 
| 182 |  | 
| 183 | namespace std | 
| 184 | { | 
| 185 |   using ::__gnu_cxx::snprintf; | 
| 186 |   using ::__gnu_cxx::vfscanf; | 
| 187 |   using ::__gnu_cxx::vscanf; | 
| 188 |   using ::__gnu_cxx::vsnprintf; | 
| 189 |   using ::__gnu_cxx::vsscanf; | 
| 190 | } // namespace std | 
| 191 |  | 
| 192 | #endif // _GLIBCXX_USE_C99_STDIO | 
| 193 |  | 
| 194 | #endif | 
| 195 |  |