1    	// Wrapper of C-language FILE struct -*- C++ -*-
2    	
3    	// Copyright (C) 2000-2013 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   	//
26   	// ISO C++ 14882: 27.8  File-based streams
27   	//
28   	
29   	/** @file bits/basic_file.h
30   	 *  This is an internal header file, included by other library headers.
31   	 *  Do not attempt to use it directly. @headername{ios}
32   	 */
33   	
34   	#ifndef _GLIBCXX_BASIC_FILE_STDIO_H
35   	#define _GLIBCXX_BASIC_FILE_STDIO_H 1
36   	
37   	#pragma GCC system_header
38   	
39   	#include <bits/c++config.h>
40   	#include <bits/c++io.h>  // for __c_lock and __c_file
41   	#include <ios>
42   	
43   	namespace std _GLIBCXX_VISIBILITY(default)
44   	{
45   	_GLIBCXX_BEGIN_NAMESPACE_VERSION
46   	
47   	  // Generic declaration.
48   	  template<typename _CharT>
49   	    class __basic_file; 
50   	
51   	  // Specialization.
52   	  template<>
53   	    class __basic_file<char>
54   	    {
55   	      // Underlying data source/sink.
56   	      __c_file* 	_M_cfile;
57   	
58   	      // True iff we opened _M_cfile, and thus must close it ourselves.
59   	      bool 		_M_cfile_created;
60   	
61   	    public:
62   	      __basic_file(__c_lock* __lock = 0) throw ();
63   	
64   	      __basic_file* 
65   	      open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
66   	
67   	      __basic_file*
68   	      sys_open(__c_file* __file, ios_base::openmode);
69   	
70   	      __basic_file*
71   	      sys_open(int __fd, ios_base::openmode __mode) throw ();
72   	
73   	      __basic_file* 
74   	      close(); 
75   	
76   	      _GLIBCXX_PURE bool 
77   	      is_open() const throw ();
78   	
79   	      _GLIBCXX_PURE int 
80   	      fd() throw ();
81   	
82   	      _GLIBCXX_PURE __c_file*
83   	      file() throw ();
84   	
85   	      ~__basic_file();
86   	
87   	      streamsize 
88   	      xsputn(const char* __s, streamsize __n);
89   	
90   	      streamsize 
91   	      xsputn_2(const char* __s1, streamsize __n1,
92   		       const char* __s2, streamsize __n2);
93   	
94   	      streamsize 
95   	      xsgetn(char* __s, streamsize __n);
96   	
97   	      streamoff
98   	      seekoff(streamoff __off, ios_base::seekdir __way) throw ();
99   	
100  	      int 
101  	      sync();
102  	
103  	      streamsize
104  	      showmanyc();
105  	    };
106  	
107  	_GLIBCXX_END_NAMESPACE_VERSION
108  	} // namespace
109  	
110  	#endif	
111