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 | |