mirror of
https://github.com/Z3Prover/z3
synced 2025-04-08 18:31:49 +00:00
51 lines
713 B
C++
51 lines
713 B
C++
/*++
|
|
Copyright (c) 2006 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
pool.h
|
|
|
|
Abstract:
|
|
|
|
Object pool.
|
|
|
|
Author:
|
|
|
|
Leonardo de Moura (leonardo) 2007-02-15.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
#ifndef _POOL_H_
|
|
#define _POOL_H_
|
|
|
|
#include"util.h"
|
|
#include"vector.h"
|
|
|
|
template<typename T>
|
|
class pool {
|
|
ptr_vector<T> m_objs;
|
|
public:
|
|
~pool() {
|
|
std::for_each(m_objs.begin(), m_objs.end(), delete_proc<T>());
|
|
}
|
|
|
|
T * mk() {
|
|
if (m_objs.empty()) {
|
|
return alloc(T);
|
|
}
|
|
else {
|
|
T * r = m_objs.back();
|
|
m_objs.pop_back();
|
|
return r;
|
|
}
|
|
}
|
|
|
|
void recycle(T * obj) {
|
|
m_objs.push_back(obj);
|
|
}
|
|
};
|
|
|
|
#endif /* _POOL_H_ */
|
|
|