From 2f9dda9b8e6842850ec6b986d23cb6a56e9af547 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Wed, 3 Sep 2014 14:23:30 +0200 Subject: m_spanningtree Add function to serialize parameters in a Modes::ChangeList::List into MODE/FMODE format --- src/modules/m_spanningtree/translate.cpp | 48 ++++++++++++++++++++++++++++++++ src/modules/m_spanningtree/translate.h | 30 ++++++++++++++++++++ 2 files changed, 78 insertions(+) create mode 100644 src/modules/m_spanningtree/translate.cpp create mode 100644 src/modules/m_spanningtree/translate.h (limited to 'src/modules/m_spanningtree') diff --git a/src/modules/m_spanningtree/translate.cpp b/src/modules/m_spanningtree/translate.cpp new file mode 100644 index 000000000..48c0632e5 --- /dev/null +++ b/src/modules/m_spanningtree/translate.cpp @@ -0,0 +1,48 @@ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2014 Attila Molnar + * + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#include "inspircd.h" +#include "translate.h" + +std::string Translate::ModeChangeListToParams(const Modes::ChangeList::List& modes) +{ + std::string ret; + for (Modes::ChangeList::List::const_iterator i = modes.begin(); i != modes.end(); ++i) + { + const Modes::Change& item = *i; + ModeHandler* mh = item.mh; + if (!mh->GetNumParams(item.adding)) + continue; + + ret.push_back(' '); + + if (mh->IsPrefixMode()) + { + User* target = ServerInstance->FindNick(item.param); + if (target) + { + ret.append(target->uuid); + continue; + } + } + + ret.append(item.param); + } + return ret; +} diff --git a/src/modules/m_spanningtree/translate.h b/src/modules/m_spanningtree/translate.h new file mode 100644 index 000000000..a2bc6df78 --- /dev/null +++ b/src/modules/m_spanningtree/translate.h @@ -0,0 +1,30 @@ +/* + * InspIRCd -- Internet Relay Chat Daemon + * + * Copyright (C) 2014 Attila Molnar + * + * This file is part of InspIRCd. InspIRCd is free software: you can + * redistribute it and/or modify it under the terms of the GNU General Public + * License as published by the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + + +#pragma once + +namespace Translate +{ + /** Generate a list of mode parameters suitable for FMODE/MODE from a Modes::ChangeList::List + * @param modes List of mode changes + * @return List of mode parameters built from the input. Does not include the modes themselves, + * only the parameters. + */ + std::string ModeChangeListToParams(const Modes::ChangeList::List& modes); +} -- cgit v1.2.3