00001 #ifndef _IT_REFLECT_COMPLEX_CONTENT_IMPL_H_ 00002 #define _IT_REFLECT_COMPLEX_CONTENT_IMPL_H_ 00003 00004 // @Copyright 2004 IONA Technologies, Plc. All Rights Reserved. 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 ) IT_THROW_DECL(()); 00029 00030 virtual const IT_Bus::QName& 00031 get_type_name() const IT_THROW_DECL(()); 00032 00033 virtual IT_Bus::AnyType::Kind 00034 get_type_kind() const IT_THROW_DECL(()); 00035 }; 00036 00037 00038 template <class T> 00039 ComplexContentImplT<T>::ComplexContentImplT( 00040 const T* data 00041 ) IT_THROW_DECL(()) 00042 : 00043 ReflectionImplT<T>(data) 00044 { 00045 // Complete. 00046 } 00047 00048 template <class T> 00049 const IT_Bus::QName& 00050 ComplexContentImplT<T>::get_type_name( 00051 ) const IT_THROW_DECL(()) 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 IT_THROW_DECL(()) 00060 { 00061 return this->m_data->T::get_kind(); 00062 } 00063 } 00064 00065 #endif