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
00038 #if !defined( _OESS_1__IO__FIXED_MEM_BUF_HPP_ )
00039 #define _OESS_1__IO__FIXED_MEM_BUF_HPP_
00040
00041 #include <oess_1/io/h/declspec.hpp>
00042
00043 #include <auto_ptr_3/h/vect_ptr.hpp>
00044
00045 #include <oess_1/io/h/binbuffer.hpp>
00046
00047 namespace oess_1 {
00048
00049 namespace io {
00050
00051
00052
00053
00054
00056
00074 class OESS_1__IO__TYPE ifixed_mem_buf_t :
00075 public ibinbuffer_t
00076 {
00077 public :
00078 ifixed_mem_buf_t(
00081
00085 const oess_1::char_t * buf,
00087 size_t capacity );
00088 virtual ~ifixed_mem_buf_t();
00089
00091
00096 size_t
00097 capacity() const;
00098
00100
00104 virtual size_t
00105 size() const;
00106
00109 virtual size_t
00110 pos() const;
00111
00114
00118 void
00119 set_pos( size_t pos );
00120
00122 virtual bool
00123 eof() const;
00124
00126 const oess_1::char_t *
00127 ptr() const;
00128
00130 const oess_1::char_t *
00131 current_ptr() const;
00132
00133 protected :
00135
00140 virtual const oess_1::char_t *
00141 in_reserve(
00144 size_t item_count,
00146 size_t item_size,
00149 size_t & item_available );
00150
00152 virtual void
00153 in_shift(
00155 size_t item_count,
00157 size_t item_size );
00158
00159 private :
00161 const oess_1::char_t * m_buf;
00163
00166 size_t m_capacity;
00168 size_t m_pos;
00169
00170 private :
00172 ifixed_mem_buf_t(
00173 const ifixed_mem_buf_t & );
00175 ifixed_mem_buf_t &
00176 operator=(
00177 const ifixed_mem_buf_t & );
00178 };
00179
00180
00181
00182
00183
00185
00213 class OESS_1__IO__TYPE ofixed_mem_buf_t :
00214 public obinbuffer_t
00215 {
00216 public :
00217 ofixed_mem_buf_t(
00220
00224 oess_1::char_t * buf,
00226 size_t capacity,
00228 size_t initial_size = 0 );
00229 virtual ~ofixed_mem_buf_t();
00230
00232
00235 virtual size_t
00236 capacity() const;
00237
00239
00241 virtual size_t
00242 size() const;
00243
00246 virtual size_t
00247 pos() const;
00248
00251
00255 void
00256 set_pos( size_t pos );
00257
00259 const oess_1::char_t *
00260 ptr() const;
00261
00263 const oess_1::char_t *
00264 current_ptr() const;
00265
00266 protected :
00268 virtual oess_1::char_t *
00269 out_reserve(
00272 size_t item_count,
00274 size_t item_size,
00277 size_t & item_available );
00278
00280 virtual void
00281 out_shift(
00283 size_t item_count,
00285 size_t item_size );
00286
00287 private :
00289 oess_1::char_t * m_buf;
00291
00294 size_t m_capacity;
00296 size_t m_size;
00298 size_t m_pos;
00299
00300 private :
00302 ofixed_mem_buf_t(
00303 const ofixed_mem_buf_t & );
00305 ofixed_mem_buf_t &
00306 operator=(
00307 const ofixed_mem_buf_t & );
00308 };
00309
00310 }
00311
00312 }
00313
00314 #endif