diff options
| author | Adam <Adam@anope.org> | 2014-06-26 19:30:28 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2014-06-26 19:30:28 -0400 |
| commit | d492923610d9c9146b2a2b63de38deab2cfd4ca7 (patch) | |
| tree | 5a3663883bd8247e10eeae4f334c4c6a36ccef96 /modules/commands/ms_del.cpp | |
| parent | ee3289029d61da12013e0f5a3e4faf2d07543a0e (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.cpp | 38 |
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")) { |
