Remove dynamic exceptions
[anna.git] / include / anna / dbos / StorageArea.hpp
index e9bda03..9523df2 100644 (file)
@@ -93,7 +93,7 @@ public:
        \param v Codigo a traducir a literal.
        \return el literal correspondiente al codigo recibido.
     */
-    static const char* asString(const _v v) throw();
+    static const char* asString(const _v v) ;
   };
 
   /**
@@ -145,13 +145,13 @@ public:
    * Devuelve el código de error asociado a la excepción cuando no se encuentra un registro buscado.
    * \return el código de error asociado a la excepción cuando no se encuentra un registro buscado.
    */
-  int getErrorCode() const throw() { return a_errorCode; }
+  int getErrorCode() const { return a_errorCode; }
 
   /*
    * Devuelve el nombre de la este área de almacenamiento.
    * \return el nombre de la este área de almacenamiento.
    */
-  const std::string& getName() const throw() { return a_name; }
+  const std::string& getName() const { return a_name; }
 
   /**
      Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a
@@ -173,7 +173,7 @@ public:
      \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release
      cuando dejemos de usar la instancia.
   */
-  Object* instance(dbms::Connection& connection, Loader& loader) throw(RuntimeException, dbms::DatabaseException) {
+  Object* instance(dbms::Connection& connection, Loader& loader) noexcept(false) {
     return instance(&connection, loader);
   }
 
@@ -197,7 +197,7 @@ public:
      \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release
      cuando dejemos de usar la instancia.
   */
-  Object* instance(dbms::Connection* connection, Loader& loader) throw(RuntimeException, dbms::DatabaseException);
+  Object* instance(dbms::Connection* connection, Loader& loader) noexcept(false);
 
   /**
      Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a
@@ -222,7 +222,7 @@ public:
      cuando dejemos de usar la instancia.
   */
   Object* instance(dbms::Connection& connection, CrossedLoader& crossedLoader,  Loader& loader)
-  throw(RuntimeException, dbms::DatabaseException) {
+  noexcept(false) {
     return instance(&connection, crossedLoader, loader);
   }
 
@@ -249,7 +249,7 @@ public:
      cuando dejemos de usar la instancia.
   */
   Object* instance(dbms::Connection* connection, CrossedLoader& crossedLoader,  Loader& loader)
-  throw(RuntimeException, dbms::DatabaseException);
+  noexcept(false);
 
   /**
      Carga la informacion de un objeto contenida en un medio fisico y la interpreta para adecuarla a
@@ -270,7 +270,7 @@ public:
      \warning Para usar este método se requiere haber re-escrito el método virtual Loader::load para que no intente
      obtener los datos desde la base de datos.
   */
-  Object* instance(Loader& loader) throw(RuntimeException, dbms::DatabaseException) {
+  Object* instance(Loader& loader) noexcept(false) {
     return instance(NULL, loader);
   }
 
@@ -292,7 +292,7 @@ public:
       cuando dejemos de usar la instancia.
       \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
    */
-  Object* create(dbms::Connection& connection, Creator& creator) throw(RuntimeException, dbms::DatabaseException) {
+  Object* create(dbms::Connection& connection, Creator& creator) noexcept(false) {
     return create(&connection, creator);
   }
 
@@ -314,7 +314,7 @@ public:
       cuando dejemos de usar la instancia.
       \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
    */
-  Object* create(dbms::Connection* connection, Creator& creator) throw(RuntimeException, dbms::DatabaseException);
+  Object* create(dbms::Connection* connection, Creator& creator) noexcept(false);
 
   /**
       Crea un objeto en el área de almacenamiento y lo prepara para ser transferido al medio fisico
@@ -331,7 +331,7 @@ public:
       cuando dejemos de usar la instancia.
       \li No puede usarse en las áreas de almacenamiento definidas como AccessMode::ReadOnly.
    */
-  Object* create(Creator& creator) throw(RuntimeException, dbms::DatabaseException) { return create(NULL, creator); }
+  Object* create(Creator& creator) noexcept(false) { return create(NULL, creator); }
 
   /**
      Devuelve la informacion de un objeto cargado desde el medio fisico.
@@ -349,7 +349,7 @@ public:
      \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release
      cuando dejemos de usar la instancia.
   */
-  Object* find(Loader& loader) throw(RuntimeException);
+  Object* find(Loader& loader) noexcept(false);
 
   /**
      Devuelve de una copia del objeto recibido como parámetro e incrementa la cuenta de utilizacion
@@ -362,7 +362,7 @@ public:
      \warning Cada llamada a este método deberia tener su correspondiente liberacion invocando a #release
      cuando dejemos de usar la instancia.
   */
-  Object* duplicate(const Object* object) throw(RuntimeException);
+  Object* duplicate(const Object* object) noexcept(false);
 
   /**
      Permite conocer si un determinado objeto esta alojado en el área de almacenamiento. No
@@ -374,7 +374,7 @@ public:
      \return \em true Si el objeto identificado por el Loader esta en el área de almacenamiento o
      \em false en otro caso.
   */
-  bool isLoaded(const Loader& loader) throw(RuntimeException);
+  bool isLoaded(const Loader& loader) noexcept(false);
 
   /**
      Transfiere la informacion del objeto recibido como parámetro al medio fisico usando el Recorder
@@ -383,7 +383,7 @@ public:
      \param connection Conexion usada si fuera necesario acceder al medio fisico.
      \param recorder Grabador usado para transferir los datos al medio fisico.
   */
-  void apply(dbms::Connection& connection, Recorder& recorder) throw(RuntimeException, dbms::DatabaseException);
+  void apply(dbms::Connection& connection, Recorder& recorder) noexcept(false);
 
   /**
      Elimina la informacion del objeto recibido como parámetro del medio fisico usando el Eraser
@@ -394,7 +394,7 @@ public:
 
      \warning Si la cuenta de utilizacion del objeto es 1 se liberaría en otro caso se devolvería una excepción.
   */
-  void apply(dbms::Connection& connection, Eraser& eraser) throw(RuntimeException, dbms::DatabaseException);
+  void apply(dbms::Connection& connection, Eraser& eraser) noexcept(false);
 
   /**
      Habilita la reutilizacion del espacio de memoria ocupado por un objeto instanciado mediate #instance.
@@ -409,7 +409,7 @@ public:
      \warning Si el objeto recibido como parámetro no fue reservado mediate #instance no tiene
      ningun efecto.
   */
-  void release(Object** object) throw(RuntimeException);
+  void release(Object** object) noexcept(false);
 
   /**
      Elimina toda la informacion referente al objeto recibido como parámetro, siempre y cuando
@@ -421,7 +421,7 @@ public:
      ningun efecto.
      \li La instancia a liberar solo puede tener 1 en su cuenta de utilizacion.
   */
-  void erase(Object** object) throw(RuntimeException);
+  void erase(Object** object) noexcept(false);
 
   /**
      Marca el objeto recibido como pendiente de recarga de datos.
@@ -432,87 +432,87 @@ public:
      ningun efecto.
      \li La instancia a marcar solo deberia tener una unica instancia en uso.
   */
-  void dirty(Object* object) throw(RuntimeException);
+  void dirty(Object* object) noexcept(false);
 
   /**
      Establece el tamanho de las instancias de los objetos contenidos en este área de almacenamiento.
      \param _sizeof Numero de bytes ocupado por cada una de las instancias.
   */
-  void setSizeof(const Size _sizeof) throw() { a_sizeof = _sizeof + sizeof(Instance); }
+  void setSizeof(const Size _sizeof) { a_sizeof = _sizeof + sizeof(Instance); }
 
   /**
      Devuelve el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento.
      \return el numero maximo de bytes teorico que puede llegar a reservar este área de almacenamiento.
   */
-  Size getMaxSizeOf() const throw() { return a_maxSize * a_sizeof; }
+  Size getMaxSizeOf() const { return a_maxSize * a_sizeof; }
 
   /**
      Devuelve el numero de bytes teorico que puede llegar a reservar este área de almacenamiento.
      \return el numero de bytes teorico que puede llegar a reservar este área de almacenamiento.
   */
-  Size getSizeOf() const throw() { return a_directory.size() * a_sizeof; }
+  Size getSizeOf() const { return a_directory.size() * a_sizeof; }
 
   /**
      Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento.
      \return Un iterator al primero de los objetos contenido en el área del almacenamiento.
   */
-  iterator begin() throw() { return a_directory.begin(); }
+  iterator begin() { return a_directory.begin(); }
 
   /**
      Devuelve un iterator al primero de los objetos contenido en el área del almacenamiento.
      \return Un iterator al primero de los objetos contenido en el área del almacenamiento.
   */
-  const_iterator begin() const throw() { return a_directory.begin(); }
+  const_iterator begin() const { return a_directory.begin(); }
 
   /**
      Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento.
      \return Un iterator al fin de los objetos contenidos en el área del almacenamiento.
   */
-  iterator end() throw() { return a_directory.end(); }
+  iterator end() { return a_directory.end(); }
 
   /**
      Devuelve un iterator al fin de los objetos contenidos en el área del almacenamiento.
      \return Un iterator al fin de los objetos contenidos en el área del almacenamiento.
   */
-  const_iterator end() const throw() { return a_directory.end(); }
+  const_iterator end() const { return a_directory.end(); }
 
   /**
      Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro.
      \return El puntero sobre el que esta posicionado el iterador recibido como parámetro.
   */
-  static Object* data(iterator ii) throw() { return ii->second->object; }
+  static Object* data(iterator ii) { return ii->second->object; }
 
   /**
      Devuelve el puntero sobre el que esta posicionado el iterador recibido como parámetro.
      \return El puntero sobre el que esta posicionado el iterador recibido como parámetro.
   */
-  static const Object* data(const_iterator ii) throw() { return ii->second->object; }
+  static const Object* data(const_iterator ii) { return ii->second->object; }
 
   /**
      Devuelve una cadena con la informacion referente a este área de almacenamiento.
      \return Una cadena con la informacion referente a este área de almacenamiento.
   */
-  std::string asString() const throw();
+  std::string asString() const ;
 
   /**
      Devuelve un documento XML con la informacion referente a esta instancia.
      \param parent Nodo XML del que dependende la informacion.
      @return un documento XML con la informacion referente a esta instancia.
   */
-  xml::Node* asXML(xml::Node* parent) const throw();
+  xml::Node* asXML(xml::Node* parent) const ;
 
 protected:
   /**
      Descarga del área de almacenamiento todos los objetos que estuviera cargados.
      Este método se invoca desde anna::dbos::Repository::clear
   */
-  void clear() throw(RuntimeException);
+  void clear() noexcept(false);
 
   /**
      Devuelve un literal con el entero recibido tratado como una cantidad en bytes.
      \return un literal con el entero recibido tratado como un cantidad en bytes
   */
-  static std::string asMemorySize(const Size size) throw();
+  static std::string asMemorySize(const Size size) ;
 
 private:
   typedef std::map <Index, Instance*>::value_type value_type;
@@ -528,13 +528,13 @@ private:
 
     Holes() : a_size(0) {;}
 
-    bool insert(Instance* instance, const Mode::_v mode) throw();
-    void erase(Instance* instance) throw();
-    Instance* front() throw() { return a_holes.front(); }
-    int size() const throw() { return a_size; }
-    int empty() const throw() { return a_holes.empty(); }
-    void pop_front() throw() { a_holes.pop_front(); a_size --; }
-    void clear() throw() { a_holes.clear(); a_size = 0; }
+    bool insert(Instance* instance, const Mode::_v mode) ;
+    void erase(Instance* instance) ;
+    Instance* front() { return a_holes.front(); }
+    int size() const { return a_size; }
+    int empty() const { return a_holes.empty(); }
+    void pop_front() { a_holes.pop_front(); a_size --; }
+    void clear() { a_holes.clear(); a_size = 0; }
 
   private:
     hole_container a_holes;
@@ -563,8 +563,8 @@ private:
   class Block {
   public:
     Block(ObjectAllocator objectAllocator, const Size maxSize);
-    Instance* getInstance() throw() { return (a_size < a_maxSize) ? &a_instances [a_size ++] : NULL; }
-    void reset() throw() { a_size = 0; }
+    Instance* getInstance() { return (a_size < a_maxSize) ? &a_instances [a_size ++] : NULL; }
+    void reset() { a_size = 0; }
 
   private:
     Instance* a_instances;
@@ -593,10 +593,10 @@ private:
      typedef inprogress_container::iterator inprogress_iterator;
      inprogress_container a_inprogress;
 
-     inprogress_iterator inprogress_begin () const throw () { return a_inprogress.begin (); }
-     inprogress_iterator inprogress_end () const throw () { return a_inprogress.end (); }
-     static DBIndex index (inprogress_iterator ii) throw () { return *ii; }
-     bool isInProgress (const DBIndex index) const throw ();
+     inprogress_iterator inprogress_begin () const { return a_inprogress.begin (); }
+     inprogress_iterator inprogress_end () const { return a_inprogress.end (); }
+     static DBIndex index (inprogress_iterator ii) { return *ii; }
+     bool isInProgress (const DBIndex index) const ;
   */
 
   /*
@@ -606,15 +606,15 @@ private:
   StorageArea(const char* name, const Size maxSize, ObjectAllocator, const AccessMode::_v, const int errorCode);
   StorageArea(const StorageArea&);
 
-  Object* reload(dbms::Connection*, Loader&, Instance*) throw(RuntimeException, dbms::DatabaseException);
-  void checkIncoherence(Instance*) throw();
-  bool quickReusing(Instance*) throw();
-  void verifyStatus(StorageArea::Instance*, const bool ignoreDirty = false) throw(RuntimeException);
-  Instance* allocate() throw();
-  Instance* reuse() throw();
+  Object* reload(dbms::Connection*, Loader&, Instance*) noexcept(false);
+  void checkIncoherence(Instance*) ;
+  bool quickReusing(Instance*) ;
+  void verifyStatus(StorageArea::Instance*, const bool ignoreDirty = false) noexcept(false);
+  Instance* allocate() ;
+  Instance* reuse() ;
 
-  static Instance* instance(iterator& ii) throw() { return ii->second; }
-  static std::string asString(const Instance*) throw();
+  static Instance* instance(iterator& ii) { return ii->second; }
+  static std::string asString(const Instance*) ;
 
   friend class Repository;
 };