You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/01/03 22:02:43 UTC

[11/30] qpid-proton git commit: PROTON-1371: [C++ binding] Large header file cleanup - Introduce header to forward declare types - Remove a lot of unnecessary includes in C++ header files

PROTON-1371: [C++ binding] Large header file cleanup
- Introduce <proton/fwd.hpp> header to forward declare types
- Remove a lot of unnecessary includes in C++ header files


Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/5147ed30
Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/5147ed30
Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/5147ed30

Branch: refs/heads/go1
Commit: 5147ed30303a4ef8510a78b0e214fd954811193c
Parents: 0a2d28e
Author: Andrew Stitcher <as...@apache.org>
Authored: Mon Dec 5 12:59:21 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Wed Dec 7 03:54:13 2016 -0500

----------------------------------------------------------------------
 examples/cpp/broker.cpp                         |  4 ++
 examples/cpp/client.cpp                         |  8 ++-
 examples/cpp/connection_options.cpp             |  2 +
 examples/cpp/direct_recv.cpp                    |  4 ++
 examples/cpp/direct_send.cpp                    |  5 ++
 examples/cpp/flow_control.cpp                   |  8 ++-
 examples/cpp/helloworld.cpp                     |  4 ++
 examples/cpp/helloworld_direct.cpp              |  4 ++
 examples/cpp/mt/broker.cpp                      |  8 +++
 examples/cpp/queue_browser.cpp                  |  3 +
 examples/cpp/scheduled_send.cpp                 |  5 ++
 examples/cpp/scheduled_send_03.cpp              |  8 +++
 examples/cpp/selected_recv.cpp                  |  3 +
 examples/cpp/server.cpp                         |  4 ++
 examples/cpp/server_direct.cpp                  |  5 ++
 examples/cpp/service_bus.cpp                    | 10 ++-
 examples/cpp/simple_recv.cpp                    |  6 +-
 examples/cpp/simple_send.cpp                    |  7 +-
 examples/cpp/ssl.cpp                            |  5 ++
 examples/cpp/ssl_client_cert.cpp                |  4 ++
 .../cpp/include/proton/annotation_key.hpp       |  2 +
 proton-c/bindings/cpp/include/proton/binary.hpp |  2 +
 .../bindings/cpp/include/proton/byte_array.hpp  |  2 +
 .../cpp/include/proton/codec/decoder.hpp        |  2 +
 .../cpp/include/proton/codec/encoder.hpp        |  2 +
 .../bindings/cpp/include/proton/connection.hpp  | 14 +---
 .../cpp/include/proton/connection_options.hpp   | 15 ++---
 .../bindings/cpp/include/proton/container.hpp   | 12 +---
 .../bindings/cpp/include/proton/decimal.hpp     |  2 -
 .../cpp/include/proton/default_container.hpp    |  2 +-
 .../bindings/cpp/include/proton/delivery.hpp    |  6 +-
 .../bindings/cpp/include/proton/duration.hpp    |  2 +
 .../bindings/cpp/include/proton/endpoint.hpp    |  3 +-
 .../cpp/include/proton/error_condition.hpp      |  2 +-
 .../bindings/cpp/include/proton/event_loop.hpp  |  8 +--
 proton-c/bindings/cpp/include/proton/fwd.hpp    | 70 ++++++++++++++++++++
 .../cpp/include/proton/internal/type_traits.hpp |  3 +
 .../include/proton/io/container_impl_base.hpp   |  1 +
 proton-c/bindings/cpp/include/proton/link.hpp   | 26 ++------
 .../cpp/include/proton/listen_handler.hpp       |  2 +
 .../bindings/cpp/include/proton/listener.hpp    |  3 +-
 .../bindings/cpp/include/proton/message.hpp     | 14 ++--
 .../bindings/cpp/include/proton/message_id.hpp  |  2 +
 .../cpp/include/proton/messaging_handler.hpp    | 17 +----
 .../bindings/cpp/include/proton/receiver.hpp    | 10 ++-
 .../cpp/include/proton/receiver_options.hpp     | 12 +---
 .../cpp/include/proton/reconnect_timer.hpp      |  3 +-
 proton-c/bindings/cpp/include/proton/scalar.hpp |  7 +-
 .../bindings/cpp/include/proton/scalar_base.hpp |  6 +-
 proton-c/bindings/cpp/include/proton/sender.hpp | 11 +--
 .../cpp/include/proton/sender_options.hpp       | 12 +---
 .../bindings/cpp/include/proton/session.hpp     | 10 +--
 .../cpp/include/proton/session_options.hpp      |  6 +-
 proton-c/bindings/cpp/include/proton/source.hpp | 16 ++---
 .../cpp/include/proton/source_options.hpp       |  7 +-
 proton-c/bindings/cpp/include/proton/ssl.hpp    |  5 +-
 proton-c/bindings/cpp/include/proton/target.hpp | 10 +--
 .../cpp/include/proton/target_options.hpp       |  9 +--
 .../bindings/cpp/include/proton/terminus.hpp    | 13 +++-
 .../bindings/cpp/include/proton/thread_safe.hpp |  8 +--
 .../bindings/cpp/include/proton/timestamp.hpp   |  2 +
 .../bindings/cpp/include/proton/transfer.hpp    |  4 +-
 .../bindings/cpp/include/proton/transport.hpp   | 12 +---
 proton-c/bindings/cpp/include/proton/types.hpp  |  4 +-
 .../bindings/cpp/include/proton/types_fwd.hpp   |  7 +-
 proton-c/bindings/cpp/include/proton/url.hpp    |  3 +-
 proton-c/bindings/cpp/include/proton/uuid.hpp   |  2 +-
 proton-c/bindings/cpp/include/proton/value.hpp  |  2 +
 proton-c/bindings/cpp/src/connection.cpp        |  3 +
 proton-c/bindings/cpp/src/container.cpp         |  1 +
 proton-c/bindings/cpp/src/container_test.cpp    |  2 +
 proton-c/bindings/cpp/src/delivery.cpp          |  2 +
 proton-c/bindings/cpp/src/handler.cpp           |  1 +
 .../bindings/cpp/src/include/container_impl.hpp |  5 +-
 .../bindings/cpp/src/include/proton_event.hpp   |  2 +-
 proton-c/bindings/cpp/src/include/reactor.hpp   |  5 +-
 proton-c/bindings/cpp/src/message.cpp           |  5 +-
 proton-c/bindings/cpp/src/messaging_adapter.cpp |  4 +-
 proton-c/bindings/cpp/src/receiver.cpp          |  6 +-
 proton-c/bindings/cpp/src/sender.cpp            |  6 +-
 proton-c/bindings/cpp/src/session.cpp           |  8 ++-
 proton-c/bindings/cpp/src/terminus.cpp          |  6 +-
 proton-c/bindings/cpp/src/tracker.cpp           |  2 +
 tests/tools/apps/cpp/reactor_send.cpp           |  8 ++-
 84 files changed, 327 insertions(+), 241 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/broker.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/broker.cpp b/examples/cpp/broker.cpp
index 232839b..97ef206 100644
--- a/examples/cpp/broker.cpp
+++ b/examples/cpp/broker.cpp
@@ -22,8 +22,11 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/error_condition.hpp>
+#include <proton/listener.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/message.hpp>
 #include <proton/receiver_options.hpp>
@@ -31,6 +34,7 @@
 #include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
 #include <proton/target_options.hpp>
+#include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 #include <proton/url.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/client.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/client.cpp b/examples/cpp/client.cpp
index dd22ccd..7139155 100644
--- a/examples/cpp/client.cpp
+++ b/examples/cpp/client.cpp
@@ -20,12 +20,16 @@
  */
 
 #include "options.hpp"
+#include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
-#include <proton/connection.hpp>
-#include <proton/tracker.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 #include <vector>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/connection_options.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/connection_options.cpp b/examples/cpp/connection_options.cpp
index f9935a8..f718060 100644
--- a/examples/cpp/connection_options.cpp
+++ b/examples/cpp/connection_options.cpp
@@ -21,8 +21,10 @@
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/transport.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/direct_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/direct_recv.cpp b/examples/cpp/direct_recv.cpp
index d2d3939..705b480 100644
--- a/examples/cpp/direct_recv.cpp
+++ b/examples/cpp/direct_recv.cpp
@@ -22,10 +22,14 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/link.hpp>
+#include <proton/listener.hpp>
 #include <proton/value.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/direct_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/direct_send.cpp b/examples/cpp/direct_send.cpp
index d8427b7..7de762d 100644
--- a/examples/cpp/direct_send.cpp
+++ b/examples/cpp/direct_send.cpp
@@ -22,10 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/value.hpp>
 #include <proton/tracker.hpp>
+#include <proton/types.hpp>
 
 #include <iostream>
 #include <map>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/flow_control.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/flow_control.cpp b/examples/cpp/flow_control.cpp
index 99f832d..c0b8739 100644
--- a/examples/cpp/flow_control.cpp
+++ b/examples/cpp/flow_control.cpp
@@ -21,14 +21,18 @@
 
 #include "options.hpp"
 
-#include <proton/listener.hpp>
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/delivery.hpp>
 
 #include <iostream>
 #include <sstream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/helloworld.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/helloworld.cpp b/examples/cpp/helloworld.cpp
index fa95af0..4aa5cdd 100644
--- a/examples/cpp/helloworld.cpp
+++ b/examples/cpp/helloworld.cpp
@@ -20,9 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/helloworld_direct.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/helloworld_direct.cpp b/examples/cpp/helloworld_direct.cpp
index 5421e62..b3a1af8 100644
--- a/examples/cpp/helloworld_direct.cpp
+++ b/examples/cpp/helloworld_direct.cpp
@@ -20,9 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/mt/broker.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/mt/broker.cpp b/examples/cpp/mt/broker.cpp
index 7ef90c3..83b7005 100644
--- a/examples/cpp/mt/broker.cpp
+++ b/examples/cpp/mt/broker.cpp
@@ -21,18 +21,26 @@
 #include "mt_container.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
 #include <proton/error_condition.hpp>
 #include <proton/listen_handler.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/target.hpp>
 #include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <atomic>
+#include <deque>
 #include <functional>
 #include <iostream>
+#include <map>
 #include <mutex>
 #include <thread>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/queue_browser.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/queue_browser.cpp b/examples/cpp/queue_browser.cpp
index 649716b..583277e 100644
--- a/examples/cpp/queue_browser.cpp
+++ b/examples/cpp/queue_browser.cpp
@@ -20,11 +20,14 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/scheduled_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send.cpp b/examples/cpp/scheduled_send.cpp
index 280c737..ef6cd27 100644
--- a/examples/cpp/scheduled_send.cpp
+++ b/examples/cpp/scheduled_send.cpp
@@ -21,8 +21,13 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/scheduled_send_03.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/scheduled_send_03.cpp b/examples/cpp/scheduled_send_03.cpp
index 5d3aaac..92e5767 100644
--- a/examples/cpp/scheduled_send_03.cpp
+++ b/examples/cpp/scheduled_send_03.cpp
@@ -21,8 +21,16 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
+#include <proton/connection.hpp>
 #include <proton/default_container.hpp>
+#include <proton/duration.hpp>
+#include <proton/function.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/sender.hpp>
+#include <proton/thread_safe.hpp>
+#include <proton/tracker.hpp>
 
 #include <iostream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/selected_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/selected_recv.cpp b/examples/cpp/selected_recv.cpp
index 2c1a6b6..a48ef0e 100644
--- a/examples/cpp/selected_recv.cpp
+++ b/examples/cpp/selected_recv.cpp
@@ -20,10 +20,13 @@
  */
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/receiver_options.hpp>
 #include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/url.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/server.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/server.cpp b/examples/cpp/server.cpp
index ec24f9f..449ce6e 100644
--- a/examples/cpp/server.cpp
+++ b/examples/cpp/server.cpp
@@ -22,8 +22,12 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/url.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/server_direct.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/server_direct.cpp b/examples/cpp/server_direct.cpp
index 220934f..22d519a 100644
--- a/examples/cpp/server_direct.cpp
+++ b/examples/cpp/server_direct.cpp
@@ -21,9 +21,14 @@
 
 #include "options.hpp"
 
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
 #include <proton/source_options.hpp>
 #include <proton/tracker.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/service_bus.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/service_bus.cpp b/examples/cpp/service_bus.cpp
index 73eaadb..6b57f8d 100644
--- a/examples/cpp/service_bus.cpp
+++ b/examples/cpp/service_bus.cpp
@@ -84,13 +84,19 @@ Done. No more messages.
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/delivery.hpp>
+#include <proton/function.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/receiver_options.hpp>
 #include <proton/sender.hpp>
+#include <proton/sender_options.hpp>
+#include <proton/source_options.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/delivery.hpp>
 #include <proton/url.hpp>
-#include <proton/source_options.hpp>
 
 #include <iostream>
 #include <sstream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/simple_recv.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/simple_recv.cpp b/examples/cpp/simple_recv.cpp
index 1f077d6..145eef9 100644
--- a/examples/cpp/simple_recv.cpp
+++ b/examples/cpp/simple_recv.cpp
@@ -22,11 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
 #include <proton/delivery.hpp>
-#include <proton/messaging_handler.hpp>
 #include <proton/link.hpp>
+#include <proton/message.hpp>
 #include <proton/message_id.hpp>
+#include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/value.hpp>
 
 #include <iostream>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/simple_send.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/simple_send.cpp b/examples/cpp/simple_send.cpp
index 9e11588..358bbec 100644
--- a/examples/cpp/simple_send.cpp
+++ b/examples/cpp/simple_send.cpp
@@ -22,10 +22,15 @@
 #include "options.hpp"
 
 #include <proton/connection.hpp>
+#include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/message.hpp>
+#include <proton/message_id.hpp>
 #include <proton/messaging_handler.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
-#include <proton/value.hpp>
+#include <proton/types.hpp>
 
 #include <iostream>
 #include <map>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/ssl.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/ssl.cpp b/examples/cpp/ssl.cpp
index 67394b5..2e901c2 100644
--- a/examples/cpp/ssl.cpp
+++ b/examples/cpp/ssl.cpp
@@ -23,9 +23,14 @@
 
 #include <proton/connection_options.hpp>
 #include <proton/connection.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/error_condition.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/ssl.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/examples/cpp/ssl_client_cert.cpp
----------------------------------------------------------------------
diff --git a/examples/cpp/ssl_client_cert.cpp b/examples/cpp/ssl_client_cert.cpp
index 42b6593..630e74b 100644
--- a/examples/cpp/ssl_client_cert.cpp
+++ b/examples/cpp/ssl_client_cert.cpp
@@ -21,10 +21,14 @@
 
 #include <proton/connection.hpp>
 #include <proton/connection_options.hpp>
+#include <proton/container.hpp>
 #include <proton/default_container.hpp>
+#include <proton/listener.hpp>
+#include <proton/message.hpp>
 #include <proton/messaging_handler.hpp>
 #include <proton/sasl.hpp>
 #include <proton/ssl.hpp>
+#include <proton/thread_safe.hpp>
 #include <proton/tracker.hpp>
 #include <proton/transport.hpp>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/annotation_key.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/annotation_key.hpp b/proton-c/bindings/cpp/include/proton/annotation_key.hpp
index 23d789b..4995141 100644
--- a/proton-c/bindings/cpp/include/proton/annotation_key.hpp
+++ b/proton-c/bindings/cpp/include/proton/annotation_key.hpp
@@ -25,6 +25,8 @@
 #include "./scalar_base.hpp"
 #include "./symbol.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 
 /// A key for use with AMQP annotation maps.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/binary.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/binary.hpp b/proton-c/bindings/cpp/include/proton/binary.hpp
index d2f5b97..cf4c7a2 100644
--- a/proton-c/bindings/cpp/include/proton/binary.hpp
+++ b/proton-c/bindings/cpp/include/proton/binary.hpp
@@ -25,6 +25,8 @@
 #include "./internal/export.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 #include <vector>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/byte_array.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/byte_array.hpp b/proton-c/bindings/cpp/include/proton/byte_array.hpp
index d69861a..9040133 100644
--- a/proton-c/bindings/cpp/include/proton/byte_array.hpp
+++ b/proton-c/bindings/cpp/include/proton/byte_array.hpp
@@ -24,6 +24,8 @@
 #include "./internal/comparable.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <algorithm>
 #include <iterator>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/codec/decoder.hpp b/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
index 7acae9d..3dc6d57 100644
--- a/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
+++ b/proton-c/bindings/cpp/include/proton/codec/decoder.hpp
@@ -27,6 +27,8 @@
 #include "../types_fwd.hpp"
 #include "./common.hpp"
 
+#include <proton/type_compat.h>
+
 #include <utility>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
index 9183c07..24de309 100644
--- a/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
+++ b/proton-c/bindings/cpp/include/proton/codec/encoder.hpp
@@ -27,6 +27,8 @@
 #include "../types_fwd.hpp"
 #include "./common.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 class scalar_base;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/connection.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection.hpp b/proton-c/bindings/cpp/include/proton/connection.hpp
index 062805f..aac3bb7 100644
--- a/proton-c/bindings/cpp/include/proton/connection.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection.hpp
@@ -22,12 +22,13 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./endpoint.hpp"
 #include "./internal/object.hpp"
+#include "./endpoint.hpp"
 #include "./session.hpp"
 
-#include <proton/types.h>
+#include <proton/type_compat.h>
 
 #include <string>
 
@@ -35,15 +36,6 @@ struct pn_connection_t;
 
 namespace proton {
 
-class messaging_handler;
-class connection_options;
-class sender;
-class sender_options;
-class receiver;
-class receiver_options;
-class container;
-template <class T> class thread_safe;
-
 /// A connection to a remote AMQP peer.
 class
 PN_CPP_CLASS_EXTERN connection : public internal::object<pn_connection_t>, public endpoint {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/connection_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/connection_options.hpp b/proton-c/bindings/cpp/include/proton/connection_options.hpp
index d2deebf..6957fad 100644
--- a/proton-c/bindings/cpp/include/proton/connection_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/connection_options.hpp
@@ -22,12 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
+#include "./types_fwd.hpp"
 #include "./internal/config.hpp"
 #include "./internal/export.hpp"
-#include "./duration.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./reconnect_timer.hpp"
-#include "./types_fwd.hpp"
+#include "./duration.hpp"
+
+#include <proton/type_compat.h>
 
 #include <vector>
 #include <string>
@@ -36,13 +38,6 @@ struct pn_connection_t;
 
 namespace proton {
 
-class proton_handler;
-class connection;
-
-namespace io {
-class connection_driver;
-}
-
 /// Options for creating a connection.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/container.hpp b/proton-c/bindings/cpp/include/proton/container.hpp
index 7d2d34c..6fe81dc 100644
--- a/proton-c/bindings/cpp/include/proton/container.hpp
+++ b/proton-c/bindings/cpp/include/proton/container.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./connection_options.hpp"
 #include "./function.hpp"
 #include "./listener.hpp"
@@ -36,17 +37,6 @@
 
 namespace proton {
 
-class connection;
-class connection_options;
-class container_impl;
-class messaging_handler;
-class listen_handler;
-class listener;
-class receiver;
-class receiver_options;
-class sender;
-class sender_options;
-
 /// A top-level container of connections, sessions, senders, and
 /// receivers.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/decimal.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/decimal.hpp b/proton-c/bindings/cpp/include/proton/decimal.hpp
index 873931b..efca029 100644
--- a/proton-c/bindings/cpp/include/proton/decimal.hpp
+++ b/proton-c/bindings/cpp/include/proton/decimal.hpp
@@ -26,8 +26,6 @@
 #include "./internal/export.hpp"
 #include "./internal/comparable.hpp"
 
-#include <proton/types.h>
-
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/default_container.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/default_container.hpp b/proton-c/bindings/cpp/include/proton/default_container.hpp
index 0214490..3213c02 100644
--- a/proton-c/bindings/cpp/include/proton/default_container.hpp
+++ b/proton-c/bindings/cpp/include/proton/default_container.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./container.hpp"
 
 #include "./internal/config.hpp"
@@ -31,7 +32,6 @@
 #include <string>
 
 namespace proton {
-class messaging_handler;
 
 // Avoid deprecated diagnostics from auto_ptr
 #if defined(__GNUC__) && __GNUC__*100 + __GNUC_MINOR__ >= 406 || defined(__clang__)

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/delivery.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/delivery.hpp b/proton-c/bindings/cpp/include/proton/delivery.hpp
index 91fd143..7c89f0c 100644
--- a/proton-c/bindings/cpp/include/proton/delivery.hpp
+++ b/proton-c/bindings/cpp/include/proton/delivery.hpp
@@ -22,17 +22,13 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/object.hpp"
 #include "./transfer.hpp"
 
-#include <proton/delivery.h>
-#include <proton/disposition.h>
-
 namespace proton {
 
-class receiver;
-
 /// A received message.
 /// 
 /// A delivery attempt can fail. As a result, a particular message may

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/duration.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/duration.hpp b/proton-c/bindings/cpp/include/proton/duration.hpp
index 7110051..a190cf9 100644
--- a/proton-c/bindings/cpp/include/proton/duration.hpp
+++ b/proton-c/bindings/cpp/include/proton/duration.hpp
@@ -26,6 +26,8 @@
 #include "./internal/comparable.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/endpoint.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/endpoint.hpp b/proton-c/bindings/cpp/include/proton/endpoint.hpp
index 4628d35..36ac981 100644
--- a/proton-c/bindings/cpp/include/proton/endpoint.hpp
+++ b/proton-c/bindings/cpp/include/proton/endpoint.hpp
@@ -22,10 +22,9 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
-#include "./error_condition.hpp"
 #include "./internal/export.hpp"
-#include "./internal/comparable.hpp"
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/error_condition.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/error_condition.hpp b/proton-c/bindings/cpp/include/proton/error_condition.hpp
index e75e5d0..fb39332 100644
--- a/proton-c/bindings/cpp/include/proton/error_condition.hpp
+++ b/proton-c/bindings/cpp/include/proton/error_condition.hpp
@@ -23,8 +23,8 @@
  */
 
 #include "./internal/export.hpp"
-#include "./value.hpp"
 #include "./internal/config.hpp"
+#include "./value.hpp"
 
 #include <string>
 #include <iosfwd>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/event_loop.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/event_loop.hpp b/proton-c/bindings/cpp/include/proton/event_loop.hpp
index 8288de9..d43ba4f 100644
--- a/proton-c/bindings/cpp/include/proton/event_loop.hpp
+++ b/proton-c/bindings/cpp/include/proton/event_loop.hpp
@@ -22,16 +22,12 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
-#include "./function.hpp"
+#include "./internal/export.hpp"
 
 #include <functional>
 
-#if PN_CPP_HAS_CPP11
-#include <future>
-#include <type_traits>
-#endif
-
 struct pn_connection_t;
 struct pn_session_t;
 struct pn_link_t;

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/fwd.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/fwd.hpp b/proton-c/bindings/cpp/include/proton/fwd.hpp
new file mode 100644
index 0000000..c494ad3
--- /dev/null
+++ b/proton-c/bindings/cpp/include/proton/fwd.hpp
@@ -0,0 +1,70 @@
+#ifndef PROTON_FWD_HPP
+#define PROTON_FWD_HPP
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+namespace proton {
+
+class annotation_key;
+class connection;
+class connection_options;
+class container;
+class container_impl;
+class delivery;
+class error_condition;
+class event;
+class message;
+class message_id;
+class messaging_handler;
+class listen_handler;
+class listener;
+class receiver;
+class receiver_iterator;
+class receiver_options;
+class reconnect_timer;
+class sasl;
+class sender;
+class sender_iterator;
+class sender_options;
+class session;
+class session_options;
+class source_options;
+class ssl;
+class target_options;
+class tracker;
+class transport;
+class url;
+class void_function0;
+
+
+namespace io {
+
+class connection_driver;
+
+}
+
+template <class T> class returned;
+template <class T> class thread_safe;
+
+}
+
+#endif // PROTON_FWD_HPP

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
index 3d66f94..4c4c7d6 100644
--- a/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
+++ b/proton-c/bindings/cpp/include/proton/internal/type_traits.hpp
@@ -30,6 +30,9 @@
 #include "./config.hpp"
 #include "../types_fwd.hpp"
 #include "../type_id.hpp"
+
+#include <proton/type_compat.h>
+
 #include <limits>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
index 123f00a..0aeed78 100644
--- a/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
+++ b/proton-c/bindings/cpp/include/proton/io/container_impl_base.hpp
@@ -24,6 +24,7 @@
 
 #include "../container.hpp"
 
+#include <future>
 #include <mutex>
 #include <sstream>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/link.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/link.hpp b/proton-c/bindings/cpp/include/proton/link.hpp
index 40200e8..8534f21 100644
--- a/proton-c/bindings/cpp/include/proton/link.hpp
+++ b/proton-c/bindings/cpp/include/proton/link.hpp
@@ -22,34 +22,16 @@
  *
  */
 
-#include "./endpoint.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./message.hpp"
-#include "./source.hpp"
-#include "./target.hpp"
+#include "./endpoint.hpp"
 #include "./internal/object.hpp"
-#include "./sender_options.hpp"
-#include "./receiver_options.hpp"
-
-#include <proton/types.h>
 
 #include <string>
 
-namespace proton {
+struct pn_link_t;
 
-class sender;
-class receiver;
-class error_condition;
-class link_context;
-class proton_event;
-class messaging_adapter;
-class proton_handler;
-class delivery;
-class connection;
-class container;
-class session;
-class sender_iterator;
-class receiver_iterator;
+namespace proton {
 
 /// A named channel for sending or receiving messages.  It is the base
 /// class for sender and receiver.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/listen_handler.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/listen_handler.hpp b/proton-c/bindings/cpp/include/proton/listen_handler.hpp
index acd7d4c..99f7558 100644
--- a/proton-c/bindings/cpp/include/proton/listen_handler.hpp
+++ b/proton-c/bindings/cpp/include/proton/listen_handler.hpp
@@ -22,6 +22,8 @@
  *
  */
 
+#include "./fwd.hpp"
+
 namespace proton {
 
 // XXX Discuss more

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/listener.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/listener.hpp b/proton-c/bindings/cpp/include/proton/listener.hpp
index 2cdf121..4b4ca24 100644
--- a/proton-c/bindings/cpp/include/proton/listener.hpp
+++ b/proton-c/bindings/cpp/include/proton/listener.hpp
@@ -20,14 +20,13 @@
  * under the License.
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 
 #include <string>
 
 namespace proton {
 
-class container;
-
 /// A listener for incoming connections.
 class PN_CPP_CLASS_EXTERN listener {
   public:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/message.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/message.hpp b/proton-c/bindings/cpp/include/proton/message.hpp
index e9f1da4..85ccff6 100644
--- a/proton-c/bindings/cpp/include/proton/message.hpp
+++ b/proton-c/bindings/cpp/include/proton/message.hpp
@@ -22,28 +22,24 @@
  *
  */
 
-#include "./annotation_key.hpp"
-#include "./codec/map.hpp"
-#include "./duration.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./message_id.hpp"
+#include "./duration.hpp"
+#include "./timestamp.hpp"
 #include "./value.hpp"
 
 #include "./internal/cached_map.hpp"
 #include "./internal/pn_unique_ptr.hpp"
 
+#include <proton/type_compat.h>
+
 #include <string>
 #include <vector>
-#include <utility>
 
 struct pn_message_t;
 
 namespace proton {
 
-class delivery;
-class message_id;
-class annotation_key;
-
 /// An AMQP message.
 ///
 /// Value semantics: A message can be copied or assigned to make a new

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/message_id.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/message_id.hpp b/proton-c/bindings/cpp/include/proton/message_id.hpp
index 5e0de90..ee12a17 100644
--- a/proton-c/bindings/cpp/include/proton/message_id.hpp
+++ b/proton-c/bindings/cpp/include/proton/message_id.hpp
@@ -26,6 +26,8 @@
 #include "./scalar_base.hpp"
 #include "./uuid.hpp"
 
+#include <proton/type_compat.h>
+
 #include <string>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/messaging_handler.hpp b/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
index acdcd30..6653c43 100644
--- a/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
+++ b/proton-c/bindings/cpp/include/proton/messaging_handler.hpp
@@ -22,26 +22,11 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 
 namespace proton {
 
-class error_condition;
-class container;
-class event;
-class transport;
-class connection;
-class session;
-class sender;
-class receiver;
-class tracker;
-class delivery;
-class message;
-class messaging_adapter;
-
-namespace io {
-class connection_driver;
-}
 
 /// A handler for Proton messaging events.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/receiver.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/receiver.hpp b/proton-c/bindings/cpp/include/proton/receiver.hpp
index 986765e..f92ac96 100644
--- a/proton-c/bindings/cpp/include/proton/receiver.hpp
+++ b/proton-c/bindings/cpp/include/proton/receiver.hpp
@@ -22,18 +22,16 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./endpoint.hpp"
 #include "./link.hpp"
 
-#include <proton/types.h>
+#include <proton/type_compat.h>
 
-#include <string>
-
-struct pn_connection_t;
+struct pn_link_t;
+struct pn_session_t;
 
 namespace proton {
-template <class T> class thread_safe;
 
 /// A channel for receiving messages.
 class

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/receiver_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/receiver_options.hpp b/proton-c/bindings/cpp/include/proton/receiver_options.hpp
index 7b1b511..413e4d4 100644
--- a/proton-c/bindings/cpp/include/proton/receiver_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/receiver_options.hpp
@@ -22,23 +22,13 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 #include "./delivery_mode.hpp"
-#include "./terminus.hpp"
-
-#include <vector>
-#include <string>
 
 namespace proton {
 
-class proton_handler;
-class receiver;
-class source_options;
-class target_options;
-
 /// Options for creating a receiver.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp b/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
index 66ec6b0..766feb7 100644
--- a/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
+++ b/proton-c/bindings/cpp/include/proton/reconnect_timer.hpp
@@ -28,9 +28,8 @@
 #include "./internal/export.hpp"
 #include "./duration.hpp"
 #include "./timestamp.hpp"
-#include "./types.hpp"
 
-#include <string>
+#include <proton/type_compat.h>
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/scalar.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/scalar.hpp b/proton-c/bindings/cpp/include/proton/scalar.hpp
index 27de576..0559dd9 100644
--- a/proton-c/bindings/cpp/include/proton/scalar.hpp
+++ b/proton-c/bindings/cpp/include/proton/scalar.hpp
@@ -22,12 +22,9 @@
 
 #include "./scalar_base.hpp"
 
-namespace proton {
+#include <proton/type_compat.h>
 
-namespace codec {
-class decoder;
-class encoder;
-}
+namespace proton {
 
 /// A holder for an instance of any scalar AMQP type.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/scalar_base.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/scalar_base.hpp b/proton-c/bindings/cpp/include/proton/scalar_base.hpp
index ba594c3..ca3161a 100644
--- a/proton-c/bindings/cpp/include/proton/scalar_base.hpp
+++ b/proton-c/bindings/cpp/include/proton/scalar_base.hpp
@@ -34,12 +34,14 @@
 #include "./types_fwd.hpp"
 #include "./uuid.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 #include <typeinfo>
 
 namespace proton {
-class message;
+
 class scalar_base;
 
 namespace codec {
@@ -150,7 +152,7 @@ class scalar_base : private internal::comparable<scalar_base> {
     binary bytes_; // Hold binary data.
 
     /// @cond INTERNAL
-  friend class proton::message;
+  friend class message;
   friend class codec::encoder;
   friend class codec::decoder;
   template<class T> friend T internal::get(const scalar_base& s);

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/sender.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/sender.hpp b/proton-c/bindings/cpp/include/proton/sender.hpp
index 5d34b23..8979bb4 100644
--- a/proton-c/bindings/cpp/include/proton/sender.hpp
+++ b/proton-c/bindings/cpp/include/proton/sender.hpp
@@ -22,19 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./link.hpp"
-#include "./message.hpp"
-#include "./tracker.hpp"
 
-#include <proton/types.h>
-
-#include <string>
-
-struct pn_connection_t;
+struct pn_link_t;
+struct pn_session_t;
 
 namespace proton {
-template <class T> class thread_safe;
 
 /// A channel for sending messages.
 class

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/sender_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/sender_options.hpp b/proton-c/bindings/cpp/include/proton/sender_options.hpp
index 0a618ff..9d7bb42 100644
--- a/proton-c/bindings/cpp/include/proton/sender_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/sender_options.hpp
@@ -22,23 +22,13 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 #include "./delivery_mode.hpp"
-#include "./terminus.hpp"
-
-#include <vector>
-#include <string>
 
 namespace proton {
 
-class proton_handler;
-class sender;
-class source_options;
-class target_options;
-
 /// Options for creating a sender.
 ///
 /// Options can be "chained" like this:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/session.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/session.hpp b/proton-c/bindings/cpp/include/proton/session.hpp
index 5053f4c..cbdf1b9 100644
--- a/proton-c/bindings/cpp/include/proton/session.hpp
+++ b/proton-c/bindings/cpp/include/proton/session.hpp
@@ -22,26 +22,18 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./endpoint.hpp"
 #include "./receiver.hpp"
 #include "./sender.hpp"
-#include "./session_options.hpp"
-
-#include <proton/types.h>
-#include <proton/link.h>
 
 #include <string>
 
-struct pn_connection_t;
 struct pn_session_t;
 
 namespace proton {
 
-class container;
-class messaging_handler;
-template <class T> class thread_safe;
-
 /// A container of senders and receivers.
 class
 PN_CPP_CLASS_EXTERN session : public internal::object<pn_session_t>, public endpoint {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/session_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/session_options.hpp b/proton-c/bindings/cpp/include/proton/session_options.hpp
index 8bef3e8..eb47a89 100644
--- a/proton-c/bindings/cpp/include/proton/session_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/session_options.hpp
@@ -22,16 +22,12 @@
  *
  */
 
-#include "./internal/config.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
 
 namespace proton {
 
-class messaging_handler;
-class session;
-
 /// Options for creating a session.
 ///
 /// Options can be "chained" (see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/source.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/source.hpp b/proton-c/bindings/cpp/include/proton/source.hpp
index 05485c3..321af9a 100644
--- a/proton-c/bindings/cpp/include/proton/source.hpp
+++ b/proton-c/bindings/cpp/include/proton/source.hpp
@@ -22,20 +22,18 @@
  *
  */
 
-#include "./value.hpp"
-#include "./terminus.hpp"
-#include "./codec/map.hpp"
-
-#include "./internal/cached_map.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
+#include "./internal/cached_map.hpp"
+#include "./symbol.hpp"
+#include "./terminus.hpp"
+#include "./value.hpp"
 
 #include <string>
 
-namespace proton {
+struct pn_terminus_t;
 
-class sender;
-class receiver;
+namespace proton {
 
 /// A point of origin for messages.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/source_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/source_options.hpp b/proton-c/bindings/cpp/include/proton/source_options.hpp
index d530990..f7dde48 100644
--- a/proton-c/bindings/cpp/include/proton/source_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/source_options.hpp
@@ -22,20 +22,15 @@
  *
  */
 
-#include "./internal/config.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
-#include "./delivery_mode.hpp"
+#include "./duration.hpp"
 #include "./source.hpp"
 
-#include <vector>
 #include <string>
 
 namespace proton {
 
-class proton_handler;
-
 /// Options for creating a source node for a sender or receiver.
 ///
 /// Options can be "chained" (@see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/ssl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/ssl.hpp b/proton-c/bindings/cpp/include/proton/ssl.hpp
index 82087e2..c6c4c93 100644
--- a/proton-c/bindings/cpp/include/proton/ssl.hpp
+++ b/proton-c/bindings/cpp/include/proton/ssl.hpp
@@ -23,7 +23,6 @@
  */
 
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
 
 #include <proton/ssl.h>
 
@@ -31,7 +30,9 @@
 
 namespace proton {
 
-class connection_options;
+namespace internal {
+template <class T> class factory;
+}
 
 /// SSL information.
 class ssl {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/target.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/target.hpp b/proton-c/bindings/cpp/include/proton/target.hpp
index 5ba5281..746133a 100644
--- a/proton-c/bindings/cpp/include/proton/target.hpp
+++ b/proton-c/bindings/cpp/include/proton/target.hpp
@@ -22,17 +22,19 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
-#include "./value.hpp"
 #include "./terminus.hpp"
 
 #include <string>
 
+struct pn_terminus_t;
+
 namespace proton {
 
-class sender;
-class receiver;
+namespace internal {
+template <class T> class factory;
+}
 
 /// A destination for messages.
 ///

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/target_options.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/target_options.hpp b/proton-c/bindings/cpp/include/proton/target_options.hpp
index e4fa2f6..547dbbe 100644
--- a/proton-c/bindings/cpp/include/proton/target_options.hpp
+++ b/proton-c/bindings/cpp/include/proton/target_options.hpp
@@ -22,22 +22,15 @@
  *
  */
 
-#include "./internal/config.hpp"
 #include "./internal/export.hpp"
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types.hpp"
-#include "./delivery_mode.hpp"
+#include "./duration.hpp"
 #include "./target.hpp"
-#include "./terminus.hpp"
 
-#include <vector>
 #include <string>
 
 namespace proton {
 
-class proton_handler;
-class target;
-
 /// Options for creating a target node for a sender or receiver.
 ///
 /// Options can be "chained" (see proton::connection_options).

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/terminus.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/terminus.hpp b/proton-c/bindings/cpp/include/proton/terminus.hpp
index 6c10486..b63a8ad 100644
--- a/proton-c/bindings/cpp/include/proton/terminus.hpp
+++ b/proton-c/bindings/cpp/include/proton/terminus.hpp
@@ -22,15 +22,22 @@
  *
  */
 
+#include "./types_fwd.hpp"
 #include "./internal/export.hpp"
-#include "./internal/object.hpp"
-#include "./value.hpp"
 
-#include <proton/link.h>
+#include <proton/terminus.h>
+
 #include <string>
 
+struct pn_link_t;
+struct pn_terminus_t;
+
 namespace proton {
 
+namespace internal {
+template <class T> class factory;
+}
+
 /// One end of a link, either a source or a target.
 ///
 /// The source terminus is where messages originate; the target

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/thread_safe.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/thread_safe.hpp b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
index edd7af4..7851245 100644
--- a/proton-c/bindings/cpp/include/proton/thread_safe.hpp
+++ b/proton-c/bindings/cpp/include/proton/thread_safe.hpp
@@ -22,9 +22,11 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/config.hpp"
 #include "./connection.hpp"
 #include "./event_loop.hpp"
+#include "./function.hpp"
 #include "./internal/object.hpp"
 #include "./internal/type_traits.hpp"
 
@@ -32,12 +34,6 @@
 
 namespace proton {
 
-class connection;
-class session;
-class link;
-class sender;
-class receiver;
-
 namespace internal {
 template <class T> struct endpoint_traits;
 template<> struct endpoint_traits<connection> {};

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/timestamp.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/timestamp.hpp b/proton-c/bindings/cpp/include/proton/timestamp.hpp
index c0de3e5..6e4281b 100644
--- a/proton-c/bindings/cpp/include/proton/timestamp.hpp
+++ b/proton-c/bindings/cpp/include/proton/timestamp.hpp
@@ -22,6 +22,8 @@
 
 #include "./duration.hpp"
 
+#include <proton/type_compat.h>
+
 namespace proton {
 
 /// A 64-bit timestamp in milliseconds since the Unix epoch.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/transfer.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/transfer.hpp b/proton-c/bindings/cpp/include/proton/transfer.hpp
index c4f984a..ea073f6 100644
--- a/proton-c/bindings/cpp/include/proton/transfer.hpp
+++ b/proton-c/bindings/cpp/include/proton/transfer.hpp
@@ -22,12 +22,14 @@
  *
  */
 
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
 #include "./internal/object.hpp"
 
-#include <proton/delivery.h>
 #include <proton/disposition.h>
 
+struct pn_delivery_t;
+
 namespace proton {
 
 /// The base class for delivery and tracker.

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/transport.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/transport.hpp b/proton-c/bindings/cpp/include/proton/transport.hpp
index 10641e0..614eff2 100644
--- a/proton-c/bindings/cpp/include/proton/transport.hpp
+++ b/proton-c/bindings/cpp/include/proton/transport.hpp
@@ -22,22 +22,14 @@
  *
  */
 
-#include "./internal/object.hpp"
-#include "./types.hpp"
+#include "./fwd.hpp"
 #include "./internal/export.hpp"
+#include "./internal/object.hpp"
 
 struct pn_transport_t;
 
 namespace proton {
 
-class connection;
-class error_condition;
-class sasl;
-
-namespace io {
-class connection_driver;
-}
-
 /// A network channel supporting an AMQP connection.
 class transport : public internal::object<pn_transport_t> {
     /// @cond INTERNAL

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/types.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/types.hpp b/proton-c/bindings/cpp/include/proton/types.hpp
index 5aa52fd..d21cb8f 100644
--- a/proton-c/bindings/cpp/include/proton/types.hpp
+++ b/proton-c/bindings/cpp/include/proton/types.hpp
@@ -29,13 +29,14 @@
 
 // TODO aconway 2016-03-15: described types, described arrays.
 
+#include "./internal/config.hpp"
+
 #include "./annotation_key.hpp"
 #include "./binary.hpp"
 #include "./codec/deque.hpp"
 #include "./codec/list.hpp"
 #include "./codec/map.hpp"
 #include "./codec/vector.hpp"
-#include "./internal/config.hpp"
 #include "./decimal.hpp"
 #include "./duration.hpp"
 #include "./message_id.hpp"
@@ -45,7 +46,6 @@
 #include "./types_fwd.hpp"
 #include "./uuid.hpp"
 #include "./value.hpp"
-#include "./internal/config.hpp"
 
 #if PN_CPP_HAS_CPP11
 #include "./codec/forward_list.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/types_fwd.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/types_fwd.hpp b/proton-c/bindings/cpp/include/proton/types_fwd.hpp
index ec35c87..ff53b0c 100644
--- a/proton-c/bindings/cpp/include/proton/types_fwd.hpp
+++ b/proton-c/bindings/cpp/include/proton/types_fwd.hpp
@@ -29,9 +29,9 @@
 
 #include "./internal/config.hpp"
 
-#include <proton/type_compat.h>
-
-#include <string>
+#if PN_CPP_HAS_NULLPTR
+#include <cstddef>
+#endif
 
 namespace proton {
 
@@ -44,7 +44,6 @@ class symbol;
 class timestamp;
 class duration;
 class uuid;
-class uuid;
 class value;
 
 struct null {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/url.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/url.hpp b/proton-c/bindings/cpp/include/proton/url.hpp
index 78271b6..52e8d43 100644
--- a/proton-c/bindings/cpp/include/proton/url.hpp
+++ b/proton-c/bindings/cpp/include/proton/url.hpp
@@ -23,9 +23,10 @@
  */
 
 #include "./internal/pn_unique_ptr.hpp"
-#include "./types_fwd.hpp"
 #include "./error.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 #include <string>
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/uuid.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/uuid.hpp b/proton-c/bindings/cpp/include/proton/uuid.hpp
index 6f3bb1c..a60c944 100644
--- a/proton-c/bindings/cpp/include/proton/uuid.hpp
+++ b/proton-c/bindings/cpp/include/proton/uuid.hpp
@@ -22,8 +22,8 @@
  *
  */
 
-#include "./byte_array.hpp"
 #include "./internal/export.hpp"
+#include "./byte_array.hpp"
 
 #include <string>
 #include <iosfwd>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/include/proton/value.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/include/proton/value.hpp b/proton-c/bindings/cpp/include/proton/value.hpp
index b24f02e..3ac1763 100644
--- a/proton-c/bindings/cpp/include/proton/value.hpp
+++ b/proton-c/bindings/cpp/include/proton/value.hpp
@@ -28,6 +28,8 @@
 #include "./scalar.hpp"
 #include "./types_fwd.hpp"
 
+#include <proton/type_compat.h>
+
 #include <iosfwd>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/connection.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/connection.cpp b/proton-c/bindings/cpp/src/connection.cpp
index dcc1ad5..113932c 100644
--- a/proton-c/bindings/cpp/src/connection.cpp
+++ b/proton-c/bindings/cpp/src/connection.cpp
@@ -25,7 +25,10 @@
 #include "proton/container.hpp"
 #include "proton/error.hpp"
 #include "proton/event_loop.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/session.hpp"
+#include "proton/session_options.hpp"
 #include "proton/transport.hpp"
 
 #include "connector.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/container.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container.cpp b/proton-c/bindings/cpp/src/container.cpp
index 0e64a58..914ee56 100644
--- a/proton-c/bindings/cpp/src/container.cpp
+++ b/proton-c/bindings/cpp/src/container.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "proton/container.hpp"
+#include "proton/error_condition.hpp"
 
 #include "proton/listen_handler.hpp"
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/container_test.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/container_test.cpp b/proton-c/bindings/cpp/src/container_test.cpp
index 062bb94..564a4ba 100644
--- a/proton-c/bindings/cpp/src/container_test.cpp
+++ b/proton-c/bindings/cpp/src/container_test.cpp
@@ -21,10 +21,12 @@
 #include "test_bits.hpp"
 #include "proton/connection.hpp"
 #include "proton/connection_options.hpp"
+#include "proton/container.hpp"
 #include "proton/default_container.hpp"
 #include "proton/messaging_handler.hpp"
 #include "proton/listener.hpp"
 #include "proton/listen_handler.hpp"
+#include "proton/thread_safe.hpp"
 
 #include <cstdlib>
 #include <ctime>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/delivery.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/delivery.cpp b/proton-c/bindings/cpp/src/delivery.cpp
index cae2bf0..0562304 100644
--- a/proton-c/bindings/cpp/src/delivery.cpp
+++ b/proton-c/bindings/cpp/src/delivery.cpp
@@ -25,6 +25,8 @@
 
 #include "proton_bits.hpp"
 
+#include <proton/delivery.h>
+
 namespace {
 
 void settle_delivery(pn_delivery_t* o, uint64_t state) {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/handler.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/handler.cpp b/proton-c/bindings/cpp/src/handler.cpp
index 453aa42..5cf6208 100644
--- a/proton-c/bindings/cpp/src/handler.cpp
+++ b/proton-c/bindings/cpp/src/handler.cpp
@@ -21,6 +21,7 @@
 #include "proton/messaging_handler.hpp"
 
 #include "proton/connection.hpp"
+#include "proton/error_condition.hpp"
 #include "proton/receiver.hpp"
 #include "proton/sender.hpp"
 #include "proton/session.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/container_impl.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/container_impl.hpp b/proton-c/bindings/cpp/src/include/container_impl.hpp
index 0ffc2eb..b0d9634 100644
--- a/proton-c/bindings/cpp/src/include/container_impl.hpp
+++ b/proton-c/bindings/cpp/src/include/container_impl.hpp
@@ -22,12 +22,15 @@
  *
  */
 
+#include "proton/fwd.hpp"
 #include "proton/container.hpp"
 #include "proton/connection.hpp"
 #include "proton/connection_options.hpp"
 #include "proton/duration.hpp"
 #include "proton/sender.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/receiver.hpp"
+#include "proton/receiver_options.hpp"
 
 #include "messaging_adapter.hpp"
 #include "reactor.hpp"
@@ -41,10 +44,8 @@
 namespace proton {
 
 class dispatch_helper;
-class connection;
 class connector;
 class acceptor;
-class container;
 class url;
 class listen_handler;
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/proton_event.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/proton_event.hpp b/proton-c/bindings/cpp/src/include/proton_event.hpp
index 9b33701..00fdadf 100644
--- a/proton-c/bindings/cpp/src/include/proton_event.hpp
+++ b/proton-c/bindings/cpp/src/include/proton_event.hpp
@@ -22,6 +22,7 @@
  *
  */
 
+#include "proton/fwd.hpp"
 #include "proton/error.hpp"
 
 #include <proton/event.h>
@@ -29,7 +30,6 @@
 namespace proton {
 
 class proton_handler;
-class container;
 
 /** Event information for a proton::proton_handler */
 class proton_event

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/include/reactor.hpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/include/reactor.hpp b/proton-c/bindings/cpp/src/include/reactor.hpp
index 21df5ce..7aba5f0 100644
--- a/proton-c/bindings/cpp/src/include/reactor.hpp
+++ b/proton-c/bindings/cpp/src/include/reactor.hpp
@@ -23,6 +23,7 @@
 /// @cond INTERNAL
 /// XXX remove
 
+#include "proton/fwd.hpp"
 #include "proton/internal/object.hpp"
 #include "proton/duration.hpp"
 #include "proton/timestamp.hpp"
@@ -33,11 +34,7 @@ struct pn_io_t;
 
 namespace proton {
 
-class connection;
-class container;
 class acceptor;
-class url;
-class messaging_handler;
 
 class reactor : public internal::object<pn_reactor_t> {
   public:

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/message.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/message.cpp b/proton-c/bindings/cpp/src/message.cpp
index 9a9634c..eecfa3b 100644
--- a/proton-c/bindings/cpp/src/message.cpp
+++ b/proton-c/bindings/cpp/src/message.cpp
@@ -28,12 +28,13 @@
 #include "proton/sender.hpp"
 #include "proton/timestamp.hpp"
 
-#include <proton/message.h>
-
 #include "msg.hpp"
 #include "proton_bits.hpp"
 #include "types_internal.hpp"
 
+#include <proton/delivery.h>
+#include <proton/message.h>
+
 #include <string>
 #include <algorithm>
 #include <assert.h>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/messaging_adapter.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/messaging_adapter.cpp b/proton-c/bindings/cpp/src/messaging_adapter.cpp
index 928c3be..17c84cd 100644
--- a/proton-c/bindings/cpp/src/messaging_adapter.cpp
+++ b/proton-c/bindings/cpp/src/messaging_adapter.cpp
@@ -22,8 +22,10 @@
 #include "messaging_adapter.hpp"
 
 #include "proton/delivery.hpp"
-#include "proton/sender.hpp"
 #include "proton/error.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/tracker.hpp"
 #include "proton/transport.hpp"
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/receiver.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/receiver.cpp b/proton-c/bindings/cpp/src/receiver.cpp
index 2c417f0..68d55d0 100644
--- a/proton-c/bindings/cpp/src/receiver.cpp
+++ b/proton-c/bindings/cpp/src/receiver.cpp
@@ -18,9 +18,13 @@
  * under the License.
  *
  */
-#include "proton/link.hpp"
 #include "proton/receiver.hpp"
+
 #include "proton/error.hpp"
+#include "proton/link.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/source.hpp"
+#include "proton/target.hpp"
 
 #include "msg.hpp"
 #include "proton_bits.hpp"

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/sender.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/sender.cpp b/proton-c/bindings/cpp/src/sender.cpp
index f7ec686..70e9fa6 100644
--- a/proton-c/bindings/cpp/src/sender.cpp
+++ b/proton-c/bindings/cpp/src/sender.cpp
@@ -19,8 +19,12 @@
  *
  */
 
-#include "proton/link.hpp"
 #include "proton/sender.hpp"
+
+#include "proton/link.hpp"
+#include "proton/sender_options.hpp"
+#include "proton/source.hpp"
+#include "proton/target.hpp"
 #include "proton/tracker.hpp"
 
 #include <proton/delivery.h>

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/session.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/session.cpp b/proton-c/bindings/cpp/src/session.cpp
index 03d8cd1..de152d6 100644
--- a/proton-c/bindings/cpp/src/session.cpp
+++ b/proton-c/bindings/cpp/src/session.cpp
@@ -20,15 +20,17 @@
  */
 #include "proton/session.hpp"
 
-#include <proton/connection.h>
-#include <proton/session.h>
-#include "proton/session.hpp"
 #include "proton/connection.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender_options.hpp"
 #include "proton/session_options.hpp"
 
 #include "contexts.hpp"
 #include "proton_bits.hpp"
 
+#include <proton/connection.h>
+#include <proton/session.h>
+
 #include <string>
 
 namespace proton {

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/terminus.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/terminus.cpp b/proton-c/bindings/cpp/src/terminus.cpp
index 2c8da03..8065fe4 100644
--- a/proton-c/bindings/cpp/src/terminus.cpp
+++ b/proton-c/bindings/cpp/src/terminus.cpp
@@ -21,10 +21,10 @@
 
 #include "proton/terminus.hpp"
 
-#include "proton_bits.hpp"
+#include "proton/duration.hpp"
+#include "proton/value.hpp"
 
-#include "proton/link.hpp"
-#include <proton/link.h>
+#include "proton_bits.hpp"
 
 namespace proton {
 

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/proton-c/bindings/cpp/src/tracker.cpp
----------------------------------------------------------------------
diff --git a/proton-c/bindings/cpp/src/tracker.cpp b/proton-c/bindings/cpp/src/tracker.cpp
index 1d309a5..3b15ed5 100644
--- a/proton-c/bindings/cpp/src/tracker.cpp
+++ b/proton-c/bindings/cpp/src/tracker.cpp
@@ -25,6 +25,8 @@
 
 #include "proton_bits.hpp"
 
+#include <proton/delivery.h>
+
 namespace proton {
 
 tracker::tracker(pn_delivery_t *d): transfer(make_wrapper(d)) {}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/5147ed30/tests/tools/apps/cpp/reactor_send.cpp
----------------------------------------------------------------------
diff --git a/tests/tools/apps/cpp/reactor_send.cpp b/tests/tools/apps/cpp/reactor_send.cpp
index 481a305..7841a5e 100644
--- a/tests/tools/apps/cpp/reactor_send.cpp
+++ b/tests/tools/apps/cpp/reactor_send.cpp
@@ -22,11 +22,17 @@
 #include "options.hpp"
 
 #include "proton/binary.hpp"
+#include "proton/codec/decoder.hpp"
 #include "proton/connection.hpp"
+#include "proton/container.hpp"
 #include "proton/default_container.hpp"
-#include "proton/codec/decoder.hpp"
 #include "proton/delivery.hpp"
+#include "proton/message.hpp"
+#include "proton/message_id.hpp"
 #include "proton/messaging_handler.hpp"
+#include "proton/receiver_options.hpp"
+#include "proton/sender.hpp"
+#include "proton/thread_safe.hpp"
 #include "proton/tracker.hpp"
 #include "proton/value.hpp"
 


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org