30 #include "modechange.h"
176 ModeHandler(
Module* me,
const std::string& name,
char modeletter, ParamSpec params, ModeType type, Class mclass = MC_OTHER);
182 void RegisterService() CXX11_OVERRIDE;
187 bool IsListMode()
const {
return list; }
238 bool NeedsParam(
bool adding)
const;
252 virtual std::string GetUserParameter(
const User* user)
const;
262 virtual ModResult AccessCheck(
User* source,
Channel* channel, std::string ¶meter,
bool adding);
276 virtual ModeAction OnModeChange(
User* source,
User* dest,
Channel* channel, std::string ¶meter,
bool adding);
283 virtual void DisplayList(
User* user,
Channel* channel);
291 virtual void OnParameterMissing(
User* user,
User* dest,
Channel* channel);
298 virtual void DisplayEmptyList(
User* user,
Channel* channel);
310 virtual bool ResolveModeConflict(std::string &their_param,
const std::string &our_param,
Channel* channel);
317 void RemoveMode(
User* user);
336 return adding ? ranktoset : ranktounset;
384 PrefixMode(
Module* Creator,
const std::string& Name,
char ModeLetter,
unsigned int Rank = 0,
char PrefixChar = 0);
418 void Update(
unsigned int rank,
unsigned int setrank,
unsigned int unsetrank,
bool selfrm);
459 :
ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_USER)
476 :
ModeHandler(Creator, Name, modeletter, PARAM_NONE, MODETYPE_CHANNEL)
496 const std::string mode;
538 virtual bool BeforeMode(
User* source,
User* dest,
Channel* channel, std::string& parameter,
bool adding);
548 virtual void AfterMode(
User* source,
User* dest,
Channel* channel,
const std::string& parameter,
bool adding);
560 static const ModeHandler::Id MODEID_MAX = 64;
563 static const size_t MODE_PARAM_MAX = 250;
567 typedef TR1NS::unordered_map<std::string, ModeHandler*, irc::insensitive, irc::StrHashComp>
ModeHandlerMap;
576 static const unsigned int MODETYPE_LAST = 2;
587 ModeHandler* modehandlersbyid[MODETYPE_LAST][MODEID_MAX];
599 std::vector<ListModeBase*>
list;
608 ModeWatcherMap modewatchermap;
623 ModeHandler::Id AllocateModeId(ModeType mt);
626 typedef std::vector<ListModeBase*> ListModeList;
627 typedef std::vector<PrefixMode*> PrefixModeList;
629 typedef unsigned int ModeProcessFlag;
663 static bool IsModeChar(
char chr);
678 static void CleanMask(std::string &mask);
739 unsigned int ProcessSingle(
User* user,
Channel* targetchannel,
User* targetuser,
Modes::ChangeList& changelist, ModeProcessFlag flags = MODE_NONE,
unsigned int beginindex = 0);
756 void ModeParamsToChangeList(
User* user, ModeType type,
const std::vector<std::string>& parameters,
Modes::ChangeList& changelist,
unsigned int beginindex = 1,
unsigned int endindex = UINT_MAX);
763 ModeHandler* FindMode(
const std::string& modename, ModeType mt);
770 ModeHandler* FindMode(
unsigned const char modeletter, ModeType mt);
776 PrefixMode* FindPrefixMode(
unsigned char modeletter);
783 PrefixMode* FindPrefix(
unsigned const char pfxletter);
791 std::string GiveModeList(ModeType mt);
796 std::string BuildPrefixes(
bool lettersAndModes =
true);
829 return (this->
type_id == MC_PREFIX ?
static_cast<const PrefixMode*
>(
this) : NULL);