LRUCache.getRefreshOrCreate

Gets an item from the cache or creates it if not already existing. If the item was found in the cache, its access time is updated, otherwise its create time is set.

Note that the create time is set only if an item is created, not if it already existed and you change the value referenced by the returned reference.

  1. T* getRefreshOrCreate(hash_t key)
  2. T* getRefreshOrCreate(hash_t key, bool existed)
  3. T* getRefreshOrCreate(hash_t key, time_t access_time, bool existed)
    class LRUCache(T, bool TrackCreateTimes = false)
    T*
    getRefreshOrCreate
    (
    hash_t key
    ,
    out time_t access_time
    ,
    out bool existed
    )
    out (val) { assert (val !is null); }

Parameters

key hash_t

key to lookup

access_time time_t

access time of the element

existed bool

true: the item already existed, false: the item was created

Return Value

Type: T*

a reference to the value of the obtained or created item. If an item was created, the returned reference may refer to the value of a previously removed element.

Out: The returned reference is never null.

Meta