Blame src/DllPlugInTester/CommandLineParser.h

Packit 8c9aa0
#ifndef CPPUNIT_HELPER_COMMANDLINEPARSER_H
Packit 8c9aa0
#define CPPUNIT_HELPER_COMMANDLINEPARSER_H
Packit 8c9aa0
Packit 8c9aa0
#include <cppunit/Portability.h>
Packit 8c9aa0
#include <deque>
Packit 8c9aa0
#include <cppunit/plugin/PlugInParameters.h>
Packit 8c9aa0
#include <string>
Packit 8c9aa0
#include <stdexcept>
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
/*! Exception thrown on error while parsing command line.
Packit 8c9aa0
 */
Packit 8c9aa0
class CommandLineParserException : public std::runtime_error
Packit 8c9aa0
{
Packit 8c9aa0
public:
Packit 8c9aa0
  CommandLineParserException( std::string message )
Packit 8c9aa0
    : std::runtime_error( message )
Packit 8c9aa0
  {
Packit 8c9aa0
  }
Packit 8c9aa0
};
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
struct CommandLinePlugInInfo
Packit 8c9aa0
{
Packit 8c9aa0
  std::string m_fileName;
Packit 8c9aa0
  CPPUNIT_NS::PlugInParameters m_parameters;
Packit 8c9aa0
};
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
/*! \brief Parses a command line.
Packit 8c9aa0
Packit 8c9aa0
-c --compiler
Packit 8c9aa0
-x --xml [filename]
Packit 8c9aa0
-s --xsl stylesheet
Packit 8c9aa0
-e --encoding encoding
Packit 8c9aa0
-b --brief-progress
Packit 8c9aa0
-n --no-progress
Packit 8c9aa0
-t --text
Packit 8c9aa0
-o --cout
Packit 8c9aa0
-w --wait
Packit 8c9aa0
filename[="options"]
Packit 8c9aa0
:testpath
Packit 8c9aa0
Packit 8c9aa0
 */
Packit 8c9aa0
class CommandLineParser
Packit 8c9aa0
{
Packit 8c9aa0
public:
Packit 8c9aa0
  /*! Constructs a CommandLineParser object.
Packit 8c9aa0
   */
Packit 8c9aa0
  CommandLineParser( int argc, 
Packit 8c9aa0
                     const char *argv[] );
Packit 8c9aa0
Packit 8c9aa0
  /// Destructor.
Packit 8c9aa0
  virtual ~CommandLineParser();
Packit 8c9aa0
Packit 8c9aa0
  /*! Parses the command line.
Packit 8c9aa0
   * \exception CommandLineParserException if an error occurs.
Packit 8c9aa0
   */
Packit 8c9aa0
  void parse();
Packit 8c9aa0
Packit 8c9aa0
  bool useCompilerOutputter() const;
Packit 8c9aa0
  bool useXmlOutputter() const;
Packit 8c9aa0
  std::string getXmlFileName() const;
Packit 8c9aa0
  std::string getXmlStyleSheet() const;
Packit 8c9aa0
  std::string getEncoding() const;
Packit 8c9aa0
  bool useBriefTestProgress() const;
Packit 8c9aa0
  bool noTestProgress() const;
Packit 8c9aa0
  bool useTextOutputter() const;
Packit 8c9aa0
  bool useCoutStream() const;
Packit 8c9aa0
  bool waitBeforeExit() const;
Packit 8c9aa0
  std::string getTestPath() const;
Packit 8c9aa0
  int getPlugInCount() const;
Packit 8c9aa0
  CommandLinePlugInInfo getPlugInAt( int index ) const;
Packit 8c9aa0
Packit 8c9aa0
protected:
Packit 8c9aa0
  /// Prevents the use of the copy constructor.
Packit 8c9aa0
  CommandLineParser( const CommandLineParser &copy );
Packit 8c9aa0
Packit 8c9aa0
  /// Prevents the use of the copy operator.
Packit 8c9aa0
  void operator =( const CommandLineParser &copy );
Packit 8c9aa0
Packit 8c9aa0
  void readNonOptionCommands();
Packit 8c9aa0
Packit 8c9aa0
  bool hasNextArgument() const;
Packit 8c9aa0
Packit 8c9aa0
  std::string getNextArgument();
Packit 8c9aa0
Packit 8c9aa0
  std::string getCurrentArgument() const;
Packit 8c9aa0
Packit 8c9aa0
  bool argumentStartsWith( const std::string &expected ) const;
Packit 8c9aa0
Packit 8c9aa0
  void getNextOption();
Packit 8c9aa0
Packit 8c9aa0
  bool isOption( const std::string &shortName,
Packit 8c9aa0
                 const std::string &longName );
Packit 8c9aa0
Packit 8c9aa0
  std::string getNextParameter();
Packit 8c9aa0
Packit 8c9aa0
  std::string getNextOptionalParameter();
Packit 8c9aa0
Packit 8c9aa0
  void fail( std::string message );
Packit 8c9aa0
Packit 8c9aa0
protected:
Packit 8c9aa0
  bool m_useCompiler;
Packit 8c9aa0
  bool m_useXml;
Packit 8c9aa0
  std::string m_xmlFileName;
Packit 8c9aa0
  std::string m_xsl;
Packit 8c9aa0
  std::string m_encoding;
Packit 8c9aa0
  bool m_briefProgress;
Packit 8c9aa0
  bool m_noProgress;
Packit 8c9aa0
  bool m_useText;
Packit 8c9aa0
  bool m_useCout;
Packit 8c9aa0
  bool m_waitBeforeExit;
Packit 8c9aa0
  std::string m_testPath;
Packit 8c9aa0
Packit 8c9aa0
  typedef std::deque<CommandLinePlugInInfo> PlugIns;
Packit 8c9aa0
  PlugIns m_plugIns;
Packit 8c9aa0
Packit 8c9aa0
  typedef std::deque<std::string> Arguments;
Packit 8c9aa0
  Arguments m_arguments;
Packit 8c9aa0
  unsigned int m_currentArgument;
Packit 8c9aa0
Packit 8c9aa0
  std::string m_option;
Packit 8c9aa0
};
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
#endif  // CPPUNIT_HELPER_COMMANDLINEPARSER_H