782 |
*/ |
*/ |
783 |
pool_element_id_t getID(const T* obj) const { |
pool_element_id_t getID(const T* obj) const { |
784 |
if (!poolsize) return 0; |
if (!poolsize) return 0; |
785 |
int index = obj - &data[0]; |
int index = int( obj - &data[0] ); |
786 |
if (index < 0 || index >= poolsize) return 0; |
if (index < 0 || index >= poolsize) return 0; |
787 |
return ((nodes[index].reincarnation << poolsizebits) | index) + 1; |
return ((nodes[index].reincarnation << poolsizebits) | index) + 1; |
788 |
} |
} |
840 |
*/ |
*/ |
841 |
Iterator fromPtr(const T* obj) const { |
Iterator fromPtr(const T* obj) const { |
842 |
if (!poolsize) return Iterator(); // invalid iterator |
if (!poolsize) return Iterator(); // invalid iterator |
843 |
int index = obj - &data[0]; |
int index = int( obj - &data[0] ); |
844 |
if (index < 0 || index >= poolsize) return Iterator(); // invalid iterator |
if (index < 0 || index >= poolsize) return Iterator(); // invalid iterator |
845 |
return Iterator(&nodes[index]); |
return Iterator(&nodes[index]); |
846 |
} |
} |