/**
- * @file main/cli/main.h
+ * @file main/CLI/main.h
* @brief The main eVaf CLI application class
*
* Copyright (c) 2011 Enar Vaikene
*/
#ifndef __CLI_MAIN_H
-#define __CLI_MAIN_H
+# define __CLI_MAIN_H
#include <QCoreApplication>
+namespace eVaf {
/**
- * The main eVaf CLI application.
+ * The main eVaf command line interface (CLI) application.
*
* eVafGUI is the main CLI executable. It provides an empty CLI application
* that is used to load other eVaf modules.
*/
-namespace eVafCLI {
+namespace CLI {
-} // namespace eVafCLI
+/**
+ * Internal implementation of the main eVaf CLI application.
+ */
+namespace Internal {
+} // namespace eVaf::CLI::Internal
+
+/**
+ * The main eVaf CLI application class
+ */
+class Application : public QCoreApplication
+{
+ Q_OBJECT
+
+public:
+
+ Application(int & argc, char ** argv);
+
+ virtual ~Application();
+
+
+public: // Static methods
+
+ /**
+ * Processes command-line arguments
+ * @param argc Number of command-line arguments
+ * @param argv List of command-line arguments
+ * @return True if ok; false if the application should terminate
+ *
+ * This function processes command-line arguments and should be called before running
+ * the application.
+ */
+ static bool processCommandLine(int argc, char ** argv);
+
+ /**
+ * Prints out help for command-line arguments.
+ */
+ static void printHelp();
+
+ /**
+ * Prints out help for Qt command-line arguments.
+ */
+ static void printQtHelp();
+
+ /**
+ * Prints out version information.
+ */
+ static void printVersion();
+
+};
+
+} // namespace eVaf::CLI
+} // namespace eVaf
#endif // main.h