/* * Recycler.h * * Created on: 2 Jan 2016 * Author: hieu */ #pragma once #include #include #include namespace Moses2 { template class Recycler { public: Recycler() { } virtual ~Recycler() { } T Get() { if (!m_coll.empty()) { T &obj = m_coll.back(); m_coll.pop_back(); return obj; } else { return NULL; } } void Clear() { m_coll.clear(); } // call this for existing object to put back into queue for reuse void Recycle(const T& val) { m_coll.push_back(val); } protected: // objects that have been give back to us std::deque m_coll; }; } /* namespace Moses2 */