00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00024 #ifndef SH_VARIANTFACTORYIMPL_HPP
00025 #define SH_VARIANTFACTORYIMPL_HPP
00026
00027 #include "ShVariant.hpp"
00028 #include "ShVariantFactory.hpp"
00029
00030 namespace SH {
00031
00032 template<typename T, ShDataType DT>
00033 ShVariant* ShDataVariantFactory<T, DT>::generate(int N) const
00034 {
00035 return new ShDataVariant<T, DT>(N);
00036 }
00037
00038 template<typename T, ShDataType DT>
00039 ShVariant* ShDataVariantFactory<T, DT>::generate(std::string s) const
00040 {
00041 return new ShDataVariant<T, DT>(s);
00042 }
00043
00044 template<typename T, ShDataType DT>
00045 ShVariant* ShDataVariantFactory<T, DT>::generate(int N, void *data, bool managed) const
00046 {
00047 return new ShDataVariant<T, DT>(N, data, managed);
00048 }
00049
00050 template<typename T, ShDataType DT>
00051 ShVariant* ShDataVariantFactory<T, DT>::generateZero(int N) const
00052 {
00053 return new ShDataVariant<T, DT>(N);
00054 }
00055
00056 template<typename T, ShDataType DT>
00057 ShVariant* ShDataVariantFactory<T, DT>::generateOne(int N) const
00058 {
00059 return new ShDataVariant<T, DT>(N, ShDataTypeConstant<T, DT>::One);
00060 }
00061
00062 template<typename T, ShDataType DT>
00063 ShDataVariantFactory<T, DT>* ShDataVariantFactory<T, DT>::m_instance = 0;
00064
00065 template<typename T, ShDataType DT>
00066 const ShDataVariantFactory<T, DT>*
00067 ShDataVariantFactory<T, DT>::instance()
00068 {
00069 if(!m_instance) m_instance = new ShDataVariantFactory<T, DT>();
00070 return m_instance;
00071 }
00072
00073 template<typename T, ShDataType DT>
00074 ShDataVariantFactory<T, DT>::ShDataVariantFactory()
00075 {}
00076
00077 }
00078
00079 #endif