00001 #ifndef _IT_BUS_CHOICE_COMPLEX_TYPE_H_
00002 #define _IT_BUS_CHOICE_COMPLEX_TYPE_H_
00003
00004
00005
00006
00007 #include <it_bus/any_type.h>
00008 #include <it_bus/complex_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 ChoiceComplexType : public virtual ComplexType, public virtual AnyType
00021 {
00022 public:
00026 virtual void
00027 read(
00028 const QName& name,
00029 ComplexTypeReader& reader
00030 ) IT_THROW_DECL((IT_Bus::DeserializationException));
00031
00035 virtual void
00036 write(
00037 const QName& name,
00038 ComplexTypeWriter& writer
00039 ) const IT_THROW_DECL((IT_Bus::SerializationException));
00040
00045 virtual AnyType::Kind
00046 get_kind() const;
00047
00052 virtual void
00053 read_member(
00054 const QName & member,
00055 ComplexTypeReader & os
00056 ) IT_THROW_DECL((DeserializationException)) = 0;
00057
00062 virtual void
00063 read_contents(
00064 ComplexTypeReader & os
00065 ) IT_THROW_DECL((DeserializationException)) = 0;
00066
00071 virtual void
00072 write_contents(
00073 ComplexTypeWriter & os
00074 ) const IT_THROW_DECL((SerializationException)) = 0;
00075
00081 virtual IT_Bus::UInt
00082 get_discriminator_as_uint() const = 0;
00083
00088 ChoiceComplexType &
00089 operator=(
00090 const ChoiceComplexType & rhs
00091 );
00092
00093 protected:
00094 ChoiceComplexType() {}
00095
00096 private:
00097
00098 ChoiceComplexType(const ChoiceComplexType & rhs);
00099 };
00100 }
00101
00102 #endif