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