CopperSpice API
1.9.2
|
The QCache class is used to store elements in a cache container. More...
Public Methods | |
QCache (int maxCost=100) | |
~QCache () | |
void | clear () |
bool | contains (const Key &key) const |
int | count () const |
bool | insert (const Key &key, T *object, int cost=1) |
bool | isEmpty () const |
QList< Key > | keys () const |
int | maxCost () const |
T * | object (const Key &key) const |
T * | operator[] (const Key &key) const |
bool | remove (const Key &key) |
void | setMaxCost (int cost) |
int | size () const |
T * | take (const Key &key) |
int | totalCost () const |
The QCache class is used to store elements in a cache container. This is a templated class where Key and T are the template parameters. This class stores key / value pairs of type Key and a pointer to type T. When a new pair is added to the QCache the value must be passed as a pointer to an existing object of type T. The existing object must be allocated on the heap using operator new. QCache will take ownership of the value object and is responsible for deleting it.
When inserting an object into the cache you can specify a "cost" integer value. The value for the cost should bear some relationship to the amount of memory required to store the value object. The total cost can be retrieved by calling the method totalCost() and the cache limit can be found by calling maxCost().
When the total cost of all the value objects in the cache exceeds the cache limit, QCache will delete one or more key / value pairs to make room for new objects. Pairs which have not been accessed recently will be deleted first.
The following is a declaration for a cache which stores objects of type Employee associated with an integer key. By default the maximum cost is 100. In this example it will be set to 5000.
This code shows how to insert an object in the cache.
To look up objects in the cache use the methods object() or operator[](). These methods look up an object by its key and return either a pointer to the cached object or a nullptr.
The method remove() is used to delete an key / value pair from the cache. Calling this method will also delete the value object. If you want to remove an key / value pair from the cache without the QCache deleting it, use the method take().
|
inlineexplicit |
Constructs a cache whose contents will never have a total cost greater than maxCost.
|
inline |
Destroys the cache. Deletes all the objects in the cache.
|
inline |
|
inline |
|
inline |
Equivalent to calling size().
bool QCache< Key, T >::insert | ( | const Key & | key, |
T * | object, | ||
int | cost = 1 |
||
) |
Inserts object into the cache with key and the associated cost. Any object with the same key already in the cache will be removed. After this call, object is owned by the QCache and may be deleted at any time. If cost is greater than maxCost() the object will be deleted immediately.
The method returns true if the object was inserted into the cache, otherwise it returns false.
|
inline |
Returns true if the cache contains no objects, otherwise returns false.
|
inline |
Returns a list of the keys in the cache.
|
inline |
Returns the maximum allowed total cost of the cache.
|
inline |
|
inline |
Returns the object associated with the given key or nullptr if the key does not exist in the cache. Equivalent to calling object().
|
inline |
|
inline |
Sets the maximum allowed total cost of the cache to cost. If the current total cost is greater than cost, some objects are deleted immediately.
|
inline |
Returns the number of objects in the cache.
|
inline |
Takes the object associated with key out of the cache without deleting it. Returns a pointer to the removed object or a nullptr if the key does not exist in the cache. The ownership of the returned object is passed to the caller.
|
inline |
Returns the total cost of the objects in the cache.