• Home
  • Raw
  • Download

Lines Matching refs:entry

48 		Entry *entry;  member in sw::LRUCache::view
61 Entry *entry; member in sw::LRUCache::iterator
164 LRUCache<KEY, DATA, HASH>::view::view(Entry *entry) in view() argument
165 : entry(entry) in view()
171 return entry->key; in key()
177 return entry->data; in data()
184 LRUCache<KEY, DATA, HASH>::iterator::iterator(Entry *entry) in iterator() argument
185 : entry(entry) in iterator()
191 return view{ entry }; in operator *()
197 entry = entry->next; in operator ++()
204 return entry == rhs.entry; in operator ==()
210 return entry != rhs.entry; in operator !=()
222 Entry *entry = &storage[i]; in LRUCache() local
223 entry->next = free; // No need for back link here. in LRUCache()
224 free = entry; in LRUCache()
231 if(Entry *entry = find(key)) in lookup() local
233 unlink(entry); in lookup()
234 link(entry); in lookup()
235 return entry->data; in lookup()
243 if(Entry *entry = find(key)) in add() local
246 unlink(entry); in add()
247 link(entry); in add()
248 entry->data = data; in add()
252 Entry *entry = free; in add() local
253 if(entry) in add()
256 free = entry->next; in add()
257 entry->next = nullptr; in add()
262 entry = tail; in add()
263 unlink(entry); in add()
264 set.erase(entry); in add()
268 link(entry); in add()
271 tail = entry; in add()
274 entry->key = key; in add()
275 entry->data = data; in add()
276 set.emplace(entry); in add()
282 while(Entry *entry = head) in clear() local
284 unlink(entry); in clear()
285 entry->next = free; // No need for back link here. in clear()
286 free = entry; in clear()
304 void LRUCache<KEY, DATA, HASH>::unlink(Entry *entry) in unlink() argument
306 if(head == entry) { head = entry->next; } in unlink()
307 if(tail == entry) { tail = entry->prev; } in unlink()
308 if(entry->prev) { entry->prev->next = entry->next; } in unlink()
309 if(entry->next) { entry->next->prev = entry->prev; } in unlink()
310 entry->prev = nullptr; in unlink()
311 entry->next = nullptr; in unlink()
315 void LRUCache<KEY, DATA, HASH>::link(Entry *entry) in link() argument
317 ASSERT_MSG(entry->next == nullptr, "link() called on entry already linked"); in link()
318 ASSERT_MSG(entry->prev == nullptr, "link() called on entry already linked"); in link()
321 entry->next = head; in link()
322 head->prev = entry; in link()
324 head = entry; in link()
325 if(!tail) { tail = entry; } in link()