ent_std.hpp

См. документацию.
00001 /*
00002 
00003 Copyright (c) 2002-2005, Yauheni Akhotnikau
00004 All rights reserved.
00005 
00006 Redistribution and use in source and binary forms, with or without
00007 modification, are permitted provided that the following conditions are met:
00008 
00009 - Redistributions of source code must retain the above copyright notice, this
00010 list of conditions and the following disclaimer.
00011 
00012 - Redistributions in binary form must reproduce the above copyright notice, this
00013 list of conditions and the following disclaimer in the documentation and/or
00014 other materials provided with the distribution.
00015 
00016 - The name of the author may not be used to endorse or promote products derived
00017 from this software without specific prior written permission.
00018 
00019 THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
00020 WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
00021 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
00022 EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
00023 EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
00024 OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
00025 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
00026 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
00027 IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
00028 OF SUCH DAMAGE.
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 // ient_std_t
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 // iextension_std_t
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 // oent_std_t
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 & /*type_scheme*/ );
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 // oextension_std_t
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 & /*type_scheme*/ );
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 } /* namespace stdsn */
00419 
00420 } /* namespace oess_1 */
00421 
00422 #endif
00423 

Документация по ObjESSty. Последние изменения: Fri Oct 13 18:35:36 2006. Создано системой  doxygen 1.4.7
Hosted by uCoz