summaryrefslogtreecommitdiffstats
path: root/contrib/libstdc++/include/c_shadow/bits/std_cstdio.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/libstdc++/include/c_shadow/bits/std_cstdio.h')
-rw-r--r--contrib/libstdc++/include/c_shadow/bits/std_cstdio.h283
1 files changed, 283 insertions, 0 deletions
diff --git a/contrib/libstdc++/include/c_shadow/bits/std_cstdio.h b/contrib/libstdc++/include/c_shadow/bits/std_cstdio.h
new file mode 100644
index 0000000..db27612
--- /dev/null
+++ b/contrib/libstdc++/include/c_shadow/bits/std_cstdio.h
@@ -0,0 +1,283 @@
+// -*- C++ -*- header wrapper.
+
+// Copyright (C) 1997-1999, 2000 Free Software Foundation, Inc.
+//
+// This file is part of the GNU ISO C++ Library. This library is free
+// software; you can redistribute it and/or modify it under the
+// terms of the GNU General Public License as published by the
+// Free Software Foundation; either version 2, or (at your option)
+// any later version.
+
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License along
+// with this library; see the file COPYING. If not, write to the Free
+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+
+// As a special exception, you may use this file as part of a free software
+// library without restriction. Specifically, if other files instantiate
+// templates or use macros or inline functions from this file, or you compile
+// this file and link it with other files to produce an executable, this
+// file does not by itself cause the resulting executable to be covered by
+// the GNU General Public License. This exception does not however
+// invalidate any other reasons why the executable file might be covered by
+// the GNU General Public License.
+
+//
+// ISO C++ 14882: 27.8.2 C Library files
+//
+
+#ifndef _CPP_CSTDIO
+#define _CPP_CSTDIO 1
+
+# include <bits/std_cstddef.h>
+# include <bits/std_cstdarg.h>
+
+namespace _C_legacy {
+ extern "C" {
+# define _IN_C_LEGACY_
+# undef __need_FILE
+# pragma GCC system_header
+# include_next <stdio.h>
+ }
+
+ typedef FILE _CPP_FILE_capture;
+ typedef fpos_t _CPP_fpos_t_capture;
+
+ inline FILE*
+ _CPP_stderr_capture() { return stderr; }
+
+ inline FILE*
+ _CPP_stdin_capture() { return stdin; }
+
+ inline FILE*
+ _CPP_stdout_capture() { return stdout; }
+
+ inline int
+ _CPP_getc_capture(FILE* __f) { return getc(__f); }
+
+ inline int
+ _CPP_getchar_capture() { return getchar(); }
+
+ inline int
+ _CPP_putc_capture(int __c, FILE* __f) { return putc(__c, __f); }
+
+ inline int
+ _CPP_putchar_capture(int __c) { return putchar(__c); }
+
+ inline int
+ _CPP_feof_capture(FILE* __f) { return feof(__f); }
+
+} // namespace _C_legacy
+
+# undef FILE
+# undef fpos_t
+
+# undef remove
+# undef rename
+# undef tmpfile
+# undef tmpnam
+# undef fclose
+# undef fflush
+# undef fopen
+# undef freopen
+# undef setbuf
+# undef setvbuf
+# undef fprintf
+# undef fscanf
+# undef printf
+# undef scanf
+# undef sprintf
+# undef sscanf
+# undef vfprintf
+# undef vprintf
+# undef vsprintf
+# undef fgetc
+# undef fgets
+# undef fputc
+# undef fputs
+# undef getc
+# undef getchar
+# undef gets
+# undef putc
+# undef putchar
+# undef puts
+# undef ungetc
+# undef fread
+# undef fwrite
+# undef fgetpos
+# undef fseek
+# undef fsetpos
+# undef ftell
+# undef rewind
+# undef clearerr
+# undef feof
+# undef ferror
+# undef perror
+
+# undef stderr
+# define stderr std::_CPP_stderr()
+# undef stdin
+# define stdin std::_CPP_stdin()
+# undef stdout
+# define stdout std::_CPP_stdout()
+
+namespace std {
+ struct FILE : _C_legacy::_CPP_FILE_capture { };
+ struct fpos_t { _C_legacy::_CPP_fpos_t_capture _M_dummy; };
+
+ using _C_legacy::remove;
+ using _C_legacy::rename;
+ using _C_legacy::tmpnam;
+ using _C_legacy::printf;
+ using _C_legacy::scanf;
+ using _C_legacy::sprintf;
+ using _C_legacy::sscanf;
+ using _C_legacy::gets;
+ using _C_legacy::perror;
+
+ inline FILE*
+ _CPP_stderr()
+ { return reinterpret_cast<FILE*>(_C_legacy::_CPP_stderr_capture() ); }
+
+ inline FILE*
+ _CPP_stdin()
+ { return reinterpret_cast<FILE*>(_C_legacy::_CPP_stdin_capture() ); }
+
+ inline FILE*
+ _CPP_stdout()
+ { return reinterpret_cast<FILE*>(_C_legacy::_CPP_stdout_capture() ); }
+
+ inline FILE*
+ tmpfile() { return reinterpret_cast<FILE*>(_C_legacy::tmpfile()); }
+
+ inline int
+ fclose(FILE* __f) { return _C_legacy::fclose(__f); }
+
+ inline int
+ fflush(FILE* __f) { return _C_legacy::fflush(__f); }
+
+ inline FILE*
+ fopen(char const* __name, char const* __mode)
+ { return reinterpret_cast<FILE*>(_C_legacy::fopen(__name,__mode)); }
+
+ inline FILE*
+ freopen(char const* __name, char const* __mode, FILE* __f)
+ { return reinterpret_cast<FILE*>(_C_legacy::freopen(__name,__mode,__f)); }
+
+ inline void
+ setbuf(FILE* __f, char* __buf)
+ { return _C_legacy::setbuf(__f, __buf); }
+
+ inline int
+ setvbuf(FILE* __f, char* __buf, int __mode, size_t __size)
+ { return _C_legacy::setvbuf(__f, __buf, __mode, __size); }
+
+ inline int
+ fprintf(FILE* __f, char const* __fmt, ...)
+ {
+ va_list __v;
+ va_start(__v,__fmt);
+ int __i = _C_legacy::vfprintf(__f, __fmt, __v);
+ va_end(__v);
+ return __i;
+ }
+
+ inline int
+ fscanf(FILE* __f, char const* __fmt, ...)
+ {
+ va_list __v;
+ va_start(__v,__fmt);
+ int __i = _C_legacy::vfscanf(__f, __fmt, __v);
+ va_end(__v);
+ return __i;
+ }
+
+ inline int
+ vfprintf(FILE* __f, char const* __fmt, va_list __v)
+ { return _C_legacy::vfprintf(__f, __fmt, __v); }
+
+ inline int
+ vprintf(char const* __fmt, va_list __v)
+ { return _C_legacy::vprintf(__fmt, __v); }
+
+ inline int
+ vsprintf(char* __buf, char const* __fmt, va_list __v)
+ { return _C_legacy::vsprintf(__buf, __fmt, __v); }
+
+ inline int
+ fgetc(FILE* __f) { return _C_legacy::fgetc(__f); }
+
+ inline char*
+ fgets(char* __buf, int __n, FILE* __f)
+ { return _C_legacy::fgets(__buf, __n, __f); }
+
+ inline int
+ fputc(int __c, FILE* __f) { return _C_legacy::fputc(__c, __f); }
+
+ inline int
+ fputs(char const* __s, FILE* __f)
+ { return _C_legacy::fputs(__s, __f); }
+
+ inline int
+ getc(FILE* __f) { return _C_legacy::_CPP_getc_capture(__f); }
+
+ inline int
+ getchar() { return _C_legacy::_CPP_getchar_capture(); }
+
+ inline int
+ putc(int __c, FILE* __f)
+ { return _C_legacy::_CPP_putc_capture(__c, __f); }
+
+ inline int
+ putchar(int __c) { return _C_legacy::_CPP_putchar_capture(__c); }
+
+ using _C_legacy::puts;
+
+ inline int
+ ungetc(int __c, FILE* __f) { return _C_legacy::ungetc(__c, __f); }
+
+ inline size_t
+ fread(void* __p, size_t __z, size_t __n, FILE* __f)
+ { return _C_legacy::fread(__p,__z,__n,__f); }
+
+ inline size_t
+ fwrite(void const* __p, size_t __z, size_t __n, FILE* __f)
+ { return _C_legacy::fwrite(__p,__z,__n,__f); }
+
+ inline int
+ fgetpos(FILE* __f, fpos_t* __pos)
+ { return _C_legacy::fgetpos(__f,&__pos->_M_dummy); }
+
+ inline int
+ fseek(FILE* __f, long __off, int __how)
+ { return _C_legacy::fseek(__f,__off,__how); }
+
+ inline int
+ fsetpos(FILE* __f, fpos_t const* __pos)
+ { return _C_legacy::fsetpos(__f,&__pos->_M_dummy); }
+
+ inline long
+ ftell(FILE* __f) { return _C_legacy::ftell(__f); }
+
+ inline void
+ rewind(FILE* __f) { return _C_legacy::rewind(__f); }
+
+ inline void
+ clearerr(FILE* __f) { return _C_legacy::clearerr(__f); }
+
+ inline int
+ feof(FILE* __f) { return _C_legacy::_CPP_feof_capture(__f); }
+
+ inline int
+ ferror(FILE* __f) { return _C_legacy::ferror(__f); }
+} // namespace std
+
+# undef _IN_C_LEGACY_
+
+#endif
+
OpenPOWER on IntegriCloud