1    	// -*- C++ -*- forwarding header.
2    	
3    	// Copyright (C) 1997-2017 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