Remove dynamic exceptions
[anna.git] / include / anna / dbms / Statement.hpp
index 37ed7a1..bd24559 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not 'N' Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// https://bitbucket.org/testillano/anna
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions
-// are met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-// Authors: eduardo.ramos.testillano@gmail.com
-//          cisco.tierra@gmail.com
+// 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_dbms_Statement_hpp
@@ -82,13 +54,13 @@ public:
      Devuelve el nombre logico de esta sentencia.
      \return El nombre logico de esta sentencia.
   */
-  const std::string& getName() const throw() { return a_name; }
+  const std::string& getName() const { return a_name; }
 
   /**
      Devuelve la expresion SQL recibida en el constructor.
      \return La expresion SQL recibida en el constructor.
   */
-  const std::string& getExpression() const throw() { return a_expression; }
+  const std::string& getExpression() const { return a_expression; }
 
   /**
      Devuelve el indicador de criticidad, si vale \em true indica que si la ejecucion de esta sentencia
@@ -97,13 +69,13 @@ public:
      Solo aplicara en sentencias que no sean de seleccion.
      \return El indicador de criticidad de esta sentencia.
   */
-  bool isCritical() const throw() { return a_isCritical; }
+  bool isCritical() const { return a_isCritical; }
 
   /**
      Devuelve la instancia de la base de datos asociada a esta sentencia.
      \return La instancia de la base de datos asociada a la sentencia.
   */
-  Database& getDatabase() const throw() { return a_database; }
+  Database& getDatabase() const { return a_database; }
 
   /**
      Establece el parametro de entrada de la sentencia SQL.Cada una de las variables de entrada indicadas
@@ -125,7 +97,7 @@ public:
      \param data Variable que deseamos asociar como variable de entrada. La correspondencia entre esta
      y la sentencia SQL vendra dada por el orden de declaracion.
   */
-  void bindInput(const char* name, Data& data) throw();
+  void bindInput(const char* name, Data& data) ;
 
   /**
      Establece el parametro de salida de la sentencia SQL.Cada una de las variables de salida indicadas
@@ -152,13 +124,13 @@ public:
 
      \warning Solo las sentencias SQL del tipo \em select usan las variables de salida.
   */
-  const dbms::OutputBind* bindOutput(const char* name, Data& data) throw();
+  const dbms::OutputBind* bindOutput(const char* name, Data& data) ;
 
   /**
      Establece el valor del indicador que activa/desactiva la necesidad de invocar al
      \em commit y/o \em rollback despues de ejecutar esta sentencia.
   */
-  void setRequiresCommit(const bool requiresCommit) throw() { a_requiresCommit = requiresCommit; }
+  void setRequiresCommit(const bool requiresCommit) { a_requiresCommit = requiresCommit; }
 
   /**
      Devuelve \em true si la sentencia requiere la invocacion a \em commit o \em rollback
@@ -166,56 +138,56 @@ public:
      de salida (insert, update o delete) o bien porque se haya activado el indicador correspondiente
      mediante la llamada #setRequiresCommit
   */
-  bool requiresCommit() const throw() { return (a_requiresCommit == true) || (a_outputBinds.empty() == true); }
+  bool requiresCommit() const { return (a_requiresCommit == true) || (a_outputBinds.empty() == true); }
 
   /**
      Devuelve el iterador que apunta a la primera variable de entrada.
      \return el iterador que apunta a la primera variable de entrada.
   */
-  input_iterator input_begin() throw() { return a_inputBinds.begin(); }
+  input_iterator input_begin() { return a_inputBinds.begin(); }
 
   /**
      Devuelve el iterador que apunta a la primera variable de entrada.
      \return el iterador que apunta a la primera variable de entrada.
   */
-  input_iterator input_end() throw() { return a_inputBinds.end(); }
+  input_iterator input_end() { return a_inputBinds.end(); }
 
   /**
      Devuelve el numero de variables de entrada asociado a esta sentencia SQL.
      \return el numero de variables de entrada asociado a esta sentencia SQL.
   */
-  int input_size() const throw() { return a_inputBinds.size(); }
+  int input_size() const { return a_inputBinds.size(); }
 
   /**
      Devuelve el iterador que apunta a la primera variable de salida.
      \return el iterador que apunta a la primera variable de salida.
   */
-  output_iterator output_begin() throw() { return a_outputBinds.begin(); }
+  output_iterator output_begin() { return a_outputBinds.begin(); }
 
   /**
      Devuelve el iterador que apunta a la primera variable de salida.
      \return el iterador que apunta a la primera variable de salida.
   */
-  output_iterator output_end() throw() { return a_outputBinds.end(); }
+  output_iterator output_end() { return a_outputBinds.end(); }
 
   /**
      Devuelve el numero de variables de entrada asociado a esta sentencia SQL.
      \return el numero de variables de entrada asociado a esta sentencia SQL.
   */
-  int output_size() const throw() { return a_outputBinds.size(); }
+  int output_size() const { return a_outputBinds.size(); }
 
   /**
      Devuelve un documento XML con la informacion referente a esta instancia.
      \param parent Nodo XML del que debe colgar la informacion.
      @return un documento XML con la informacion referente a esta instancia.
   */
-  virtual xml::Node* asXML(xml::Node* parent) const throw();
+  virtual xml::Node* asXML(xml::Node* parent) const ;
 
   /**
      Devuelve una cadena con la informacion referente a esta instancia.
      @return Una cadena con la informacion referente a esta instancia.
   */
-  virtual std::string asString() const throw();
+  virtual std::string asString() const ;
 
   /**
      Transfiere la informacion de una fila de la sentencia SQL de seleccion a las
@@ -224,19 +196,19 @@ public:
      \return \em true si el registro ha sido transferido a las variables de salida o \em false si habiamos llegado
      al ultimo registro de la seleccion.
   */
-  virtual bool fetch() throw(RuntimeException, DatabaseException) = 0;
+  virtual bool fetch() noexcept(false) = 0;
 
   /**
      Devuelve la variable de entrada apuntada por el iterador recibido como parametro.
      \return la variable de entrada apuntada por el iterador recibido como parametro.
   */
-  static Data& input(input_iterator& ii) throw();
+  static Data& input(input_iterator& ii) ;
 
   /**
      Devuelve la variable de salida apuntada por el iterador recibido como parametro.
      \return la variable de salida apuntada por el iterador recibido como parametro.
   */
-  static Data& output(output_iterator& ii) throw();
+  static Data& output(output_iterator& ii) ;
 
 protected:
   /**
@@ -284,13 +256,13 @@ protected:
      Devuelve la referencia de entrada apuntada por el iterador recibido como parametro.
      \return la referencia de entrada apuntada por el iterador recibido como parametro.
   */
-  static InputBind* inputBind(input_iterator& ii) throw() { return *ii; }
+  static InputBind* inputBind(input_iterator& ii) { return *ii; }
 
   /**
      Devuelve la referencia de salida apuntada por el iterador recibido como parametro.
      \return la referencia de salida apuntada por el iterador recibido como parametro.
   */
-  static OutputBind* outputBind(output_iterator& ii) throw() { return *ii; }
+  static OutputBind* outputBind(output_iterator& ii) { return *ii; }
 
 private:
   Database& a_database;
@@ -304,10 +276,10 @@ private:
   bool a_requiresCommit;
 
   Statement(const Statement&);
-  void measureTiming(const Microsecond & init, const Microsecond & end) throw() { a_measureTiming += (end - init); }
+  void measureTiming(const Microsecond & init, const Microsecond & end) { a_measureTiming += (end - init); }
 
-  virtual void prepare(Connection* connection) throw(RuntimeException, DatabaseException) = 0;
-  virtual ResultCode execute(Connection* connection) throw(RuntimeException, DatabaseException) = 0;
+  virtual void prepare(Connection* connection) noexcept(false) = 0;
+  virtual ResultCode execute(Connection* connection) noexcept(false) = 0;
 
   friend class Connection;
   friend class Database;