From 9e8b833d1155b8fc4bba71535e6a07ce1d605f15 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 18 Oct 2014 16:18:56 -0600 Subject: [PATCH] Code cleanups --- .../chaiscript/dispatchkit/bad_boxed_cast.hpp | 9 +++--- include/chaiscript/dispatchkit/bind_first.hpp | 31 +++++++++++-------- samples/inheritance.cpp | 6 ++-- 3 files changed, 26 insertions(+), 20 deletions(-) diff --git a/include/chaiscript/dispatchkit/bad_boxed_cast.hpp b/include/chaiscript/dispatchkit/bad_boxed_cast.hpp index b22bde6..648eb41 100644 --- a/include/chaiscript/dispatchkit/bad_boxed_cast.hpp +++ b/include/chaiscript/dispatchkit/bad_boxed_cast.hpp @@ -10,6 +10,7 @@ #include #include +#include "../chaiscript_defines.hpp" #include "type_info.hpp" namespace chaiscript { @@ -28,14 +29,14 @@ namespace chaiscript class bad_boxed_cast : public std::bad_cast { public: - bad_boxed_cast(const Type_Info &t_from, const std::type_info &t_to, + bad_boxed_cast(Type_Info t_from, const std::type_info &t_to, std::string t_what) CHAISCRIPT_NOEXCEPT - : from(t_from), to(&t_to), m_what(std::move(t_what)) + : from(std::move(t_from)), to(&t_to), m_what(std::move(t_what)) { } - bad_boxed_cast(const Type_Info &t_from, const std::type_info &t_to) CHAISCRIPT_NOEXCEPT - : from(t_from), to(&t_to), m_what("Cannot perform boxed_cast") + bad_boxed_cast(Type_Info t_from, const std::type_info &t_to) + : from(std::move(t_from)), to(&t_to), m_what("Cannot perform boxed_cast") { } diff --git a/include/chaiscript/dispatchkit/bind_first.hpp b/include/chaiscript/dispatchkit/bind_first.hpp index 1f913c4..6a3adda 100644 --- a/include/chaiscript/dispatchkit/bind_first.hpp +++ b/include/chaiscript/dispatchkit/bind_first.hpp @@ -18,16 +18,16 @@ namespace chaiscript { static std::tuple placeholder() { return std::tuple(std::placeholders::_1,std::placeholders::_2,std::placeholders::_3,std::placeholders::_4,std::placeholders::_5,std::placeholders::_6,std::placeholders::_7,std::placeholders::_8,std::placeholders::_9,std::placeholders::_10); - }; + } }; template struct Bind_First { template - static std::function bind(F f, InnerParams ... innerparams) + static std::function bind(F&& f, InnerParams ... innerparams) { - return Bind_First::bind(f, innerparams..., std::get(Placeholder::placeholder())); + return Bind_First::bind(std::forward(f), innerparams..., std::get(Placeholder::placeholder())); } }; @@ -35,37 +35,42 @@ namespace chaiscript struct Bind_First<0, maxcount, Sig> { template - static std::function bind(F f, InnerParams ... innerparams) + static std::function bind(F&& f, InnerParams ... innerparams) { - return std::bind(f, innerparams...); + return std::bind(std::forward(f), innerparams...); } }; template - std::function bind_first(Ret (*f)(P1, Param...), O o) + std::function bind_first(Ret (*f)(P1, Param...), O&& o) { - return Bind_First::bind(f, o); + return Bind_First::bind(f, std::forward(o)); } template - std::function bind_first(Ret (Class::*f)(Param...), O o) + std::function bind_first(Ret (Class::*f)(Param...), O&& o) { - return Bind_First::bind(f, o); + return Bind_First::bind(f, std::forward(o)); } template - std::function bind_first(Ret (Class::*f)(Param...) const, O o) + std::function bind_first(Ret (Class::*f)(Param...) const, O&& o) { - return Bind_First::bind(f, o); + return Bind_First::bind(f, std::forward(o)); } template - std::function bind_first(const std::function &f, O o) + std::function bind_first(const std::function &f, O&& o) { - return Bind_First::bind(f, o); + return Bind_First::bind(f, std::forward(o)); } + template + std::function bind_first(std::function &&f, O&& o) + { + return Bind_First::bind(std::move(f), std::forward(o)); + } } } diff --git a/samples/inheritance.cpp b/samples/inheritance.cpp index 1e2e02b..5bd8c86 100644 --- a/samples/inheritance.cpp +++ b/samples/inheritance.cpp @@ -8,7 +8,7 @@ class BaseClass { } - virtual ~BaseClass() = default; + virtual ~BaseClass() {} virtual std::string doSomething(float, double) const = 0; @@ -42,14 +42,14 @@ class ChaiScriptDerived : public BaseClass tie(t_funcs.at(1), m_validateValueImpl); } - std::string doSomething(float f, double d) const override + std::string doSomething(float f, double d) const CHAISCRIPT_OVERRIDE { assert(m_doSomethingImpl); return m_doSomethingImpl(*this, f, d); } protected: - bool validateValue(const std::string &t_val) override + bool validateValue(const std::string &t_val) CHAISCRIPT_OVERRIDE { assert(m_validateValueImpl); return m_validateValueImpl(*this, t_val);