summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-12-15 09:31:49 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2015-12-16 16:27:01 +0000
commit0015b5f55c5647dd02aa558d209a14e2d6bf2861 (patch)
treefd8082a62df18bd8e8e545900779addc201bcfec /src
parent1c8480d4fca881846de0afecaf76078a082f5284 (diff)
Make QNodeVisitor work with non-void functions
Change-Id: I280bfdeb383939903c65d7f3ffa8c97166b20030 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/nodes/qnodevisitor_p.h30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/core/nodes/qnodevisitor_p.h b/src/core/nodes/qnodevisitor_p.h
index dfe513774..1483992f2 100644
--- a/src/core/nodes/qnodevisitor_p.h
+++ b/src/core/nodes/qnodevisitor_p.h
@@ -179,10 +179,10 @@ private:
pop_back();
}
- template <typename NodeType>
+ template <typename ReturnType, typename NodeType>
class FunctionFunctor {
public:
- typedef void (*functionPtr)(NodeType);
+ typedef ReturnType (*functionPtr)(NodeType);
FunctionFunctor(functionPtr fPtr)
: m_functionPointer(fPtr)
@@ -197,10 +197,10 @@ private:
functionPtr m_functionPointer;
};
- template <typename C, typename NodeType>
+ template <typename C, typename ReturnType, typename NodeType>
class MemberFunctionFunctor {
public:
- typedef void (C::*functionPtr)(NodeType);
+ typedef ReturnType (C::*functionPtr)(NodeType);
MemberFunctionFunctor(C* instance, functionPtr fPtr)
: m_instance(instance)
@@ -217,10 +217,10 @@ private:
functionPtr m_functionPointer;
};
- template <typename C, typename NodeType>
+ template <typename C, typename ReturnType, typename NodeType>
class ConstMemberFunctionFunctor {
public:
- typedef void (C::*functionPtr)(NodeType) const;
+ typedef ReturnType (C::*functionPtr)(NodeType) const;
ConstMemberFunctionFunctor(C* instance, functionPtr fPtr)
: m_instance(instance)
@@ -243,22 +243,22 @@ private:
return t;
}
- template <typename NodeType>
- FunctionFunctor<NodeType> createFunctor(void (*fPtr)(NodeType))
+ template <typename ReturnType, typename NodeType>
+ FunctionFunctor<ReturnType, NodeType> createFunctor(ReturnType (*fPtr)(NodeType))
{
- return FunctionFunctor<NodeType>(fPtr);
+ return FunctionFunctor<ReturnType, NodeType>(fPtr);
}
- template <typename C, typename NodeType>
- MemberFunctionFunctor<C, NodeType> createFunctor(C *instance, void (C::*fPtr)(NodeType))
+ template <typename C, typename ReturnType, typename NodeType>
+ MemberFunctionFunctor<C, ReturnType, NodeType> createFunctor(C *instance, ReturnType (C::*fPtr)(NodeType))
{
- return MemberFunctionFunctor<C, NodeType>(instance, fPtr);
+ return MemberFunctionFunctor<C, ReturnType, NodeType>(instance, fPtr);
}
- template <typename C, typename NodeType>
- ConstMemberFunctionFunctor<C, NodeType> createFunctor(C *instance, void (C::*fPtr)(NodeType) const)
+ template <typename C, typename ReturnType, typename NodeType>
+ ConstMemberFunctionFunctor<C, ReturnType, NodeType> createFunctor(C *instance, ReturnType (C::*fPtr)(NodeType) const)
{
- return ConstMemberFunctionFunctor<C, NodeType>(instance, fPtr);
+ return ConstMemberFunctionFunctor<C, ReturnType, NodeType>(instance, fPtr);
}
};