Remove dynamic exceptions
[anna.git] / include / anna / core / util / CommandLine.hpp
index b41319a..664fee0 100644 (file)
@@ -1,37 +1,9 @@
-// ANNA - Anna is Not Nothingness Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// http://redmine.teslayout.com/projects/anna-suite
-//
-// 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 the copyright holder 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_core_util_CommandLine_hpp
@@ -61,7 +33,7 @@ class Node;
 class CommandLine : public Singleton <CommandLine> {
 
   /* returns first no-leading hyphen position; -1 is error */
-  static int removeLeadingHyphens(std::string &argv) throw();
+  static int removeLeadingHyphens(std::string &argv) ;
 
 public:
   /**
@@ -75,12 +47,12 @@ public:
      @return la lista de cadenas indicadas en la linea de comandos al ejecutar este programa.
      Mientras que no invoquemos al metodo #initialize devolvera NULL.
   */
-  const char** getArgv() const throw() { return a_argv; }
+  const char** getArgv() const { return a_argv; }
 
   /**
      @return El numero de parametros indicados en la linea de comandos al ejecutar este programa.
   */
-  int getArgc() const throw() { return a_argc; }
+  int getArgc() const { return a_argc; }
 
   //
   // Metodos
@@ -98,7 +70,7 @@ public:
      These positional arguments are mandatory, and the user could retrieve their values through #getPositional. By default no
      positional arguments are specified.
   */
-  void initialize(const char** argv, const int argc, int positionalArguments = 0) throw(RuntimeException);
+  void initialize(const char** argv, const int argc, int positionalArguments = 0) noexcept(false);
 
   /**
      Register an argument name in our application
@@ -110,7 +82,7 @@ public:
      @param comment Argument explanation.
      @param needValue If our argument has an additional associated value, this will be true. False in other case (flags).
    */
-  void add(const char* argumentExpression, Argument::Type type, const char* comment, const bool needValue = true) throw();
+  void add(const char* argumentExpression, Argument::Type type, const char* comment, const bool needValue = true) ;
 
   /**
      Gets a positional argument. There must be registered or NULL will be returned.
@@ -119,7 +91,7 @@ public:
 
      @return Value of mandatory positional argument with position provided
   */
-  const char *getPositional(int position) const throw() {
+  const char *getPositional(int position) const {
     const char *result = NULL;
     if ((position > 0) && (position <= a_positionalArguments)) result = a_argv[position];
     return result;
@@ -139,7 +111,7 @@ public:
 
      @return Valor asociadoal argumento recibido como parametro. Puede ser NULL.
   */
-  const char* getValue(const char* argumentExpression, const bool exitOnFault = true) throw();
+  const char* getValue(const char* argumentExpression, const bool exitOnFault = true) ;
 
   /**
      Obtiene el valor asociado al argumento recibido, pero convirtiendo a
@@ -149,7 +121,7 @@ public:
 
      @return Valor numerico del valor devuelto por #getValue.
   */
-  int getIntegerValue(const char* argumentExpression) throw() { return atoi(getValue(argumentExpression)); }
+  int getIntegerValue(const char* argumentExpression) { return atoi(getValue(argumentExpression)); }
 
   /**
      Comprueba si el argumento recibido como parametro estña presente en la linea de
@@ -159,7 +131,7 @@ public:
 
      @return true si el argumento esta en la linea de comandos y false en otro caso.
    */
-  bool exists(const char* argumentExpression) throw() { return (getValue(argumentExpression, false) != NULL) ? true : false; }
+  bool exists(const char* argumentExpression) { return (getValue(argumentExpression, false) != NULL) ? true : false; }
 
   /**
     Comprueba la linea de comandos del programa para verificar que coincide con los argumentos
@@ -174,21 +146,21 @@ public:
     Si hay algun fallo en la linea de comandos establecida al ejecutar el programa visualiza un
     resumen con los parametros soportados y la ejecucion del programa finaliza.
   */
-  void verify() throw(RuntimeException);
+  void verify() noexcept(false);
 
 
   /**
      Class string representation
      \return String with relevant information for this instance.
   */
-  std::string asString() const throw();
+  std::string asString() const ;
 
   /**
      Class xml representation
      \param parent Parent XML node on which hold this instance information.
      \return XML document with relevant information for this instance.
   */
-  xml::Node* asXML(xml::Node* parent) const throw();
+  xml::Node* asXML(xml::Node* parent) const ;
 
 
 private:
@@ -203,29 +175,29 @@ private:
     virtual ~Variable() { if(a_value) free(a_value); }
 
     // Accesores
-    const std::string& getName1() const throw() { return a_name1; }
-    const std::string& getName2() const throw() { return a_name2; }
-    std::string getHelpExpression() const throw();
-    const char* getValue() const throw() { return a_value; }
-    const char* getComment() const throw() { return a_comment; }
-    bool getNeedValue() const throw() { return a_needValue; }
-    bool getIsOn() const throw() { return a_isOn; }
-    Argument::Type getType() const throw() { return a_type; }
+    const std::string& getName1() const { return a_name1; }
+    const std::string& getName2() const { return a_name2; }
+    std::string getHelpExpression() const ;
+    const char* getValue() const { return a_value; }
+    const char* getComment() const { return a_comment; }
+    bool getNeedValue() const { return a_needValue; }
+    bool getIsOn() const { return a_isOn; }
+    Argument::Type getType() const { return a_type; }
 
     // Modificadores
-    void setValue(const char* value) throw() { a_value = (value == NULL) ? NULL : strdup(value); }
-    void setIsOn(const bool isOn) throw() { a_isOn = isOn; }
+    void setValue(const char* value) { a_value = (value == NULL) ? NULL : strdup(value); }
+    void setIsOn(const bool isOn) { a_isOn = isOn; }
 
     // Metodos
-    std::string asString() const throw();
+    std::string asString() const ;
 
   protected:
     std::string a_name1, a_name2;
-    const char* a_comment;
-    char* a_value;
     Argument::Type a_type;
+    const char* a_comment;
     bool a_needValue;
     bool a_isOn;
+    char* a_value;
   };
 
   const char **a_argv;
@@ -236,9 +208,9 @@ private:
 
   CommandLine() : a_argv(NULL), a_argc(0), a_positionalArguments(0)  {;}
 
-  bool analize() throw();
-  const Variable* search(const char *argumentExpression) const throw();
-  void printUsage() const throw();
+  bool analize() ;
+  const Variable* search(const char *argumentExpression) const ;
+  void printUsage() const ;
 
   friend class Singleton <CommandLine>;
 };