1 // ANNA - Anna is Not Nothingness Anymore //
3 // (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
5 // See project site at http://redmine.teslayout.com/projects/anna-suite //
6 // See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
9 #ifndef anna_core_util_ExclusiveHash_hpp
10 #define anna_core_util_ExclusiveHash_hpp
17 Template para calcular de forma univoca valores numericos del tipo de dato T.
18 Un valor T puede tener valores distintos para instancias distintas de ExclusiveHash.
19 La instancia T debe ser capaz de actuar como idice de una map<T,X>.
21 \param T Tipo de dato que queremos codificar numericamente.
23 template < class T, class _K = unsigned long > class ExclusiveHash {
24 typedef std::map <T, _K> container;
25 typedef typename container::value_type value_type;
31 ExclusiveHash() : a_value(0) {;}
34 Calcula la funcion hash exclusiva para la instancia recibida como parametro.
35 \param t Instancia a la que vamos a calcular un valor numerico.
37 _K calcule(const T& t)
39 typename container::iterator ii;
42 if((ii = a_container.find(t)) == a_container.end()) {
44 a_container.insert(value_type(t, result));
52 container a_container;