X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmode.cpp;h=6038f6f5b0a04771516ae3f90f922fd7c37d5fdd;hb=299f262a4fd1c0a508a5b6748761128a2c3efde9;hp=0d3de3890e2690ed44fea46eac7dff55ef668230;hpb=6890d6aef73ce11bf8f5f8bd8d36dba824743a96;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/mode.cpp b/src/mode.cpp index 0d3de3890..6038f6f5b 100644 --- a/src/mode.cpp +++ b/src/mode.cpp @@ -90,6 +90,12 @@ bool ModeHandler::ResolveModeConflict(std::string& theirs, const std::string& ou return (theirs < ours); } +void ModeHandler::RegisterService() +{ + ServerInstance->Modes.AddMode(this); + ServerInstance->Modules.AddReferent((GetModeType() == MODETYPE_CHANNEL ? "mode/" : "umode/") + name, this); +} + ModeAction SimpleUserModeHandler::OnModeChange(User* source, User* dest, Channel* channel, std::string ¶meter, bool adding) { /* We're either trying to add a mode we already have or @@ -218,7 +224,7 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, Mode std::string& parameter = mcitem.param; // crop mode parameter size to 250 characters if (parameter.length() > 250 && adding) - parameter = parameter.substr(0, 250); + parameter.erase(250); ModResult MOD_RESULT; FIRST_MOD_RESULT(OnRawMode, MOD_RESULT, (user, chan, mh, parameter, adding)); @@ -268,8 +274,8 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, Mode } // Ask mode watchers whether this mode change is OK - std::pair itpair = modewatchermap.equal_range(mh->name); - for (ModeWatchIter i = itpair.first; i != itpair.second; ++i) + std::pair itpair = modewatchermap.equal_range(mh->name); + for (ModeWatcherMap::iterator i = itpair.first; i != itpair.second; ++i) { ModeWatcher* mw = i->second; if (mw->GetModeType() == type) @@ -320,7 +326,7 @@ ModeAction ModeParser::TryMode(User* user, User* targetuser, Channel* chan, Mode return ma; itpair = modewatchermap.equal_range(mh->name); - for (ModeWatchIter i = itpair.first; i != itpair.second; ++i) + for (ModeWatcherMap::iterator i = itpair.first; i != itpair.second; ++i) { ModeWatcher* mw = i->second; if (mw->GetModeType() == type) @@ -496,8 +502,8 @@ void ModeParser::ShowListModeList(User* user, Channel* chan, ModeHandler* mh) bool display = true; // Ask mode watchers whether it's OK to show the list - std::pair itpair = modewatchermap.equal_range(mh->name); - for (ModeWatchIter i = itpair.first; i != itpair.second; ++i) + std::pair itpair = modewatchermap.equal_range(mh->name); + for (ModeWatcherMap::iterator i = itpair.first; i != itpair.second; ++i) { ModeWatcher* mw = i->second; if (mw->GetModeType() == MODETYPE_CHANNEL) @@ -790,7 +796,7 @@ std::string ModeParser::BuildPrefixes(bool lettersAndModes) { std::string mletters; std::string mprefixes; - std::map > prefixes; + insp::flat_map > prefixes; const PrefixModeList& list = GetPrefixModes(); for (PrefixModeList::const_iterator i = list.begin(); i != list.end(); ++i) @@ -800,7 +806,7 @@ std::string ModeParser::BuildPrefixes(bool lettersAndModes) prefixes[pm->GetPrefixRank()] = std::make_pair(pm->GetPrefix(), pm->GetModeChar()); } - for(std::map >::reverse_iterator n = prefixes.rbegin(); n != prefixes.rend(); n++) + for (insp::flat_map >::reverse_iterator n = prefixes.rbegin(); n != prefixes.rend(); ++n) { mletters = mletters + n->second.first; mprefixes = mprefixes + n->second.second; @@ -816,8 +822,8 @@ void ModeParser::AddModeWatcher(ModeWatcher* mw) bool ModeParser::DelModeWatcher(ModeWatcher* mw) { - std::pair itpair = modewatchermap.equal_range(mw->GetModeName()); - for (ModeWatchIter i = itpair.first; i != itpair.second; ++i) + std::pair itpair = modewatchermap.equal_range(mw->GetModeName()); + for (ModeWatcherMap::iterator i = itpair.first; i != itpair.second; ++i) { if (i->second == mw) {