From 900c88fe976fe62e103bb78ca720cec818ee98fb Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Sat, 24 May 2014 16:14:23 -0700 Subject: [PATCH] Simple command line option parser --- src/CmdLineOptParser.cc | 59 +++++++++++++++++++++++++++++++++++++++++++++++++ src/CmdLineOptParser.h | 46 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 src/CmdLineOptParser.cc create mode 100644 src/CmdLineOptParser.h diff --git a/src/CmdLineOptParser.cc b/src/CmdLineOptParser.cc new file mode 100644 index 0000000..5e237a7 --- /dev/null +++ b/src/CmdLineOptParser.cc @@ -0,0 +1,59 @@ +/*===================================================================== + + QGroundControl Open Source Ground Control Station + + (c) 2009 - 2014 QGROUNDCONTROL PROJECT + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// @file +/// @brief Command line option parser +/// +/// @author Don Gagne + +#include "CmdLineOptParser.h" + +#include + +/// @brief Implements a simple command line parser which sets booleans to true if the option is found. +void ParseCmdLineOptions(int& argc, ///< count of arguments in argv + char* argv[], ///< command line arguments + CmdLineOpt_t* prgOpts, ///< command line options + size_t cOpts, ///< count of command line options + bool removeParsedOptions) ///< true: remove parsed option from argc/argv +{ + // Start with all options off + for (size_t iOption=0; iOption + + This file is part of the QGROUNDCONTROL project + + QGROUNDCONTROL is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + QGROUNDCONTROL is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with QGROUNDCONTROL. If not, see . + + ======================================================================*/ + +/// @file +/// @brief Command line option parser +/// +/// @author Don Gagne + +#ifndef CMDLINEOPTPARSER_H +#define CMDLINEOPTPARSER_H + +#include + +/// @brief Structure used to pass command line options to the ParseCmdLineOptions function. +typedef struct { + const char* optionStr; ///< command line option, for example "--foo" + bool* flag; ///< if option is found this variable will be set to true +} CmdLineOpt_t; + +void ParseCmdLineOptions(int& argc, + char* argv[], + CmdLineOpt_t* prgOpts, + size_t cOpts, + bool removeParsedOptions); + +#endif