+++ /dev/null
-// ANNA - Anna is Not Nothingness Anymore //
-// //
-// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo //
-// //
-// See project site at http://redmine.teslayout.com/projects/anna-suite //
-// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE //
-
-
-#ifndef anna_dbos_SetFacade_hpp
-#define anna_dbos_SetFacade_hpp
-
-#include <vector>
-
-#include <anna/dbos/Set.hpp>
-#include <anna/dbos/ObjectFacade.hpp>
-
-namespace anna {
-
-namespace dbos {
-
-/**
- Clase que facilita el acceso y uso de las clases encargadas de la instanciacion de multiples objetos a partir de los
- datos contenidos en un medio fisico, que normalmente seria la tabla de una base de datos.
-
- Esta nos facilita el manejo de instancias multiples, es decir, para una condicion de carga dada hay varios registros
- o elementos del medio fisico que la cumplen.
-
- La clase \em T debe tener definidos los siquientes metodos:
- \li anna::dbos::Object::instantiate: Interpreta la informacin la del medio fisico para adecuarla a
- la clase C++.
- \li void destroy () throw (): Libera los recursos reservados por este objeto
-
- \see dbos_declare_set
- \see dbos_prepare_set
-*/
-template <typename T> class SetFacade : public ObjectFacade < Set <T> > {
-public:
- typedef typename Set<T>::iterator iterator;
- typedef typename Set<T>::const_iterator const_iterator;
-
- /**
- Devuelve el numero de elementos contenidos en el conjunto recibido como parametro.
- Se puede usar sin tener que preocuparse por
- el valor de la instancia del conjunto, ya que si este es NULL devolveria 0.
- \param t Instancia del conjunto.
- \return El numero de elementos que contiene el conjunto.
- */
- static int size(Set<T>* t) throw() { return (t == NULL) ? 0 : t->size(); }
-
- /**
- Iterator al primer elemento del conjunto. Se puede usar sin tener que preocuparse por
- el valor de la instancia del conjunto, ya que si este es NULL devolveria 0.
- \return Un iterador del primer elemento del conjunto.
- */
- static iterator begin(Set<T>* t) throw() {
- return (t == NULL) ? iterator(0) : t->begin();
- }
-
- /**
- Iterator al ultimo elemento del conjunto. Se puede usar sin tener que preocuparse por
- el valor de la instancia del conjunto, ya que si este es NULL devolveria 0.
- \return Un iterador del primer elemento del conjunto.
- */
- static iterator end(Set<T>* t) throw() {
- return (t == NULL) ? iterator(0) : t->end();
- }
-
- /**
- Iterator al primer elemento del conjunto. Se puede usar sin tener que preocuparse por
- el valor de la instancia del conjunto, ya que si este es NULL devolveria 0.
- \return Un iterador del primer elemento del conjunto.
- */
- static const_iterator begin(const Set<T>* t) throw() {
- return (t == NULL) ? const_iterator(0) : t->begin();
- }
-
- /**
- Iterator al ultimo elemento del conjunto. Se puede usar sin tener que preocuparse por
- el valor de la instancia del conjunto, ya que si este es NULL devolveria 0.
- \return Un iterador del primer elemento del conjunto.
- */
- static const_iterator end(const Set<T>* t) throw() {
- return (t == NULL) ? const_iterator(0) : t->end();
- }
- /**
- Devuelve el objeto referenciado por el iterator recibido como parametro.
- \return El objeto referenciado por el iterator recibido como parametro.
- */
- static T* data(iterator ii) throw() { return Set<T>::data(ii); }
-
- /**
- Devuelve el objeto referenciado por el iterator recibido como parametro.
- \return El objeto referenciado por el iterator recibido como parametro.
- */
- static const T* data(const_iterator ii) throw() { return Set<T>::data(ii); }
-
-protected:
- /**
- Contructor.
- */
- SetFacade() {}
-};
-
-/**
- Definicion a la que hay que invocar en la implementacion de la clase que hereda
- de anna::dbos::SetFacade.
-
- \param T Nombre de la clase que vamos a tratar en el ambito de C++.
-*/
-#define dbos_prepare_set(T) \
- template <> anna::dbos::StorageArea* anna::dbos::ObjectFacade < anna::dbos::Set <T> >::st_storageArea = NULL
-
-/**
- Definicion a la que hay que invocar dentro de la definicion de la clase que hereda
- de anna::dbos::SetFacade.
-
- \param T Nombre de la clase que vamos a tratar en el ambito de C++.
-*/
-#define dbos_declare_set(T) \
- friend class anna::Allocator<T>; \
- friend class anna::dbos::Set <T>
-
-}
-}
-
-#endif