]> git.tdb.fi Git - libs/datafile.git/blobdiff - source/loaderaction.h
Cosmetic changes
[libs/datafile.git] / source / loaderaction.h
index 4666687e71534fd15d63499898ce9217250f4ee9..9e08dac59edea834323c158e4807dba3ff3e61f2 100644 (file)
@@ -24,9 +24,9 @@ Base class for loader actions.
 class LoaderAction
 {
 protected:
-       LoaderAction() { }
+       LoaderAction() = default;
 public:
-       virtual ~LoaderAction() { }
+       virtual ~LoaderAction() = default;
 
        /** Called to process a statement. */
        virtual void execute(Loader &, const Statement &) const = 0;
@@ -51,17 +51,17 @@ private:
 public:
        LoaderFunc0(FuncType f): func(f) { }
 
-       virtual void execute(Loader &l, const Statement &) const
+       void execute(Loader &l, const Statement &) const override
        {
                (dynamic_cast<L &>(l).*func)();
        };
 
-       virtual void execute(Loader &l, const ArgumentStore &) const
+       void execute(Loader &l, const ArgumentStore &) const override
        {
                (dynamic_cast<L &>(l).*func)();
        };
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return std::string(); }
 };
 
@@ -80,17 +80,17 @@ private:
 public:
        LoaderFunc1(FuncType f): func(f) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                (dynamic_cast<L &>(l).*func)(st.args[0].get<A0>());
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                (dynamic_cast<L &>(l).*func)(as.get<A0>(0));
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return std::string(1, TypeInfo<A0>::signature); }
 };
 
@@ -109,7 +109,7 @@ private:
 public:
        LoaderFunc1(FuncType f): func(f) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                std::vector<A0> values;
                values.reserve(st.args.size());
@@ -118,7 +118,7 @@ public:
                (dynamic_cast<L &>(l).*func)(values);
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                std::vector<A0> values;
                unsigned n_args = as.get_info().key.signature.size();
@@ -128,7 +128,7 @@ public:
                (dynamic_cast<L &>(l).*func)(values);
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        {
                std::string result;
                result += TypeInfo<A0>::signature;
@@ -152,17 +152,17 @@ private:
 public:
        LoaderFunc1(FuncType f): func(f) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                (dynamic_cast<L &>(l).*func)(st);
        }
 
-       virtual void execute(Loader &, const ArgumentStore &) const
+       void execute(Loader &, const ArgumentStore &) const override
        {
                throw std::logic_error("incompatible format");
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return "*"; }
 };
 
@@ -174,15 +174,15 @@ template<unsigned I>
 struct Apply<I>
 {
        template<typename L, typename F, typename... Args>
-       static void apply(L &l, F func, const Statement &, Args... args)
+       static void apply(L &l, F func, const Statement &, Args &&... args)
        {
-               (l.*func)(args...);
+               (l.*func)(std::forward<Args>(args)...);
        }
 
        template<typename L, typename F, typename... Args>
-       static void apply(L &l, F func, const ArgumentStore &, Args... args)
+       static void apply(L &l, F func, const ArgumentStore &, Args &&... args)
        {
-               (l.*func)(args...);
+               (l.*func)(std::forward<Args>(args)...);
        }
 };
 
@@ -190,15 +190,15 @@ template<unsigned I, typename Head, typename... Tail>
 struct Apply<I, Head, Tail...>
 {
        template<typename L, typename F, typename... Args>
-       static void apply(L &l, F func, const Statement &st, Args... args)
+       static void apply(L &l, F func, const Statement &st, Args &&... args)
        {
-               Apply<I+1, Tail...>::apply(l, func, st, args..., st.args[I].get<Head>());
+               Apply<I+1, Tail...>::apply(l, func, st, std::forward<Args>(args)..., std::move(st.args[I].get<Head>()));
        }
 
        template<typename L, typename F, typename... Args>
-       static void apply(L &l, F func, const ArgumentStore &as, Args... args)
+       static void apply(L &l, F func, const ArgumentStore &as, Args &&... args)
        {
-               Apply<I+1, Tail...>::apply(l, func, as, args..., as.get<Head>(I));
+               Apply<I+1, Tail...>::apply(l, func, as, std::forward<Args>(args)..., std::move(as.get<Head>(I)));
        }
 };
 
@@ -214,17 +214,17 @@ protected:
 public:
        LoaderFuncN(FuncType f): func(f) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, st);
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, as);
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return create_signature<Args...>(); }
 };
 
@@ -240,19 +240,20 @@ protected:
        Bound0Type bound0;
 
 public:
-       LoaderFuncNBound1(FuncType f, const Bound0Type &b0): func(f), bound0(b0) { }
+       LoaderFuncNBound1(FuncType f, const B0 &b0): func(f), bound0(b0) { }
+       LoaderFuncNBound1(FuncType f, B0 &&b0): func(f), bound0(std::move(b0)) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, st, bound0);
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                Apply<0, Args...>::apply(dynamic_cast<L &>(l), func, as, bound0);
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return create_signature<Args...>(); }
 };
 
@@ -268,17 +269,17 @@ private:
 public:
        LoadValue1(Pointer0Type p0): ptr0(p0) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr0 = st.args[0].get<T0>();
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr0 = as.get<T0>(0);
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return std::string(1, TypeInfo<T0>::signature); }
 };
 
@@ -294,19 +295,19 @@ private:
 public:
        LoadValue1(Pointer0Type p0): ptr0(p0) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                typename L::Loader &ldr = dynamic_cast<typename L::Loader &>(l);
                ldr.get_object().*ptr0 = &ldr.get_collection().template get<T0>(st.args[0].get<std::string>());
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                typename L::Loader &ldr = dynamic_cast<typename L::Loader &>(l);
                ldr.get_object().*ptr0 = &ldr.get_collection().template get<T0>(as.get<std::string>(0));
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        { return std::string(1, TypeInfo<std::string>::signature); }
 };
 
@@ -324,19 +325,19 @@ private:
 public:
        LoadValue2(Pointer0Type p0, Pointer1Type p1): ptr0(p0), ptr1(p1) { }
 
-       virtual void execute(Loader &l, const Statement &st) const
+       void execute(Loader &l, const Statement &st) const override
        {
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr0 = st.args[0].get<T0>();
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr1 = st.args[1].get<T1>();
        }
 
-       virtual void execute(Loader &l, const ArgumentStore &as) const
+       void execute(Loader &l, const ArgumentStore &as) const override
        {
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr0 = as.get<T0>(0);
                dynamic_cast<typename L::Loader &>(l).get_object().*ptr1 = as.get<T1>(1);
        }
 
-       virtual std::string get_signature() const
+       std::string get_signature() const override
        {
                std::string result;
                result += TypeInfo<T0>::signature;