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__STDSN__ENT_STD_HPP_ )
00039 #define _OESS_1__STDSN__ENT_STD_HPP_
00040
00041 #include <auto_ptr_3/h/obj_ptr.hpp>
00042
00043 #include <oess_1/io/h/bstring_buf.hpp>
00044
00045 #include <oess_1/stdsn/h/ent.hpp>
00046
00047 namespace oess_1 {
00048
00049 namespace stdsn {
00050
00051 class operation_history_t;
00052
00058 const oess_1::uchar_t opt_attr_missing_flag = 0;
00059
00065 const oess_1::uchar_t opt_attr_present_flag = 1;
00066
00067
00068
00069
00070
00075 class OESS_1__STDSN__TYPE ient_std_t :
00076 public ient_t
00077 {
00078 public :
00079 ient_std_t(
00080 oess_1::io::istream_t & stream );
00081 virtual ~ient_std_t();
00082
00083 virtual bool
00084 obj_start(
00085 const void * object,
00086 const std::string * type_name,
00087 const std::string & scheme );
00088
00089 virtual void
00090 obj_finish(
00091 const void * object,
00092 const std::string * type_name );
00093
00094 virtual void
00095 obj_complete(
00096 const void * object,
00097 const std::string * type_name );
00098
00100 virtual void
00101 unpack_type_name(
00102 std::string & type_name );
00103
00104 virtual oess_1::io::istream_t &
00105 query_stream();
00106
00114 virtual bool
00115 check_optional_attr_existence(
00116 const std::string & attr_name );
00117
00124 virtual iextension_t *
00125 extension_start();
00126
00130 virtual void
00131 extension_finish(
00132 iextension_t & extension );
00133
00134 private :
00135 oess_1::io::istream_t & m_stream;
00136
00138
00141 auto_ptr_3::obj_ptr_t< operation_history_t > m_history;
00142
00143 private :
00146 ient_std_t(
00147 const ient_std_t & );
00148 ient_std_t &
00149 operator=(
00150 const ient_std_t & );
00152 };
00153
00154
00155
00156
00157
00168 class OESS_1__STDSN__TYPE iextension_std_t
00169 : public iextension_t
00170 {
00171 public :
00172 iextension_std_t(
00174 const std::string & data );
00175 virtual ~iextension_std_t();
00176
00179 virtual bool
00180 obj_start(
00181 const void * object,
00182 const std::string * type_name,
00183 const std::string & scheme );
00184
00185 virtual void
00186 obj_finish(
00187 const void * object,
00188 const std::string * type_name );
00189
00190 virtual void
00191 obj_complete(
00192 const void * object,
00193 const std::string * type_name );
00194
00195 virtual void
00196 unpack_type_name(
00197 std::string & type_name );
00198
00199 virtual oess_1::io::istream_t &
00200 query_stream();
00201
00202 virtual bool
00203 check_optional_attr_existence(
00204 const std::string & attr_name );
00205
00206 virtual iextension_t *
00207 extension_start();
00208
00209 virtual void
00210 extension_finish(
00211 iextension_t & extension );
00213
00218 virtual bool
00219 is_present() const;
00220
00221 virtual void
00222 unpack_opaque( unknown_extension_t & ext );
00223
00224 private :
00226 const std::string m_data;
00228 oess_1::io::ibstring_t m_stream;
00231 ient_std_t m_ient;
00232
00233 private :
00236 iextension_std_t(
00237 const iextension_std_t & );
00238 iextension_std_t &
00239 operator=(
00240 const iextension_std_t & );
00242 };
00243
00244
00245
00246
00247
00252 class OESS_1__STDSN__TYPE oent_std_t :
00253 public oent_t
00254 {
00255 public :
00256 oent_std_t( oess_1::io::ostream_t & stream );
00257 virtual ~oent_std_t();
00258
00259 virtual bool
00260 obj_start(
00261 const void * object,
00262 const std::string * type_name,
00263 const std::string & scheme );
00264
00265 virtual void
00266 obj_finish(
00267 const void * object,
00268 const std::string * type_name );
00269
00270 virtual void
00271 obj_complete(
00272 const void * object,
00273 const std::string * type_name );
00274
00276 virtual void
00277 pack_type_name(
00278 const std::string & type_name,
00279 const std::string & );
00280
00281 virtual oess_1::io::ostream_t &
00282 query_stream();
00283
00291 virtual bool
00292 set_optional_attr_existence(
00293 const std::string & attr_name,
00294 bool existence );
00295
00300 virtual oextension_t *
00301 extension_start();
00302
00307 virtual void
00308 extension_finish(
00309 oextension_t & extension );
00310
00311 private :
00312 oess_1::io::ostream_t & m_stream;
00313
00315
00318 auto_ptr_3::obj_ptr_t< operation_history_t > m_history;
00319
00320 private :
00323 oent_std_t(
00324 const oent_std_t & );
00325 oent_std_t &
00326 operator=(
00327 const oent_std_t & );
00329 };
00330
00331
00332
00333
00334
00344 class OESS_1__STDSN__TYPE oextension_std_t
00345 : public oextension_t
00346 {
00347 public :
00348 oextension_std_t();
00349 virtual ~oextension_std_t();
00350
00353 virtual bool
00354 obj_start(
00355 const void * object,
00356 const std::string * type_name,
00357 const std::string & scheme );
00358
00359 virtual void
00360 obj_finish(
00361 const void * object,
00362 const std::string * type_name );
00363
00364 virtual void
00365 obj_complete(
00366 const void * object,
00367 const std::string * type_name );
00368
00369 virtual void
00370 pack_type_name(
00371 const std::string & type_name,
00372 const std::string & );
00373
00374 virtual oess_1::io::ostream_t &
00375 query_stream();
00376
00377 virtual bool
00378 set_optional_attr_existence(
00379 const std::string & attr_name,
00380 bool existence );
00381
00382 virtual oextension_t *
00383 extension_start();
00384
00385 virtual void
00386 extension_finish(
00387 oextension_t & extension );
00388
00392 virtual void
00393 pack( oess_1::io::ostream_t & to ) const;
00394
00395 virtual void
00396 pack_opaque( const unknown_extension_t & ext );
00397
00398 private :
00400 std::string m_data;
00403 oess_1::io::obstring_t m_stream;
00405 oent_std_t m_oent;
00406
00407 private :
00410 oextension_std_t(
00411 const oextension_std_t & );
00412 oextension_std_t &
00413 operator=(
00414 const oextension_std_t & );
00416 };
00417
00418 }
00419
00420 }
00421
00422 #endif
00423