CPS_START_NAMESPACE #ifndef PROP_VECTOR_H #define PROP_VECTOR_H CPS_END_NAMESPACE #include #include #include CPS_START_NAMESPACE //container for multiple props with destructor that deletes all props template class PointerArray{ public: T & operator[](const int &idx); void set(const int &idx, T* to); T& append(T* v); void clear(); int size() const; PointerArray(); virtual ~PointerArray(); private: std::vector ptrs; }; class PropVector: public PointerArray{ public: PropagatorContainer & addProp(PropagatorArg &arg); PropVector(); }; #ifdef USE_BFM class LanczosVector: public PointerArray{ public: LanczosContainer & add(LanczosContainerArg &arg); LanczosVector(); }; #endif template PointerArray::PointerArray(){ } template PointerArray::~PointerArray(){ for(int i=0;i T & PointerArray::operator[](const int &idx){ return *ptrs[idx]; } template void PointerArray::clear(){ for(int i=0;i int PointerArray::size() const{ return ptrs.size(); } template void PointerArray::set(const int &idx, T* to){ delete ptrs[idx]; ptrs[idx] = to; } template T& PointerArray::append(T* v){ ptrs.push_back(v); return *v; } #endif CPS_END_NAMESPACE