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__BIN_STREAM_HPP_ )
00039 #define _OESS_1__IO__BIN_STREAM_HPP_
00040
00041 #include <oess_1/io/h/declspec.hpp>
00042
00043 #include <oess_1/io/h/stream.hpp>
00044
00045 namespace oess_1 {
00046
00047 namespace io {
00048
00049
00050
00051
00052
00059 class OESS_1__IO__TYPE ibinstream_t :
00060 public istream_t {
00061 public :
00062 virtual ~ibinstream_t();
00063
00064 virtual void
00065 read( oess_1::char_t * p, size_t count );
00066
00067 virtual void
00068 read( oess_1::schar_t * p, size_t count );
00069
00070 virtual void
00071 read( oess_1::uchar_t * p, size_t count );
00072
00073 virtual void
00074 read( oess_1::short_t * p, size_t count );
00075
00076 virtual void
00077 read( oess_1::ushort_t * p, size_t count );
00078
00079 virtual void
00080 read( oess_1::int_t * p, size_t count );
00081
00082 virtual void
00083 read( oess_1::uint_t * p, size_t count );
00084
00085 virtual void
00086 read( oess_1::single_t * p, size_t count );
00087
00088 virtual void
00089 read( oess_1::double_t * p, size_t count );
00090
00091 virtual void
00092 read( std::string & p );
00093
00094 virtual void
00095 read( oess_1::defs::quantity_t & p );
00096
00097 virtual bool
00098 eof() const = 0;
00099
00100 protected :
00101 friend class ibuffer_accessor_t;
00102 friend class isubbinstream_t;
00103
00106
00111 virtual const oess_1::char_t *
00112 in_reserve(
00115 size_t item_count,
00117 size_t item_size,
00120 size_t & item_available ) = 0;
00121
00123
00128 virtual void
00129 in_shift(
00131 size_t item_count,
00133 size_t item_size ) = 0;
00134 };
00135
00136
00137
00138
00139
00146 class OESS_1__IO__TYPE obinstream_t :
00147 public ostream_t {
00148 public :
00149 virtual ~obinstream_t();
00150
00151 virtual void
00152 write( const oess_1::char_t * p, size_t count );
00153
00154 virtual void
00155 write( const oess_1::schar_t * p, size_t count );
00156
00157 virtual void
00158 write( const oess_1::uchar_t * p, size_t count );
00159
00160 virtual void
00161 write( const oess_1::short_t * p, size_t count );
00162
00163 virtual void
00164 write( const oess_1::ushort_t * p, size_t count );
00165
00166 virtual void
00167 write( const oess_1::int_t * p, size_t count );
00168
00169 virtual void
00170 write( const oess_1::uint_t * p, size_t count );
00171
00172 virtual void
00173 write( const oess_1::single_t * p, size_t count );
00174
00175 virtual void
00176 write( const oess_1::double_t * p, size_t count );
00177
00178 virtual void
00179 write( const std::string & p );
00180
00181 virtual void
00182 write( const oess_1::defs::quantity_t & p );
00183
00184 protected :
00185 friend class obuffer_accessor_t;
00186
00189
00194 virtual oess_1::char_t *
00195 out_reserve(
00198 size_t item_count,
00200 size_t item_size,
00203 size_t & item_available ) = 0;
00204
00206
00211 virtual void
00212 out_shift(
00214 size_t item_count,
00216 size_t item_size ) = 0;
00217 };
00218
00219 }
00220
00221 }
00222
00223 #endif
00224