mosesdecoder/util/pool.hh

46 lines
747 B
C++
Raw Normal View History

// Very simple pool. It can only allocate memory. And all of the memory it
// allocates must be freed at the same time.
2012-10-16 20:35:27 +04:00
#ifndef UTIL_POOL__
#define UTIL_POOL__
#include <vector>
#include <stdint.h>
2012-10-16 20:35:27 +04:00
namespace util {
2012-10-16 20:35:27 +04:00
class Pool {
public:
Pool();
~Pool();
void *Allocate(std::size_t size) {
void *ret = current_;
current_ += size;
if (current_ < current_end_) {
return ret;
} else {
return More(size);
}
}
void FreeAll();
private:
void *More(std::size_t size);
std::vector<void *> free_list_;
uint8_t *current_, *current_end_;
2012-10-16 20:35:27 +04:00
// no copying
Pool(const Pool &);
Pool &operator=(const Pool &);
};
2012-10-16 20:35:27 +04:00
} // namespace util
2012-10-16 20:35:27 +04:00
#endif // UTIL_POOL__