X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fcore%2Futil%2FCommandLine.cpp;h=42dfd176b3e71b8ec7490eeb0fbfd64553ced883;hb=e14f6ba5183403d7bbf589ef87b0643b12a0f72c;hp=39f2cdb8f62fbda1a0a8e195c3683a7b0d777c31;hpb=c377f6f51a72b35d5d0b341c624e8bad55baeea4;p=anna.git diff --git a/source/core/util/CommandLine.cpp b/source/core/util/CommandLine.cpp index 39f2cdb..42dfd17 100644 --- a/source/core/util/CommandLine.cpp +++ b/source/core/util/CommandLine.cpp @@ -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 // #include @@ -52,7 +24,7 @@ using namespace anna; // (1) Verifica que la opcion no haya sido registrada previamente. //-------------------------------------------------------------------------------- void CommandLine::add(const char* argumentExpression, Argument::Type type, const char* comment, const bool needValue) -throw() { +{ Guard guard(a_mutex, "CommandLine::add"); std::string arg1 = "", arg2 = ""; @@ -90,7 +62,7 @@ throw() { } void CommandLine::initialize(const char** argv, const int argc, int positionalArguments) -throw(RuntimeException) { +noexcept(false) { if (argc < 1) throw RuntimeException("Provided argc < 1 as command-line argv size !", ANNA_FILE_LOCATION); if (positionalArguments < 0) throw RuntimeException("Provided negative number of positional arguments as command-line initializer", ANNA_FILE_LOCATION); if (positionalArguments > (argc-1)) throw RuntimeException("Provided positional arguments > (argc - 1) as command-line initializer", ANNA_FILE_LOCATION); @@ -105,7 +77,7 @@ throw(RuntimeException) { // linea de comandos. //-------------------------------------------------------------------------------- void CommandLine::verify() -throw(RuntimeException) { +noexcept(false) { if(a_argv == NULL) throw RuntimeException("CommandLine was not initialized", ANNA_FILE_LOCATION); @@ -131,7 +103,7 @@ throw(RuntimeException) { // Si el arguemento solicitado no esta en la LC y es opcional devolvera NULL. //-------------------------------------------------------------------------------- const char* CommandLine::getValue(const char* argumentExpression, const bool exitOnFault) -throw() { +{ const char* result = NULL; const Variable* argument = NULL; bool error = true; @@ -170,7 +142,7 @@ throw() { // Auxiliary function: // Returns first no-leading hyphen position -int removeLeadingHyphens(std::string &argv) throw() { +int removeLeadingHyphens(std::string &argv) { int startPos = -1; // Move until no hyphen: for (int i=0; i < argv.size(); i++) @@ -197,7 +169,7 @@ int removeLeadingHyphens(std::string &argv) throw() { // Analize command line to store the arguments //-------------------------------------------------------------------------------- bool CommandLine::analize() -throw() { +{ Variable* variable; bool result = true; int i = a_positionalArguments + 1; @@ -240,7 +212,7 @@ throw() { } const CommandLine::Variable* CommandLine::search(const char *argumentExpression) const -throw() { +{ if (!argumentExpression) return NULL; std::string name1, name2, arg; @@ -266,7 +238,7 @@ throw() { } string CommandLine::Variable::getHelpExpression() const -throw() { +{ std::string long_name, short_name, result = ""; int s1 = a_name1.size(); @@ -294,9 +266,9 @@ throw() { } void CommandLine::printUsage() const -throw() { +{ int i, maxi(a_arguments.size()); - cout << "Use: " << a_argv [0] << " "; + cout << "Usage: " << a_argv [0] << " "; for(i = 0; i < maxi; i ++) cout << a_arguments [i]->asString() << " "; @@ -310,7 +282,7 @@ throw() { } string CommandLine::Variable::asString() const -throw() { +{ string result; result = ((a_type == Argument::Optional) ? "[ " : ""); result += getHelpExpression(); @@ -321,7 +293,7 @@ throw() { } string CommandLine::asString() const -throw() { +{ string result = "Provided command-line parameters:\n\n"; vector ::const_iterator ii, maxii; const char *value; @@ -343,7 +315,7 @@ throw() { return result; } -xml::Node* CommandLine::asXML(xml::Node* parent) const throw() { +xml::Node* CommandLine::asXML(xml::Node* parent) const { xml::Node* result = parent->createChild("CommandLine"); vector ::const_iterator ii, maxii; const char *value;