summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksandar Donchev <Aleksander.Donchev@partner.bmw.de>2013-10-10 10:00:58 +0200
committerChristian Linke <christian.linke@bmw.de>2013-10-22 13:27:10 +0200
commit6dd489f364534f1c3f8f7e209355a4a43c3fef1a (patch)
tree5a3cbe665fcdeb21c5752883926a28190be9d93d
parent9868e5f4ce0f3e0af021e48bdf8b6a22e6d1035d (diff)
downloadaudiomanager-6dd489f364534f1c3f8f7e209355a4a43c3fef1a.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);
}