From d3747f2943c403863bc31c8d3e9802ccc763f4d3 Mon Sep 17 00:00:00 2001 From: danieldg Date: Sun, 15 Nov 2009 18:26:35 +0000 Subject: Add ModeHandler* versions of channel mode access git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12133 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/channels.h | 20 ++++++-------------- include/mode.h | 6 +----- 2 files changed, 7 insertions(+), 19 deletions(-) (limited to 'include') diff --git a/include/channels.h b/include/channels.h index 3ad26ceda..59f4d1cf3 100644 --- a/include/channels.h +++ b/include/channels.h @@ -15,19 +15,7 @@ #define __CHANNELS_H__ #include "membership.h" - -/** RFC1459 channel modes - */ -enum ChannelModes { - CM_TOPICLOCK = 't'-65, /* +t: Only operators can change topic */ - CM_NOEXTERNAL = 'n'-65, /* +n: Only users in the channel can message it */ - CM_INVITEONLY = 'i'-65, /* +i: Invite only */ - CM_MODERATED = 'm'-65, /* +m: Only voices and above can talk */ - CM_SECRET = 's'-65, /* +s: Secret channel */ - CM_PRIVATE = 'p'-65, /* +p: Private channel */ - CM_KEY = 'k'-65, /* +k: Keyed channel */ - CM_LIMIT = 'l'-65 /* +l: Maximum user limit */ -}; +#include "mode.h" /** Holds an entry for a ban list, exemption list, or invite list. * This class contains a single element in a channel list, such as a banlist. @@ -127,6 +115,7 @@ class CoreExport Channel : public Extensible * @param mode The mode character to set or unset * @param mode_on True if you want to set the mode or false if you want to remove it */ + void SetMode(ModeHandler* mode, bool value); void SetMode(char mode,bool mode_on); /** Sets or unsets a custom mode in the channels info @@ -134,13 +123,15 @@ class CoreExport Channel : public Extensible * @param parameter The parameter string to associate with this mode character. * If it is empty, the mode is unset; if it is nonempty, the mode is set. */ - void SetModeParam(char mode, std::string parameter); + void SetModeParam(ModeHandler* mode, const std::string& parameter); + void SetModeParam(char mode, const std::string& parameter); /** Returns true if a mode is set on a channel * @param mode The mode character you wish to query * @return True if the custom mode is set, false if otherwise */ inline bool IsModeSet(char mode) { return modes[mode-'A']; } + inline bool IsModeSet(ModeHandler* mode) { return modes[mode->GetModeChar()-'A']; } /** Returns the parameter for a custom mode on a channel. @@ -154,6 +145,7 @@ class CoreExport Channel : public Extensible * @return The parameter for this mode is returned, or an empty string */ std::string GetModeParameter(char mode); + std::string GetModeParameter(ModeHandler* mode); /** Sets the channel topic. * @param u The user setting the topic diff --git a/include/mode.h b/include/mode.h index f4e5e8a60..f1768f559 100644 --- a/include/mode.h +++ b/include/mode.h @@ -14,11 +14,7 @@ #ifndef __MODE_H #define __MODE_H -/* Forward declarations. */ -class User; - #include "ctables.h" -#include "channels.h" /** * Holds the values for different type of modes @@ -214,7 +210,7 @@ class CoreExport ModeHandler : public classbase * Returns the mode character this handler handles. * @return The mode character */ - char GetModeChar(); + inline char GetModeChar() { return mode; } /** For user modes, return the current parameter, if any */ -- cgit v1.2.3