ANNA Suite
2020b
Multipurpose development suite for Telco applications
|
#include <Recycler.hpp>
Public Types | |
typedef std::list< T * > | container |
typedef container::iterator | iterator |
typedef container::const_iterator | const_iterator |
typedef std::map< T *, iterator > | random_container |
typedef random_container::iterator | random_iterator |
typedef random_container::value_type | random_item |
Public Member Functions | |
Recycler (const bool randomAccess=false) | |
virtual | ~Recycler () |
int | getSize () const |
int | size () const |
T * | create () noexcept(false) |
iterator | find (T *t) noexcept(false) |
void | release (T *t) |
void | release (iterator ii) |
void | release (const T *t) |
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) |
Mantiene una lista de punteros que puede crecer dinamicamente, no obstante, siempre que sea posible intenta reusar punteros creados previamente.
T | Clase de la que mantener la lista de punteros pre-asignados. |
Allocator | Clase encargada de reservar la memoria para los objetos T en el momento en que sea necesaria una nueva instancia. |
typedef container::const_iterator anna::Recycler< T, _Allocator >::const_iterator |
typedef std::list<T*> anna::Recycler< T, _Allocator >::container |
typedef container::iterator anna::Recycler< T, _Allocator >::iterator |
typedef std::map<T*, iterator> anna::Recycler< T, _Allocator >::random_container |
typedef random_container::value_type anna::Recycler< T, _Allocator >::random_item |
typedef random_container::iterator anna::Recycler< T, _Allocator >::random_iterator |
|
inline |
Constructor.
randomAccess | Indicador que permite activar el uso de estructuras de datos adicionales que permite que los métodos find y release realicen la búsqueda del objeto de forma optimizada. Se ha comprobado que si necesitamos tratar en torno a un centenar de instancias es más eficiente no activar las estructuras para acceso directo, para más objetos resulta imprescinble. |
|
inlinevirtual |
Destructor.
|
inline |
|
inline |
|
inline |
|
inlinenoexcept |
Devuelve un puntero de tipo T. Solo crearia una nueva instancia de la clase T si al invocar a este metoodo no existe ninguna otra instancia que se pueda reutilizar, en cuyo caso haria una nueva reserva.
Cada una de las llamadas a este metodo debe tener su correspondiente llamada al metodo release cuando el puntero deje de ser util.
|
inlinestatic |
|
inlinestatic |
|
inline |
|
inline |
|
inlinenoexcept |
Devuelve el iterador que apunta al objeto recibido como parametro. Si el objeto no se encuentra dentro de la lista devolverá end ()
|
inline |
|
inline |
Libera el puntero recibido como parametro. No se libera fisicamente sino que se deja marcado como reusable.
Si el puntero pasado como parametro no ha sido obtenido mediante el metodo create los resultados no estan definidos.
t | Instancia de un puntero de tipo T obtenido a partir del metodo create. |
|
inline |
Libera el puntero asociado al iterador recibido como parametro.
ii | Instancia a liberar. |
|
inline |
Libera el puntero recibido como parametro. No se libera fisicamente sino que se deja marcado como reusable.
Si el puntero pasado como parametro no ha sido obtenido mediante el metodo create los resultados no estan definidos.
t | Instancia de un puntero de tipo T obtenido a partir del metodo create. |
|
inline |