summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Donchev <Aleksander.Donchev@partner.bmw.de>2013-10-10 10:00:58 +0200
committerAleksandar Donchev <Aleksander.Donchev@partner.bmw.de>2013-10-10 10:06:29 +0200
commitc928dd5b811cbc6475bb52eb0b9eb74f610a741c (patch)
tree3341ad446a7549cfba8e70c4b5260063e3afb7c5
parent9b5173281e607bbebca8e6445dbffc38e7506c2f (diff)
downloadaudiomanager-c928dd5b811cbc6475bb52eb0b9eb74f610a741c.tar.gz
* Bug #120. In CAmSerializer fixed the asyncCall function with one ref argument.
-rw-r--r--include/shared/CAmSerializer.h27
1 files changed, 26 insertions, 1 deletions
diff --git a/include/shared/CAmSerializer.h b/include/shared/CAmSerializer.h
index d840f34..1cfbcc8 100644
--- a/include/shared/CAmSerializer.h
+++ b/include/shared/CAmSerializer.h
@@ -114,6 +114,31 @@ private:
};
/**
+ * delegate template for one argument
+ */
+ template<class TClass, typename Targ> class CAmOneArgDelegateRef: public CAmDelegate
+ {
+ private:
+ TClass* mInstance;
+ void (TClass::*mFunction)(Targ&);
+ Targ mArgument;
+
+ public:
+ CAmOneArgDelegateRef(TClass* instance, void (TClass::*function)(Targ&), Targ& argument) :
+ mInstance(instance), //
+ mFunction(function), //
+ mArgument(argument)
+ {};
+
+ bool call(int* pipe)
+ {
+ (void) pipe;
+ (*mInstance.*mFunction)(mArgument);
+ return (true);
+ };
+ };
+
+ /**
* delegate template for two arguments
*/
template<class TClass, typename Targ, typename Targ1> class CAmTwoArgDelegate: public CAmDelegate
@@ -953,7 +978,7 @@ public:
template<class TClass1, class Targ>
void asyncCall(TClass1* instance, void (TClass1::*function)(Targ&), Targ& argument)
{
- CAmDelegagePtr p(new CAmOneArgDelegate<TClass1, Targ&>(instance, function, argument));
+ CAmDelegagePtr p(new CAmOneArgDelegateRef<TClass1, Targ>(instance, function, argument));
send(p);
}