From 63ac73dc04516ac5c06594e05c0de8c3e45c37b5 Mon Sep 17 00:00:00 2001 From: JAJames Date: Sat, 25 Jun 2016 11:57:00 -0400 Subject: [PATCH] Copied GenericCommand from 'Jupiter Bot' with some modifcation Plugin: Added events related to GenericCommand --- Jupiter/GenericCommand.cpp | 74 ++++++++++++++++++ Jupiter/GenericCommand.h | 128 ++++++++++++++++++++++++++++++++ Jupiter/Jupiter.vcxproj | 6 +- Jupiter/Jupiter.vcxproj.filters | 18 ++--- Jupiter/Plugin.cpp | 10 ++- Jupiter/Plugin.h | 13 ++++ Release/Jupiter.lib | Bin 305130 -> 316452 bytes 7 files changed, 232 insertions(+), 17 deletions(-) create mode 100644 Jupiter/GenericCommand.cpp create mode 100644 Jupiter/GenericCommand.h diff --git a/Jupiter/GenericCommand.cpp b/Jupiter/GenericCommand.cpp new file mode 100644 index 0000000..12b3a4b --- /dev/null +++ b/Jupiter/GenericCommand.cpp @@ -0,0 +1,74 @@ +/** + * Copyright (C) 2015-2016 Jessica James. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Written by Jessica James + */ + +#include "GenericCommand.h" +#include "Plugin.h" + +Jupiter::ArrayList o_genericCommands; +Jupiter::ArrayList *Jupiter::g_generic_commands = &o_genericCommands; + +/** GenericCommand */ + +Jupiter::GenericCommand::GenericCommand() +{ + o_genericCommands.add(this); + + for (size_t index = 0; index != Jupiter::plugins->size(); ++index) + Jupiter::plugins->get(index)->OnGenericCommandAdd(*this); +} + +Jupiter::GenericCommand::~GenericCommand() +{ + size_t count = o_genericCommands.size(); + while (count != 0) + if (o_genericCommands.get(--count) == this) + { + o_genericCommands.remove(count); + break; + } + + for (size_t index = 0; index != Jupiter::plugins->size(); ++index) + Jupiter::plugins->get(index)->OnGenericCommandRemove(*this); +} + +/** GenericCommand::ResponseLine */ + +Jupiter::GenericCommand::ResponseLine::ResponseLine(const Jupiter::ReadableString &response_, GenericCommand::DisplayType type_) +{ + GenericCommand::ResponseLine::response = response_; + GenericCommand::ResponseLine::type = type_; +} + +Jupiter::GenericCommand::ResponseLine *Jupiter::GenericCommand::ResponseLine::set(const Jupiter::ReadableString &response_, GenericCommand::DisplayType type_) +{ + GenericCommand::ResponseLine::response = response_; + GenericCommand::ResponseLine::type = type_; + return this; +} + +Jupiter::GenericCommand *Jupiter::getGenericCommand(const Jupiter::ReadableString &trigger) +{ + size_t count = o_genericCommands.size(); + while (count != 0) + { + Jupiter::GenericCommand *cmd = o_genericCommands.get(--count); + if (cmd->matches(trigger)) + return cmd; + } + return nullptr; +} diff --git a/Jupiter/GenericCommand.h b/Jupiter/GenericCommand.h new file mode 100644 index 0000000..a162386 --- /dev/null +++ b/Jupiter/GenericCommand.h @@ -0,0 +1,128 @@ +/** + * Copyright (C) 2015-2016 Jessica James. + * + * Permission to use, copy, modify, and/or distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY + * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Written by Jessica James + */ + +#if !defined _GENERICCOMMAND_H_HEADER +#define _GENERICCOMMAND_H_HEADER + +/** +* @file GenericCommand.h +* @brief Provides an extendable command system. +*/ + +#include "Command.h" +#include "String.h" + +/** DLL Linkage Nagging */ +#if defined _MSC_VER +#pragma warning(push) +#pragma warning(disable: 4251) +#endif + +namespace Jupiter +{ + /** + * @brief Provides the base for generic commands. + */ + class JUPITER_API GenericCommand : public Jupiter::Command + { + public: + /** Enumerated class to guide output in generic command interpreters */ + enum class DisplayType + { + PublicSuccess, + PrivateSuccess, + PublicError, + PrivateError, + }; + + /** Data entry returned by trigger() */ + struct JUPITER_API ResponseLine + { + Jupiter::StringS response; + GenericCommand::DisplayType type; + ResponseLine *next = nullptr; + + /** + * @brief Sets the response and type of the ResponseLine. + * + * @param in_response Value to set response to. + * @param in_type Value to set type to. + * @return This. + */ + ResponseLine *set(const Jupiter::ReadableString &response, GenericCommand::DisplayType type); + ResponseLine() = default; + ResponseLine(const Jupiter::ReadableString &response, GenericCommand::DisplayType type); + }; + + /** + * @brief Called when the command is to be executed. + * + * @param input Parameters passed to the command by the user. + */ + virtual ResponseLine *trigger(const Jupiter::ReadableString &input) = 0; + + /** + * @brief Default constructor for the generic command class. + */ + GenericCommand(); + + /** + * @brief Destructor for the generic command class. + */ + virtual ~GenericCommand(); + }; + + /** + * @brief Fetches a generic command based on its trigger. + * + * @param trigger Trigger of the command to fetch. + * @return A generic command if it exists, nullptr otherwise. + */ + JUPITER_API extern GenericCommand *getGenericCommand(const Jupiter::ReadableString &trigger); + + /** Generic command list */ + JUPITER_API extern Jupiter::ArrayList *g_generic_commands; +} + +/** Generic Command Macros */ + +/** Defines the core of a generic command's declaration. This should be included in every generic command. */ +#define BASE_GENERIC_COMMAND(CLASS) \ + public: \ + CLASS(); \ + GenericCommand::ResponseLine *trigger(const Jupiter::ReadableString ¶meters); \ + const Jupiter::ReadableString &getHelp(const Jupiter::ReadableString ¶meters); \ + static CLASS instance; + +/** Expands to become the entire declaration for a generic command. In most cases, this will be sufficient. */ +#define GENERIC_GENERIC_COMMAND(CLASS) \ +class CLASS : public GenericCommand { \ + BASE_GENERIC_COMMAND(CLASS) \ +}; + +/** Instantiates a generic command. */ +#define GENERIC_COMMAND_INIT(CLASS) \ + CLASS CLASS :: instance = CLASS (); \ + CLASS & CLASS ## _instance = CLASS :: instance; + +/** Re-enable warnings */ +#if defined _MSC_VER +#pragma warning(pop) +#endif + +#endif // _GENERICCOMMAND_H_HEADER diff --git a/Jupiter/Jupiter.vcxproj b/Jupiter/Jupiter.vcxproj index 73ed312..879f469 100644 --- a/Jupiter/Jupiter.vcxproj +++ b/Jupiter/Jupiter.vcxproj @@ -182,13 +182,13 @@ + - @@ -198,9 +198,6 @@ - - - @@ -213,6 +210,7 @@ + diff --git a/Jupiter/Jupiter.vcxproj.filters b/Jupiter/Jupiter.vcxproj.filters index 5b23d21..fb9aad8 100644 --- a/Jupiter/Jupiter.vcxproj.filters +++ b/Jupiter/Jupiter.vcxproj.filters @@ -111,21 +111,9 @@ Source Files\IRC - - Source Files\Files - Source Files\Files - - Source Files\Files - - - Source Files\Files - - - Source Files\Files - Source Files @@ -138,6 +126,9 @@ Source Files\HTTP + + Source Files\Object Extensions + @@ -272,6 +263,9 @@ Header Files\HTTP + + Header Files\Object Extensions + diff --git a/Jupiter/Plugin.cpp b/Jupiter/Plugin.cpp index 126f64c..cdd6287 100644 --- a/Jupiter/Plugin.cpp +++ b/Jupiter/Plugin.cpp @@ -392,4 +392,12 @@ void Jupiter::Plugin::OnMode(Jupiter::IRC::Client *, const Jupiter::ReadableStri void Jupiter::Plugin::OnThink(Jupiter::IRC::Client *) { return; -} \ No newline at end of file +} + +void Jupiter::Plugin::OnGenericCommandAdd(Jupiter::GenericCommand &) +{ +} + +void Jupiter::Plugin::OnGenericCommandRemove(Jupiter::GenericCommand &) +{ +} diff --git a/Jupiter/Plugin.h b/Jupiter/Plugin.h index b16afd7..ed433aa 100644 --- a/Jupiter/Plugin.h +++ b/Jupiter/Plugin.h @@ -40,6 +40,7 @@ namespace Jupiter { /** Forward declaration */ namespace IRC { class Client; } + class GenericCommand; /** * @brief Provides the basis for plugin interfacing. @@ -105,6 +106,8 @@ namespace Jupiter */ virtual bool initialize(); + /** IRC Listeners */ + /** * @brief This is called when a connection has been successfully established. * The current implementation calls this after the MOTD. @@ -262,6 +265,16 @@ namespace Jupiter */ virtual void OnThink(Jupiter::IRC::Client *server); + /** + * @brief This is called when a GenericCommand is instantiated. + */ + virtual void OnGenericCommandAdd(Jupiter::GenericCommand &command); + + /** + * @brief This is called when a GenericCommand is deleted. + */ + virtual void OnGenericCommandRemove(Jupiter::GenericCommand &command); + /** * @brief Constructor for the Plugin class. */ diff --git a/Release/Jupiter.lib b/Release/Jupiter.lib index d91dc8e907bcb610bf8a16eeef462ebe3b5b9deb..04b9d587145a6573642b36c68cc56ddf1c77af73 100644 GIT binary patch delta 46305 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

68y2xrc#d;#TJ=Hy_ZSksMb8n5W@(h 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