Author: astitcher
Date: Mon Sep 23 21:18:25 2013
New Revision: 1525706

URL: http://svn.apache.org/r1525706
Log:
QPID-2926: Better solution for instantiating qpid::messaging::Handle<> 
specialisations

Removed:
    qpid/trunk/qpid/cpp/src/qpid/messaging/HandleInstantiator.cpp
Modified:
    qpid/trunk/qpid/cpp/include/qpid/messaging/Handle.h
    qpid/trunk/qpid/cpp/src/CMakeLists.txt
    qpid/trunk/qpid/cpp/src/qpid/messaging/Connection.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp

Modified: qpid/trunk/qpid/cpp/include/qpid/messaging/Handle.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/include/qpid/messaging/Handle.h?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/include/qpid/messaging/Handle.h (original)
+++ qpid/trunk/qpid/cpp/include/qpid/messaging/Handle.h Mon Sep 23 21:18:25 2013
@@ -53,14 +53,15 @@ template <class T> class Handle {
 
     void swap(Handle<T>& h) { T* t = h.impl; h.impl = impl; impl = t; }
 
+  private:
+    // Not implemented, subclasses must implement.
+    Handle(const Handle&);
+    Handle& operator=(const Handle&);
+
   protected:
     typedef T Impl;
     QPID_MESSAGING_INLINE_EXTERN Handle() :impl() {}
 
-    // Not implemented,subclasses must implement.
-    QPID_MESSAGING_EXTERN Handle(const Handle&);
-    QPID_MESSAGING_EXTERN Handle& operator=(const Handle&);
-
     Impl* impl;
 
   friend class PrivateImplRef<T>;

Modified: qpid/trunk/qpid/cpp/src/CMakeLists.txt
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/CMakeLists.txt?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/CMakeLists.txt (original)
+++ qpid/trunk/qpid/cpp/src/CMakeLists.txt Mon Sep 23 21:18:25 2013
@@ -889,10 +889,6 @@ if (CMAKE_SYSTEM_NAME STREQUAL Windows)
     windows/SCM.cpp
   )
 
-  set (qpidmessaging_platform_SOURCES
-     qpid/messaging/HandleInstantiator.cpp
-  )
-
 else (CMAKE_SYSTEM_NAME STREQUAL Windows)
 
   # POSIX (Non-Windows) platforms have a lot of overlap in sources; the only
@@ -990,9 +986,6 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows
   set (qpidd_platform_SOURCES
     posix/QpiddBroker.cpp
   )
-
-  set (qpidmessaging_platform_SOURCES
-  )
 endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
 
 set (qpidcommon_SOURCES
@@ -1234,7 +1227,6 @@ set_source_files_properties(
      COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}")
 
 set (qpidmessaging_SOURCES
-     ${qpidmessaging_platform_SOURCES}
      ${qpidmessaging_SOURCES_hidden}
      qpid/messaging/Address.cpp
      qpid/messaging/AddressParser.cpp # The functions in here are not in the 
public interface, but qmf uses them

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Connection.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Connection.cpp?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Connection.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Connection.cpp Mon Sep 23 21:18:25 
2013
@@ -31,6 +31,9 @@
 namespace qpid {
 namespace messaging {
 
+// Explicitly instantiate Handle superclass
+template class Handle<ConnectionImpl>;
+
 using namespace qpid::types;
 
 typedef PrivateImplRef<qpid::messaging::Connection> PI;

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Receiver.cpp Mon Sep 23 21:18:25 2013
@@ -29,6 +29,9 @@
 namespace qpid {
 namespace messaging {
 
+// Explicitly instantiate Handle superclass
+template class Handle<ReceiverImpl>;
+
 typedef PrivateImplRef<qpid::messaging::Receiver> PI;
 
 Receiver::Receiver(ReceiverImpl* impl) { PI::ctor(*this, impl); }

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Sender.cpp Mon Sep 23 21:18:25 2013
@@ -27,6 +27,10 @@
 
 namespace qpid {
 namespace messaging {
+
+// Explicitly instantiate Handle superclass
+template class Handle<SenderImpl>;
+
 typedef PrivateImplRef<qpid::messaging::Sender> PI;
 
 Sender::Sender(SenderImpl* impl) { PI::ctor(*this, impl); }

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp?rev=1525706&r1=1525705&r2=1525706&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/Session.cpp Mon Sep 23 21:18:25 2013
@@ -30,6 +30,9 @@
 namespace qpid {
 namespace messaging {
 
+//  Explicitly instantiate Handle superclass
+template class Handle<SessionImpl>;
+
 typedef PrivateImplRef<qpid::messaging::Session> PI;
 
 Session::Session(SessionImpl* impl) { PI::ctor(*this, impl); }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to