]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - include/modules.h
Convert IsChannel to std::function.
[user/henk/code/inspircd.git] / include / modules.h
index 2481f8207de135317fb56e5cee2a2006478fffea..ce2402964c4516a1f065f7b0d8a0255f53965017 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
@@ -234,6 +243,7 @@ enum Implementation
        I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass,
        I_OnText, I_OnPassCompare, I_OnNamesListItem, I_OnNumeric,
        I_OnPreRehash, I_OnModuleRehash, I_OnSendWhoLine, I_OnChangeIdent, I_OnSetUserIP,
+       I_OnServiceAdd, I_OnServiceDel,
        I_END
 };
 
@@ -276,7 +286,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() CXX11_OVERRIDE;
+       CullResult cull() CXX11_OVERRIDE;
 
        /** Default destructor.
         * destroys a module class
@@ -997,6 +1007,16 @@ class CoreExport Module : public classbase, public usecountbase
         * @param user The user whose IP is being set
         */
        virtual void OnSetUserIP(LocalUser* user);
+
+       /** Called whenever a ServiceProvider is registered.
+        * @param service ServiceProvider being registered.
+        */
+       virtual void OnServiceAdd(ServiceProvider& service);
+
+       /** Called whenever a ServiceProvider is unregistered.
+        * @param service ServiceProvider being unregistered.
+        */
+       virtual void OnServiceDel(ServiceProvider& service);
 };
 
 /** A list of modules