handle_t *MEM_CacheLimiterCClass::insert(void *data) { cclass_list.push_back(new MEM_CacheLimiterHandleCClass(data, this)); list_t::iterator it = cclass_list.end(); --it; cclass_list.back()->set_iter(it); return cache.insert(cclass_list.back()); }
/** Prune the cache back to a given size. * If the cache is larger than the maximum, the oldest entries * will be deleted. * @post size() <= max_size * @param max_size The maximum cache size */ void prune (size_t max_size) { while (size_ > max_size) { map_.erase(list_.back().first); list_.pop_back(); --size_; } }
void prune (size_t max_size, func on_remove) { while (size_ > max_size) { pair_t& tbr (list_.back()); on_remove(tbr.first, tbr.second); map_.erase(tbr.first); list_.pop_back(); --size_; } }
LString pop_back() { LString ret = m_list.back().first; m_list.pop_back(); return ret; }
SequenceModule::SequenceModule(list_t modules): modules(modules), GradientModule(modules.front()->get_input_size(), modules.back()->get_output_size()) {}