Aleph-w  1.5a.2
Biblioteca general de algoritmos y estructuras de datos
 Todo Clases Archivos Funciones Variables 'typedefs' Enumeraciones Amigas Grupos Páginas
Referencia de la plantilla de la Clase Aleph::Hash_Cache< Key, Data, Cmp >

#include <tpl_hash_cache.H>

Clases

class  Cache_Entry
 
class  Iterator
 

Métodos públicos

 Hash_Cache (size_t(*hash_fct)(const Key &), const size_t &__hash_size, const size_t &__cache_size) throw (std::exception, std::bad_alloc)
 
Cache_Entryinsert (const Key &key, const Data &data)
 
Cache_Entrysearch (const Key &key)
 
Cache_Entrysearch_next (Cache_Entry *cache_entry)
 
void lock_entry (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error, std::domain_error)
 
void unlock_entry (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error)
 
void remove (Cache_Entry *cache_entry) throw (std::exception, std::runtime_error, std::domain_error)
 
void expand (const size_t &plus_size) throw (std::exception, std::range_error, std::bad_alloc)
 
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.
 

Descripción detallada

template<typename Key, typename Data, class Cmp = Aleph::equal_to<Key>>
class Aleph::Hash_Cache< Key, Data, Cmp >

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).

Parámetros
Keytipo de clave de indización.
Datatipo de dato asociado a la clave.
Cmpclase de comparación entre las claves.
Ver también
Cache_Entry

Documentación del constructor y destructor

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
Aleph::Hash_Cache< Key, Data, Cmp >::Hash_Cache ( size_t(*)(const Key &)  hash_fct,
const size_t &  __hash_size,
const size_t &  __cache_size 
)
throw (std::exception,
std::bad_alloc
)
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.

Parámetros
[in]hash_fctpuntero a la función hash.
[in]__hash_sizetamaño de la tabla hash interna
[in]__cache_sizetamaño del cache.
Excepciones
bad_allocsi no hay suficiente memoria.
Nota
Puesto que la tabla hash de trasfondo resuelve las colisiones por encadenamiento separado, el tamaño de la tabla puede ser menor que el tamaño del cache. Esto no se valida en absoluto. Si se desea un buen rendimiento, entonces asegúrese de tener una buena función hash y de que el tamaño de la tabla sea al menos un 20% mayor que el de cache.

Hace referencia a Aleph::Dlink::insert().

+ Gráfico de llamadas para esta función:

Documentación de las funciones miembro

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
void Aleph::Hash_Cache< Key, Data, Cmp >::expand ( const size_t &  plus_size)
throw (std::exception,
std::range_error,
std::bad_alloc
)
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.

Hace referencia a Aleph::Dlink::insert().

+ Gráfico de llamadas para esta función:

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
const size_t& Aleph::Hash_Cache< Key, Data, Cmp >::get_num_busy_slots ( ) const
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.

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
const size_t& Aleph::Hash_Cache< Key, Data, Cmp >::get_num_locked ( ) const
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.

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
Cache_Entry* Aleph::Hash_Cache< Key, Data, Cmp >::insert ( const Key &  key,
const Data &  data 
)
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.

Parámetros
[in]keyclave de indización.
[in]datadato asociado a la clave.
Devuelve
un puntero a un Objeto de tipo [[Cache_Entry]] contentivo del par (key,data) recién insertado.
Excepciones
underflow_errorsi el cache está lleno y todas sus entradas trancadas.

Hace referencia a Aleph::Hash_Cache< Key, Data, Cmp >::Cache_Entry::get_data() y Aleph::Dlink::insert().

+ Gráfico de llamadas para esta función:

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
void Aleph::Hash_Cache< Key, Data, Cmp >::lock_entry ( Cache_Entry cache_entry)
throw (std::exception,
std::runtime_error,
std::domain_error
)
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.

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
void Aleph::Hash_Cache< Key, Data, Cmp >::remove ( Cache_Entry cache_entry)
throw (std::exception,
std::runtime_error,
std::domain_error
)
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.

template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
Cache_Entry* Aleph::Hash_Cache< Key, Data, Cmp >::search ( const Key &  key)
inline

Busca una clave en el cache.

search(key) busca en el cache una entrada con valor key.

Parámetros
[in]keyclave a buscar.
Devuelve
un puntero a un Cache_Entry contentivo de la clave con todos los datos asociados si la clave es encontrada. NULL de lo contrario.
template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
Cache_Entry* Aleph::Hash_Cache< Key, Data, Cmp >::search_next ( Cache_Entry cache_entry)
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.

Parámetros
[in]cache_entryuna entrada resultante de una búsqueda previa u otra llamada a esta primitiva.
Devuelve
puntero al próximo Cache_Entry contentivo de la misma clave -si éste existe-, o NULL de lo contrario.
template<typename Key , typename Data , class Cmp = Aleph::equal_to<Key>>
void Aleph::Hash_Cache< Key, Data, Cmp >::unlock_entry ( Cache_Entry cache_entry)
throw (std::exception,
std::runtime_error
)
inline

Destranca la entrada cache_entry. Dispara excepción runtime_error si la entrada no está trancada.


La documentación para esta clase fue generada a partir del siguiente fichero:

Leandro Rabindranath León