X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmodules.h;h=5244930d003f181c0e338fea984b4e8408d0a59f;hb=63e300ed082b82530ad5ae0949f45686746b7c9b;hp=e836f19ddb828d08c5b7146aba57b5f91d94a73b;hpb=30bd7bb39fb55a4b6b3075a1f8a7df47bc0e261f;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/modules.h b/include/modules.h index e836f19dd..5244930d0 100644 --- a/include/modules.h +++ b/include/modules.h @@ -35,14 +35,23 @@ #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& params, User* user, Membership* memb, Numeric::Numeric& numeric); @@ -1006,10 +1012,6 @@ class CoreExport Module : public classbase, public usecountbase */ typedef std::vector 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 PRIO_STATE_LAST } prioritizationState; - /** Loads all core modules (cmd_*) + /** Loads all core modules (core_*) */ void LoadCoreModules(std::map& servicemap); @@ -1043,6 +1045,12 @@ class CoreExport ModuleManager : public fakederef */ 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 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)