00001 #ifndef _IT_BUS_ALL_COMPLEX_TYPE_H_ 00002 #define _IT_BUS_ALL_COMPLEX_TYPE_H_ 00003 00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved. 00005 // 00006 00007 #include <it_bus/complex_type.h> 00008 #include <it_bus/any_type.h> 00009 #include <it_bus/deserialization_exception.h> 00010 00011 namespace IT_Bus 00012 { 00013 class ComplexTypeReader; 00014 class ComplexTypeWriter; 00015 00020 class IT_AFC_API AllComplexType : 00021 public virtual ComplexType, 00022 public virtual AnyType 00023 { 00024 public: 00025 00029 virtual void 00030 read( 00031 const QName& name, 00032 ComplexTypeReader& reader 00033 ) IT_THROW_DECL((IT_Bus::DeserializationException)); 00034 00038 virtual void 00039 write( 00040 const QName& name, 00041 ComplexTypeWriter& writer 00042 ) const IT_THROW_DECL((IT_Bus::SerializationException)); 00043 00048 virtual AnyType::Kind 00049 get_kind() const; 00050 00055 virtual void 00056 read_member( 00057 const QName & member, 00058 ComplexTypeReader & os 00059 ) IT_THROW_DECL((DeserializationException)) = 0; 00060 00066 virtual UInt 00067 member_count() const = 0; 00068 00073 virtual void 00074 read_contents( 00075 ComplexTypeReader & os 00076 ) IT_THROW_DECL((DeserializationException)) = 0; 00077 00078 00083 virtual void 00084 write_contents( 00085 ComplexTypeWriter & os 00086 ) const IT_THROW_DECL((SerializationException)) = 0; 00087 00092 AllComplexType & 00093 operator=( 00094 const AllComplexType & rhs 00095 ); 00096 00097 protected: 00101 AllComplexType() {} 00102 00103 private: 00104 // Not implemented 00105 AllComplexType(const AllComplexType &); 00106 }; 00107 } 00108 00109 #endif