ANNA Suite  2020b
Multipurpose development suite for Telco applications
Public Types | Public Member Functions | Static Public Member Functions | List of all members
anna::SortedVector< T, SortBy, TKey > Class Template Reference

#include <SortedVector.hpp>

Inheritance diagram for anna::SortedVector< T, SortBy, TKey >:
Inheritance graph
[legend]
Collaboration diagram for anna::SortedVector< T, SortBy, TKey >:
Collaboration graph
[legend]

Public Types

typedef std::map< TKey, T * > container
 
typedef container::iterator iterator
 
typedef container::const_iterator const_iterator
 
typedef container::value_type value_type
 

Public Member Functions

 SortedVector ()
 
 SortedVector (const SortedVector &other)
 
virtual ~SortedVector ()
 
bool contains (const T *t) const
 
bool add (T *t) noexcept(false)
 
bool erase (T *t) noexcept(false)
 
T * find (const TKey key)
 
const T * find (const TKey key) const
 

Static Public Member Functions

static T * data (iterator ii)
 
static const T * data (const_iterator ii)
 

Detailed Description

template<typename T, typename SortBy, typename TKey = int>
class anna::SortedVector< T, SortBy, TKey >

Patron para ordenar instancias de objetos en base de una clave.

Parameters
TClase del patron.
SortByClase que ofrece el valor por el que ordenar. Debe implementar un metodo constante con la signatura: TKey value (const T*)
TKeyTipo de clave usado para calcular la ordenacion. Debe implementar los operadores '=', '<' y '==' y el contructor copia.
Warning
no actua como clase segura en MT, ver anna::SafeSortedVector.

Member Typedef Documentation

◆ const_iterator

template<typename T, typename SortBy, typename TKey = int>
typedef container::const_iterator anna::SortedVector< T, SortBy, TKey >::const_iterator

◆ container

template<typename T, typename SortBy, typename TKey = int>
typedef std::map<TKey, T*> anna::SortedVector< T, SortBy, TKey >::container

◆ iterator

template<typename T, typename SortBy, typename TKey = int>
typedef container::iterator anna::SortedVector< T, SortBy, TKey >::iterator

◆ value_type

template<typename T, typename SortBy, typename TKey = int>
typedef container::value_type anna::SortedVector< T, SortBy, TKey >::value_type

Constructor & Destructor Documentation

◆ SortedVector() [1/2]

template<typename T, typename SortBy, typename TKey = int>
anna::SortedVector< T, SortBy, TKey >::SortedVector ( )
inline

Constructor.

40 {;}

◆ SortedVector() [2/2]

template<typename T, typename SortBy, typename TKey = int>
anna::SortedVector< T, SortBy, TKey >::SortedVector ( const SortedVector< T, SortBy, TKey > &  other)
inlineexplicit

Constructor copia.

Parameters
otherInstancia de la que copiar.
46  :
47  container(other) {}
std::map< TKey, T * > container
Definition: SortedVector.hpp:32

◆ ~SortedVector()

template<typename T, typename SortBy, typename TKey = int>
virtual anna::SortedVector< T, SortBy, TKey >::~SortedVector ( )
inlinevirtual

Destructor.

52 { container::clear(); }

Member Function Documentation

◆ add()

template<typename T, typename SortBy, typename TKey = int>
bool anna::SortedVector< T, SortBy, TKey >::add ( T *  t)
inlinenoexcept

Incorpora la instancia recibida como parametro en la lista ordenada de objetos.

Parameters
tInstancia a guardar en el map. Si es NULL la operacion no tendra ningun efecto.
Returns
true si ha registrado la nueva instancia o false en otro caso.
76  {
77  if(t == NULL)
78  return false;
79 
80  TKey key(SortBy::value(t));
81  value_type v(key, t);
82  std::pair <iterator, bool> result = container::insert(v);
83  return result.second;
84  }
container::value_type value_type
Definition: SortedVector.hpp:35

◆ contains()

template<typename T, typename SortBy, typename TKey = int>
bool anna::SortedVector< T, SortBy, TKey >::contains ( const T *  t) const
inline

Devolvera true si la instancia recibida como parametro esta contenido en el map o en otro caso. Si la instancia recibida es NULL siempre devolvera false.

Parameters
tInstancia a comprobar.
Returns
true si la instancia recibida como parametro esta contenido en el map o en otro caso.
62  {
63  if(t == NULL)
64  return false;
65 
66  TKey key(SortBy::value(t));
67  return find(key) != NULL;
68  }
T * find(const TKey key)
Definition: SortedVector.hpp:113

◆ data() [1/2]

template<typename T, typename SortBy, typename TKey = int>
static T* anna::SortedVector< T, SortBy, TKey >::data ( iterator  ii)
inlinestatic

Devuelve el objeto referenciado por el iterador.

Returns
El objeto referenciado por el iterador.
132 { return ii->second; }

◆ data() [2/2]

template<typename T, typename SortBy, typename TKey = int>
static const T* anna::SortedVector< T, SortBy, TKey >::data ( const_iterator  ii)
inlinestatic

Devuelve el objeto referenciado por el iterador.

Returns
El objeto referenciado por el iterador.
138 { return ii->second; }

◆ erase()

template<typename T, typename SortBy, typename TKey = int>
bool anna::SortedVector< T, SortBy, TKey >::erase ( T *  t)
inlinenoexcept

Elimina la instancia recibida como parametro de la lista ordenada de objetos.

Parameters
tInstancia a guardar en el map. Si es NULL la operacion no tendra ningun efecto.
Returns
true si ha eliminado la instancia o false en otro caso.
92  {
93  if(t == NULL)
94  return false;
95 
96  bool result = false;
97  TKey key(SortBy::value(t));
98  iterator ii = container::find(key);
99 
100  if(ii != container::end()) {
101  container::erase(ii);
102  result = true;
103  }
104 
105  return result;
106  }
container::iterator iterator
Definition: SortedVector.hpp:33

◆ find() [1/2]

template<typename T, typename SortBy, typename TKey = int>
T* anna::SortedVector< T, SortBy, TKey >::find ( const TKey  key)
inline

Devuelve la instancia asociada a la clave recibida como parametro o NULL si no existe.

Parameters
keyClave a buscar en el map.
Returns
la instancia asociada a la clave recibida como parametro o NULL si no existe.
114  {
115  iterator ii = container::find(key);
116  return (ii == container::end()) ? NULL : ii->second;
117  }
container::iterator iterator
Definition: SortedVector.hpp:33

◆ find() [2/2]

template<typename T, typename SortBy, typename TKey = int>
const T* anna::SortedVector< T, SortBy, TKey >::find ( const TKey  key) const
inline

Devuelve la instancia asociada a la clave recibida como parametro o NULL si no existe.

Parameters
keyClave a buscar en el map.
Returns
la instancia asociada a la clave recibida como parametro o NULL si no existe.
124  {
125  return const_cast <SortedVector <T, SortBy, TKey>*>(this)->find(key);
126  }
T * find(const TKey key)
Definition: SortedVector.hpp:113

The documentation for this class was generated from the following file: