00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _CPP_BASIC_FILE
00035 #define _CPP_BASIC_FILE 1
00036
00037 #pragma GCC system_header
00038
00039 #include <bits/c++config.h>
00040 #include <bits/std_ios.h>
00041
00042 namespace std
00043 {
00044
00045
00046
00047
00048
00049
00050 template<typename _CharT>
00051 struct __basic_file_base: public __c_file_type
00052 {
00053 virtual
00054 ~__basic_file_base() { };
00055
00056 virtual int
00057 overflow(int __c = EOF) = 0;
00058
00059 virtual int
00060 underflow() = 0;
00061
00062 virtual int
00063 uflow() = 0;
00064
00065 virtual int
00066 pbackfail(int __c) = 0;
00067
00068 virtual streamsize
00069 xsputn(const _CharT* __s, streamsize __n) = 0;
00070
00071 virtual streamsize
00072 xsgetn(_CharT* __s, streamsize __n) = 0;
00073
00074 virtual streamoff
00075 seekoff(streamoff __off, ios_base::seekdir __way,
00076 ios_base::openmode __mode = ios_base::in | ios_base::out) = 0;
00077
00078 virtual streamoff
00079 seekpos(streamoff __pos,
00080 ios_base::openmode __mode = ios_base::in | ios_base::out) = 0;
00081
00082 virtual streambuf*
00083 setbuf(_CharT* __b, int __len) = 0;
00084
00085 virtual int
00086 sync() = 0;
00087
00088 virtual int
00089 doallocate() = 0;
00090
00091 virtual streamsize
00092 sys_read(_CharT* __s, streamsize __n) = 0;
00093
00094 virtual streamsize
00095 sys_write(const _CharT* __s, streamsize __n) = 0;
00096
00097 virtual streamoff
00098 sys_seek(streamoff __off, ios_base::seekdir __way) = 0;
00099
00100 virtual int
00101 sys_close() = 0;
00102
00103 virtual int
00104 sys_stat(void* __v) = 0;
00105
00106 virtual int
00107 showmanyc() = 0;
00108
00109 virtual void
00110 imbue(void* __v) = 0;
00111 };
00112
00113
00114
00115
00116 template<typename _CharT>
00117 #ifdef _GLIBCPP_BASIC_FILE_INHERITANCE
00118 class __basic_file: public __basic_file_base<_CharT>
00119 #else
00120 class __basic_file
00121 #endif
00122 {
00123 #if _GLIBCPP_BASIC_FILE_ENCAPSULATION
00124 __c_file_type* _M_cfile;
00125 bool _M_cfile_created;
00126 #else
00127 # ifdef _GLIBCPP_USE_WCHAR_T
00128 __c_wfile_type _M_wfile;
00129 # endif
00130 #endif
00131
00132 public:
00133 __basic_file(__c_lock* __lock = 0);
00134
00135 void
00136 _M_open_mode(ios_base::openmode __mode, int& __p_mode, int& __rw_mode,
00137 char* __c_mode);
00138
00139
00140 __basic_file*
00141 open(const char* __name, ios_base::openmode __mode, int __prot = 0664);
00142
00143
00144
00145
00146
00147 __basic_file*
00148 sys_open(__c_file_type* __file, ios_base::openmode __mode);
00149
00150 __basic_file*
00151 close();
00152
00153 bool
00154 is_open();
00155
00156
00157
00158
00159
00160 virtual
00161 ~__basic_file();
00162
00163 virtual int
00164 overflow(int __c = EOF);
00165
00166 virtual int
00167 underflow();
00168
00169 virtual int
00170 uflow();
00171
00172 virtual int
00173 pbackfail(int __c);
00174
00175
00176
00177
00178 virtual streamsize
00179 xsputn(const _CharT* __s, streamsize __n);
00180
00181
00182
00183
00184 virtual streamsize
00185 xsgetn(_CharT* __s, streamsize __n);
00186
00187
00188
00189
00190 virtual streamoff
00191 seekoff(streamoff __off, ios_base::seekdir __way,
00192 ios_base::openmode __mode = ios_base::in | ios_base::out);
00193
00194
00195
00196
00197 virtual streamoff
00198 seekpos(streamoff __pos,
00199 ios_base::openmode __mode = ios_base::in | ios_base::out);
00200
00201 virtual streambuf*
00202 setbuf(_CharT* __b, int __len);
00203
00204 virtual int
00205 sync();
00206
00207 virtual int
00208 doallocate();
00209
00210
00211
00212
00213 virtual streamsize
00214 sys_read(_CharT* __s, streamsize __n);
00215
00216
00217
00218
00219 virtual streamsize
00220 sys_write(const _CharT* __s, streamsize __n);
00221
00222
00223
00224
00225 virtual streamoff
00226 sys_seek(streamoff __off, ios_base::seekdir __way);
00227
00228 virtual int
00229 sys_close();
00230
00231 virtual int
00232 sys_stat(void* __v);
00233
00234 virtual int
00235 showmanyc();
00236
00237 virtual void
00238 imbue(void* __v);
00239 };
00240 }
00241
00242
00243
00244 #include <bits/basic_file_model.h>
00245
00246 #endif // _CPP_BASIC_FILE