X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fcommandbuilder.h;h=4bbb60e47ee52e418930975271ad579c088328a2;hb=b4599531f97a9e6207b6bb8d728d7523b6995523;hp=597b22751509caaca4a78a957cb6cfd88aa60b56;hpb=29694ce3d2c57ebefa9b14b6816679bf44799921;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/commandbuilder.h b/src/modules/m_spanningtree/commandbuilder.h index 597b22751..4bbb60e47 100644 --- a/src/modules/m_spanningtree/commandbuilder.h +++ b/src/modules/m_spanningtree/commandbuilder.h @@ -25,6 +25,7 @@ class TreeServer; class CmdBuilder { + protected: std::string content; public: @@ -67,6 +68,20 @@ class CmdBuilder return *this; } + template + CmdBuilder& push_raw_int(T i) + { + content.append(ConvToStr(i)); + return *this; + } + + template + CmdBuilder& push_raw(InputIterator first, InputIterator last) + { + content.append(first, last); + return *this; + } + CmdBuilder& push(const std::string& s) { content.push_back(' '); @@ -104,6 +119,30 @@ class CmdBuilder return *this; } + CmdBuilder& push_tags(const ClientProtocol::TagMap& tags) + { + if (!tags.empty()) + { + char separator = '@'; + std::string taglist; + for (ClientProtocol::TagMap::const_iterator iter = tags.begin(); iter != tags.end(); ++iter) + { + taglist.push_back(separator); + separator = ';'; + + taglist.append(iter->first); + if (!iter->second.value.empty()) + { + taglist.push_back('='); + taglist.append(iter->second.value); + } + } + taglist.push_back(' '); + content.insert(0, taglist); + } + return *this; + } + template CmdBuilder& insert(const T& cont) { @@ -127,13 +166,8 @@ class CmdBuilder Utils->DoOneToAllButSender(*this, omit); } - bool Unicast(const std::string& target) const - { - return Utils->DoOneToOne(*this, target); - } - - bool Unicast(User* target) const + void Unicast(User* target) const { - return Unicast(target->server); + Utils->DoOneToOne(*this, target->server); } };