[beast/devel: 6/26] BSE: fix Rapicorn generated code to properly use shared_from_this()



commit e6ea3f57449eb9e70dff8455cf2536c93888baee
Author: Tim Janik <timj gnu org>
Date:   Sat Oct 11 06:45:53 2014 +0200

    BSE: fix Rapicorn generated code to properly use shared_from_this()

 bse/Makefile.am                |    7 +++++--
 bse/patch-bseserverapi.cc.diff |   19 +++++++++++++++++++
 2 files changed, 24 insertions(+), 2 deletions(-)
---
diff --git a/bse/Makefile.am b/bse/Makefile.am
index 66fd888..195cdf1 100644
--- a/bse/Makefile.am
+++ b/bse/Makefile.am
@@ -303,12 +303,15 @@ bseclientapi.cc: $(srcdir)/../bse/bseapi.idl $(AUXTYPES_PY)
 GENERATED += bseclientapi.cc
 bseserverapi.hh: $(srcdir)/bseapi.idl $(AUXTYPES_PY)
        $(AM_V_GEN)
-       $(Q) ${AIDACC} -x CxxStub -x $(AUXTYPES_PY) -G serverhh -G cppguard=__BST_BSESERVERAPI_HH_ $< -o 
xgen-$(@F)
+       $(Q) ${AIDACC} -x CxxStub -x $(AUXTYPES_PY) -G serverhh -G cppguard=__BST_BSESERVERAPI_HH_ \
+               -G iface-base=BseImplicitBase $< -o xgen-$(@F)
        $(Q) mv xgen-$(@F) $@
 GENERATED += bseserverapi.hh
 bseserverapi.cc: $(srcdir)/bseapi.idl $(AUXTYPES_PY)
        $(AM_V_GEN)
-       $(Q) ${AIDACC} -x CxxStub -x $(AUXTYPES_PY) -G servercc -G cppguard=__BST_BSESERVERAPI_CC_ $< -o 
xgen-$(@F)
+       $(Q) ${AIDACC} -x CxxStub -x $(AUXTYPES_PY) -G servercc -G cppguard=__BST_BSESERVERAPI_CC_ \
+               -G iface-base=BseImplicitBase $< -o xgen-$(@F)
+       $(Q) patch < patch-bseserverapi.cc.diff
        $(Q) mv xgen-$(@F) $@
 GENERATED += bseserverapi.cc
 
diff --git a/bse/patch-bseserverapi.cc.diff b/bse/patch-bseserverapi.cc.diff
new file mode 100644
index 0000000..5c7c0f9
--- /dev/null
+++ b/bse/patch-bseserverapi.cc.diff
@@ -0,0 +1,19 @@
+--- xgen-bseserverapi.cc
++++ xgen-bseserverapi.cc
+@@ -43,14 +43,14 @@ interface_to_remote_handle ($AIDA_iface_base$ *ibase)
+   SMH target;
+   struct CastingServerConnection : ServerConnection { using ServerConnection::cast_interface_handle; };
+   CastingServerConnection *cs_con = (CastingServerConnection*) server_connection;
+-  cs_con->cast_interface_handle (target, Rapicorn::BaseObject::shared_ptr (ibase));
++  cs_con->cast_interface_handle (target, ibase ? ibase->shared_from_this() : ImplicitBaseP());
+   return target;
+ }
+ 
+ template<class Target> static inline void
+ field_buffer_add_interface (Rapicorn::Aida::FieldBuffer &fb, Target *instane)
+ {
+-  server_connection->add_interface (fb, Rapicorn::BaseObject::shared_ptr (instane));
++  server_connection->add_interface (fb, instane ? instane->shared_from_this() : ImplicitBaseP());
+ }
+ 
+ template<class Target> static inline Target*


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]