00001 #ifndef _IT_REFLECT_COMPLEX_TYPE_H_
00002 #define _IT_REFLECT_COMPLEX_TYPE_H_
00003
00004
00005
00006
00007 #include <it_bus/reflect/reflection.h>
00008 #include <it_bus/qname.h>
00009
00010 namespace IT_Bus
00011 {
00012 class QName;
00013 }
00014
00015 namespace IT_Reflect
00016 {
00017 class Nillable;
00018
00025 class IT_AFC_API ComplexType : public virtual IT_Reflect::Reflection
00026 {
00027 public:
00031 ComplexType() IT_THROW_DECL(());
00032
00036 virtual ~ComplexType() IT_THROW_DECL (());
00037
00043 virtual size_t
00044 get_attribute_count() const IT_THROW_DECL((ReflectException)) = 0;
00045
00051 virtual const IT_Bus::QName&
00052 get_attribute_name(
00053 size_t i
00054 ) const IT_THROW_DECL((ReflectException)) = 0;
00055
00065 virtual const Reflection*
00066 get_attribute_value(
00067 const IT_Bus::QName& name
00068 ) const IT_THROW_DECL((ReflectException)) = 0;
00069
00082 virtual Reflection*
00083 use_attribute_value(
00084 const IT_Bus::QName& name
00085 ) IT_THROW_DECL((ReflectException)) = 0;
00086
00093 virtual void
00094 remove_attribute(
00095 const IT_Bus::QName& name
00096 ) IT_THROW_DECL((ReflectException)) = 0;
00097
00098 private:
00099
00100 ComplexType(const ComplexType&);
00101 void operator=(const ComplexType&);
00102 };
00103 }
00104
00105
00106 #endif