From c5ea2cf0d741e7ced6bd32e4a013a21be3755394 Mon Sep 17 00:00:00 2001 From: Niklas Halle Date: Wed, 26 Aug 2020 17:19:19 +0200 Subject: more indirection always helps, right? --- src/Handler.cpp | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) (limited to 'src/Handler.cpp') diff --git a/src/Handler.cpp b/src/Handler.cpp index b5ed9f0..a26ee8a 100644 --- a/src/Handler.cpp +++ b/src/Handler.cpp @@ -15,18 +15,10 @@ std::vector Handler::tokenizeArguments(const std::string &arguments return tokens; } -Handler::CommandHandler::CommandHandler(Handler::CommandHandler &&o) noexcept { - // this is a copy constructor, disguised as a move constructor.. I am sorry - command = o.command; - func = o.func; - description = o.description; // this is the main problem, any "moved" object will point to the same description TODO: maybe smart pointer can help? - payload = o.payload; -} - Handler::json Handler::CommandHandler::exec(const std::string &arguments, const std::string &session) const { return func(arguments, session, payload); } -Handler::CommandHandler::CommandHandler(std::string command, Handler::handler_function func, - std::vector *description, void *payload) - : command{std::move(command)}, func{std::move(func)}, description{description}, payload{payload} {} +Handler::CommandHandler::CommandHandler(std::string command, Handler::handler_function func, description_function desc, + void *payload) + : command{std::move(command)}, func{std::move(func)}, get_description{std::move(desc)}, payload{payload} {} -- cgit v1.2.3-54-g00ecf