00001 #ifndef EvSimObjectCloneFactory_H_ 00002 #define EvSimObjectCloneFactory_H_ 00003 00004 #include "EvSimObjectFactory.h" 00005 00007 template< class T > 00008 class EvSimObjectCloneFactory : public EvSimObjectFactory 00009 { 00010 00011 public: 00012 00013 EvSimObjectCloneFactory(T &src) : source(src) 00014 { /* NOOP */ }; 00015 00016 EvSimObjectCloneFactory(void) 00017 { /* NOOP */ }; 00018 00019 virtual ~EvSimObjectCloneFactory() 00020 { /* NOOP */ }; 00021 00022 virtual EvSimObject* create(void) const 00023 { 00024 return new T(source); 00025 }; 00026 00027 virtual EvSimObject* create( RandomEngine * ) const 00028 { 00029 return new T(source); 00030 }; 00031 00032 protected: 00033 T source; 00034 00035 }; 00036 00037 #endif /*EvSimObjectCloneFactory_H_*/