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_;
     }
 }
Beispiel #4
0
 LString pop_back() {
   LString ret = m_list.back().first;
   m_list.pop_back();
   return ret;
 }
Beispiel #5
0
 SequenceModule::SequenceModule(list_t modules):
     modules(modules),
     GradientModule(modules.front()->get_input_size(), modules.back()->get_output_size()) {}