From c120a4e37f8d13f0e2540e2534bd7cc36e1f1950 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Mon, 12 Apr 2010 18:22:44 -0500 Subject: Make irc::string faster and less wasteful Change irc::string from an std::basic_string typedef to a wrapper around an std::string, to avoid unneeded copies in assign(). --- src/channels.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'src/channels.cpp') diff --git a/src/channels.cpp b/src/channels.cpp index a41c3857c..d8ed730e9 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -17,13 +17,15 @@ Channel::Channel(const std::string &cname, time_t ts) { - chan_hash::iterator findchan = ServerInstance->chanlist->find(cname); + name.assign(cname, 0, ServerInstance->Config->Limits.ChanMax); + age = ts ? ts : ServerInstance->Time(); + + chan_hash::iterator findchan = ServerInstance->chanlist->find(name); if (findchan != ServerInstance->chanlist->end()) - throw CoreException("Cannot create duplicate channel " + cname); + throw CoreException("Cannot create duplicate channel " + name); + - (*(ServerInstance->chanlist))[cname.c_str()] = this; - this->name.assign(cname, 0, ServerInstance->Config->Limits.ChanMax); - this->age = ts ? ts : ServerInstance->Time(); + ServerInstance->chanlist->insert(std::make_pair(name, this)); maxbans = topicset = 0; modebits.reset(); @@ -294,7 +296,7 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char else if (MOD_RESULT == MOD_RES_PASSTHRU) { std::string ckey = Ptr->GetModeParameter('k'); - bool invited = IS_LOCAL(user)->IsInvited(Ptr->name.c_str()); + bool invited = IS_LOCAL(user)->IsInvited(Ptr->name); bool can_bypass = ServerInstance->Config->InvBypassModes && invited; if (!ckey.empty()) @@ -341,7 +343,7 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char */ if (invited) { - IS_LOCAL(user)->RemoveInvite(Ptr->name.c_str()); + IS_LOCAL(user)->RemoveInvite(Ptr->name); } } } -- cgit v1.3.1-10-gc9f91