00001 #ifndef _IT_BUS_SOAP_ENC_ARRAY_H_
00002 #define _IT_BUS_SOAP_ENC_ARRAY_H_
00003
00004
00005
00006
00007 #include <it_bus/sequence_complex_type.h>
00008 #include <it_bus/element_list.h>
00009
00010 namespace IT_Bus
00011 {
00012 class QName;
00013 class ComplexTypeWriter;
00014 class ComplexTypeReader;
00015
00016 class IT_AFC_API ArrayCoordinate
00017 {
00018 public:
00019 ArrayCoordinate() {}
00020 virtual ~ArrayCoordinate();
00021
00022 virtual const size_t
00023 get_number_dimensions() const = 0;
00024
00025 virtual const size_t &
00026 operator[] (
00027 size_t idx
00028 ) const = 0;
00029
00030 virtual size_t &
00031 operator[] (
00032 size_t idx
00033 ) = 0;
00034 };
00035
00036
00037 class IT_AFC_API SoapEncArray : public SequenceComplexType
00038 {
00039 public:
00040
00041 virtual const QName &
00042 get_item_type() const = 0;
00043
00044 virtual const ArrayCoordinate &
00045 get_extents() const = 0;
00046
00047 virtual void
00048 set_extents(
00049 const ArrayCoordinate & extents
00050 ) = 0;
00051
00052 AnyType::Kind
00053 get_kind() const;
00054
00055 virtual void
00056 write(
00057 const QName& name,
00058 ComplexTypeWriter& writer
00059 ) const IT_THROW_DECL((SerializationException));
00060
00061 virtual void
00062 read(
00063 const QName& name,
00064 ComplexTypeReader& reader
00065 ) IT_THROW_DECL((DeserializationException));
00066
00067 virtual void
00068 write_position(
00069 ArrayCoordinate & position,
00070 ComplexTypeWriter & os
00071 ) const IT_THROW_DECL((SerializationException)) = 0;
00072
00073 virtual void
00074 read_position(
00075 ComplexTypeReader & is,
00076 ArrayCoordinate & position
00077 ) IT_THROW_DECL((DeserializationException)) = 0;
00078
00079 virtual void
00080 write_contents(
00081 ComplexTypeWriter & os
00082 ) const IT_THROW_DECL((SerializationException)) = 0;
00083
00084 virtual void
00085 read_contents(
00086 ComplexTypeReader & is
00087 ) IT_THROW_DECL((DeserializationException)) = 0;
00088
00089 virtual bool
00090 is_empty(
00091 const ArrayCoordinate & position
00092 ) const = 0;
00093
00094 SoapEncArray &
00095 operator=(
00096 const SoapEncArray & rhs
00097 );
00098
00099 virtual const IT_Bus::ElementList &
00100 get_element_list() const = 0;
00101
00102 virtual IT_Bus::ElementList &
00103 get_element_list() = 0;
00104
00105 protected:
00106 SoapEncArray();
00107 ~SoapEncArray();
00108
00109 private:
00110
00111 SoapEncArray(const SoapEncArray & rhs);
00112 };
00113 }
00114
00115 #endif