diff --git a/pool.hpp b/pool.hpp index 2f187b9f..900c1b8f 100644 --- a/pool.hpp +++ b/pool.hpp @@ -22,6 +22,8 @@ #include "nocopy.hpp" +#include + namespace util { template class pool : public nocopy { @@ -31,20 +33,27 @@ namespace util { node *_chain; }; - node *m_head; - node *m_next; - unsigned int m_capacity; + node *m_head; + node *m_next; + size_t m_capacity; public: pool (unsigned int _capacity); ~pool (); - unsigned int capacity (void) const; - + // Data management template T* acquire (Args&... args); void release (T *data); + + size_t capacity (void) const; + + // Indexing + size_t index (const T*) const; + + T& operator[] (size_t idx); + const T& operator[] (size_t idx) const; }; } diff --git a/pool.ipp b/pool.ipp index 0c4c3604..693b419b 100644 --- a/pool.ipp +++ b/pool.ipp @@ -55,7 +55,7 @@ namespace util { template - unsigned int + size_t pool::capacity (void) const { return m_capacity; }