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 #if !defined( _OESS_1__FILE__FILE_HPP_ )
00033 #define _OESS_1__FILE__FILE_HPP_
00034
00035 #include <oess_1/file/h/declspec.hpp>
00036
00037 #include <auto_ptr_3/h/vect_ptr.hpp>
00038
00039 #include <oess_1/io/h/binstream.hpp>
00040
00041 namespace oess_1 {
00042
00043 namespace file {
00044
00045
00046
00047
00048
00052 class OESS_1__FILE__TYPE file_t :
00053 public oess_1::io::ibinstream_t,
00054 public oess_1::io::obinstream_t
00055 {
00056 public :
00057 file_t();
00058 virtual ~file_t();
00059
00061 void
00062 open(
00064 const std::string & file_name,
00067 bool is_read_only );
00068
00071 void
00072 create(
00074 const std::string & file_name );
00075
00078 void
00079 close();
00080
00082 oess_1::uint_t
00083 tell();
00084
00086 void
00087 seek( oess_1::uint_t pos );
00088
00090 oess_1::uint_t
00091 length();
00092
00094 virtual bool
00095 eof() const;
00096
00098 void
00099 chsize(
00100 oess_1::uint_t size );
00101
00103 static void
00104 remove( const std::string & file_name );
00105
00113 static bool
00114 is_file_exists(
00115 const std::string & file_name );
00116
00129 static void
00130 rename_file(
00132 const std::string & what,
00134 const std::string & to,
00136 bool auto_destroy_existing_target = false );
00137
00138 protected :
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00162 virtual const oess_1::char_t *
00163 in_reserve(
00166 size_t item_count,
00168 size_t item_size,
00171 size_t & item_available );
00172
00179 virtual void
00180 in_shift(
00182 size_t item_count,
00184 size_t item_size );
00185
00194 virtual oess_1::char_t *
00195 out_reserve(
00198 size_t item_count,
00200 size_t item_size,
00203 size_t & item_available );
00204
00211 virtual void
00212 out_shift(
00214 size_t item_count,
00216 size_t item_size );
00217
00218 private :
00220 auto_ptr_3::vect_ptr_t< oess_1::char_t > m_buf;
00221
00223 int m_file;
00225 bool m_is_read_only;
00226
00230 void
00231 is_workable(
00235 bool is_read_only_op ) const;
00236 };
00237
00238 }
00240 }
00242 #endif