lru_eviction_queue
-
Declaration
structLRUEvictionQueue(KEY, VALUE);A LRU Eviction Queue for the D programming language
Discussion
Version
1.7.0
License
Boost Software License - Version 1.0
Examples
import lru_eviction_queue; import std.stdio : stdout; // Create a queue that will hold 3 items auto cache = LRUEvictionQueue!(string, int)(3); // Fire this event when an item is evicted cache.on_evict_cb = delegate(string key, ref int value) { stdout.writefln("Evicted item: %s", key); }; // Fire this event when an item is updated cache.on_update_cb = delegate(string key, ref int value) { stdout.writefln("Updated item: %s", key); }; // Add cache["aaa"] = 65; cache["bbb"] = 97; cache["ccc"] = 15; cache["ddd"] = 46; // Check that the key "aaa" was removed if (! cache.hasKey("aaa")) { stdout.writefln("Item \"aaa\" was evicted!"); } // Check that the key "ccc" was found if ("ccc" in cache) { stdout.writefln("Item \"ccc\" was found!"); } // Prints all the items in the cache foreach (key, ref value ; cache) { stdout.writefln("%s : %s", key, value); }
-
Declaration
this(size_tmax_length);Creates a LRUEvictionQueue
Parameters
size_tmax_lengthThe max size of the queue. After this many items are added, the oldest items will be removed.
Throws
If
max_lengthis less than 1, it will throw an Exception.Examples
auto cache = LRUEvictionQueue!(string, string)(100);
-
Declaration
boolhasKey(KEYkey);Returns
trueif akeyis still on the queueParameters
KEYkeyThe name of the
keyto check.Examples
auto cache = LRUEvictionQueue!(string, string)(100); bool retval = cache.hasKey("name");
-
Declaration
voidset(KEYkey, VALUEvalue);Sets the
valuein the queue. Will fire the on_evict_cb event if it is a new item that pushes an item off the queue. Will fire the on_update_cb event if updating an already existingkey.Parameters
KEYkeyThe
keytoset.VALUEvalueThe
valuetoset.Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache.set("name", "Bob");
-
Declaration
VALUEget(KEYkey, VALUEdefault_value);Gets the value in the queue
Parameters
KEYkeyThe
keytoget.VALUEdefault_valueThe value returned if the
keyis not found.Examples
auto cache = LRUEvictionQueue!(string, string)(100); string name = cache.get("name", string.init);
-
Declaration
voidremove(KEYkey);Removes the
keyfrom the queue. Does nothing if thekeyis not in the queue. Will not fire any events.Parameters
KEYkeyThe
keytoremove.Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Alice"; cache.remove("name");
-
Declaration
voidclear();Removes all the items from the queue. Will not fire any events.
Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Tim"; cache.clear();
-
Declaration
size_tlength();Returns the
lengthof the queue.Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Alice"; size_t len = cache.length;
-
Declaration
size_tmax_length();Returns the max length of the queue before items are removed.
Examples
auto cache = LRUEvictionQueue!(string, string)(100); size_t max_len = cache.max_length;
-
Declaration
KEY[]keys();Returns all the
keysin the queue.Examples
auto cache = LRUEvictionQueue!(string, int)(100); cache["bbb"] = 5; cache["zzz"] = 7; string[] keys = cache.keys();
-
Declaration
intopApply(scope int delegate(ref KEY key, ref VALUE value)dg);Used to iterate over the queue.
Examples
auto cache = LRUEvictionQueue!(string, int)(100); cache["bbb"] = 5; cache["zzz"] = 7; foreach (key, ref value ; cache) { }
-
Declaration
VALUEopIndex(KEYkey);Gets the value in the queue. Throws if the
keyis not found.Parameters
KEYkeyThe
keyto get.Throws
If the
keyis not found, it will throw an Exception.Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Frank"; string name = cache["name"];
-
Declaration
VALUEopIndexAssign(VALUEvalue, KEYkey);Sets the
valuein the queue. Will fire the on_evict_cb event if it is a new item that pushes an item off the queue. Will fire the on_update_cb event if updating an already existingkey.Parameters
KEYkeyThe
keyto set.VALUEvalueThe
valueto set.Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Lisa";
-
Declaration
VALUE*opBinary(string op)(KEYrhs);Returns a pointer to the value in the queue, or
null.Parameters
KEYrhsThe name of the key to check.
Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache["name"] = "Lisa"; string* result = "name" in cache;
-
Declaration
void delegate(KEY key, ref VALUE value)on_evict_cb;The event to fire when an existing key is evicted
Parameters
on_evict_cbThe callback to fire.
Examples
auto cache = LRUEvictionQueue!(string, string)(2); cache.on_evict_cb = delegate(string key, ref string value) { }; cache["aaa"] = "Lisa"; cache["bbb"] = "Sally"; cache["ccc"] = "Kevin";
-
Declaration
void delegate(KEY key, ref VALUE value)on_update_cb;The event to fire when an existing key is updated
Parameters
on_update_cbThe callback to fire.
Examples
auto cache = LRUEvictionQueue!(string, string)(100); cache.on_update_cb = delegate(string key, ref string value) { }; cache["name"] = "Lisa"; cache["name"] = "Sally";