From 323f60b25f0872ddee04f52aec374b741dbf9d17 Mon Sep 17 00:00:00 2001 From: Aaron Seigo Date: Sun, 7 Dec 2014 16:06:23 +0100 Subject: How Are We Doing (hawd) framework --- tests/hawd/module.h | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 tests/hawd/module.h (limited to 'tests/hawd/module.h') diff --git a/tests/hawd/module.h b/tests/hawd/module.h new file mode 100644 index 0000000..8f94707 --- /dev/null +++ b/tests/hawd/module.h @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2014 Aaron Seigo + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the + * Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#pragma once + +#include "state.h" + +#include +#include + +namespace HAWD +{ + +class Module +{ +public: + struct Syntax + { + Syntax(); + Syntax(const QString &keyword, std::function lambda = std::function(), bool eventDriven = false); + QString keyword; + std::function lambda; + QList children; + bool eventDriven; + }; + + static void addModule(const Module &module); + static QVector modules(); + static bool match(const QStringList &commands, State &state); + static void loadModules(); + static void printCommands(); + + Module(); + + Module::Syntax syntax() const; + void setSyntax(const Syntax &syntax); + + QString description() const; + void setDescription(const QString &description); + + bool matches(const QStringList &commands, State &state) const; + +private: + static void printSyntax(uint indent, const Syntax &syntax, const QString &description = QString()); + Syntax m_syntax; + QString m_description; + static QVector s_modules; +}; + +} // namespace HAWD -- cgit v1.2.3