cstdio revision 1.1
1// -*- C++ -*- forwarding header.
2
3// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
4// 2006, 2007, 2008, 2009, 2010
5// Free Software Foundation, Inc.
6//
7// This file is part of the GNU ISO C++ Library.  This library is free
8// software; you can redistribute it and/or modify it under the
9// terms of the GNU General Public License as published by the
10// Free Software Foundation; either version 3, or (at your option)
11// any later version.
12
13// This library is distributed in the hope that it will be useful,
14// but WITHOUT ANY WARRANTY; without even the implied warranty of
15// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16// GNU General Public License for more details.
17
18// Under Section 7 of GPL version 3, you are granted additional
19// permissions described in the GCC Runtime Library Exception, version
20// 3.1, as published by the Free Software Foundation.
21
22// You should have received a copy of the GNU General Public License and
23// a copy of the GCC Runtime Library Exception along with this program;
24// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
25// <http://www.gnu.org/licenses/>.
26
27/** @file include/cstdio
28 *  This is a Standard C++ Library file.  You should @c \#include this file
29 *  in your programs, rather than any of the @a *.h implementation files.
30 *
31 *  This is the C++ version of the Standard C Library header @c stdio.h,
32 *  and its contents are (mostly) the same as that header, but are all
33 *  contained in the namespace @c std (except for names which are defined
34 *  as macros in C).
35 */
36
37//
38// ISO C++ 14882: 27.8.2  C Library files
39//
40
41#pragma GCC system_header
42
43#include <bits/c++config.h>
44#include <cstddef>
45#include <stdio.h>
46
47#ifndef _GLIBCXX_CSTDIO
48#define _GLIBCXX_CSTDIO 1
49
50// Get rid of those macros defined in <stdio.h> in lieu of real functions.
51#undef clearerr
52#undef fclose
53#undef feof
54#undef ferror
55#undef fflush
56#undef fgetc
57#undef fgetpos
58#undef fgets
59#undef fopen
60#undef fprintf
61#undef fputc
62#undef fputs
63#undef fread
64#undef freopen
65#undef fscanf
66#undef fseek
67#undef fsetpos
68#undef ftell
69#undef fwrite
70#undef getc
71#undef getchar
72#undef gets
73#undef perror
74#undef printf
75#undef putc
76#undef putchar
77#undef puts
78#undef remove
79#undef rename
80#undef rewind
81#undef scanf
82#undef setbuf
83#undef setvbuf
84#undef sprintf
85#undef sscanf
86#undef tmpfile
87#undef tmpnam
88#undef ungetc
89#undef vfprintf
90#undef vprintf
91#undef vsprintf
92
93_GLIBCXX_BEGIN_NAMESPACE(std)
94
95  using ::FILE;
96  using ::fpos_t;
97
98  using ::clearerr;
99  using ::fclose;
100  using ::feof;
101  using ::ferror;
102  using ::fflush;
103  using ::fgetc;
104  using ::fgetpos;
105  using ::fgets;
106  using ::fopen;
107  using ::fprintf;
108  using ::fputc;
109  using ::fputs;
110  using ::fread;
111  using ::freopen;
112  using ::fscanf;
113  using ::fseek;
114  using ::fsetpos;
115  using ::ftell;
116  using ::fwrite;
117  using ::getc;
118  using ::getchar;
119  using ::gets;
120  using ::perror;
121  using ::printf;
122  using ::putc;
123  using ::putchar;
124  using ::puts;
125  using ::remove;
126  using ::rename;
127  using ::rewind;
128  using ::scanf;
129  using ::setbuf;
130  using ::setvbuf;
131  using ::sprintf;
132  using ::sscanf;
133  using ::tmpfile;
134  using ::tmpnam;
135  using ::ungetc;
136  using ::vfprintf;
137  using ::vprintf;
138  using ::vsprintf;
139
140_GLIBCXX_END_NAMESPACE
141
142#if _GLIBCXX_USE_C99
143
144#undef snprintf
145#undef vfscanf
146#undef vscanf
147#undef vsnprintf
148#undef vsscanf
149
150_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
151
152#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
153  extern "C" int
154  (snprintf)(char * restrict, size_t, const char * restrict, ...) throw ();
155  extern "C" int
156  (vfscanf)(FILE * restrict, const char * restrict, __gnuc_va_list);
157  extern "C" int (vscanf)(const char * restrict, __gnuc_va_list);
158  extern "C" int
159  (vsnprintf)(char * restrict, size_t, const char * restrict, __gnuc_va_list)
160  throw ();
161  extern "C" int
162  (vsscanf)(const char * restrict, const char * restrict, __gnuc_va_list)
163  throw ();
164#endif
165
166#if !_GLIBCXX_USE_C99_DYNAMIC
167  using ::snprintf;
168  using ::vfscanf;
169  using ::vscanf;
170  using ::vsnprintf;
171  using ::vsscanf;
172#endif
173
174_GLIBCXX_END_NAMESPACE
175
176_GLIBCXX_BEGIN_NAMESPACE(std)
177
178  using ::__gnu_cxx::snprintf;
179  using ::__gnu_cxx::vfscanf;
180  using ::__gnu_cxx::vscanf;
181  using ::__gnu_cxx::vsnprintf;
182  using ::__gnu_cxx::vsscanf;
183
184_GLIBCXX_END_NAMESPACE
185
186#endif // _GLIBCXX_USE_C99
187
188#ifdef __GXX_EXPERIMENTAL_CXX0X__
189#  if defined(_GLIBCXX_INCLUDE_AS_TR1)
190#    error C++0x header cannot be included from TR1 header
191#  endif
192#  if defined(_GLIBCXX_INCLUDE_AS_CXX0X)
193#    include <tr1_impl/cstdio>
194#  else
195#    define _GLIBCXX_INCLUDE_AS_CXX0X
196#    define _GLIBCXX_BEGIN_NAMESPACE_TR1
197#    define _GLIBCXX_END_NAMESPACE_TR1
198#    define _GLIBCXX_TR1
199#    include <tr1_impl/cstdio>
200#    undef _GLIBCXX_TR1
201#    undef _GLIBCXX_END_NAMESPACE_TR1
202#    undef _GLIBCXX_BEGIN_NAMESPACE_TR1
203#    undef _GLIBCXX_INCLUDE_AS_CXX0X
204#  endif
205#endif
206
207#endif
208