]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/ctables.h
Use IsCTCP in blockcolor for ignoring CTCPs.
[user/henk/code/inspircd.git] / include / ctables.h
index 4e3d196e6516982b67d8bde8df36ec911ff545fb..1e30b22f89572f9f7f0e9d5a0f49b675cb4b85f0 100644 (file)
@@ -2,13 +2,13 @@
  * InspIRCd -- Internet Relay Chat Daemon
  *
  *   Copyright (C) 2012-2015, 2018 Attila Molnar <attilamolnar@hush.com>
- *   Copyright (C) 2012-2013, 2017-2018 Sadie Powell <sadie@witchery.services>
+ *   Copyright (C) 2012-2013, 2017-2018, 2020 Sadie Powell <sadie@witchery.services>
  *   Copyright (C) 2012 Robby <robby@chatbelgie.be>
  *   Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
  *   Copyright (C) 2008 Thomas Stagner <aquanight@inspircd.org>
  *   Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
  *   Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- *   Copyright (C) 2006-2010 Craig Edwards <brain@inspircd.org>
+ *   Copyright (C) 2003, 2006-2010 Craig Edwards <brain@inspircd.org>
  *
  * This file is part of InspIRCd.  InspIRCd is free software: you can
  * redistribute it and/or modify it under the terms of the GNU General Public
@@ -146,6 +146,7 @@ class CoreExport CommandBase : public ServiceProvider
 
                /** Retrieves the IRCv3 message tags. */
                const ClientProtocol::TagMap& GetTags() const { return tags; }
+               ClientProtocol::TagMap& GetTags() { return tags; }
        };
 
        /** Minimum number of parameters command takes
@@ -177,7 +178,7 @@ class CoreExport CommandBase : public ServiceProvider
         * @param cmd Command name. This must be UPPER CASE.
         * @param minpara Minimum parameters required for the command.
         * @param maxpara Maximum number of parameters this command may have - extra parameters
-        * will be tossed into one last space-seperated param.
+        * will be tossed into one last space-separated param.
         */
        CommandBase(Module* me, const std::string& cmd, unsigned int minpara = 0, unsigned int maxpara = 0);
 
@@ -195,13 +196,23 @@ class CoreExport CommandBase : public ServiceProvider
 
 class CoreExport Command : public CommandBase
 {
+ protected:
+       /** Initializes a new instance of the Command class.
+        * @param me The module which created this instance.
+        * @param cmd The name of the command.
+        * @param minpara The minimum number of parameters that the command accepts.
+        * @param maxpara The maximum number of parameters that the command accepts.
+        */
+       Command(Module* me, const std::string& cmd, unsigned int minpara = 0, unsigned int maxpara = 0);
+
  public:
+       /** Unregisters this command from the command parser. */
+       ~Command() CXX11_OVERRIDE;
+
        /** The user modes required to be able to execute this command. */
        unsigned char flags_needed;
 
-       /** If true, the command will not be forwarded by the linking module even if it comes via ENCAP.
-        * Can be used to forward commands before their effects.
-        */
+       /** Whether the command will not be forwarded by the linking module even if it comes via ENCAP. */
        bool force_manual_route;
 
        /** The number of seconds worth of penalty that executing this command gives. */
@@ -216,33 +227,67 @@ class CoreExport Command : public CommandBase
        /** Whether the command can be issued before registering. */
        bool works_before_reg;
 
-       Command(Module* me, const std::string& cmd, unsigned int minpara = 0, unsigned int maxpara = 0);
-
        /** Handle the command from a user.
-        * @param parameters The parameters for the command.
         * @param user The user who issued the command.
-        * @return Return CMD_SUCCESS on success, or CMD_FAILURE on failure.
+        * @param parameters The parameters for the command.
+        * @return Returns CMD_FAILURE on failure, CMD_SUCCESS on success, or CMD_INVALID
+        *         if the command was malformed.
         */
        virtual CmdResult Handle(User* user, const Params& parameters) = 0;
 
-       /** Register this object in the CommandParser
-        */
+       /** Registers this command with the command parser. */
        void RegisterService() CXX11_OVERRIDE;
 
-       /** Destructor
-        * Removes this command from the command parser
+       /** Tells the user they did not specify enough parameters.
+        * @param user The user who issued the command.
+        * @param parameters The parameters for the command.
+        */
+       virtual void TellNotEnoughParameters(LocalUser* user, const Params& parameters);
+
+       /** Tells the user they need to be registered to execute this command.
+        * @param user The user who issued the command.
+        * @param parameters The parameters for the command.
         */
-       ~Command();
+       virtual void TellNotRegistered(LocalUser* user, const Params& parameters);
 };
 
 class CoreExport SplitCommand : public Command
 {
+protected:
+       /** Initializes a new instance of the SplitCommand class.
+        * @param me The module which created this instance.
+        * @param cmd The name of the command.
+        * @param minpara The minimum number of parameters that the command accepts.
+        * @param maxpara The maximum number of parameters that the command accepts.
+        */
+       SplitCommand(Module* me, const std::string& cmd, unsigned int minpara = 0, unsigned int maxpara = 0);
+
  public:
-       SplitCommand(Module* me, const std::string &cmd, unsigned int minpara = 0, unsigned int maxpara = 0)
-               : Command(me, cmd, minpara, maxpara) {}
+       /** @copydoc Command::Handle */
        CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE;
+
+       /** Handle the command from a local user.
+        * @param user The user who issued the command.
+        * @param parameters The parameters for the command.
+        * @return Returns CMD_FAILURE on failure, CMD_SUCCESS on success, or CMD_INVALID
+        *         if the command was malformed.
+        */
        virtual CmdResult HandleLocal(LocalUser* user, const Params& parameters);
+
+       /** Handle the command from a remote user.
+        * @param user The user who issued the command.
+        * @param parameters The parameters for the command.
+        * @return Returns CMD_FAILURE on failure, CMD_SUCCESS on success, or CMD_INVALID
+        *         if the command was malformed.
+        */
        virtual CmdResult HandleRemote(RemoteUser* user, const Params& parameters);
+
+       /** Handle the command from a server user.
+        * @param user The user who issued the command.
+        * @param parameters The parameters for the command.
+        * @return Returns CMD_FAILURE on failure, CMD_SUCCESS on success, or CMD_INVALID
+        *         if the command was malformed.
+        */
        virtual CmdResult HandleServer(FakeUser* user, const Params& parameters);
 };