*/
class CoreExport ModeHandler : public ServiceProvider
{
+ public:
+ enum Class
+ {
+ MC_OTHER
+ };
+
/**
* Removes this prefix mode from all users on the given channel
* @param channel The channel which the server wants to remove your mode from
*/
ModeType m_type;
+ /** The object type of this mode handler
+ */
+ const Class type_id;
+
/** The prefix char needed on channel to use this mode,
* only checked for channel modes
*/
* @param modeletter The mode letter you wish to handle
* @param params Parameters taken by the mode
* @param type Type of the mode (MODETYPE_USER or MODETYPE_CHANNEL)
+ * @param mclass The object type of this mode handler, one of ModeHandler::Class
*/
- ModeHandler(Module* me, const std::string& name, char modeletter, ParamSpec params, ModeType type);
+ ModeHandler(Module* me, const std::string& name, char modeletter, ParamSpec params, ModeType type, Class mclass = MC_OTHER);
virtual CullResult cull();
virtual ~ModeHandler();
/**
#include "inspircd.h"
#include "builtinmodes.h"
-ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modeletter, ParamSpec Params, ModeType type)
+ModeHandler::ModeHandler(Module* Creator, const std::string& Name, char modeletter, ParamSpec Params, ModeType type, Class mclass)
: ServiceProvider(Creator, Name, SERVICE_MODE), m_paramtype(TR_TEXT),
parameters_taken(Params), mode(modeletter), prefix(0), oper(false),
- list(false), m_type(type), levelrequired(HALFOP_VALUE), prefixrank(0)
+ list(false), m_type(type), type_id(mclass), levelrequired(HALFOP_VALUE), prefixrank(0)
{
}