44template <
typename T>
class tlm_array :
private std::vector<T> {
45 typedef std::vector<T> base_type;
46 typedef typename base_type::size_type size_type;
50 tlm_array(size_type size = 0)
63 using base_type::operator[];
66 using base_type::size;
69 void expand(size_type new_size) {
70 if(new_size > size()) {
71 base_type::resize(new_size);
76 static const char*
const kind_string;
77 const char* kind()
const {
return kind_string; }
81 void insert_in_cache(T* p) {
83 m_entries.push_back(p - &(*
this)[0]);
87 void free_entire_cache() {
88 while(m_entries.size()) {
89 if((*
this)[m_entries.back()])
90 (*this)[m_entries.back()]->free();
91 (*this)[m_entries.back()] = 0;
97 std::vector<size_type> m_entries;