it_bus/reflect/complex_type_impl.h

00001 #ifndef _IT_REFLECT_COMPLEX_TYPE_IMPL_H_
00002 #define _IT_REFLECT_COMPLEX_TYPE_IMPL_H_
00003 
00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved.
00005 //
00006 #include <it_bus/reflect/complex_type.h>
00007 #include <it_bus/reflect/reflection_impl.h>
00008 #include <it_dsa/vector.h>
00009 
00010 namespace IT_Bus
00011 {
00012     class Nillable;
00013 }
00014 
00015 namespace IT_Reflect
00016 {
00021     class IT_AFC_API ComplexTypeImpl : public virtual ComplexType
00022     {
00023       public:
00028         ComplexTypeImpl(
00029             IT_Vector<IT_Bus::QName>& attributes
00030         ) IT_THROW_DECL(());
00031 
00032         virtual size_t
00033         get_attribute_count() const IT_THROW_DECL(());
00034         
00035         virtual const IT_Bus::QName&
00036         get_attribute_name(
00037             size_t i
00038         ) const IT_THROW_DECL(());
00039 
00040         virtual Reflection*
00041         use_attribute_value(
00042             const IT_Bus::QName& name
00043         ) IT_THROW_DECL((ReflectException));
00044 
00045       protected:
00046 
00047         Reflection*
00048         throw_unknown_attribute(
00049             const IT_Bus::QName& name
00050         ) const;
00051         
00052         Reflection*
00053         throw_unknown_element(
00054             const IT_Bus::QName& name
00055         ) const;
00056 
00057         void
00058         throw_bad_discriminator_if(
00059             IT_Bus::Boolean test
00060         ) const;
00061         
00062         const Reflection*
00063         get_nillable_attribute(
00064             const IT_Bus::Nillable& attribute
00065         ) const IT_THROW_DECL((ReflectException));
00066 
00067         Reflection*
00068         use_nillable_attribute(
00069             IT_Bus::Nillable& attribute
00070         ) IT_THROW_DECL((ReflectException));
00071 
00072       private:
00073         IT_Vector<IT_Bus::QName>& m_attributes;
00074     };
00075 }
00076 
00077 
00078 #endif  

Generated on Thu Sep 7 11:39:00 2006 for Artix by  doxygen 1.4.7