From 6dd489f364534f1c3f8f7e209355a4a43c3fef1a Mon Sep 17 00:00:00 2001 From: Aleksandar Donchev Date: Thu, 10 Oct 2013 10:00:58 +0200 Subject: * Bug #120. In CAmSerializer fixed the asyncCall function with one ref argument. --- include/shared/CAmSerializer.h | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) 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 @@ -113,6 +113,31 @@ private: }; }; + /** + * delegate template for one argument + */ + template 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 */ @@ -953,7 +978,7 @@ public: template void asyncCall(TClass1* instance, void (TClass1::*function)(Targ&), Targ& argument) { - CAmDelegagePtr p(new CAmOneArgDelegate(instance, function, argument)); + CAmDelegagePtr p(new CAmOneArgDelegateRef(instance, function, argument)); send(p); } -- cgit v1.2.1