00001 #ifndef _IT_REFLECT_COMPLEX_CONTENT_IMPL_H_
00002 #define _IT_REFLECT_COMPLEX_CONTENT_IMPL_H_
00003
00004
00005
00006
00007 #include <it_bus/reflect/traits.h>
00008 #include <it_bus/reflect/reflection_impl_t.h>
00009 #include <it_bus/reflect/complex_type_impl.h>
00010 #include <it_bus/reflect/complex_content.h>
00011
00012 namespace IT_Reflect
00013 {
00017 template <class T>
00018 class ComplexContentImplT :
00019 public ReflectionImplT<T>,
00020 public ComplexContent
00021 {
00022 public:
00026 ComplexContentImplT(
00027 const T* data
00028 ) throw(());
00029
00030 virtual const IT_Bus::QName&
00031 get_type_name() const throw(());
00032
00033 virtual IT_Bus::AnyType::Kind
00034 get_type_kind() const throw(());
00035 };
00036
00037
00038 template <class T>
00039 ComplexContentImplT<T>::ComplexContentImplT(
00040 const T* data
00041 ) throw(())
00042 :
00043 ReflectionImplT<T>(data)
00044 {
00045
00046 }
00047
00048 template <class T>
00049 const IT_Bus::QName&
00050 ComplexContentImplT<T>::get_type_name(
00051 ) const throw(())
00052 {
00053 return this->m_data->T::get_type();
00054 }
00055
00056 template <class T>
00057 IT_Bus::AnyType::Kind
00058 ComplexContentImplT<T>::get_type_kind(
00059 ) const throw(())
00060 {
00061 return this->m_data->T::get_kind();
00062 }
00063 }
00064
00065 #endif