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

#include <CommaSeparatedList.hpp>

Public Types

typedef std::vector< T * >::iterator iterator
 
typedef std::vector< T * >::const_iterator const_iterator
 

Public Member Functions

 CommaSeparatedList ()
 
 ~CommaSeparatedList ()
 
CommaSeparatedList< T > & operator, (T &t)
 
CommaSeparatedList< T > & operator= (T &t)
 
CommaSeparatedList< T > & operator= (CommaSeparatedList< T > &rsh)
 
void clear ()
 
iterator begin ()
 
const_iterator begin () const
 
iterator end ()
 
const_iterator end () const
 

Static Public Member Functions

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

Detailed Description

template<typename T>
class anna::CommaSeparatedList< T >

Obtiene una lista de objetos a partir de la lista expresada con el operador ','. Lo mas normal es que sea usada para pasar un numero indeterminado de parametros del mismo tipo a un metodo o funcion.

Por ejemplo el modo de uso seria el siguiente:

CommaSeparatedList <Objeto> params;
Objeto a, b, c;
params = a, b, c;
for (CommaSeparatedList<Objeto>::const_iterator ii = params.begin (), maxii = params.end (); ii != maxii; ii ++) {
Objecto* obj = CommaSeparatedList<Objeto>::data (ii);
.... usa el objeto de la lista ...
}

Un ejemplo mas realista. Suponed que tenemos una funcion que tiene que recibir un numero indeterminado de instancia de tipo Objeto. Se definira de la forma:

void cualquierFuncion (const anna::CommaSeparatedList <Objeto>& csl) {
for (CommaSeparatedList<Objeto>::const_iterator ii = params.begin (), maxii = params.end (); ii != maxii; ii ++) {
Objecto* obj = CommaSeparatedList<Objeto>::data (ii);
.... usa el objeto de la lista ...
}
}

La invocacion a la funcion sera:

Objeto aaa, bbb, ccc;
cualquierFunction (aaa, bbb, ccc);
cualquierFunction (bbb, ccc);

En el primer caso la lista de objetos terminara conteniendo los elementos aaa, bbb y ccc.. En el segundo caso la lista de objetos terminara conteniendo los elementos bbb y ccc.

Member Typedef Documentation

◆ const_iterator

template<typename T>
typedef std::vector<T*>::const_iterator anna::CommaSeparatedList< T >::const_iterator

Definicion para recorrer los elementos

◆ iterator

template<typename T>
typedef std::vector<T*>::iterator anna::CommaSeparatedList< T >::iterator

Definicion para recorrer los elementos.

Constructor & Destructor Documentation

◆ CommaSeparatedList()

template<typename T>
anna::CommaSeparatedList< T >::CommaSeparatedList ( )
inline

Constructor vacio.

69 {;}

◆ ~CommaSeparatedList()

template<typename T>
anna::CommaSeparatedList< T >::~CommaSeparatedList ( )
inline

Destructor.

74 { a_parameters.clear(); }

Member Function Documentation

◆ begin() [1/2]

template<typename T>
iterator anna::CommaSeparatedList< T >::begin ( )
inline

Devuelve un iterator al primer parametro de la lista.

Returns
Un iterator al primer parametro de la lista.
113 { return a_parameters.begin(); }

◆ begin() [2/2]

template<typename T>
const_iterator anna::CommaSeparatedList< T >::begin ( ) const
inline

Devuelve un iterator al primer parametro de la lista.

Returns
Un iterator al primer parametro de la lista.
119 { return a_parameters.begin(); }

◆ clear()

template<typename T>
void anna::CommaSeparatedList< T >::clear ( )
inline

Elimina el contenido actual de la lista de parametros.

107 { a_parameters.clear(); }

◆ data() [1/2]

template<typename T>
static T* anna::CommaSeparatedList< T >::data ( iterator ii)
inlinestatic

Devuelve el puntero sobre el que esta posicionado el iterador recibido como parametro.

Returns
El puntero sobre el que esta posicionado el iterador recibido como parametro.
137 { return *ii; }

◆ data() [2/2]

template<typename T>
static const T* anna::CommaSeparatedList< T >::data ( const_iterator ii)
inlinestatic

Devuelve el puntero sobre el que esta posicionado el iterador recibido como parametro.

Returns
El puntero sobre el que esta posicionado el iterador recibido como parametro.
143 { return *ii; }

◆ end() [1/2]

template<typename T>
iterator anna::CommaSeparatedList< T >::end ( )
inline

Devuelve un iterator al ultimo parametro de la lista.

Returns
Un iterator al ultimo parametro de la lista.
125 { return a_parameters.end(); }

◆ end() [2/2]

template<typename T>
const_iterator anna::CommaSeparatedList< T >::end ( ) const
inline

Devuelve un iterator al ultimo parametro de la lista.

Returns
Un iterator al ultimo parametro de la lista.
131 { return a_parameters.end(); }

◆ operator,()

template<typename T>
CommaSeparatedList<T>& anna::CommaSeparatedList< T >::operator, ( T &  t)
inline

Operador coma re-escrito para recorrer los objetos de la expresion basada en ','. Cada uno de los elementos de la expresion es convertido a un elemento de la lista.

Parameters
tParametro con el que ampliar la lista.
Returns
La instancia de la lista destino.
82 { a_parameters.push_back(&t); return *this; }

◆ operator=() [1/2]

template<typename T>
CommaSeparatedList<T>& anna::CommaSeparatedList< T >::operator= ( T &  t)
inline

Operador de asignacion. Amplia la lista con el elemento recibido.

Parameters
tParametro con el que ampliar la lista.
Returns
La instancia de la lista destino.
90 { a_parameters.push_back(&t); return *this; }

◆ operator=() [2/2]

template<typename T>
CommaSeparatedList<T>& anna::CommaSeparatedList< T >::operator= ( CommaSeparatedList< T > &  rsh)
inline

Operador de copia.

Parameters
rshLista de parametros a copiar.
Returns
La instancia de la lista destino.
97  {
98  if(this != &rsh)
99  a_parameters = rsh.parameters;
100 
101  return *this;
102  }

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