]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Deduplicate error handling in the socket engines.
[user/henk/code/inspircd.git] / include / modules.h
index e836f19ddb828d08c5b7146aba57b5f91d94a73b..5244930d003f181c0e338fea984b4e8408d0a59f 100644 (file)
 #include "timer.h"
 #include "mode.h"
 
-/** Used to define a set of behavior bits for a module
- */
-enum ModuleFlags {
-       VF_NONE = 0,            // module is not special at all
-       VF_VENDOR = 2,          // module is a vendor module (came in the original tarball, not 3rd party)
-       VF_COMMON = 4,          // module needs to be common on all servers in a network to link
-       VF_OPTCOMMON = 8,       // module should be common on all servers for unsurprising behavior
-       VF_CORE = 16            // module is a core command, can be assumed loaded on all servers
+/** Used to specify the behaviour of a module. */
+enum ModuleFlags
+{
+       /** The module has no special attributes. */
+       VF_NONE = 0,
+
+       /** The module is a coremod and can be assumed to be loaded on all servers. */
+       VF_CORE = 1,
+
+       /* The module is included with InspIRCd. */
+       VF_VENDOR = 2,
+
+       /** The module MUST be loaded on all servers on a network to link. */
+       VF_COMMON = 4,
+
+       /** The module SHOULD be loaded on all servers on a network for consistency. */
+       VF_OPTCOMMON = 8
 };
 
 /** Used to represent an event type, for user, channel or server
@@ -201,8 +210,6 @@ class CoreExport Version
 
        /** Complex version information, including linking compatability data */
        Version(const std::string &desc, int flags, const std::string& linkdata);
-
-       virtual ~Version() {}
 };
 
 class CoreExport DataProvider : public ServiceProvider
@@ -278,7 +285,7 @@ class CoreExport Module : public classbase, public usecountbase
        /** Clean up prior to destruction
         * If you override, you must call this AFTER your module's cleanup
         */
-       virtual CullResult cull();
+       virtual CullResult cull() CXX11_OVERRIDE;
 
        /** Default destructor.
         * destroys a module class
@@ -651,16 +658,15 @@ class CoreExport Module : public classbase, public usecountbase
         */
        virtual void OnExpireLine(XLine *line);
 
-       /** Called before your module is unloaded to clean up Extensibles.
-        * This method is called once for every user and channel on the network,
-        * so that when your module unloads it may clear up any remaining data
-        * in the form of Extensibles added using Extensible::Extend().
-        * If the target_type variable is TYPE_USER, then void* item refers to
-        * a User*, otherwise it refers to a Channel*.
-        * @param target_type The type of item being cleaned
-        * @param item A pointer to the item's class
+       /** Called before the module is unloaded to clean up extensibles.
+        * This method is called once for every channel, membership, and user.
+        * so that you can clear up any data relating to the specified extensible.
+        * @param type The type of extensible being cleaned up. If this is EXT_CHANNEL
+        *             then item is a Channel*, EXT_MEMBERSHIP then item is a Membership*,
+        *             and EXT_USER then item is a User*.
+        * @param item A pointer to the extensible which is being cleaned up.
         */
-       virtual void OnCleanup(int target_type, void* item);
+       virtual void OnCleanup(ExtensionItem::ExtensibleType type, Extensible* item);
 
        /** Called after any nickchange, local or remote. This can be used to track users after nickchanges
         * have been applied. Please note that although you can see remote nickchanges through this function, you should
@@ -991,7 +997,7 @@ class CoreExport Module : public classbase, public usecountbase
         * @param user The user that this line of the query is about
         * @param memb The member shown in this line, NULL if no channel is in this line
         * @param numeric Numeric to send; modifiable.
-        * @param Return MOD_RES_PASSTHRU to allow the line to be displayed, MOD_RES_DENY to hide it
+        * @return MOD_RES_PASSTHRU to allow the line to be displayed, MOD_RES_DENY to hide it
         */
        virtual ModResult OnSendWhoLine(User* source, const std::vector<std::string>& params, User* user, Membership* memb, Numeric::Numeric& numeric);
 
@@ -1006,10 +1012,6 @@ class CoreExport Module : public classbase, public usecountbase
  */
 typedef std::vector<Module*> IntModuleList;
 
-/** An event handler iterator
- */
-typedef IntModuleList::iterator EventHandlerIter;
-
 /** ModuleManager takes care of all things module-related
  * in the core.
  */
@@ -1034,7 +1036,7 @@ class CoreExport ModuleManager : public fakederef<ModuleManager>
                PRIO_STATE_LAST
        } prioritizationState;
 
-       /** Loads all core modules (cmd_*)
+       /** Loads all core modules (core_*)
         */
        void LoadCoreModules(std::map<std::string, ServiceList>& servicemap);
 
@@ -1043,6 +1045,12 @@ class CoreExport ModuleManager : public fakederef<ModuleManager>
         */
        bool PrioritizeHooks();
 
+       /** Unregister all user modes or all channel modes owned by a module
+        * @param mod Module whose modes to unregister
+        * @param modetype MODETYPE_USER to unregister user modes, MODETYPE_CHANNEL to unregister channel modes
+        */
+       void UnregisterModes(Module* mod, ModeType modetype);
+
  public:
        typedef std::map<std::string, Module*> ModuleMap;
 
@@ -1277,7 +1285,7 @@ struct AllModuleList {
                } \
                return TRUE; \
        } \
-       extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION " " INSPIRCD_REVISION;
+       extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION;
 
 #else
 
@@ -1286,7 +1294,7 @@ struct AllModuleList {
        { \
                return new y; \
        } \
-       extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION " " INSPIRCD_REVISION;
+       extern "C" DllExport const char inspircd_src_version[] = INSPIRCD_VERSION;
 #endif
 
 #define COMMAND_INIT(c) MODULE_INIT(CommandModule<c>)