00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00020 #ifndef SHTYPEINFOIMPL_HPP
00021 #define SHTYPEINFOIMPL_HPP
00022
00023 #include "ShTypeInfo.hpp"
00024 #include "ShVariantFactory.hpp"
00025
00026 namespace SH {
00027
00028 template<typename T, ShDataType DT>
00029 const typename ShDataTypeInfo<T, DT>::type
00030 ShDataTypeInfo<T, DT>::Zero = ShDataTypeConstant<T, DT>::Zero;
00031
00032 template<typename T, ShDataType DT>
00033 const typename ShDataTypeInfo<T, DT>::type
00034 ShDataTypeInfo<T, DT>::One = ShDataTypeConstant<T, DT>::One;
00035
00036 template<typename T, ShDataType DT>
00037 const char* ShDataTypeInfo<T, DT>::name() const
00038 {
00039 return ShStorageTypeInfo<T>::name;
00040 }
00041
00042 template<typename T, ShDataType DT>
00043 int ShDataTypeInfo<T, DT>::datasize() const
00044 {
00045 return sizeof(typename ShDataTypeCppType<T, DT>::type);
00046 }
00047
00048 template<typename T, ShDataType DT>
00049 const ShVariantFactory* ShDataTypeInfo<T, DT>::variantFactory() const
00050 {
00051 return ShDataVariantFactory<T, DT>::instance();
00052 }
00053
00054 template<typename T, ShDataType DT>
00055 const ShDataTypeInfo<T, DT>* ShDataTypeInfo<T, DT>::instance()
00056 {
00057 if(!m_instance) m_instance = new ShDataTypeInfo<T, DT>();
00058 return m_instance;
00059 }
00060
00061 template<typename T, ShDataType DT>
00062 ShDataTypeInfo<T, DT>* ShDataTypeInfo<T, DT>::m_instance = 0;
00063
00064
00065 }
00066
00067 #endif