#include <tpl_hash_cache.H>
Classes | |
| class | Cache_Entry |
| class | Iterator |
Public Member Functions | |
| Hash_Cache (size_t(*hash_fct)(const Key &), size_t __hash_size, const size_t &__cache_size) | |
| Cache_Entry * | insert (const Key &key, const Data &data) |
| Cache_Entry * | search (const Key &key) |
| Cache_Entry * | search_next (Cache_Entry *cache_entry) |
| void | lock_entry (Cache_Entry *cache_entry) |
| void | unlock_entry (Cache_Entry *cache_entry) |
| void | remove (Cache_Entry *cache_entry) |
| void | expand (const size_t &plus_size) |
| const size_t & | capacity () const |
| Retorna el tamaño de cache. | |
| const size_t & | size () const |
| Retorna en número de datos que están contenidos en el cache. | |
| const size_t & | get_num_locked () const |
| const size_t & | get_num_busy_slots () const |
| const size_t & | get_hash_capacity () const |
| Retorna el tamaño de la tabla hash. | |
Cache de datos mapeados a una clave.
Hash_Cache<Key,Data> implanta un cache instrumentado mediante una tabla hash que asocia claves de un conjunto dominio Key a datos de un conjunto rango Data.
Los métodos principales de Hash_Cache operan según un tipo denominado Cache_Entry, el cual es la unidad que contiene el par (clave,dato).
| Key | tipo de clave de indización. |
| Data | tipo de dato asociado a la clave. |
| Cmp | clase de comparación entre las claves. |
|
inline |
Instancia un cache.
Este constructor crea un nuevo cache de capacidad __cache_size e instrumentado mediante una tabla hash de tamaño __hash_size.
| [in] | hash_fct | puntero a la función hash. |
| [in] | __hash_size | tamaño de la tabla hash interna |
| [in] | __cache_size | tamaño del cache. |
| bad_alloc | si no hay suficiente memoria. |
Here is the call graph for this function:
|
inline |
Aumenta el tamaño de cache en plus_size entradas. Dispara bad_alloc si no hay suficiente memoria. El nuevo tamaño de la tabla es calculado a ser el mismo radio especificado durante la construcción.
Here is the call graph for this function:
|
inline |
Retorna la cantidad de entradas de la tabla hash que tienen elementos. Su relación con el tamaño de la tabla proporciona una idea de la eficiencia de la función hash.
Here is the call graph for this function:
|
inline |
Retorna la cantidad de entradas del cache que están trancadas. La diferencia con el tamaño proporciona su capacidad en entradas que pueden insertarse.
|
inline |
Inserta un nuevo par (key,data) en el cache.
insert(key,data) inserta en el cache el par (key,data). Si el cache está lleno, entonces el elementos más antiguamente accedido es eliminado y substituido por el par de inserción.
Después de la inserción, el par (key,data) deviene el elemento más recientemente accedido.
| [in] | key | clave de indización. |
| [in] | data | dato asociado a la clave. |
| underflow_error | si el cache está lleno y todas sus entradas trancadas. |
Here is the call graph for this function:
|
inline |
Tranca la entrada cache_entry, la cual debe pertenecer al cache y no debe estar trancada. Dispara excepción runtime_error si la entrada ya está trancada o domain_error si no está en el cache.
Here is the call graph for this function:
|
inline |
Elimina la entrada cache_entry del cache. Dispara excepción runtime_error si la entrada está trancada o domain_error si no está contenida en el cache.
Here is the call graph for this function:
|
inline |
Busca una clave en el cache.
search(key) busca en el cache una entrada con valor key.
| [in] | key | clave a buscar. |
Here is the call graph for this function:
|
inline |
Busca la próxima entrada con el mismo valor de clave de cache_entry.
Esta función se provee para buscar datos distintos que estén insertados en el cache bajo el mismo valor de clave.
| [in] | cache_entry | una entrada resultante de una búsqueda previa u otra llamada a esta primitiva. |
Here is the call graph for this function:
|
inline |
Destranca la entrada cache_entry. Dispara excepción runtime_error si la entrada no está trancada.
Here is the call graph for this function: