summaryrefslogtreecommitdiff
path: root/modules/commands/ms_del.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-06-26 19:30:28 -0400
committerAdam <Adam@anope.org>2014-06-26 19:30:28 -0400
commitd492923610d9c9146b2a2b63de38deab2cfd4ca7 (patch)
tree5a3663883bd8247e10eeae4f334c4c6a36ccef96 /modules/commands/ms_del.cpp
parentee3289029d61da12013e0f5a3e4faf2d07543a0e (diff)
Change NumberList to take std::function's and use lambda closures
instead of having to create full classes in order to process number lists.
Diffstat (limited to 'modules/commands/ms_del.cpp')
-rw-r--r--modules/commands/ms_del.cpp38
1 files changed, 13 insertions, 25 deletions
diff --git a/modules/commands/ms_del.cpp b/modules/commands/ms_del.cpp
index 17722d340..bc612c6c1 100644
--- a/modules/commands/ms_del.cpp
+++ b/modules/commands/ms_del.cpp
@@ -12,29 +12,6 @@
#include "module.h"
#include "modules/memoserv.h"
-class MemoDelCallback : public NumberList
-{
- CommandSource &source;
- ChanServ::Channel *ci;
- MemoServ::MemoInfo *mi;
- public:
- MemoDelCallback(CommandSource &_source, ChanServ::Channel *_ci, MemoServ::MemoInfo *_mi, const Anope::string &list) : NumberList(list, true), source(_source), ci(_ci), mi(_mi)
- {
- }
-
- void HandleNumber(unsigned number) override
- {
- if (!number || number > mi->memos->size())
- return;
-
- if (MemoServ::Event::OnMemoDel)
- MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->name : source.nc->display, mi, mi->GetMemo(number - 1));
-
- mi->Del(number - 1);
- source.Reply(_("Memo \002{0}\002 has been deleted."), number);
- }
-};
-
class CommandMSDel : public Command
{
public:
@@ -96,8 +73,19 @@ class CommandMSDel : public Command
if (isdigit(numstr[0]))
{
- MemoDelCallback list(source, ci, mi, numstr);
- list.Process();
+ NumberList(numstr, true,
+ [&](unsigned int number)
+ {
+ if (!number || number > mi->memos->size())
+ return;
+
+ if (MemoServ::Event::OnMemoDel)
+ MemoServ::Event::OnMemoDel(&MemoServ::Event::MemoDel::OnMemoDel, ci ? ci->name : source.nc->display, mi, mi->GetMemo(number - 1));
+
+ mi->Del(number - 1);
+ source.Reply(_("Memo \002{0}\002 has been deleted."), number);
+ },
+ [](){});
}
else if (numstr.equals_ci("LAST"))
{