00001 #ifndef _IT_BUS_SIMPLETYPE_UNION_H_
00002 #define _IT_BUS_SIMPLETYPE_UNION_H_
00003
00004
00005
00006
00007 #include <it_bus/any_type.h>
00008
00009 namespace IT_Bus
00010 {
00011 class QName;
00012 class AnySimpleTypeReader;
00013 class AnySimpleTypeWriter;
00014
00019 class IT_AFC_API SimpleTypeUnion : public virtual AnyType
00020 {
00021 public:
00030 virtual void
00031 read(
00032 const QName& name,
00033 ComplexTypeReader& reader
00034 ) IT_THROW_DECL((DeserializationException));
00035
00044 virtual void
00045 write(
00046 const QName& name,
00047 ComplexTypeWriter& writer
00048 ) const IT_THROW_DECL((SerializationException));
00049
00055 virtual AnyType::Kind
00056 get_kind() const;
00057
00066 virtual void
00067 read_value(
00068 AnySimpleTypeReader& reader
00069 ) IT_THROW_DECL((DeserializationException)) = 0;
00070
00081 virtual void
00082 read_value(
00083 UInt discriminator,
00084 AnySimpleTypeReader& reader
00085 ) IT_THROW_DECL((DeserializationException)) = 0;
00086
00095 virtual void
00096 write_value(
00097 AnySimpleTypeWriter& writer
00098 ) const IT_THROW_DECL((SerializationException)) = 0;
00099
00108 virtual UInt
00109 get_discriminator_as_uint() const IT_THROW_DECL((Exception)) = 0;
00110
00119 virtual QName
00120 get_selected_member_type() const IT_THROW_DECL((Exception)) = 0;
00121
00122 protected:
00126 SimpleTypeUnion();
00127
00128 private:
00129
00130 SimpleTypeUnion(const SimpleTypeUnion&);
00131 void operator=(const SimpleTypeUnion&);
00132 };
00133 }
00134
00135 #endif