00001 #ifndef _IT_REFLECT_UNION_H_
00002 #define _IT_REFLECT_UNION_H_
00003
00004
00005
00006
00007 #include <it_bus/reflect/simple_type.h>
00008
00009 namespace IT_Reflect
00010 {
00014 class IT_AFC_API Union : public virtual IT_Reflect::SimpleType
00015 {
00016 public:
00020 Union() IT_THROW_DECL(());
00021
00025 virtual ~Union() IT_THROW_DECL(());
00026
00034 virtual size_t
00035 get_member_count() const IT_THROW_DECL((ReflectException)) = 0;
00036
00045 virtual const IT_Bus::QName&
00046 get_member_type(
00047 size_t index
00048 ) const IT_THROW_DECL((ReflectException)) = 0;
00049
00057 virtual size_t
00058 get_selected_member_index(
00059 ) const IT_THROW_DECL((ReflectException)) = 0;
00060
00069 virtual const Reflection*
00070 get_selected_member(
00071 ) const IT_THROW_DECL((ReflectException)) = 0;
00072
00085 virtual Reflection*
00086 use_member(
00087 size_t index
00088 ) IT_THROW_DECL((ReflectException)) = 0;
00089
00095 virtual void
00096 set_no_member() IT_THROW_DECL((ReflectException)) = 0;
00097
00098 private:
00099
00100 Union(const Union&);
00101 void operator=(const Union&);
00102 };
00103 }
00104
00105
00106 #endif