You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2016/05/06 15:01:17 UTC

qpid-proton git commit: NO-JIRA: Add in modified version of the qpid check_abi script to help us keep the ABI

Repository: qpid-proton
Updated Branches:
  refs/heads/master 80f6d4b59 -> 4234d3df1


NO-JIRA: Add in modified version of the qpid check_abi script to help us keep the ABI


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

Branch: refs/heads/master
Commit: 4234d3df1614b40e17d65a8d99171e4109cb2cc1
Parents: 80f6d4b
Author: Andrew Stitcher <as...@apache.org>
Authored: Tue Feb 23 10:30:02 2016 -0500
Committer: Andrew Stitcher <as...@apache.org>
Committed: Fri May 6 10:59:42 2016 -0400

----------------------------------------------------------------------
 qpid-proton-cpp.syms             | 627 ++++++++++++++++++++++++++++++++++
 tools/check_abi/README.md        |   9 +
 tools/check_abi/check-abi        |  68 ++++
 tools/check_abi/cppabi.cpp       |  32 ++
 tools/check_abi/expand_types.cpp |  54 +++
 5 files changed, 790 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4234d3df/qpid-proton-cpp.syms
----------------------------------------------------------------------
diff --git a/qpid-proton-cpp.syms b/qpid-proton-cpp.syms
new file mode 100644
index 0000000..7a25651
--- /dev/null
+++ b/qpid-proton-cpp.syms
@@ -0,0 +1,627 @@
+# XXX acceptor symbols, but not connector?
+proton::acceptor::close()
+proton::acceptor::connection_options()
+
+proton::condition::description() const
+proton::condition::empty() const
+proton::condition::info() const
+proton::condition::name() const
+proton::condition::operator!() const
+proton::condition::what() const
+
+proton::connection::close()
+proton::connection::container() const
+proton::connection::container_id() const
+proton::connection::default_session()
+proton::connection::host(std::string const&)
+proton::connection::host() const
+proton::connection::links() const
+proton::connection::local_condition() const
+proton::connection::open()
+proton::connection::open_receiver(std::string const&, proton::link_options const&)
+proton::connection::open_sender(std::string const&, proton::link_options const&)
+proton::connection::open_session()
+proton::connection::password(std::string const&)
+proton::connection::release()
+proton::connection::remote_condition() const
+proton::connection::sessions() const
+proton::connection::state() const
+proton::connection::transport() const
+proton::connection::user(std::string const&)
+proton::connection::~connection()
+
+proton::connection_engine::can_read() const
+proton::connection_engine::can_write() const
+proton::connection_engine::closed() const
+proton::connection_engine::connection() const
+proton::connection_engine::connection_engine(proton::handler&, proton::connection_options const&)
+proton::connection_engine::container::container(std::string const&)
+proton::connection_engine::container::id() const
+proton::connection_engine::container::make_options()
+proton::connection_engine::container::options(proton::connection_options const&)
+proton::connection_engine::container::~container()
+proton::connection_engine::dispatch()
+proton::connection_engine::io_error::io_error(std::string const&)
+proton::connection_engine::io_error::~io_error()
+proton::connection_engine::no_opts
+proton::connection_engine::process(int)
+proton::connection_engine::try_read()
+proton::connection_engine::try_write()
+proton::connection_engine::~connection_engine()
+
+proton::connection_options::connection_options()
+proton::connection_options::connection_options(proton::connection_options const&)
+proton::connection_options::container_id(std::string const&)
+proton::connection_options::handler(proton::handler*)
+proton::connection_options::heartbeat(proton::duration)
+proton::connection_options::idle_timeout(proton::duration)
+proton::connection_options::link_prefix(std::string const&)
+proton::connection_options::max_channels(unsigned short)
+proton::connection_options::max_frame_size(unsigned int)
+proton::connection_options::operator=(proton::connection_options const&)
+proton::connection_options::override(proton::connection_options const&)
+proton::connection_options::reconnect(proton::reconnect_timer const&)
+proton::connection_options::sasl_allow_insecure_mechs(bool)
+proton::connection_options::sasl_allowed_mechs(std::string const&)
+proton::connection_options::sasl_config_name(std::string const&)
+proton::connection_options::sasl_config_path(std::string const&)
+proton::connection_options::sasl_enabled(bool)
+proton::connection_options::ssl_client_options(proton::ssl_client_options const&)
+proton::connection_options::ssl_server_options(proton::ssl_server_options const&)
+proton::connection_options::~connection_options()
+
+proton::container::client_connection_options(proton::connection_options const&)
+proton::container::connect(proton::url const&, proton::connection_options const&)
+proton::container::container(proton::handler&, std::string const&)
+proton::container::container(std::string const&)
+proton::container::id() const
+proton::container::listen(proton::url const&, proton::connection_options const&)
+proton::container::open_receiver(proton::url const&, proton::link_options const&, proton::connection_options const&)
+proton::container::open_sender(proton::url const&, proton::link_options const&, proton::connection_options const&)
+proton::container::run()
+proton::container::schedule(int, proton::handler*)
+proton::container::server_connection_options(proton::connection_options const&)
+proton::container::~container()
+
+proton::conversion_error::conversion_error(std::string const&)
+proton::conversion_error::~conversion_error()
+
+proton::delivery::clear()
+proton::delivery::link() const
+proton::delivery::partial() const
+proton::delivery::pending() const
+proton::delivery::readable() const
+proton::delivery::remote_state() const
+proton::delivery::settle()
+proton::delivery::settle(proton::delivery::state)
+proton::delivery::settled() const
+proton::delivery::update(proton::delivery::state)
+proton::delivery::updated() const
+proton::delivery::writable() const
+
+proton::duration::FOREVER
+proton::duration::IMMEDIATE
+proton::duration::MINUTE
+proton::duration::SECOND
+
+proton::endpoint::LOCAL_ACTIVE
+proton::endpoint::LOCAL_CLOSED
+proton::endpoint::LOCAL_MASK
+proton::endpoint::LOCAL_UNINIT
+proton::endpoint::REMOTE_ACTIVE
+proton::endpoint::REMOTE_CLOSED
+proton::endpoint::REMOTE_MASK
+proton::endpoint::REMOTE_UNINIT
+proton::endpoint::~endpoint()
+
+proton::error::error(std::string const&)
+proton::error::~error()
+
+proton::handler::handler(int, bool, bool, bool)
+
+# XXX Do these default implementations actually need to be exported?
+# The API user never uses them directly he only overrides virtuals
+proton::handler::on_connection_close(proton::event&)
+proton::handler::on_connection_error(proton::event&)
+proton::handler::on_connection_open(proton::event&)
+proton::handler::on_delivery_accept(proton::event&)
+proton::handler::on_delivery_reject(proton::event&)
+proton::handler::on_delivery_release(proton::event&)
+proton::handler::on_delivery_settle(proton::event&)
+proton::handler::on_link_close(proton::event&)
+proton::handler::on_link_error(proton::event&)
+proton::handler::on_link_open(proton::event&)
+proton::handler::on_message(proton::event&)
+proton::handler::on_sendable(proton::event&)
+proton::handler::on_session_close(proton::event&)
+proton::handler::on_session_error(proton::event&)
+proton::handler::on_session_open(proton::event&)
+proton::handler::on_start(proton::event&)
+proton::handler::on_timer(proton::event&)
+proton::handler::on_transport_close(proton::event&)
+proton::handler::on_transport_error(proton::event&)
+proton::handler::on_unhandled(proton::event&)
+proton::handler::on_unhandled_error(proton::event&, proton::condition const&)
+proton::handler::~handler()
+
+# XXX I wonder how much of these internal symbols can just not be exported
+proton::internal::assert_map_scope(proton::internal::scope const&)
+proton::internal::data::append(proton::internal::data)
+proton::internal::data::appendn(proton::internal::data, int)
+proton::internal::data::clear()
+proton::internal::data::copy(proton::internal::data const&)
+proton::internal::data::create()
+proton::internal::data::decoder()
+proton::internal::data::empty() const
+proton::internal::data::encoder()
+proton::internal::data::equal(proton::internal::data const&) const
+proton::internal::data::less(proton::internal::data const&) const
+proton::internal::data::narrow()
+proton::internal::data::next() const
+proton::internal::data::point() const
+proton::internal::data::restore(unsigned long)
+proton::internal::data::type() const
+proton::internal::data::widen()
+proton::internal::decoder::backup()
+proton::internal::decoder::check_type(proton::type_id)
+proton::internal::decoder::decode(char const*, unsigned long)
+proton::internal::decoder::decode(std::string const&)
+proton::internal::decoder::more() const
+proton::internal::decoder::operator>>(bool&)
+proton::internal::decoder::operator>>(double&)
+proton::internal::decoder::operator>>(float&)
+proton::internal::decoder::operator>>(int&)
+proton::internal::decoder::operator>>(long&)
+proton::internal::decoder::operator>>(proton::annotation_key&)
+proton::internal::decoder::operator>>(proton::decimal128&)
+proton::internal::decoder::operator>>(proton::decimal32&)
+proton::internal::decoder::operator>>(proton::decimal64&)
+proton::internal::decoder::operator>>(proton::internal::assert_type)
+proton::internal::decoder::operator>>(proton::internal::finish)
+proton::internal::decoder::operator>>(proton::internal::rewind)
+proton::internal::decoder::operator>>(proton::internal::skip)
+proton::internal::decoder::operator>>(proton::internal::start&)
+proton::internal::decoder::operator>>(proton::message_id&)
+proton::internal::decoder::operator>>(proton::scalar&)
+proton::internal::decoder::operator>>(proton::timestamp&)
+proton::internal::decoder::operator>>(proton::uuid&)
+proton::internal::decoder::operator>>(proton::value&)
+proton::internal::decoder::operator>>(short&)
+proton::internal::decoder::operator>>(signed char&)
+proton::internal::decoder::operator>>(std::string&)
+proton::internal::decoder::operator>>(unsigned char&)
+proton::internal::decoder::operator>>(unsigned int&)
+proton::internal::decoder::operator>>(unsigned long&)
+proton::internal::decoder::operator>>(unsigned short&)
+proton::internal::decoder::operator>>(wchar_t&)
+proton::internal::decoder::rewind()
+proton::internal::decoder::skip()
+proton::internal::decoder::type() const
+proton::internal::encoder::encode(char*, unsigned long&)
+proton::internal::encoder::encode(std::string&)
+proton::internal::encoder::encode()
+proton::internal::encoder::insert(proton::value const&)
+proton::internal::encoder::operator<<(bool)
+proton::internal::encoder::operator<<(double)
+proton::internal::encoder::operator<<(float)
+proton::internal::encoder::operator<<(int)
+proton::internal::encoder::operator<<(long)
+proton::internal::encoder::operator<<(proton::binary const&)
+proton::internal::encoder::operator<<(proton::decimal128)
+proton::internal::encoder::operator<<(proton::decimal32)
+proton::internal::encoder::operator<<(proton::decimal64)
+proton::internal::encoder::operator<<(proton::internal::finish const&)
+proton::internal::encoder::operator<<(proton::internal::start const&)
+proton::internal::encoder::operator<<(proton::scalar const&)
+proton::internal::encoder::operator<<(proton::symbol const&)
+proton::internal::encoder::operator<<(proton::timestamp)
+proton::internal::encoder::operator<<(proton::uuid const&)
+proton::internal::encoder::operator<<(short)
+proton::internal::encoder::operator<<(signed char)
+proton::internal::encoder::operator<<(std::string const&)
+proton::internal::encoder::operator<<(unsigned char)
+proton::internal::encoder::operator<<(unsigned int)
+proton::internal::encoder::operator<<(unsigned long)
+proton::internal::encoder::operator<<(unsigned short)
+proton::internal::encoder::operator<<(wchar_t)
+proton::internal::operator<<(std::ostream&, proton::internal::data const&)
+proton::internal::operator<<(std::ostream&, proton::internal::encoder const&)
+proton::internal::pn_ptr_base::decref(void*)
+proton::internal::pn_ptr_base::incref(void*)
+proton::internal::ssl_domain::operator=(proton::internal::ssl_domain const&)
+proton::internal::ssl_domain::ssl_domain(proton::internal::ssl_domain const&)
+proton::internal::ssl_domain::~ssl_domain()
+proton::internal::start::array(proton::type_id, bool)
+proton::internal::start::described()
+proton::internal::start::list()
+proton::internal::start::map()
+proton::internal::start::start(proton::type_id, proton::type_id, bool, unsigned long)
+
+# XXX Not sure how much of this should be exposed
+proton::io::INVALID_DESCRIPTOR
+proton::io::connect(proton::url const&)
+proton::io::error_str()
+proton::io::finalize()
+proton::io::initialize()
+
+proton::io::listener::accept(std::string&, std::string&)
+proton::io::listener::listener(std::string const&, std::string const&)
+proton::io::listener::~listener()
+
+proton::io::socket_engine::io_close()
+proton::io::socket_engine::io_read(char*, unsigned long)
+proton::io::socket_engine::io_write(char const*, unsigned long)
+proton::io::socket_engine::run()
+proton::io::socket_engine::socket_engine(long, proton::handler&, proton::connection_options const&)
+proton::io::socket_engine::socket_engine(proton::url const&, proton::handler&, proton::connection_options const&)
+proton::io::socket_engine::~socket_engine()
+
+proton::link::advance()
+proton::link::close()
+proton::link::connection() const
+proton::link::credit() const
+proton::link::detach()
+proton::link::detach_handler()
+proton::link::drained()
+proton::link::handler(proton::proton_handler&)
+proton::link::local_condition() const
+proton::link::local_source() const
+proton::link::local_target() const
+proton::link::name() const
+proton::link::open(proton::link_options const&)
+proton::link::queued()
+proton::link::receiver()
+proton::link::receiver() const
+proton::link::receiver_settle_mode()
+proton::link::receiver_settle_mode(proton::link_options::receiver_settle_mode)
+proton::link::recv(char*, unsigned long)
+proton::link::remote_condition() const
+proton::link::remote_receiver_settle_mode()
+proton::link::remote_sender_settle_mode()
+proton::link::remote_source() const
+proton::link::remote_target() const
+proton::link::sender()
+proton::link::sender() const
+proton::link::sender_settle_mode()
+proton::link::sender_settle_mode(proton::link_options::sender_settle_mode)
+proton::link::session() const
+proton::link::state() const
+proton::link::unsettled()
+proton::link::~link()
+
+proton::link_iterator::operator++()
+
+proton::link_options::browsing(bool)
+proton::link_options::delivery_mode(proton::link_options::delivery_mode)
+proton::link_options::distribution_mode(proton::terminus::distribution_mode)
+proton::link_options::durable_subscription(bool)
+proton::link_options::dynamic_address(bool)
+proton::link_options::handler(proton::handler*)
+proton::link_options::lifetime_policy(proton::link_options::lifetime_policy)
+proton::link_options::link_options()
+proton::link_options::link_options(proton::link_options const&)
+proton::link_options::local_address(std::string const&)
+proton::link_options::operator=(proton::link_options const&)
+proton::link_options::override(proton::link_options const&)
+proton::link_options::selector(std::string const&)
+proton::link_options::~link_options()
+
+proton::message::address(std::string const&)
+proton::message::address() const
+proton::message::application_properties()
+proton::message::application_properties() const
+proton::message::body()
+proton::message::body() const
+proton::message::clear()
+proton::message::content_encoding(std::string const&)
+proton::message::content_encoding() const
+proton::message::content_type(std::string const&)
+proton::message::content_type() const
+proton::message::correlation_id() const
+proton::message::correlation_id(proton::message_id const&)
+proton::message::creation_time() const
+proton::message::creation_time(proton::timestamp)
+proton::message::decode(std::vector<char, std::allocator<char> > const&)
+proton::message::delivery_annotations()
+proton::message::delivery_annotations() const
+proton::message::delivery_count() const
+proton::message::delivery_count(unsigned int)
+proton::message::durable() const
+proton::message::durable(bool)
+proton::message::encode() const
+proton::message::encode(std::vector<char, std::allocator<char> >&) const
+proton::message::expiry_time() const
+proton::message::expiry_time(proton::timestamp)
+proton::message::first_acquirer() const
+proton::message::first_acquirer(bool)
+proton::message::group_id(std::string const&)
+proton::message::group_id() const
+proton::message::group_sequence() const
+proton::message::group_sequence(int)
+proton::message::id() const
+proton::message::id(proton::message_id const&)
+proton::message::inferred() const
+proton::message::inferred(bool)
+proton::message::message()
+proton::message::message(proton::message const&)
+proton::message::message_annotations()
+proton::message::message_annotations() const
+proton::message::operator=(proton::message const&)
+proton::message::priority() const
+proton::message::priority(unsigned char)
+proton::message::reply_to(std::string const&)
+proton::message::reply_to() const
+proton::message::reply_to_group_id(std::string const&)
+proton::message::reply_to_group_id() const
+proton::message::subject(std::string const&)
+proton::message::subject() const
+proton::message::ttl() const
+proton::message::ttl(proton::duration)
+proton::message::user_id(std::string const&)
+proton::message::user_id() const
+proton::message::~message()
+
+proton::operator<(proton::scalar const&, proton::scalar const&)
+proton::operator<(proton::value const&, proton::value const&)
+proton::operator<<(std::ostream&, proton::decimal128 const&)
+proton::operator<<(std::ostream&, proton::decimal32 const&)
+proton::operator<<(std::ostream&, proton::decimal64 const&)
+proton::operator<<(std::ostream&, proton::duration)
+proton::operator<<(std::ostream&, proton::scalar const&)
+proton::operator<<(std::ostream&, proton::timestamp)
+proton::operator<<(std::ostream&, proton::type_id)
+proton::operator<<(std::ostream&, proton::url const&)
+proton::operator<<(std::ostream&, proton::uuid const&)
+proton::operator<<(std::ostream&, proton::value const&)
+proton::operator==(proton::scalar const&, proton::scalar const&)
+proton::operator==(proton::value const&, proton::value const&)
+proton::operator>>(std::istream&, proton::url&)
+
+proton::receiver::flow(int)
+proton::receiver::~receiver()
+proton::reconnect_timer::next_delay(proton::timestamp)
+proton::reconnect_timer::reconnect_timer(unsigned int, int, unsigned int, bool, int, int)
+proton::reconnect_timer::reset()
+
+proton::sasl::allow_insecure_mechs()
+proton::sasl::allow_insecure_mechs(bool)
+proton::sasl::allowed_mechs(std::string const&)
+proton::sasl::config_name(std::string const&)
+proton::sasl::config_path(std::string const&)
+proton::sasl::done(proton::sasl::outcome)
+proton::sasl::extended()
+proton::sasl::mech() const
+proton::sasl::outcome() const
+proton::sasl::user() const
+
+proton::scalar::as_double() const
+proton::scalar::as_int() const
+proton::scalar::as_string() const
+proton::scalar::as_uint() const
+proton::scalar::empty() const
+proton::scalar::get(bool&) const
+proton::scalar::get(double&) const
+proton::scalar::get(float&) const
+proton::scalar::get(int&) const
+proton::scalar::get(long&) const
+proton::scalar::get(proton::binary&) const
+proton::scalar::get(proton::decimal128&) const
+proton::scalar::get(proton::decimal32&) const
+proton::scalar::get(proton::decimal64&) const
+proton::scalar::get(proton::symbol&) const
+proton::scalar::get(proton::timestamp&) const
+proton::scalar::get(proton::uuid&) const
+proton::scalar::get(short&) const
+proton::scalar::get(signed char&) const
+proton::scalar::get(std::string&) const
+proton::scalar::get(unsigned char&) const
+proton::scalar::get(unsigned int&) const
+proton::scalar::get(unsigned long&) const
+proton::scalar::get(unsigned short&) const
+proton::scalar::get(wchar_t&) const
+proton::scalar::operator=(bool)
+proton::scalar::operator=(char const*)
+proton::scalar::operator=(double)
+proton::scalar::operator=(float)
+proton::scalar::operator=(int)
+proton::scalar::operator=(long)
+proton::scalar::operator=(proton::binary const&)
+proton::scalar::operator=(proton::decimal128 const&)
+proton::scalar::operator=(proton::decimal32 const&)
+proton::scalar::operator=(proton::decimal64 const&)
+proton::scalar::operator=(proton::scalar const&)
+proton::scalar::operator=(proton::symbol const&)
+proton::scalar::operator=(proton::timestamp)
+proton::scalar::operator=(proton::uuid const&)
+proton::scalar::operator=(short)
+proton::scalar::operator=(signed char)
+proton::scalar::operator=(std::string const&)
+proton::scalar::operator=(unsigned char)
+proton::scalar::operator=(unsigned int)
+proton::scalar::operator=(unsigned long)
+proton::scalar::operator=(unsigned short)
+proton::scalar::operator=(wchar_t)
+proton::scalar::scalar()
+proton::scalar::scalar(proton::scalar const&)
+proton::scalar::type() const
+
+proton::sender::available()
+proton::sender::offered(int)
+proton::sender::send(proton::message const&)
+proton::sender::~sender()
+
+proton::session::connection() const
+proton::session::create_receiver(std::string const&)
+proton::session::create_sender(std::string const&)
+proton::session::links() const
+proton::session::local_condition() const
+proton::session::open()
+proton::session::open_receiver(std::string const&, proton::link_options const&)
+proton::session::open_sender(std::string const&, proton::link_options const&)
+proton::session::remote_condition() const
+proton::session::state() const
+proton::session::~session()
+proton::session_iterator::operator++()
+
+proton::ssl::cipher() const
+proton::ssl::peer_hostname(std::string const&)
+proton::ssl::peer_hostname() const
+proton::ssl::protocol() const
+proton::ssl::remote_subject() const
+proton::ssl::resume_status() const
+proton::ssl::ssf() const
+
+proton::ssl_certificate::ssl_certificate(std::string const&, std::string const&)
+proton::ssl_certificate::ssl_certificate(std::string const&, std::string const&, std::string const&)
+
+proton::ssl_client_options::ssl_client_options()
+proton::ssl_client_options::ssl_client_options(proton::ssl_certificate&, std::string const&, proton::ssl::verify_mode)
+proton::ssl_client_options::ssl_client_options(std::string const&, proton::ssl::verify_mode)
+
+proton::ssl_server_options::ssl_server_options()
+proton::ssl_server_options::ssl_server_options(proton::ssl_certificate&)
+proton::ssl_server_options::ssl_server_options(proton::ssl_certificate&, std::string const&, std::string const&, proton::ssl::verify_mode)
+
+proton::swap(proton::message&, proton::message&)
+proton::swap(proton::value&, proton::value&)
+
+proton::task::cancel()
+
+proton::terminus::address(std::string const&)
+proton::terminus::address() const
+proton::terminus::distribution_mode() const
+proton::terminus::distribution_mode(proton::terminus::distribution_mode)
+proton::terminus::durability()
+proton::terminus::durability(proton::terminus::durability)
+proton::terminus::dynamic() const
+proton::terminus::dynamic(bool)
+proton::terminus::expiry_policy() const
+proton::terminus::expiry_policy(proton::terminus::expiry_policy)
+proton::terminus::filter()
+proton::terminus::filter() const
+proton::terminus::node_properties()
+proton::terminus::node_properties() const
+proton::terminus::timeout() const
+proton::terminus::timeout(unsigned int)
+proton::terminus::type() const
+proton::terminus::type(proton::terminus::type)
+
+proton::timeout_error::timeout_error(std::string const&)
+proton::timeout_error::~timeout_error()
+
+proton::timestamp::now()
+
+proton::transport::bind(proton::connection&)
+proton::transport::condition() const
+proton::transport::connection() const
+proton::transport::idle_timeout() const
+proton::transport::max_channels() const
+proton::transport::max_frame_size() const
+proton::transport::remote_idle_timeout() const
+proton::transport::remote_max_channels() const
+proton::transport::remote_max_frame_size() const
+proton::transport::sasl() const
+proton::transport::ssl() const
+proton::transport::unbind()
+
+proton::type_id_is_container(proton::type_id)
+proton::type_id_is_decimal(proton::type_id)
+proton::type_id_is_floating_point(proton::type_id)
+proton::type_id_is_integral(proton::type_id)
+proton::type_id_is_scalar(proton::type_id)
+proton::type_id_is_signed(proton::type_id)
+proton::type_id_is_signed_int(proton::type_id)
+proton::type_id_is_string_like(proton::type_id)
+proton::type_id_is_unsigned_int(proton::type_id)
+
+# XXX Why is this a free function not a member function?
+proton::type_name(proton::type_id)
+
+proton::url::defaults()
+proton::url::empty() const
+proton::url::host(std::string const&)
+proton::url::host() const
+proton::url::host_port() const
+proton::url::operator=(proton::url const&)
+proton::url::parse(char const*)
+proton::url::parse(std::string const&)
+proton::url::password(std::string const&)
+proton::url::password() const
+proton::url::path(std::string const&)
+proton::url::path() const
+proton::url::port(std::string const&)
+proton::url::port() const
+proton::url::port_int() const
+proton::url::scheme(std::string const&)
+proton::url::scheme() const
+proton::url::str() const
+proton::url::url()
+proton::url::url(char const*, bool)
+proton::url::url(proton::url const&)
+proton::url::url(std::string const&, bool)
+proton::url::username(std::string const&)
+proton::url::username() const
+proton::url::~url()
+
+proton::url_error::url_error(std::string const&)
+proton::url_error::~url_error()
+
+proton::uuid::make(char const*)
+proton::uuid::random()
+proton::uuid::str() const
+
+proton::value::as_double() const
+proton::value::as_int() const
+proton::value::as_string() const
+proton::value::as_uint() const
+proton::value::clear()
+proton::value::decode() const
+proton::value::empty() const
+proton::value::encode()
+proton::value::operator=(proton::value const&)
+proton::value::type() const
+proton::value::value()
+proton::value::value(pn_data_t*)
+proton::value::value(proton::value const&)
+
+# Only types with the following info can be thrown across shared abject boundary
+# Or correctly dynamically cast by user
+typeinfo for proton::connection
+typeinfo for proton::connection_engine
+typeinfo for proton::connection_engine::io_error
+typeinfo for proton::conversion_error
+typeinfo for proton::endpoint
+typeinfo for proton::error
+typeinfo for proton::handler
+typeinfo for proton::link
+typeinfo for proton::receiver
+typeinfo for proton::sender
+typeinfo for proton::session
+typeinfo for proton::timeout_error
+typeinfo for proton::url_error
+typeinfo name for proton::connection
+typeinfo name for proton::connection_engine
+typeinfo name for proton::connection_engine::io_error
+typeinfo name for proton::conversion_error
+typeinfo name for proton::endpoint
+typeinfo name for proton::error
+typeinfo name for proton::handler
+typeinfo name for proton::link
+typeinfo name for proton::receiver
+typeinfo name for proton::sender
+typeinfo name for proton::session
+typeinfo name for proton::timeout_error
+typeinfo name for proton::url_error
+vtable for proton::connection
+vtable for proton::connection_engine
+vtable for proton::connection_engine::io_error
+vtable for proton::conversion_error
+vtable for proton::endpoint
+vtable for proton::error
+vtable for proton::handler
+vtable for proton::link
+vtable for proton::receiver
+vtable for proton::sender
+vtable for proton::session
+vtable for proton::timeout_error
+vtable for proton::url_error

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4234d3df/tools/check_abi/README.md
----------------------------------------------------------------------
diff --git a/tools/check_abi/README.md b/tools/check_abi/README.md
new file mode 100644
index 0000000..d9865c3
--- /dev/null
+++ b/tools/check_abi/README.md
@@ -0,0 +1,9 @@
+This is a tool for looking at the ELF symbols exported by a C/C++ shared library.
+
+Currently it has some rough edges, but it will take a file of expected symbols and
+tell you the difference from what is ewxpected.
+
+Currently you also need to compile the C++ programs in the same directory to support the script
+
+Besides the compiled programs in this directory it also relies on GNU nm to extract the symbols
+and some standard POSIX utilities for text manipulation.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4234d3df/tools/check_abi/check-abi
----------------------------------------------------------------------
diff --git a/tools/check_abi/check-abi b/tools/check_abi/check-abi
new file mode 100755
index 0000000..72f5f97
--- /dev/null
+++ b/tools/check_abi/check-abi
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+#
+# 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.
+#
+
+MKTEMP="mktemp /tmp/tmp.XXXXXXXXXX"
+
+rc=0
+syms_desired=$($MKTEMP)
+syms_library=$($MKTEMP)
+syms_missing=$($MKTEMP)
+syms_extra=$($MKTEMP)
+
+trap 'rm $syms_desired $syms_library $syms_missing $syms_extra' EXIT
+
+if [[ $# -lt 2 ]] ; then
+  echo "Usage:"
+  echo "check_abi object_file expected_symbols_file"
+  exit 1;
+fi
+
+LC_ALL=C
+export LC_ALL
+
+# Extract exported symbols from library
+nm -DC --defined-only -f s $1 | cut -f1 -d'|' -s | sed -e "$(./cppabi)" -e "s/ *$//" | sort -u > $syms_library
+
+# Process API syms (substitute in some typedefs etc.)
+sed -e "
+    $(./expand_types)
+    /^\$/d
+    /^#.*\$/d
+" $2 | sort -u > $syms_desired
+
+comm -23 $syms_desired $syms_library > $syms_missing
+comm -13 $syms_desired $syms_library > $syms_extra
+
+if [[ -n "$(cat $syms_missing)" ]] ; then
+  (echo "Not exported from library (should be)"
+   echo "====================================="
+   cat $syms_missing ) 1>&2
+   rc=1
+fi
+
+
+if [[ -n "$(cat $syms_extra)" ]]; then
+  (echo "Exported by library but not in spec"
+   echo "==================================="
+   cat $syms_extra ) 1>&2
+fi
+
+exit $rc

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4234d3df/tools/check_abi/cppabi.cpp
----------------------------------------------------------------------
diff --git a/tools/check_abi/cppabi.cpp b/tools/check_abi/cppabi.cpp
new file mode 100644
index 0000000..5767d60
--- /dev/null
+++ b/tools/check_abi/cppabi.cpp
@@ -0,0 +1,32 @@
+/*
+ *
+ * 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.
+ *
+ */
+#include <cxxabi.h>
+
+#include <iostream>
+
+int main() {
+#if _GLIBCXX_USE_CXX11_ABI
+  std::cout << "s/\\[abi:cxx11\\]//";
+  return 0;
+#else
+  return 1;
+#endif
+}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/4234d3df/tools/check_abi/expand_types.cpp
----------------------------------------------------------------------
diff --git a/tools/check_abi/expand_types.cpp b/tools/check_abi/expand_types.cpp
new file mode 100644
index 0000000..94e78fb
--- /dev/null
+++ b/tools/check_abi/expand_types.cpp
@@ -0,0 +1,54 @@
+/*
+ *
+ * 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.
+ *
+ */
+#include <stdint.h>
+#include <stdlib.h>
+#include <cxxabi.h>
+#include <iostream>
+#include <string>
+#include <typeinfo>
+
+void print_type(const char* type, const char* mangled_type)
+{
+  int status;
+  char* demangled_type =
+    abi::__cxa_demangle(mangled_type, 0, 0, &status);
+  if (demangled_type) {
+    std::cout << "s/" << type << "/" << demangled_type << "/g\n";
+  } 
+  ::free(demangled_type);
+}
+
+#define mangle_name(x) typeid(x).name()
+
+#define print_subst(x) print_type(#x, mangle_name(x))
+
+int main() {
+  print_subst(uint64_t);
+  print_subst(uint32_t);
+  print_subst(uint16_t);
+  print_subst(uint8_t);
+  print_subst(size_t);
+  print_subst(int64_t);
+  print_subst(int32_t);
+  print_subst(int16_t);
+  print_subst(int8_t);
+  print_subst(std::string);
+}


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