From 2d0338895a2d3629b674f4a3aabea58c77f76504 Mon Sep 17 00:00:00 2001 From: Ted Ross Date: Tue, 17 May 2011 21:02:34 +0000 Subject: QPID-3186 - Import Export generalization to support a larger set of compilers and run time environments git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1104559 13f79535-47bb-0310-9956-ffa450edef68 --- qpid/cpp/include/qmf/Agent.h | 2 +- qpid/cpp/include/qmf/AgentEvent.h | 2 +- qpid/cpp/include/qmf/AgentSession.h | 2 +- qpid/cpp/include/qmf/ConsoleEvent.h | 2 +- qpid/cpp/include/qmf/ConsoleSession.h | 2 +- qpid/cpp/include/qmf/Data.h | 2 +- qpid/cpp/include/qmf/DataAddr.h | 2 +- qpid/cpp/include/qmf/Handle.h | 10 +-- qpid/cpp/include/qmf/ImportExport.h | 16 ++--- qpid/cpp/include/qmf/Query.h | 2 +- qpid/cpp/include/qmf/Schema.h | 2 +- qpid/cpp/include/qmf/SchemaId.h | 2 +- qpid/cpp/include/qmf/SchemaMethod.h | 2 +- qpid/cpp/include/qmf/SchemaProperty.h | 2 +- qpid/cpp/include/qmf/Subscription.h | 2 +- .../cpp/include/qmf/engine/QmfEngineImportExport.h | 9 +++ qpid/cpp/include/qmf/exceptions.h | 8 +-- qpid/cpp/include/qpid/Address.h | 2 +- qpid/cpp/include/qpid/CommonImportExport.h | 14 +++-- qpid/cpp/include/qpid/Exception.h | 12 ++-- qpid/cpp/include/qpid/ImportExport.h | 71 ++++++++++++++++++++++ qpid/cpp/include/qpid/Url.h | 2 +- qpid/cpp/include/qpid/agent/QmfAgentImportExport.h | 16 ++--- qpid/cpp/include/qpid/client/ClientImportExport.h | 14 +++-- qpid/cpp/include/qpid/client/Completion.h | 2 +- qpid/cpp/include/qpid/client/Connection.h | 2 +- qpid/cpp/include/qpid/client/ConnectionSettings.h | 2 +- qpid/cpp/include/qpid/client/FailoverListener.h | 2 +- qpid/cpp/include/qpid/client/FailoverManager.h | 2 +- qpid/cpp/include/qpid/client/Future.h | 2 +- qpid/cpp/include/qpid/client/FutureResult.h | 2 +- qpid/cpp/include/qpid/client/Handle.h | 10 +-- qpid/cpp/include/qpid/client/LocalQueue.h | 2 +- qpid/cpp/include/qpid/client/Message.h | 2 +- qpid/cpp/include/qpid/client/MessageListener.h | 2 +- .../cpp/include/qpid/client/MessageReplayTracker.h | 2 +- qpid/cpp/include/qpid/client/QueueOptions.h | 2 +- qpid/cpp/include/qpid/client/SessionBase_0_10.h | 2 +- qpid/cpp/include/qpid/client/Subscription.h | 8 +-- qpid/cpp/include/qpid/client/SubscriptionManager.h | 2 +- qpid/cpp/include/qpid/console/Agent.h | 14 ++--- qpid/cpp/include/qpid/console/Broker.h | 16 ++--- .../cpp/include/qpid/console/ConsoleImportExport.h | 14 +++-- qpid/cpp/include/qpid/framing/Array.h | 26 ++++---- qpid/cpp/include/qpid/framing/Buffer.h | 16 ++--- qpid/cpp/include/qpid/framing/FieldTable.h | 4 +- qpid/cpp/include/qpid/framing/FieldValue.h | 8 +-- qpid/cpp/include/qpid/framing/List.h | 24 ++++---- qpid/cpp/include/qpid/framing/ProtocolVersion.h | 12 ++-- qpid/cpp/include/qpid/framing/SequenceNumber.h | 2 +- qpid/cpp/include/qpid/framing/SequenceSet.h | 2 +- qpid/cpp/include/qpid/framing/StructHelper.h | 2 +- qpid/cpp/include/qpid/framing/Uuid.h | 10 +-- qpid/cpp/include/qpid/log/Logger.h | 4 +- .../cpp/include/qpid/management/ManagementObject.h | 18 +++--- qpid/cpp/include/qpid/messaging/Address.h | 2 +- qpid/cpp/include/qpid/messaging/Connection.h | 2 +- qpid/cpp/include/qpid/messaging/Duration.h | 6 +- qpid/cpp/include/qpid/messaging/FailoverUpdates.h | 2 +- qpid/cpp/include/qpid/messaging/Handle.h | 10 +-- qpid/cpp/include/qpid/messaging/ImportExport.h | 14 +++-- qpid/cpp/include/qpid/messaging/Message.h | 22 +++---- qpid/cpp/include/qpid/messaging/Receiver.h | 2 +- qpid/cpp/include/qpid/messaging/Sender.h | 2 +- qpid/cpp/include/qpid/messaging/Session.h | 2 +- qpid/cpp/include/qpid/messaging/exceptions.h | 42 ++++++------- qpid/cpp/include/qpid/sys/IntegerTypes.h | 2 +- qpid/cpp/include/qpid/sys/Runnable.h | 2 +- qpid/cpp/include/qpid/sys/Time.h | 2 +- qpid/cpp/include/qpid/types/Exception.h | 2 +- qpid/cpp/include/qpid/types/ImportExport.h | 14 +++-- qpid/cpp/include/qpid/types/Uuid.h | 2 +- qpid/cpp/include/qpid/types/Variant.h | 4 +- qpid/cpp/rubygen/0-10/specification.rb | 2 +- qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb | 2 +- qpid/cpp/rubygen/cppgen.rb | 3 + .../framing.0-10/MethodBodyDefaultVisitor.rb | 2 +- qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb | 2 +- qpid/cpp/rubygen/framing.0-10/Proxy.rb | 4 +- qpid/cpp/rubygen/framing.0-10/Session.rb | 4 +- qpid/cpp/rubygen/framing.0-10/structs.rb | 2 +- qpid/cpp/src/Makefile.am | 1 + qpid/cpp/src/qpid/amqp_0_10/SessionHandler.h | 4 +- qpid/cpp/src/qpid/broker/BrokerImportExport.h | 23 ++++--- qpid/cpp/src/qpid/broker/DeliverableMessage.h | 2 +- qpid/cpp/src/qpid/broker/Exchange.h | 4 +- qpid/cpp/src/qpid/broker/ExpiryPolicy.h | 2 +- qpid/cpp/src/qpid/broker/MessageBuilder.h | 2 +- qpid/cpp/src/qpid/broker/NullMessageStore.h | 2 +- qpid/cpp/src/qpid/broker/PersistableMessage.h | 8 +-- qpid/cpp/src/qpid/broker/TopicExchange.h | 2 +- qpid/cpp/src/qpid/broker/TxPublish.h | 2 +- qpid/cpp/src/qpid/framing/AMQBody.h | 2 +- qpid/cpp/src/qpid/framing/AMQContentBody.h | 12 ++-- qpid/cpp/src/qpid/framing/AMQFrame.h | 2 +- qpid/cpp/src/qpid/framing/AMQHeaderBody.h | 2 +- qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h | 2 +- qpid/cpp/src/qpid/framing/TransferContent.h | 2 +- qpid/cpp/src/qpid/log/windows/SinkOptions.h | 2 +- qpid/cpp/src/qpid/sys/AggregateOutput.h | 2 +- qpid/cpp/src/qpid/sys/AsynchIOHandler.h | 2 +- qpid/cpp/src/qpid/sys/Poller.h | 2 +- qpid/cpp/src/qpid/sys/Socket.h | 4 +- 103 files changed, 383 insertions(+), 276 deletions(-) create mode 100644 qpid/cpp/include/qpid/ImportExport.h diff --git a/qpid/cpp/include/qmf/Agent.h b/qpid/cpp/include/qmf/Agent.h index 8c0f48b8b1..94083be4f3 100644 --- a/qpid/cpp/include/qmf/Agent.h +++ b/qpid/cpp/include/qmf/Agent.h @@ -42,7 +42,7 @@ namespace qmf { class SchemaId; class Schema; - class Agent : public qmf::Handle { + class QMF_CLASS_EXTERN Agent : public qmf::Handle { public: QMF_EXTERN Agent(AgentImpl* impl = 0); QMF_EXTERN Agent(const Agent&); diff --git a/qpid/cpp/include/qmf/AgentEvent.h b/qpid/cpp/include/qmf/AgentEvent.h index 59a41c3267..0f93a9bb0a 100644 --- a/qpid/cpp/include/qmf/AgentEvent.h +++ b/qpid/cpp/include/qmf/AgentEvent.h @@ -46,7 +46,7 @@ namespace qmf { AGENT_THREAD_FAILED = 8 }; - class AgentEvent : public qmf::Handle { + class QMF_CLASS_EXTERN AgentEvent : public qmf::Handle { public: QMF_EXTERN AgentEvent(AgentEventImpl* impl = 0); QMF_EXTERN AgentEvent(const AgentEvent&); diff --git a/qpid/cpp/include/qmf/AgentSession.h b/qpid/cpp/include/qmf/AgentSession.h index 39d921a8ec..1eeb252143 100644 --- a/qpid/cpp/include/qmf/AgentSession.h +++ b/qpid/cpp/include/qmf/AgentSession.h @@ -40,7 +40,7 @@ namespace qmf { class Data; class DataAddr; - class AgentSession : public qmf::Handle { + class QMF_CLASS_EXTERN AgentSession : public qmf::Handle { public: QMF_EXTERN AgentSession(AgentSessionImpl* impl = 0); QMF_EXTERN AgentSession(const AgentSession&); diff --git a/qpid/cpp/include/qmf/ConsoleEvent.h b/qpid/cpp/include/qmf/ConsoleEvent.h index b836b629af..94600f9357 100644 --- a/qpid/cpp/include/qmf/ConsoleEvent.h +++ b/qpid/cpp/include/qmf/ConsoleEvent.h @@ -57,7 +57,7 @@ namespace qmf { AGENT_DEL_FILTER = 2 }; - class ConsoleEvent : public qmf::Handle { + class QMF_CLASS_EXTERN ConsoleEvent : public qmf::Handle { public: QMF_EXTERN ConsoleEvent(ConsoleEventImpl* impl = 0); QMF_EXTERN ConsoleEvent(const ConsoleEvent&); diff --git a/qpid/cpp/include/qmf/ConsoleSession.h b/qpid/cpp/include/qmf/ConsoleSession.h index 896f8ffda7..6008036eec 100644 --- a/qpid/cpp/include/qmf/ConsoleSession.h +++ b/qpid/cpp/include/qmf/ConsoleSession.h @@ -38,7 +38,7 @@ namespace qmf { class ConsoleSessionImpl; class ConsoleEvent; - class ConsoleSession : public qmf::Handle { + class QMF_CLASS_EXTERN ConsoleSession : public qmf::Handle { public: QMF_EXTERN ConsoleSession(ConsoleSessionImpl* impl = 0); QMF_EXTERN ConsoleSession(const ConsoleSession&); diff --git a/qpid/cpp/include/qmf/Data.h b/qpid/cpp/include/qmf/Data.h index 82f1569a0b..487a02fe95 100644 --- a/qpid/cpp/include/qmf/Data.h +++ b/qpid/cpp/include/qmf/Data.h @@ -39,7 +39,7 @@ namespace qmf { class DataAddr; class Agent; - class Data : public qmf::Handle { + class QMF_CLASS_EXTERN Data : public qmf::Handle { public: QMF_EXTERN Data(DataImpl* impl = 0); QMF_EXTERN Data(const Data&); diff --git a/qpid/cpp/include/qmf/DataAddr.h b/qpid/cpp/include/qmf/DataAddr.h index 72de0c986a..63d309cc4b 100644 --- a/qpid/cpp/include/qmf/DataAddr.h +++ b/qpid/cpp/include/qmf/DataAddr.h @@ -34,7 +34,7 @@ namespace qmf { class DataAddrImpl; - class DataAddr : public qmf::Handle { + class QMF_CLASS_EXTERN DataAddr : public qmf::Handle { public: QMF_EXTERN DataAddr(DataAddrImpl* impl = 0); QMF_EXTERN DataAddr(const DataAddr&); diff --git a/qpid/cpp/include/qmf/Handle.h b/qpid/cpp/include/qmf/Handle.h index 510e2993aa..50971ea626 100644 --- a/qpid/cpp/include/qmf/Handle.h +++ b/qpid/cpp/include/qmf/Handle.h @@ -39,22 +39,22 @@ template class Handle { public: /**@return true if handle is valid, i.e. not null. */ - QMF_EXTERN bool isValid() const { return impl; } + QMF_INLINE_EXTERN bool isValid() const { return impl; } /**@return true if handle is null. It is an error to call any function on a null handle. */ - QMF_EXTERN bool isNull() const { return !impl; } + QMF_INLINE_EXTERN bool isNull() const { return !impl; } /** Conversion to bool supports idiom if (handle) { handle->... } */ - QMF_EXTERN operator bool() const { return impl; } + QMF_INLINE_EXTERN operator bool() const { return impl; } /** Operator ! supports idiom if (!handle) { do_if_handle_is_null(); } */ - QMF_EXTERN bool operator !() const { return !impl; } + QMF_INLINE_EXTERN bool operator !() const { return !impl; } void swap(Handle& h) { T* t = h.impl; h.impl = impl; impl = t; } protected: typedef T Impl; - QMF_EXTERN Handle() :impl() {} + QMF_INLINE_EXTERN Handle() :impl() {} // Not implemented,subclasses must implement. QMF_EXTERN Handle(const Handle&); diff --git a/qpid/cpp/include/qmf/ImportExport.h b/qpid/cpp/include/qmf/ImportExport.h index f5e1d9127c..7405c15259 100644 --- a/qpid/cpp/include/qmf/ImportExport.h +++ b/qpid/cpp/include/qmf/ImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) -# if defined(QMF_EXPORT) || defined (qmfcommon_EXPORTS) -# define QMF_EXTERN __declspec(dllexport) -# else -# define QMF_EXTERN __declspec(dllimport) -# endif +#include "qpid/ImportExport.h" + +#if defined(QMF_EXPORT) || defined (qmf2_EXPORTS) +# define QMF_EXTERN QPID_EXPORT +# define QMF_CLASS_EXTERN QPID_CLASS_EXPORT +# define QMF_INLINE_EXTERN QPID_INLINE_EXPORT #else -# define QMF_EXTERN +# define QMF_EXTERN QPID_IMPORT +# define QMF_CLASS_EXTERN QPID_CLASS_IMPORT +# define QMF_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif diff --git a/qpid/cpp/include/qmf/Query.h b/qpid/cpp/include/qmf/Query.h index 1867b59d81..c1264f8901 100644 --- a/qpid/cpp/include/qmf/Query.h +++ b/qpid/cpp/include/qmf/Query.h @@ -43,7 +43,7 @@ namespace qmf { QUERY_SCHEMA_ID = 4 }; - class Query : public qmf::Handle { + class QMF_CLASS_EXTERN Query : public qmf::Handle { public: QMF_EXTERN Query(QueryImpl* impl = 0); QMF_EXTERN Query(const Query&); diff --git a/qpid/cpp/include/qmf/Schema.h b/qpid/cpp/include/qmf/Schema.h index cf316138c1..6cfd2e2a56 100644 --- a/qpid/cpp/include/qmf/Schema.h +++ b/qpid/cpp/include/qmf/Schema.h @@ -38,7 +38,7 @@ namespace qmf { class SchemaProperty; class SchemaMethod; - class Schema : public qmf::Handle { + class QMF_CLASS_EXTERN Schema : public qmf::Handle { public: QMF_EXTERN Schema(SchemaImpl* impl = 0); QMF_EXTERN Schema(const Schema&); diff --git a/qpid/cpp/include/qmf/SchemaId.h b/qpid/cpp/include/qmf/SchemaId.h index 13fb1cb902..2dafc1c091 100644 --- a/qpid/cpp/include/qmf/SchemaId.h +++ b/qpid/cpp/include/qmf/SchemaId.h @@ -35,7 +35,7 @@ namespace qmf { class SchemaIdImpl; - class SchemaId : public qmf::Handle { + class QMF_CLASS_EXTERN SchemaId : public qmf::Handle { public: QMF_EXTERN SchemaId(SchemaIdImpl* impl = 0); QMF_EXTERN SchemaId(const SchemaId&); diff --git a/qpid/cpp/include/qmf/SchemaMethod.h b/qpid/cpp/include/qmf/SchemaMethod.h index 47302b62b9..b5944dc29e 100644 --- a/qpid/cpp/include/qmf/SchemaMethod.h +++ b/qpid/cpp/include/qmf/SchemaMethod.h @@ -36,7 +36,7 @@ namespace qmf { class SchemaMethodImpl; class SchemaProperty; - class SchemaMethod : public qmf::Handle { + class QMF_CLASS_EXTERN SchemaMethod : public qmf::Handle { public: QMF_EXTERN SchemaMethod(SchemaMethodImpl* impl = 0); QMF_EXTERN SchemaMethod(const SchemaMethod&); diff --git a/qpid/cpp/include/qmf/SchemaProperty.h b/qpid/cpp/include/qmf/SchemaProperty.h index a3a328b60b..bbb603fa50 100644 --- a/qpid/cpp/include/qmf/SchemaProperty.h +++ b/qpid/cpp/include/qmf/SchemaProperty.h @@ -36,7 +36,7 @@ namespace qmf { class SchemaPropertyImpl; - class SchemaProperty : public Handle { + class QMF_CLASS_EXTERN SchemaProperty : public Handle { public: QMF_EXTERN SchemaProperty(SchemaPropertyImpl* impl = 0); QMF_EXTERN SchemaProperty(const SchemaProperty&); diff --git a/qpid/cpp/include/qmf/Subscription.h b/qpid/cpp/include/qmf/Subscription.h index 0a01b7c526..398a45b922 100644 --- a/qpid/cpp/include/qmf/Subscription.h +++ b/qpid/cpp/include/qmf/Subscription.h @@ -35,7 +35,7 @@ namespace qmf { class SubscriptionImpl; class Data; - class Subscription : public qmf::Handle { + class QMF_CLASS_EXTERN Subscription : public qmf::Handle { public: QMF_EXTERN Subscription(SubscriptionImpl* impl = 0); QMF_EXTERN Subscription(const Subscription&); diff --git a/qpid/cpp/include/qmf/engine/QmfEngineImportExport.h b/qpid/cpp/include/qmf/engine/QmfEngineImportExport.h index 373617e046..cf8fffdb17 100644 --- a/qpid/cpp/include/qmf/engine/QmfEngineImportExport.h +++ b/qpid/cpp/include/qmf/engine/QmfEngineImportExport.h @@ -26,8 +26,17 @@ # else # define QMFE_EXTERN __declspec(dllimport) # endif +# ifdef _MSC_VER +# define QMFE_CLASS_EXTERN +# define QMFE_INLINE_EXTERN QMFE_EXTERN +# else +# define QMFE_CLASS_EXTERN QMFE_EXTERN +# define QMFE_INLINE_EXTERN +# endif #else # define QMFE_EXTERN +# define QMFE_CLASS_EXTERN +# define QMFE_INLINE_EXTERN #endif #endif diff --git a/qpid/cpp/include/qmf/exceptions.h b/qpid/cpp/include/qmf/exceptions.h index 7959499d63..c7ffa68ce2 100644 --- a/qpid/cpp/include/qmf/exceptions.h +++ b/qpid/cpp/include/qmf/exceptions.h @@ -31,24 +31,24 @@ namespace qmf { /** \ingroup qmf */ - struct QmfException : public qpid::types::Exception { + struct QMF_CLASS_EXTERN QmfException : public qpid::types::Exception { QMF_EXTERN QmfException(const std::string& msg); QMF_EXTERN virtual ~QmfException() throw(); qpid::types::Variant::Map detail; }; - struct KeyNotFound : public QmfException { + struct QMF_CLASS_EXTERN KeyNotFound : public QmfException { QMF_EXTERN KeyNotFound(const std::string& msg); QMF_EXTERN virtual ~KeyNotFound() throw(); }; - struct IndexOutOfRange : public QmfException { + struct QMF_CLASS_EXTERN IndexOutOfRange : public QmfException { QMF_EXTERN IndexOutOfRange(); QMF_EXTERN virtual ~IndexOutOfRange() throw(); }; - struct OperationTimedOut : public QmfException { + struct QMF_CLASS_EXTERN OperationTimedOut : public QmfException { QMF_EXTERN OperationTimedOut(); QMF_EXTERN virtual ~OperationTimedOut() throw(); }; diff --git a/qpid/cpp/include/qpid/Address.h b/qpid/cpp/include/qpid/Address.h index 57c9139f87..f5b19d0532 100755 --- a/qpid/cpp/include/qpid/Address.h +++ b/qpid/cpp/include/qpid/Address.h @@ -36,7 +36,7 @@ public: static const std::string TCP; // Default TCP protocol tag. static const uint16_t AMQP_PORT=5672; // Default AMQP port. - QPID_COMMON_EXTERN explicit Address( + QPID_COMMON_INLINE_EXTERN explicit Address( const std::string& protocol_=std::string(), const std::string& host_=std::string(), uint16_t port_=0 diff --git a/qpid/cpp/include/qpid/CommonImportExport.h b/qpid/cpp/include/qpid/CommonImportExport.h index 02c06ed7af..dd2b900b73 100644 --- a/qpid/cpp/include/qpid/CommonImportExport.h +++ b/qpid/cpp/include/qpid/CommonImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) +#include "qpid/ImportExport.h" + #if defined(COMMON_EXPORT) || defined (qpidcommon_EXPORTS) -#define QPID_COMMON_EXTERN __declspec(dllexport) -#else -#define QPID_COMMON_EXTERN __declspec(dllimport) -#endif +# define QPID_COMMON_EXTERN QPID_EXPORT +# define QPID_COMMON_CLASS_EXTERN QPID_CLASS_EXPORT +# define QPID_COMMON_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QPID_COMMON_EXTERN +# define QPID_COMMON_EXTERN QPID_IMPORT +# define QPID_COMMON_CLASS_EXTERN QPID_CLASS_IMPORT +# define QPID_COMMON_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif diff --git a/qpid/cpp/include/qpid/Exception.h b/qpid/cpp/include/qpid/Exception.h index fa7111160c..cbd175214d 100644 --- a/qpid/cpp/include/qpid/Exception.h +++ b/qpid/cpp/include/qpid/Exception.h @@ -36,7 +36,7 @@ namespace qpid /** * Base class for Qpid runtime exceptions. */ -class Exception : public std::exception +class QPID_COMMON_CLASS_EXTERN Exception : public std::exception { public: QPID_COMMON_EXTERN explicit Exception(const std::string& message=std::string()) throw(); @@ -51,30 +51,30 @@ class Exception : public std::exception }; /** Exception that includes an errno message. */ -struct ErrnoException : public Exception { +struct QPID_COMMON_CLASS_EXTERN ErrnoException : public Exception { ErrnoException(const std::string& msg, int err) : Exception(msg+": "+qpid::sys::strError(err)) {} ErrnoException(const std::string& msg) : Exception(msg+": "+qpid::sys::strError(errno)) {} }; -struct SessionException : public Exception { +struct QPID_COMMON_CLASS_EXTERN SessionException : public Exception { const framing::execution::ErrorCode code; SessionException(framing::execution::ErrorCode code_, const std::string& message) : Exception(message), code(code_) {} }; -struct ChannelException : public Exception { +struct QPID_COMMON_CLASS_EXTERN ChannelException : public Exception { const framing::session::DetachCode code; ChannelException(framing::session::DetachCode _code, const std::string& message) : Exception(message), code(_code) {} }; -struct ConnectionException : public Exception { +struct QPID_COMMON_CLASS_EXTERN ConnectionException : public Exception { const framing::connection::CloseCode code; ConnectionException(framing::connection::CloseCode _code, const std::string& message) : Exception(message), code(_code) {} }; -struct ClosedException : public Exception { +struct QPID_COMMON_CLASS_EXTERN ClosedException : public Exception { QPID_COMMON_EXTERN ClosedException(const std::string& msg=std::string()); QPID_COMMON_EXTERN std::string getPrefix() const; }; diff --git a/qpid/cpp/include/qpid/ImportExport.h b/qpid/cpp/include/qpid/ImportExport.h new file mode 100644 index 0000000000..e62399faf7 --- /dev/null +++ b/qpid/cpp/include/qpid/ImportExport.h @@ -0,0 +1,71 @@ +#ifndef QPID_IMPORTEXPORT_H +#define QPID_IMPORTEXPORT_H + +/* + * 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. + */ + +// +// This header file defines the following macros for the control of library/DLL +// import and export: +// +// QPID_EXPORT - Export declaration for Methods +// QPID_CLASS_EXPORT - Export declaration for Classes +// QPID_INLINE_EXPORT - Export declaration for Inline methods +// +// QPID_IMPORT - Import declaration for Methods +// QPID_CLASS_IMPORT - Import declaration for Classes +// QPID_INLINE_IMPORT - Import declaration for Inline methods +// + +#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) + // + // Import and Export definitions for Windows: + // +# define QPID_EXPORT __declspec(dllexport) +# define QPID_IMPORT __declspec(dllimport) +# ifdef _MSC_VER + // + // Specific to the Microsoft compiler: + // +# define QPID_CLASS_EXPORT +# define QPID_CLASS_IMPORT +# define QPID_INLINE_EXPORT QPID_EXPORT +# define QPID_INLINE_IMPORT QPID_IMPORT +# else + // + // Specific to non-Microsoft compilers (mingw32): + // +# define QPID_CLASS_EXPORT QPID_EXPORT +# define QPID_CLASS_IMPORT QPID_IMPORT +# define QPID_INLINE_EXPORT +# define QPID_INLINE_IMPORT +# endif +#else + // + // Non-Windows (Linux, etc.) definitions: + // +# define QPID_EXPORT +# define QPID_IMPORT +# define QPID_CLASS_EXPORT +# define QPID_CLASS_IMPORT +# define QPID_INLINE_EXPORT +# define QPID_INLINE_IMPORT +#endif + +#endif /*!QPID_IMPORTEXPORT_H*/ diff --git a/qpid/cpp/include/qpid/Url.h b/qpid/cpp/include/qpid/Url.h index 353e9d5599..915b08ac5f 100644 --- a/qpid/cpp/include/qpid/Url.h +++ b/qpid/cpp/include/qpid/Url.h @@ -66,7 +66,7 @@ struct Url : public std::vector
{ *@exception Invalid if the url is invalid. */ QPID_COMMON_EXTERN void parse(const char* url); - QPID_COMMON_EXTERN void parse(const std::string& url) { parse(url.c_str()); } + QPID_COMMON_INLINE_EXTERN void parse(const std::string& url) { parse(url.c_str()); } /** Replace contesnts with parsed URL. Replace with empty URL if invalid. */ QPID_COMMON_EXTERN void parseNoThrow(const char* url); diff --git a/qpid/cpp/include/qpid/agent/QmfAgentImportExport.h b/qpid/cpp/include/qpid/agent/QmfAgentImportExport.h index e41425a7ba..3f923ac4b2 100644 --- a/qpid/cpp/include/qpid/agent/QmfAgentImportExport.h +++ b/qpid/cpp/include/qpid/agent/QmfAgentImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) -#if defined (qmf_EXPORTS) -#define QMF_AGENT_EXTERN __declspec(dllexport) -#else -#define QMF_AGENT_EXTERN __declspec(dllimport) -#endif +#include "qpid/ImportExport.h" + +#if defined(QMF_EXPORT) || defined (qmf_EXPORTS) +# define QMF_AGENT_EXTERN QPID_EXPORT +# define QMF_AGENT_CLASS_EXTERN QPID_CLASS_EXPORT +# define QMF_AGENT_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QMF_AGENT_EXTERN +# define QMF_AGENT_EXTERN QPID_IMPORT +# define QMF_AGENT_CLASS_EXTERN QPID_CLASS_IMPORT +# define QMF_AGENT_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif diff --git a/qpid/cpp/include/qpid/client/ClientImportExport.h b/qpid/cpp/include/qpid/client/ClientImportExport.h index 42b02e33c3..2a3a5a52e9 100644 --- a/qpid/cpp/include/qpid/client/ClientImportExport.h +++ b/qpid/cpp/include/qpid/client/ClientImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) +#include "qpid/ImportExport.h" + #if defined(CLIENT_EXPORT) || defined (qpidclient_EXPORTS) -#define QPID_CLIENT_EXTERN __declspec(dllexport) -#else -#define QPID_CLIENT_EXTERN __declspec(dllimport) -#endif +# define QPID_CLIENT_EXTERN QPID_EXPORT +# define QPID_CLIENT_CLASS_EXTERN QPID_CLASS_EXPORT +# define QPID_CLIENT_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QPID_CLIENT_EXTERN +# define QPID_CLIENT_EXTERN QPID_IMPORT +# define QPID_CLIENT_CLASS_EXTERN QPID_CLASS_IMPORT +# define QPID_CLIENT_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif diff --git a/qpid/cpp/include/qpid/client/Completion.h b/qpid/cpp/include/qpid/client/Completion.h index 99d940f031..9546db9258 100644 --- a/qpid/cpp/include/qpid/client/Completion.h +++ b/qpid/cpp/include/qpid/client/Completion.h @@ -41,7 +41,7 @@ template class PrivateImplRef; * *\ingroup clientapi */ -class Completion : public Handle +class QPID_CLIENT_CLASS_EXTERN Completion : public Handle { public: QPID_CLIENT_EXTERN Completion(CompletionImpl* = 0); diff --git a/qpid/cpp/include/qpid/client/Connection.h b/qpid/cpp/include/qpid/client/Connection.h index 6ed0d98bc0..2477bf4800 100644 --- a/qpid/cpp/include/qpid/client/Connection.h +++ b/qpid/cpp/include/qpid/client/Connection.h @@ -60,7 +60,7 @@ class ConnectionImpl; * */ -class Connection +class QPID_CLIENT_CLASS_EXTERN Connection { framing::ProtocolVersion version; diff --git a/qpid/cpp/include/qpid/client/ConnectionSettings.h b/qpid/cpp/include/qpid/client/ConnectionSettings.h index 1c2ee28b1b..2b6b86f891 100644 --- a/qpid/cpp/include/qpid/client/ConnectionSettings.h +++ b/qpid/cpp/include/qpid/client/ConnectionSettings.h @@ -37,7 +37,7 @@ namespace client { /** * Settings for a Connection. */ -struct ConnectionSettings { +struct QPID_CLIENT_CLASS_EXTERN ConnectionSettings { QPID_CLIENT_EXTERN ConnectionSettings(); QPID_CLIENT_EXTERN virtual ~ConnectionSettings(); diff --git a/qpid/cpp/include/qpid/client/FailoverListener.h b/qpid/cpp/include/qpid/client/FailoverListener.h index 59108eb7cb..53c7c26211 100644 --- a/qpid/cpp/include/qpid/client/FailoverListener.h +++ b/qpid/cpp/include/qpid/client/FailoverListener.h @@ -48,7 +48,7 @@ namespace client { * FailoverListener::decode to extract a list of broker URLs from a * failover exchange message. */ -class FailoverListener : private MessageListener, private qpid::sys::Runnable +class QPID_CLIENT_CLASS_EXTERN FailoverListener : private MessageListener, private qpid::sys::Runnable { public: /** The name of the standard failover exchange amq.failover */ diff --git a/qpid/cpp/include/qpid/client/FailoverManager.h b/qpid/cpp/include/qpid/client/FailoverManager.h index 0d30e2ed60..d3a0dbc976 100644 --- a/qpid/cpp/include/qpid/client/FailoverManager.h +++ b/qpid/cpp/include/qpid/client/FailoverManager.h @@ -42,7 +42,7 @@ struct CannotConnectException : qpid::Exception /** * Utility to manage failover. */ -class FailoverManager +class QPID_CLIENT_CLASS_EXTERN FailoverManager { public: /** diff --git a/qpid/cpp/include/qpid/client/Future.h b/qpid/cpp/include/qpid/client/Future.h index 09088e68f6..630a7e03c0 100644 --- a/qpid/cpp/include/qpid/client/Future.h +++ b/qpid/cpp/include/qpid/client/Future.h @@ -34,7 +34,7 @@ namespace qpid { namespace client { /**@internal */ -class Future +class QPID_CLIENT_CLASS_EXTERN Future { framing::SequenceNumber command; boost::shared_ptr result; diff --git a/qpid/cpp/include/qpid/client/FutureResult.h b/qpid/cpp/include/qpid/client/FutureResult.h index b2b663daa1..ead4929571 100644 --- a/qpid/cpp/include/qpid/client/FutureResult.h +++ b/qpid/cpp/include/qpid/client/FutureResult.h @@ -34,7 +34,7 @@ namespace client { class SessionImpl; ///@internal -class FutureResult : public FutureCompletion +class QPID_CLIENT_CLASS_EXTERN FutureResult : public FutureCompletion { std::string result; public: diff --git a/qpid/cpp/include/qpid/client/Handle.h b/qpid/cpp/include/qpid/client/Handle.h index 088e836fcf..b8315481a9 100644 --- a/qpid/cpp/include/qpid/client/Handle.h +++ b/qpid/cpp/include/qpid/client/Handle.h @@ -40,22 +40,22 @@ template class Handle { public: /**@return true if handle is valid, i.e. not null. */ - QPID_CLIENT_EXTERN bool isValid() const { return impl; } + QPID_CLIENT_INLINE_EXTERN bool isValid() const { return impl; } /**@return true if handle is null. It is an error to call any function on a null handle. */ - QPID_CLIENT_EXTERN bool isNull() const { return !impl; } + QPID_CLIENT_INLINE_EXTERN bool isNull() const { return !impl; } /** Conversion to bool supports idiom if (handle) { handle->... } */ - QPID_CLIENT_EXTERN operator bool() const { return impl; } + QPID_CLIENT_INLINE_EXTERN operator bool() const { return impl; } /** Operator ! supports idiom if (!handle) { do_if_handle_is_null(); } */ - QPID_CLIENT_EXTERN bool operator !() const { return !impl; } + QPID_CLIENT_INLINE_EXTERN bool operator !() const { return !impl; } void swap(Handle& h) { T* t = h.impl; h.impl = impl; impl = t; } protected: typedef T Impl; - QPID_CLIENT_EXTERN Handle() :impl() {} + QPID_CLIENT_INLINE_EXTERN Handle() :impl() {} // Not implemented,subclasses must implement. QPID_CLIENT_EXTERN Handle(const Handle&); diff --git a/qpid/cpp/include/qpid/client/LocalQueue.h b/qpid/cpp/include/qpid/client/LocalQueue.h index 70e4cebcf1..1a19a8499d 100644 --- a/qpid/cpp/include/qpid/client/LocalQueue.h +++ b/qpid/cpp/include/qpid/client/LocalQueue.h @@ -71,7 +71,7 @@ template class PrivateImplRef; * */ -class LocalQueue : public Handle { +class QPID_CLIENT_CLASS_EXTERN LocalQueue : public Handle { public: /** Create a local queue. Subscribe the local queue to a remote broker * queue with a SubscriptionManager. diff --git a/qpid/cpp/include/qpid/client/Message.h b/qpid/cpp/include/qpid/client/Message.h index 2401cbdc92..ba50dda9ba 100644 --- a/qpid/cpp/include/qpid/client/Message.h +++ b/qpid/cpp/include/qpid/client/Message.h @@ -112,7 +112,7 @@ class MessageImpl; * * */ -class Message +class QPID_CLIENT_CLASS_EXTERN Message { public: /** Create a Message. diff --git a/qpid/cpp/include/qpid/client/MessageListener.h b/qpid/cpp/include/qpid/client/MessageListener.h index d200f8cf21..3ca2fa964a 100644 --- a/qpid/cpp/include/qpid/client/MessageListener.h +++ b/qpid/cpp/include/qpid/client/MessageListener.h @@ -84,7 +84,7 @@ namespace client { * */ - class MessageListener{ + class QPID_CLIENT_CLASS_EXTERN MessageListener{ public: QPID_CLIENT_EXTERN virtual ~MessageListener(); diff --git a/qpid/cpp/include/qpid/client/MessageReplayTracker.h b/qpid/cpp/include/qpid/client/MessageReplayTracker.h index 6f5a0f4ac3..06a3f29c7d 100644 --- a/qpid/cpp/include/qpid/client/MessageReplayTracker.h +++ b/qpid/cpp/include/qpid/client/MessageReplayTracker.h @@ -34,7 +34,7 @@ namespace client { * Utility to track messages sent asynchronously, allowing those that * are indoubt to be replayed over a new session. */ -class MessageReplayTracker +class QPID_CLIENT_CLASS_EXTERN MessageReplayTracker { public: QPID_CLIENT_EXTERN MessageReplayTracker(uint flushInterval); diff --git a/qpid/cpp/include/qpid/client/QueueOptions.h b/qpid/cpp/include/qpid/client/QueueOptions.h index f8a4963f06..3984b63fdd 100644 --- a/qpid/cpp/include/qpid/client/QueueOptions.h +++ b/qpid/cpp/include/qpid/client/QueueOptions.h @@ -35,7 +35,7 @@ enum QueueOrderingPolicy {FIFO, LVQ, LVQ_NO_BROWSE}; * A help class to set options on the Queue. Create a configured args while * still allowing any custom configuration via the FieldTable base class */ -class QueueOptions: public framing::FieldTable +class QPID_CLIENT_CLASS_EXTERN QueueOptions: public framing::FieldTable { public: QPID_CLIENT_EXTERN QueueOptions(); diff --git a/qpid/cpp/include/qpid/client/SessionBase_0_10.h b/qpid/cpp/include/qpid/client/SessionBase_0_10.h index 3b5c84e74b..ea50ab32f7 100644 --- a/qpid/cpp/include/qpid/client/SessionBase_0_10.h +++ b/qpid/cpp/include/qpid/client/SessionBase_0_10.h @@ -54,7 +54,7 @@ enum CreditUnit { MESSAGE_CREDIT=0, BYTE_CREDIT=1, UNLIMITED_CREDIT=0xFFFFFFFF } * Subclasses provide the AMQP commands for a given * version of the protocol. */ -class SessionBase_0_10 { +class QPID_CLIENT_CLASS_EXTERN SessionBase_0_10 { public: ///@internal diff --git a/qpid/cpp/include/qpid/client/Subscription.h b/qpid/cpp/include/qpid/client/Subscription.h index 425b6b92e2..bb9b98e8ff 100644 --- a/qpid/cpp/include/qpid/client/Subscription.h +++ b/qpid/cpp/include/qpid/client/Subscription.h @@ -39,7 +39,7 @@ class SubscriptionManager; * A handle to an active subscription. Provides methods to query the subscription status * and control acknowledgement (acquire and accept) of messages. */ -class Subscription : public Handle { +class QPID_CLIENT_CLASS_EXTERN Subscription : public Handle { public: QPID_CLIENT_EXTERN Subscription(SubscriptionImpl* = 0); QPID_CLIENT_EXTERN Subscription(const Subscription&); @@ -91,13 +91,13 @@ class Subscription : public Handle { QPID_CLIENT_EXTERN void release(const SequenceSet& messageIds); /* Acquire a single message */ - QPID_CLIENT_EXTERN void acquire(const Message& m) { acquire(SequenceSet(m.getId())); } + QPID_CLIENT_INLINE_EXTERN void acquire(const Message& m) { acquire(SequenceSet(m.getId())); } /* Accept a single message */ - QPID_CLIENT_EXTERN void accept(const Message& m) { accept(SequenceSet(m.getId())); } + QPID_CLIENT_INLINE_EXTERN void accept(const Message& m) { accept(SequenceSet(m.getId())); } /* Release a single message */ - QPID_CLIENT_EXTERN void release(const Message& m) { release(SequenceSet(m.getId())); } + QPID_CLIENT_INLINE_EXTERN void release(const Message& m) { release(SequenceSet(m.getId())); } /** Get the session associated with this subscription */ QPID_CLIENT_EXTERN Session getSession() const; diff --git a/qpid/cpp/include/qpid/client/SubscriptionManager.h b/qpid/cpp/include/qpid/client/SubscriptionManager.h index e70e05f73a..b69819a8ff 100644 --- a/qpid/cpp/include/qpid/client/SubscriptionManager.h +++ b/qpid/cpp/include/qpid/client/SubscriptionManager.h @@ -94,7 +94,7 @@ class SubscriptionManagerImpl; * * */ -class SubscriptionManager : public sys::Runnable, public Handle +class QPID_CLIENT_CLASS_EXTERN SubscriptionManager : public sys::Runnable, public Handle { public: /** Create a new SubscriptionManager associated with a session */ diff --git a/qpid/cpp/include/qpid/console/Agent.h b/qpid/cpp/include/qpid/console/Agent.h index 97d75da250..629dd71dee 100644 --- a/qpid/cpp/include/qpid/console/Agent.h +++ b/qpid/cpp/include/qpid/console/Agent.h @@ -31,17 +31,17 @@ namespace console { * * \ingroup qmfconsoleapi */ - class QPID_CONSOLE_EXTERN Agent { + class QPID_CONSOLE_CLASS_EXTERN Agent { public: typedef std::vector Vector; - Agent(Broker* _broker, uint32_t _bank, const std::string& _label) : + QPID_CONSOLE_INLINE_EXTERN Agent(Broker* _broker, uint32_t _bank, const std::string& _label) : broker(_broker), brokerBank(broker->getBrokerBank()), agentBank(_bank), label(_label) {} - Broker* getBroker() const { return broker; } - uint32_t getBrokerBank() const { return brokerBank; } - uint32_t getAgentBank() const { return agentBank; } - const std::string& getLabel() const { return label; } + QPID_CONSOLE_INLINE_EXTERN Broker* getBroker() const { return broker; } + QPID_CONSOLE_INLINE_EXTERN uint32_t getBrokerBank() const { return brokerBank; } + QPID_CONSOLE_INLINE_EXTERN uint32_t getAgentBank() const { return agentBank; } + QPID_CONSOLE_INLINE_EXTERN const std::string& getLabel() const { return label; } private: Broker* broker; @@ -50,7 +50,7 @@ namespace console { const std::string label; }; - QPID_CONSOLE_EXTERN std::ostream& operator<<(std::ostream& o, const Agent& agent); + std::ostream& operator<<(std::ostream& o, const Agent& agent); } } diff --git a/qpid/cpp/include/qpid/console/Broker.h b/qpid/cpp/include/qpid/console/Broker.h index 0b2d1bcb61..c2ba8ac81f 100644 --- a/qpid/cpp/include/qpid/console/Broker.h +++ b/qpid/cpp/include/qpid/console/Broker.h @@ -55,12 +55,12 @@ namespace console { client::ConnectionSettings& settings); QPID_CONSOLE_EXTERN ~Broker(); - QPID_CONSOLE_EXTERN bool isConnected() const { return connected; } - QPID_CONSOLE_EXTERN const std::string& getError() const { return error; } - QPID_CONSOLE_EXTERN const std::string& getSessionId() const { return amqpSessionId; } - QPID_CONSOLE_EXTERN const framing::Uuid& getBrokerId() const { return brokerId; } - QPID_CONSOLE_EXTERN uint32_t getBrokerBank() const { return 1; } - QPID_CONSOLE_EXTERN void addBinding(const std::string& key) { + QPID_CONSOLE_INLINE_EXTERN bool isConnected() const { return connected; } + QPID_CONSOLE_INLINE_EXTERN const std::string& getError() const { return error; } + QPID_CONSOLE_INLINE_EXTERN const std::string& getSessionId() const { return amqpSessionId; } + QPID_CONSOLE_INLINE_EXTERN const framing::Uuid& getBrokerId() const { return brokerId; } + QPID_CONSOLE_INLINE_EXTERN uint32_t getBrokerBank() const { return 1; } + QPID_CONSOLE_INLINE_EXTERN void addBinding(const std::string& key) { connThreadBody.bindExchange("qpid.management", key); } QPID_CONSOLE_EXTERN std::string getUrl() const; @@ -123,10 +123,10 @@ namespace console { void setBrokerId(const framing::Uuid& id) { brokerId = id; } void appendAgents(std::vector& agents) const; - friend QPID_CONSOLE_EXTERN std::ostream& operator<<(std::ostream& o, const Broker& k); + friend std::ostream& operator<<(std::ostream& o, const Broker& k); }; - QPID_CONSOLE_EXTERN std::ostream& operator<<(std::ostream& o, const Broker& k); + std::ostream& operator<<(std::ostream& o, const Broker& k); } } diff --git a/qpid/cpp/include/qpid/console/ConsoleImportExport.h b/qpid/cpp/include/qpid/console/ConsoleImportExport.h index c2d7cb3a14..aac30858f7 100644 --- a/qpid/cpp/include/qpid/console/ConsoleImportExport.h +++ b/qpid/cpp/include/qpid/console/ConsoleImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) +#include "qpid/ImportExport.h" + #if defined(CONSOLE_EXPORT) || defined (qmfconsole_EXPORTS) -#define QPID_CONSOLE_EXTERN __declspec(dllexport) -#else -#define QPID_CONSOLE_EXTERN __declspec(dllimport) -#endif +# define QPID_CONSOLE_EXTERN QPID_EXPORT +# define QPID_CONSOLE_CLASS_EXTERN QPID_CLASS_EXPORT +# define QPID_CONSOLE_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QPID_CONSOLE_EXTERN +# define QPID_CONSOLE_EXTERN QPID_IMPORT +# define QPID_CONSOLE_CLASS_EXTERN QPID_CLASS_IMPORT +# define QPID_CONSOLE_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif diff --git a/qpid/cpp/include/qpid/framing/Array.h b/qpid/cpp/include/qpid/framing/Array.h index d3bdd36aa6..1e97be3bb4 100644 --- a/qpid/cpp/include/qpid/framing/Array.h +++ b/qpid/cpp/include/qpid/framing/Array.h @@ -34,7 +34,7 @@ namespace framing { class Buffer; -class Array +class QPID_COMMON_CLASS_EXTERN Array { public: typedef boost::shared_ptr ValuePtr; @@ -55,25 +55,25 @@ class Array //creates a longstr array QPID_COMMON_EXTERN Array(const std::vector& in); - QPID_COMMON_EXTERN TypeCode getType() const { return type; } + QPID_COMMON_INLINE_EXTERN TypeCode getType() const { return type; } // std collection interface. - QPID_COMMON_EXTERN const_iterator begin() const { return values.begin(); } - QPID_COMMON_EXTERN const_iterator end() const { return values.end(); } - QPID_COMMON_EXTERN iterator begin() { return values.begin(); } - QPID_COMMON_EXTERN iterator end(){ return values.end(); } + QPID_COMMON_INLINE_EXTERN const_iterator begin() const { return values.begin(); } + QPID_COMMON_INLINE_EXTERN const_iterator end() const { return values.end(); } + QPID_COMMON_INLINE_EXTERN iterator begin() { return values.begin(); } + QPID_COMMON_INLINE_EXTERN iterator end(){ return values.end(); } - QPID_COMMON_EXTERN ValuePtr front() const { return values.front(); } - QPID_COMMON_EXTERN ValuePtr back() const { return values.back(); } - QPID_COMMON_EXTERN size_t size() const { return values.size(); } + QPID_COMMON_INLINE_EXTERN ValuePtr front() const { return values.front(); } + QPID_COMMON_INLINE_EXTERN ValuePtr back() const { return values.back(); } + QPID_COMMON_INLINE_EXTERN size_t size() const { return values.size(); } QPID_COMMON_EXTERN void insert(iterator i, ValuePtr value); - QPID_COMMON_EXTERN void erase(iterator i) { values.erase(i); } - QPID_COMMON_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); } - QPID_COMMON_EXTERN void pop_back() { values.pop_back(); } + QPID_COMMON_INLINE_EXTERN void erase(iterator i) { values.erase(i); } + QPID_COMMON_INLINE_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); } + QPID_COMMON_INLINE_EXTERN void pop_back() { values.pop_back(); } // Non-std interface - QPID_COMMON_EXTERN void add(ValuePtr value) { push_back(value); } + QPID_COMMON_INLINE_EXTERN void add(ValuePtr value) { push_back(value); } template void collect(std::vector& out) const diff --git a/qpid/cpp/include/qpid/framing/Buffer.h b/qpid/cpp/include/qpid/framing/Buffer.h index 04583433c5..8b08e60762 100644 --- a/qpid/cpp/include/qpid/framing/Buffer.h +++ b/qpid/cpp/include/qpid/framing/Buffer.h @@ -29,14 +29,14 @@ namespace qpid { namespace framing { -struct OutOfBounds : qpid::Exception { +struct QPID_COMMON_CLASS_EXTERN OutOfBounds : qpid::Exception { OutOfBounds() : qpid::Exception(std::string("Out of Bounds")) {} }; class Content; class FieldTable; -class Buffer +class QPID_COMMON_CLASS_EXTERN Buffer { uint32_t size; char* data; @@ -72,12 +72,12 @@ class Buffer QPID_COMMON_EXTERN void restore(bool reRecord = false); QPID_COMMON_EXTERN void reset(); - QPID_COMMON_EXTERN uint32_t available() { return size - position; } - QPID_COMMON_EXTERN uint32_t getSize() { return size; } - QPID_COMMON_EXTERN uint32_t getPosition() { return position; } - QPID_COMMON_EXTERN void setPosition(uint32_t p) { position = p; } - QPID_COMMON_EXTERN Iterator getIterator() { return Iterator(*this); } - QPID_COMMON_EXTERN char* getPointer() { return data; } + QPID_COMMON_INLINE_EXTERN uint32_t available() { return size - position; } + QPID_COMMON_INLINE_EXTERN uint32_t getSize() { return size; } + QPID_COMMON_INLINE_EXTERN uint32_t getPosition() { return position; } + QPID_COMMON_INLINE_EXTERN void setPosition(uint32_t p) { position = p; } + QPID_COMMON_INLINE_EXTERN Iterator getIterator() { return Iterator(*this); } + QPID_COMMON_INLINE_EXTERN char* getPointer() { return data; } QPID_COMMON_EXTERN void putOctet(uint8_t i); QPID_COMMON_EXTERN void putShort(uint16_t i); diff --git a/qpid/cpp/include/qpid/framing/FieldTable.h b/qpid/cpp/include/qpid/framing/FieldTable.h index fdb1a28b9d..fed431129a 100644 --- a/qpid/cpp/include/qpid/framing/FieldTable.h +++ b/qpid/cpp/include/qpid/framing/FieldTable.h @@ -56,7 +56,7 @@ class FieldTable typedef ValueMap::reference reference; typedef ValueMap::value_type value_type; - QPID_COMMON_EXTERN FieldTable() {}; + QPID_COMMON_INLINE_EXTERN FieldTable() {}; QPID_COMMON_EXTERN FieldTable(const FieldTable& ft); QPID_COMMON_EXTERN ~FieldTable(); QPID_COMMON_EXTERN FieldTable& operator=(const FieldTable& ft); @@ -67,7 +67,7 @@ class FieldTable QPID_COMMON_EXTERN int count() const; QPID_COMMON_EXTERN void set(const std::string& name, const ValuePtr& value); QPID_COMMON_EXTERN ValuePtr get(const std::string& name) const; - QPID_COMMON_EXTERN bool isSet(const std::string& name) const { return get(name).get() != 0; } + QPID_COMMON_INLINE_EXTERN bool isSet(const std::string& name) const { return get(name).get() != 0; } QPID_COMMON_EXTERN void setString(const std::string& name, const std::string& value); QPID_COMMON_EXTERN void setInt(const std::string& name, const int value); diff --git a/qpid/cpp/include/qpid/framing/FieldValue.h b/qpid/cpp/include/qpid/framing/FieldValue.h index e6255066c4..458de62fdf 100644 --- a/qpid/cpp/include/qpid/framing/FieldValue.h +++ b/qpid/cpp/include/qpid/framing/FieldValue.h @@ -41,14 +41,14 @@ namespace framing { * * \ingroup clientapi */ -class FieldValueException : public qpid::Exception {}; +class QPID_COMMON_CLASS_EXTERN FieldValueException : public qpid::Exception {}; /** * Exception thrown when we can't perform requested conversion * * \ingroup clientapi */ -struct InvalidConversionException : public FieldValueException { +struct QPID_COMMON_CLASS_EXTERN InvalidConversionException : public FieldValueException { InvalidConversionException() {} }; @@ -59,7 +59,7 @@ class List; * * \ingroup clientapi */ -class FieldValue { +class QPID_COMMON_CLASS_EXTERN FieldValue { public: /* * Abstract type for content of different types @@ -90,7 +90,7 @@ class FieldValue { void encode(Buffer& buffer); void decode(Buffer& buffer); QPID_COMMON_EXTERN bool operator==(const FieldValue&) const; - QPID_COMMON_EXTERN bool operator!=(const FieldValue& v) const { return !(*this == v); } + QPID_COMMON_INLINE_EXTERN bool operator!=(const FieldValue& v) const { return !(*this == v); } QPID_COMMON_EXTERN void print(std::ostream& out) const; diff --git a/qpid/cpp/include/qpid/framing/List.h b/qpid/cpp/include/qpid/framing/List.h index 0f17c7884c..417fd4bffb 100644 --- a/qpid/cpp/include/qpid/framing/List.h +++ b/qpid/cpp/include/qpid/framing/List.h @@ -36,7 +36,7 @@ class FieldValue; /** * Representation of an AMQP 0-10 list */ -class List +class QPID_COMMON_CLASS_EXTERN List { public: typedef boost::shared_ptr ValuePtr; @@ -53,19 +53,19 @@ class List QPID_COMMON_EXTERN bool operator==(const List& other) const; // std collection interface. - QPID_COMMON_EXTERN const_iterator begin() const { return values.begin(); } - QPID_COMMON_EXTERN const_iterator end() const { return values.end(); } - QPID_COMMON_EXTERN iterator begin() { return values.begin(); } - QPID_COMMON_EXTERN iterator end(){ return values.end(); } + QPID_COMMON_INLINE_EXTERN const_iterator begin() const { return values.begin(); } + QPID_COMMON_INLINE_EXTERN const_iterator end() const { return values.end(); } + QPID_COMMON_INLINE_EXTERN iterator begin() { return values.begin(); } + QPID_COMMON_INLINE_EXTERN iterator end(){ return values.end(); } - QPID_COMMON_EXTERN ValuePtr front() const { return values.front(); } - QPID_COMMON_EXTERN ValuePtr back() const { return values.back(); } - QPID_COMMON_EXTERN size_t size() const { return values.size(); } + QPID_COMMON_INLINE_EXTERN ValuePtr front() const { return values.front(); } + QPID_COMMON_INLINE_EXTERN ValuePtr back() const { return values.back(); } + QPID_COMMON_INLINE_EXTERN size_t size() const { return values.size(); } - QPID_COMMON_EXTERN iterator insert(iterator i, ValuePtr value) { return values.insert(i, value); } - QPID_COMMON_EXTERN void erase(iterator i) { values.erase(i); } - QPID_COMMON_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); } - QPID_COMMON_EXTERN void pop_back() { values.pop_back(); } + QPID_COMMON_INLINE_EXTERN iterator insert(iterator i, ValuePtr value) { return values.insert(i, value); } + QPID_COMMON_INLINE_EXTERN void erase(iterator i) { values.erase(i); } + QPID_COMMON_INLINE_EXTERN void push_back(ValuePtr value) { values.insert(end(), value); } + QPID_COMMON_INLINE_EXTERN void pop_back() { values.pop_back(); } private: Values values; diff --git a/qpid/cpp/include/qpid/framing/ProtocolVersion.h b/qpid/cpp/include/qpid/framing/ProtocolVersion.h index e7e75d75f6..30094c165d 100644 --- a/qpid/cpp/include/qpid/framing/ProtocolVersion.h +++ b/qpid/cpp/include/qpid/framing/ProtocolVersion.h @@ -29,7 +29,7 @@ namespace qpid namespace framing { -class ProtocolVersion +class QPID_COMMON_CLASS_EXTERN ProtocolVersion { private: uint8_t major_; @@ -39,16 +39,16 @@ public: explicit ProtocolVersion(uint8_t _major=0, uint8_t _minor=0) : major_(_major), minor_(_minor) {} - QPID_COMMON_EXTERN uint8_t getMajor() const { return major_; } - QPID_COMMON_EXTERN void setMajor(uint8_t major) { major_ = major; } - QPID_COMMON_EXTERN uint8_t getMinor() const { return minor_; } - QPID_COMMON_EXTERN void setMinor(uint8_t minor) { minor_ = minor; } + QPID_COMMON_INLINE_EXTERN uint8_t getMajor() const { return major_; } + QPID_COMMON_INLINE_EXTERN void setMajor(uint8_t major) { major_ = major; } + QPID_COMMON_INLINE_EXTERN uint8_t getMinor() const { return minor_; } + QPID_COMMON_INLINE_EXTERN void setMinor(uint8_t minor) { minor_ = minor; } QPID_COMMON_EXTERN const std::string toString() const; QPID_COMMON_EXTERN ProtocolVersion& operator=(ProtocolVersion p); QPID_COMMON_EXTERN bool operator==(ProtocolVersion p) const; - QPID_COMMON_EXTERN bool operator!=(ProtocolVersion p) const { return ! (*this == p); } + QPID_COMMON_INLINE_EXTERN bool operator!=(ProtocolVersion p) const { return ! (*this == p); } }; } // namespace framing diff --git a/qpid/cpp/include/qpid/framing/SequenceNumber.h b/qpid/cpp/include/qpid/framing/SequenceNumber.h index 1e53058df8..eed15a4b75 100644 --- a/qpid/cpp/include/qpid/framing/SequenceNumber.h +++ b/qpid/cpp/include/qpid/framing/SequenceNumber.h @@ -34,7 +34,7 @@ class Buffer; /** * 4-byte sequence number that 'wraps around'. */ -class SequenceNumber : public +class QPID_COMMON_CLASS_EXTERN SequenceNumber : public boost::equality_comparable< SequenceNumber, boost::less_than_comparable< SequenceNumber, boost::incrementable< diff --git a/qpid/cpp/include/qpid/framing/SequenceSet.h b/qpid/cpp/include/qpid/framing/SequenceSet.h index 39395e9ad7..0a78e418ba 100644 --- a/qpid/cpp/include/qpid/framing/SequenceSet.h +++ b/qpid/cpp/include/qpid/framing/SequenceSet.h @@ -29,7 +29,7 @@ namespace qpid { namespace framing { class Buffer; -class SequenceSet : public RangeSet { +class QPID_COMMON_CLASS_EXTERN SequenceSet : public RangeSet { public: SequenceSet() {} SequenceSet(const RangeSet& r) diff --git a/qpid/cpp/include/qpid/framing/StructHelper.h b/qpid/cpp/include/qpid/framing/StructHelper.h index fc9a7909cc..21f9b91fa9 100644 --- a/qpid/cpp/include/qpid/framing/StructHelper.h +++ b/qpid/cpp/include/qpid/framing/StructHelper.h @@ -30,7 +30,7 @@ namespace qpid { namespace framing { -class StructHelper +class QPID_COMMON_CLASS_EXTERN StructHelper { public: diff --git a/qpid/cpp/include/qpid/framing/Uuid.h b/qpid/cpp/include/qpid/framing/Uuid.h index d0a8d02411..ccfd7e9534 100644 --- a/qpid/cpp/include/qpid/framing/Uuid.h +++ b/qpid/cpp/include/qpid/framing/Uuid.h @@ -52,22 +52,22 @@ struct Uuid : public boost::array { // boost::array gives us ==, < etc. /** Copy from 16 bytes of data. */ - void assign(const uint8_t* data); + QPID_COMMON_EXTERN void assign(const uint8_t* data); /** Set to a new unique identifier. */ QPID_COMMON_EXTERN void generate(); /** Set to all zeros. */ - void clear(); + QPID_COMMON_EXTERN void clear(); /** Test for null (all zeros). */ QPID_COMMON_EXTERN bool isNull() const; - operator bool() const { return !isNull(); } - bool operator!() const { return isNull(); } + QPID_COMMON_INLINE_EXTERN operator bool() const { return !isNull(); } + QPID_COMMON_INLINE_EXTERN bool operator!() const { return isNull(); } QPID_COMMON_EXTERN void encode(framing::Buffer& buf) const; QPID_COMMON_EXTERN void decode(framing::Buffer& buf); - QPID_COMMON_EXTERN uint32_t encodedSize() const + QPID_COMMON_INLINE_EXTERN uint32_t encodedSize() const { return static_cast(size()); } /** String value in format 1b4e28ba-2fa1-11d2-883f-b9a761bde3fb. */ diff --git a/qpid/cpp/include/qpid/log/Logger.h b/qpid/cpp/include/qpid/log/Logger.h index 7606436e56..d255b7e150 100644 --- a/qpid/cpp/include/qpid/log/Logger.h +++ b/qpid/cpp/include/qpid/log/Logger.h @@ -33,7 +33,7 @@ namespace log { * is handled by Logger::Output-derived classes instantiated by the * platform's sink-related options. */ -class Logger : private boost::noncopyable { +class QPID_COMMON_CLASS_EXTERN Logger : private boost::noncopyable { public: /** Flags indicating what to include in the log output */ enum FormatFlag { FILE=1, LINE=2, FUNCTION=4, LEVEL=8, TIME=16, THREAD=32, HIRES=64}; @@ -93,7 +93,7 @@ class Logger : private boost::noncopyable { QPID_COMMON_EXTERN void clear(); /** Get the options used to configure the logger. */ - QPID_COMMON_EXTERN const Options& getOptions() const { return options; } + QPID_COMMON_INLINE_EXTERN const Options& getOptions() const { return options; } private: diff --git a/qpid/cpp/include/qpid/management/ManagementObject.h b/qpid/cpp/include/qpid/management/ManagementObject.h index 747edda150..16bf21038c 100644 --- a/qpid/cpp/include/qpid/management/ManagementObject.h +++ b/qpid/cpp/include/qpid/management/ManagementObject.h @@ -58,14 +58,14 @@ protected: std::string agentName; void fromString(const std::string&); public: - QPID_COMMON_EXTERN ObjectId() : agent(0), first(0), second(0), agentEpoch(0) {} - QPID_COMMON_EXTERN ObjectId(const types::Variant& map) : + QPID_COMMON_INLINE_EXTERN ObjectId() : agent(0), first(0), second(0), agentEpoch(0) {} + QPID_COMMON_INLINE_EXTERN ObjectId(const types::Variant& map) : agent(0), first(0), second(0), agentEpoch(0) { mapDecode(map.asMap()); } QPID_COMMON_EXTERN ObjectId(uint8_t flags, uint16_t seq, uint32_t broker); QPID_COMMON_EXTERN ObjectId(AgentAttachment* _agent, uint8_t flags, uint16_t seq); QPID_COMMON_EXTERN ObjectId(std::istream&); QPID_COMMON_EXTERN ObjectId(const std::string&); - QPID_COMMON_EXTERN ObjectId(const std::string& agentAddress, const std::string& key, + QPID_COMMON_INLINE_EXTERN ObjectId(const std::string& agentAddress, const std::string& key, uint64_t epoch=0) : agent(0), first(0), second(0), agentEpoch(epoch), v2Key(key), agentName(agentAddress) {} @@ -76,15 +76,15 @@ public: QPID_COMMON_EXTERN void mapEncode(types::Variant::Map& map) const; QPID_COMMON_EXTERN void mapDecode(const types::Variant::Map& map); QPID_COMMON_EXTERN operator types::Variant::Map() const; - QPID_COMMON_EXTERN uint32_t encodedSize() const { return 16; }; + QPID_COMMON_INLINE_EXTERN uint32_t encodedSize() const { return 16; }; QPID_COMMON_EXTERN void encode(std::string& buffer) const; QPID_COMMON_EXTERN void decode(const std::string& buffer); QPID_COMMON_EXTERN bool equalV1(const ObjectId &other) const; - QPID_COMMON_EXTERN void setV2Key(const std::string& _key) { v2Key = _key; } + QPID_COMMON_INLINE_EXTERN void setV2Key(const std::string& _key) { v2Key = _key; } QPID_COMMON_EXTERN void setV2Key(const ManagementObject& object); - QPID_COMMON_EXTERN void setAgentName(const std::string& _name) { agentName = _name; } - QPID_COMMON_EXTERN const std::string& getAgentName() const { return agentName; } - QPID_COMMON_EXTERN const std::string& getV2Key() const { return v2Key; } + QPID_COMMON_INLINE_EXTERN void setAgentName(const std::string& _name) { agentName = _name; } + QPID_COMMON_INLINE_EXTERN const std::string& getAgentName() const { return agentName; } + QPID_COMMON_INLINE_EXTERN const std::string& getV2Key() const { return v2Key; } friend QPID_COMMON_EXTERN std::ostream& operator<<(std::ostream&, const ObjectId&); }; @@ -131,7 +131,7 @@ public: virtual ~ManagementItem() {} }; -class ManagementObject : public ManagementItem +class QPID_COMMON_CLASS_EXTERN ManagementObject : public ManagementItem { protected: diff --git a/qpid/cpp/include/qpid/messaging/Address.h b/qpid/cpp/include/qpid/messaging/Address.h index bebbfc72f6..63dce0c49d 100644 --- a/qpid/cpp/include/qpid/messaging/Address.h +++ b/qpid/cpp/include/qpid/messaging/Address.h @@ -119,7 +119,7 @@ class AddressImpl; * * An address has value semantics. */ -class Address +class QPID_MESSAGING_CLASS_EXTERN Address { public: QPID_MESSAGING_EXTERN Address(); diff --git a/qpid/cpp/include/qpid/messaging/Connection.h b/qpid/cpp/include/qpid/messaging/Connection.h index 1ad7a7242f..e938f23189 100644 --- a/qpid/cpp/include/qpid/messaging/Connection.h +++ b/qpid/cpp/include/qpid/messaging/Connection.h @@ -42,7 +42,7 @@ class Session; * A connection represents a network connection to a remote endpoint. */ -class Connection : public qpid::messaging::Handle +class QPID_MESSAGING_CLASS_EXTERN Connection : public qpid::messaging::Handle { public: QPID_MESSAGING_EXTERN Connection(ConnectionImpl* impl); diff --git a/qpid/cpp/include/qpid/messaging/Duration.h b/qpid/cpp/include/qpid/messaging/Duration.h index 1406e354c6..6b8f05c7c6 100644 --- a/qpid/cpp/include/qpid/messaging/Duration.h +++ b/qpid/cpp/include/qpid/messaging/Duration.h @@ -32,7 +32,7 @@ namespace messaging { /** \ingroup messaging * A duration is a time in milliseconds. */ -class Duration +class QPID_MESSAGING_CLASS_EXTERN Duration { public: QPID_MESSAGING_EXTERN explicit Duration(uint64_t milliseconds); @@ -46,9 +46,9 @@ class Duration }; QPID_MESSAGING_EXTERN Duration operator*(const Duration& duration, - uint64_t multiplier); + uint64_t multiplier); QPID_MESSAGING_EXTERN Duration operator*(uint64_t multiplier, - const Duration& duration); + const Duration& duration); QPID_MESSAGING_EXTERN bool operator==(const Duration& a, const Duration& b); QPID_MESSAGING_EXTERN bool operator!=(const Duration& a, const Duration& b); diff --git a/qpid/cpp/include/qpid/messaging/FailoverUpdates.h b/qpid/cpp/include/qpid/messaging/FailoverUpdates.h index 14a1a31b63..6d7314620a 100644 --- a/qpid/cpp/include/qpid/messaging/FailoverUpdates.h +++ b/qpid/cpp/include/qpid/messaging/FailoverUpdates.h @@ -32,7 +32,7 @@ struct FailoverUpdatesImpl; * A utility to listen for updates on cluster membership and update * the list of known urls for a connection accordingly. */ -class FailoverUpdates +class QPID_MESSAGING_CLASS_EXTERN FailoverUpdates { public: QPID_MESSAGING_EXTERN FailoverUpdates(Connection& connection); diff --git a/qpid/cpp/include/qpid/messaging/Handle.h b/qpid/cpp/include/qpid/messaging/Handle.h index 1e634ef888..97a8f00b54 100644 --- a/qpid/cpp/include/qpid/messaging/Handle.h +++ b/qpid/cpp/include/qpid/messaging/Handle.h @@ -40,22 +40,22 @@ template class Handle { public: /**@return true if handle is valid, i.e. not null. */ - QPID_MESSAGING_EXTERN bool isValid() const { return impl; } + QPID_MESSAGING_INLINE_EXTERN bool isValid() const { return impl; } /**@return true if handle is null. It is an error to call any function on a null handle. */ - QPID_MESSAGING_EXTERN bool isNull() const { return !impl; } + QPID_MESSAGING_INLINE_EXTERN bool isNull() const { return !impl; } /** Conversion to bool supports idiom if (handle) { handle->... } */ - QPID_MESSAGING_EXTERN operator bool() const { return impl; } + QPID_MESSAGING_INLINE_EXTERN operator bool() const { return impl; } /** Operator ! supports idiom if (!handle) { do_if_handle_is_null(); } */ - QPID_MESSAGING_EXTERN bool operator !() const { return !impl; } + QPID_MESSAGING_INLINE_EXTERN bool operator !() const { return !impl; } void swap(Handle& h) { T* t = h.impl; h.impl = impl; impl = t; } protected: typedef T Impl; - QPID_MESSAGING_EXTERN Handle() :impl() {} + QPID_MESSAGING_INLINE_EXTERN Handle() :impl() {} // Not implemented,subclasses must implement. QPID_MESSAGING_EXTERN Handle(const Handle&); diff --git a/qpid/cpp/include/qpid/messaging/ImportExport.h b/qpid/cpp/include/qpid/messaging/ImportExport.h index 52f3eb8568..ab5f21f618 100644 --- a/qpid/cpp/include/qpid/messaging/ImportExport.h +++ b/qpid/cpp/include/qpid/messaging/ImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) +#include "qpid/ImportExport.h" + #if defined(CLIENT_EXPORT) || defined (qpidmessaging_EXPORTS) -#define QPID_MESSAGING_EXTERN __declspec(dllexport) -#else -#define QPID_MESSAGING_EXTERN __declspec(dllimport) -#endif +# define QPID_MESSAGING_EXTERN QPID_EXPORT +# define QPID_MESSAGING_CLASS_EXTERN QPID_CLASS_EXPORT +# define QPID_MESSAGING_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QPID_MESSAGING_EXTERN +# define QPID_MESSAGING_EXTERN QPID_IMPORT +# define QPID_MESSAGING_CLASS_EXTERN QPID_CLASS_IMPORT +# define QPID_MESSAGING_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif /*!QPID_MESSAGING_IMPORTEXPORT_H*/ diff --git a/qpid/cpp/include/qpid/messaging/Message.h b/qpid/cpp/include/qpid/messaging/Message.h index d48af35cc0..5cd978f2a2 100644 --- a/qpid/cpp/include/qpid/messaging/Message.h +++ b/qpid/cpp/include/qpid/messaging/Message.h @@ -39,7 +39,7 @@ struct MessageImpl; /** \ingroup messaging * Representation of a message. */ -class Message +class QPID_MESSAGING_CLASS_EXTERN Message { public: QPID_MESSAGING_EXTERN Message(const std::string& bytes = std::string()); @@ -107,9 +107,9 @@ class Message friend struct MessageImplAccess; }; -struct EncodingException : qpid::types::Exception +struct QPID_MESSAGING_CLASS_EXTERN EncodingException : qpid::types::Exception { - EncodingException(const std::string& msg); + QPID_MESSAGING_EXTERN EncodingException(const std::string& msg); }; /** @@ -122,8 +122,8 @@ struct EncodingException : qpid::types::Exception * @exception EncodingException */ QPID_MESSAGING_EXTERN void decode(const Message& message, - qpid::types::Variant::Map& map, - const std::string& encoding = std::string()); + qpid::types::Variant::Map& map, + const std::string& encoding = std::string()); /** * Decodes message content into a Variant::List. * @@ -134,8 +134,8 @@ QPID_MESSAGING_EXTERN void decode(const Message& message, * @exception EncodingException */ QPID_MESSAGING_EXTERN void decode(const Message& message, - qpid::types::Variant::List& list, - const std::string& encoding = std::string()); + qpid::types::Variant::List& list, + const std::string& encoding = std::string()); /** * Encodes a Variant::Map into a message. * @@ -146,8 +146,8 @@ QPID_MESSAGING_EXTERN void decode(const Message& message, * @exception EncodingException */ QPID_MESSAGING_EXTERN void encode(const qpid::types::Variant::Map& map, - Message& message, - const std::string& encoding = std::string()); + Message& message, + const std::string& encoding = std::string()); /** * Encodes a Variant::List into a message. * @@ -158,8 +158,8 @@ QPID_MESSAGING_EXTERN void encode(const qpid::types::Variant::Map& map, * @exception EncodingException */ QPID_MESSAGING_EXTERN void encode(const qpid::types::Variant::List& list, - Message& message, - const std::string& encoding = std::string()); + Message& message, + const std::string& encoding = std::string()); }} // namespace qpid::messaging diff --git a/qpid/cpp/include/qpid/messaging/Receiver.h b/qpid/cpp/include/qpid/messaging/Receiver.h index 6f3ae961db..13317dfcbd 100644 --- a/qpid/cpp/include/qpid/messaging/Receiver.h +++ b/qpid/cpp/include/qpid/messaging/Receiver.h @@ -41,7 +41,7 @@ class Session; /** \ingroup messaging * Interface through which messages are received. */ -class Receiver : public qpid::messaging::Handle +class QPID_MESSAGING_CLASS_EXTERN Receiver : public qpid::messaging::Handle { public: QPID_MESSAGING_EXTERN Receiver(ReceiverImpl* impl = 0); diff --git a/qpid/cpp/include/qpid/messaging/Sender.h b/qpid/cpp/include/qpid/messaging/Sender.h index 85658f37cc..8e1c5846e9 100644 --- a/qpid/cpp/include/qpid/messaging/Sender.h +++ b/qpid/cpp/include/qpid/messaging/Sender.h @@ -40,7 +40,7 @@ class Session; /** \ingroup messaging * Interface through which messages are sent. */ -class Sender : public qpid::messaging::Handle +class QPID_MESSAGING_CLASS_EXTERN Sender : public qpid::messaging::Handle { public: QPID_MESSAGING_EXTERN Sender(SenderImpl* impl = 0); diff --git a/qpid/cpp/include/qpid/messaging/Session.h b/qpid/cpp/include/qpid/messaging/Session.h index 6c023629e0..52786eb5f4 100644 --- a/qpid/cpp/include/qpid/messaging/Session.h +++ b/qpid/cpp/include/qpid/messaging/Session.h @@ -46,7 +46,7 @@ class SessionImpl; * A session represents a distinct 'conversation' which can involve * sending and receiving messages to and from different addresses. */ -class Session : public qpid::messaging::Handle +class QPID_MESSAGING_CLASS_EXTERN Session : public qpid::messaging::Handle { public: QPID_MESSAGING_EXTERN Session(SessionImpl* impl = 0); diff --git a/qpid/cpp/include/qpid/messaging/exceptions.h b/qpid/cpp/include/qpid/messaging/exceptions.h index 0ff608b343..07d1dc414b 100644 --- a/qpid/cpp/include/qpid/messaging/exceptions.h +++ b/qpid/cpp/include/qpid/messaging/exceptions.h @@ -32,7 +32,7 @@ namespace messaging { /** \ingroup messaging */ -struct MessagingException : public qpid::types::Exception +struct QPID_MESSAGING_CLASS_EXTERN MessagingException : public qpid::types::Exception { QPID_MESSAGING_EXTERN MessagingException(const std::string& msg); QPID_MESSAGING_EXTERN virtual ~MessagingException() throw(); @@ -41,22 +41,22 @@ struct MessagingException : public qpid::types::Exception //TODO: override what() to include detail if present }; -struct InvalidOptionString : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN InvalidOptionString : public MessagingException { QPID_MESSAGING_EXTERN InvalidOptionString(const std::string& msg); }; -struct KeyError : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN KeyError : public MessagingException { QPID_MESSAGING_EXTERN KeyError(const std::string&); }; -struct LinkError : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN LinkError : public MessagingException { QPID_MESSAGING_EXTERN LinkError(const std::string&); }; -struct AddressError : public LinkError +struct QPID_MESSAGING_CLASS_EXTERN AddressError : public LinkError { QPID_MESSAGING_EXTERN AddressError(const std::string&); }; @@ -65,17 +65,17 @@ struct AddressError : public LinkError * Thrown when a syntactically correct address cannot be resolved or * used. */ -struct ResolutionError : public AddressError +struct QPID_MESSAGING_CLASS_EXTERN ResolutionError : public AddressError { QPID_MESSAGING_EXTERN ResolutionError(const std::string& msg); }; -struct AssertionFailed : public ResolutionError +struct QPID_MESSAGING_CLASS_EXTERN AssertionFailed : public ResolutionError { QPID_MESSAGING_EXTERN AssertionFailed(const std::string& msg); }; -struct NotFound : public ResolutionError +struct QPID_MESSAGING_CLASS_EXTERN NotFound : public ResolutionError { QPID_MESSAGING_EXTERN NotFound(const std::string& msg); }; @@ -83,67 +83,67 @@ struct NotFound : public ResolutionError /** * Thrown when an address string with inalid sytanx is used. */ -struct MalformedAddress : public AddressError +struct QPID_MESSAGING_CLASS_EXTERN MalformedAddress : public AddressError { QPID_MESSAGING_EXTERN MalformedAddress(const std::string& msg); }; -struct ReceiverError : public LinkError +struct QPID_MESSAGING_CLASS_EXTERN ReceiverError : public LinkError { QPID_MESSAGING_EXTERN ReceiverError(const std::string&); }; -struct FetchError : public ReceiverError +struct QPID_MESSAGING_CLASS_EXTERN FetchError : public ReceiverError { QPID_MESSAGING_EXTERN FetchError(const std::string&); }; -struct NoMessageAvailable : public FetchError +struct QPID_MESSAGING_CLASS_EXTERN NoMessageAvailable : public FetchError { QPID_MESSAGING_EXTERN NoMessageAvailable(); }; -struct SenderError : public LinkError +struct QPID_MESSAGING_CLASS_EXTERN SenderError : public LinkError { QPID_MESSAGING_EXTERN SenderError(const std::string&); }; -struct SendError : public SenderError +struct QPID_MESSAGING_CLASS_EXTERN SendError : public SenderError { QPID_MESSAGING_EXTERN SendError(const std::string&); }; -struct TargetCapacityExceeded : public SendError +struct QPID_MESSAGING_CLASS_EXTERN TargetCapacityExceeded : public SendError { QPID_MESSAGING_EXTERN TargetCapacityExceeded(const std::string&); }; -struct SessionError : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN SessionError : public MessagingException { QPID_MESSAGING_EXTERN SessionError(const std::string&); }; -struct TransactionError : public SessionError +struct QPID_MESSAGING_CLASS_EXTERN TransactionError : public SessionError { QPID_MESSAGING_EXTERN TransactionError(const std::string&); }; -struct TransactionAborted : public TransactionError +struct QPID_MESSAGING_CLASS_EXTERN TransactionAborted : public TransactionError { QPID_MESSAGING_EXTERN TransactionAborted(const std::string&); }; -struct UnauthorizedAccess : public SessionError +struct QPID_MESSAGING_CLASS_EXTERN UnauthorizedAccess : public SessionError { QPID_MESSAGING_EXTERN UnauthorizedAccess(const std::string&); }; -struct ConnectionError : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN ConnectionError : public MessagingException { QPID_MESSAGING_EXTERN ConnectionError(const std::string&); }; -struct TransportFailure : public MessagingException +struct QPID_MESSAGING_CLASS_EXTERN TransportFailure : public MessagingException { QPID_MESSAGING_EXTERN TransportFailure(const std::string&); }; diff --git a/qpid/cpp/include/qpid/sys/IntegerTypes.h b/qpid/cpp/include/qpid/sys/IntegerTypes.h index 89635f033e..75fa921de0 100755 --- a/qpid/cpp/include/qpid/sys/IntegerTypes.h +++ b/qpid/cpp/include/qpid/sys/IntegerTypes.h @@ -21,7 +21,7 @@ * */ -#if (defined(_WINDOWS) || defined (WIN32)) && defined(_MSC_VER) +#if (defined(_WINDOWS) || defined (WIN32)) #include "qpid/sys/windows/IntegerTypes.h" #endif #if !defined _WINDOWS && !defined WIN32 diff --git a/qpid/cpp/include/qpid/sys/Runnable.h b/qpid/cpp/include/qpid/sys/Runnable.h index 0f1243a277..fed7663cb6 100644 --- a/qpid/cpp/include/qpid/sys/Runnable.h +++ b/qpid/cpp/include/qpid/sys/Runnable.h @@ -30,7 +30,7 @@ namespace sys { /** * Interface for objects that can be run, e.g. in a thread. */ -class Runnable +class QPID_COMMON_CLASS_EXTERN Runnable { public: /** Type to represent a runnable as a Functor */ diff --git a/qpid/cpp/include/qpid/sys/Time.h b/qpid/cpp/include/qpid/sys/Time.h index 154a068d83..9c5ac66e9a 100644 --- a/qpid/cpp/include/qpid/sys/Time.h +++ b/qpid/cpp/include/qpid/sys/Time.h @@ -119,7 +119,7 @@ class Duration { friend class AbsTime; public: - QPID_COMMON_EXTERN inline Duration(int64_t time0 = 0); + QPID_COMMON_INLINE_EXTERN inline Duration(int64_t time0 = 0); QPID_COMMON_EXTERN explicit Duration(const AbsTime& start, const AbsTime& finish); inline operator int64_t() const; }; diff --git a/qpid/cpp/include/qpid/types/Exception.h b/qpid/cpp/include/qpid/types/Exception.h index d061a7df0e..483d104cc8 100644 --- a/qpid/cpp/include/qpid/types/Exception.h +++ b/qpid/cpp/include/qpid/types/Exception.h @@ -28,7 +28,7 @@ namespace qpid { namespace types { -class Exception : public std::exception +class QPID_TYPES_CLASS_EXTERN Exception : public std::exception { public: QPID_TYPES_EXTERN explicit Exception(const std::string& message=std::string()) throw(); diff --git a/qpid/cpp/include/qpid/types/ImportExport.h b/qpid/cpp/include/qpid/types/ImportExport.h index bb10575fcd..8fa41884fb 100644 --- a/qpid/cpp/include/qpid/types/ImportExport.h +++ b/qpid/cpp/include/qpid/types/ImportExport.h @@ -20,14 +20,16 @@ * under the License. */ -#if defined(WIN32) && !defined(QPID_DECLARE_STATIC) +#include "qpid/ImportExport.h" + #if defined(TYPES_EXPORT) || defined (qpidtypes_EXPORTS) -#define QPID_TYPES_EXTERN __declspec(dllexport) -#else -#define QPID_TYPES_EXTERN __declspec(dllimport) -#endif +# define QPID_TYPES_EXTERN QPID_EXPORT +# define QPID_TYPES_CLASS_EXTERN QPID_CLASS_EXPORT +# define QPID_TYPES_INLINE_EXTERN QPID_INLINE_EXPORT #else -#define QPID_TYPES_EXTERN +# define QPID_TYPES_EXTERN QPID_IMPORT +# define QPID_TYPES_CLASS_EXTERN QPID_CLASS_IMPORT +# define QPID_TYPES_INLINE_EXTERN QPID_INLINE_IMPORT #endif #endif /*!QPID_TYPES_IMPORTEXPORT_H*/ diff --git a/qpid/cpp/include/qpid/types/Uuid.h b/qpid/cpp/include/qpid/types/Uuid.h index 467a895184..02af4c7e7f 100644 --- a/qpid/cpp/include/qpid/types/Uuid.h +++ b/qpid/cpp/include/qpid/types/Uuid.h @@ -29,7 +29,7 @@ namespace qpid { namespace types { -class Uuid +class QPID_TYPES_CLASS_EXTERN Uuid { public: static const size_t SIZE; diff --git a/qpid/cpp/include/qpid/types/Variant.h b/qpid/cpp/include/qpid/types/Variant.h index d9260133a7..4459fc4123 100644 --- a/qpid/cpp/include/qpid/types/Variant.h +++ b/qpid/cpp/include/qpid/types/Variant.h @@ -36,7 +36,7 @@ namespace types { /** * Thrown when an illegal conversion of a variant is attempted. */ -struct InvalidConversion : public Exception +struct QPID_TYPES_CLASS_EXTERN InvalidConversion : public Exception { InvalidConversion(const std::string& msg); }; @@ -67,7 +67,7 @@ class VariantImpl; /** * Represents a value of variable type. */ -class Variant +class QPID_TYPES_CLASS_EXTERN Variant { public: typedef std::map Map; diff --git a/qpid/cpp/rubygen/0-10/specification.rb b/qpid/cpp/rubygen/0-10/specification.rb index 7366599eba..ef193f5fd0 100755 --- a/qpid/cpp/rubygen/0-10/specification.rb +++ b/qpid/cpp/rubygen/0-10/specification.rb @@ -252,7 +252,7 @@ class Specification < CppGen include "#{@dir}/specification" namespace(@ns) { genl "template " - cpp_class("ProxyTemplate") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", "ProxyTemplate") { public genl "ProxyTemplate(F f=F()) : functor(f) {}" @amqp.classes.each { |c| diff --git a/qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb b/qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb index 4f9b369117..11dbcb8f83 100755 --- a/qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb +++ b/qpid/cpp/rubygen/MethodBodyDefaultVisitor.rb @@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppGen include "qpid/framing/MethodBodyConstVisitor" namespace(@namespace) { genl - cpp_class(@classname, "public MethodBodyConstVisitor") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") { genl "public:" genl "virtual void defaultVisit() = 0;" @amqp.methods_.each { |m| diff --git a/qpid/cpp/rubygen/cppgen.rb b/qpid/cpp/rubygen/cppgen.rb index f0995105f1..7dc21fe1bc 100755 --- a/qpid/cpp/rubygen/cppgen.rb +++ b/qpid/cpp/rubygen/cppgen.rb @@ -377,6 +377,9 @@ class CppGen < Generator def cpp_class(name, *bases, &block) struct_class("class", name, bases, &block); end + def cpp_extern_class(scope, name, *bases, &block) + struct_class("class "+scope, name, bases, &block); + end def typedef(type, name) genl "typedef #{type} #{name};\n"; end diff --git a/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb b/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb index 00962de4f9..4c58ff2bbb 100755 --- a/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb +++ b/qpid/cpp/rubygen/framing.0-10/MethodBodyDefaultVisitor.rb @@ -33,7 +33,7 @@ class MethodBodyDefaultVisitorGen < CppGen include "qpid/CommonImportExport.h" namespace(@namespace) { genl "class AMQMethodBody;" - cpp_class(@classname, "public MethodBodyConstVisitor") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", @classname, "public MethodBodyConstVisitor") { genl "public:" genl "virtual void defaultVisit(const AMQMethodBody&) = 0;" @amqp.methods_.each { |m| diff --git a/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb b/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb index f9b6cac76b..f9b5ce58d8 100755 --- a/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb +++ b/qpid/cpp/rubygen/framing.0-10/OperationsInvoker.rb @@ -69,7 +69,7 @@ class OperationsInvokerGen < CppGen def invoker_h(invoker, target, methods) return if methods.empty? genl - cpp_class(invoker, "public qpid::framing::Invoker") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", invoker, "public qpid::framing::Invoker") { genl "#{target}& target;" public genl("Invoker(#{target}& target_) : target(target_) {}") diff --git a/qpid/cpp/rubygen/framing.0-10/Proxy.rb b/qpid/cpp/rubygen/framing.0-10/Proxy.rb index 6e3cb4fd4d..3325616754 100755 --- a/qpid/cpp/rubygen/framing.0-10/Proxy.rb +++ b/qpid/cpp/rubygen/framing.0-10/Proxy.rb @@ -37,7 +37,7 @@ class ProxyGen < CppGen def inner_class_decl(c) cname=c.name.caps - cpp_class(cname, "public Proxy") { + cpp_extern_class("QPID_COMMON_CLASS_EXTERN", cname, "public Proxy") { gen < msg; public: QPID_BROKER_EXTERN DeliverableMessage(const boost::intrusive_ptr& msg); diff --git a/qpid/cpp/src/qpid/broker/Exchange.h b/qpid/cpp/src/qpid/broker/Exchange.h index e853155951..b12af9a1dd 100644 --- a/qpid/cpp/src/qpid/broker/Exchange.h +++ b/qpid/cpp/src/qpid/broker/Exchange.h @@ -39,7 +39,7 @@ namespace broker { class Broker; class ExchangeRegistry; -class Exchange : public PersistableExchange, public management::Manageable { +class QPID_BROKER_CLASS_EXTERN Exchange : public PersistableExchange, public management::Manageable { public: struct Binding : public management::Manageable { typedef boost::shared_ptr shared_ptr; @@ -166,7 +166,7 @@ public: Broker* broker = 0); QPID_BROKER_EXTERN Exchange(const std::string& _name, bool _durable, const qpid::framing::FieldTable& _args, management::Manageable* parent = 0, Broker* broker = 0); - QPID_BROKER_EXTERN virtual ~Exchange(); + QPID_BROKER_INLINE_EXTERN virtual ~Exchange(); const std::string& getName() const { return name; } bool isDurable() { return durable; } diff --git a/qpid/cpp/src/qpid/broker/ExpiryPolicy.h b/qpid/cpp/src/qpid/broker/ExpiryPolicy.h index 40e793bf2c..a723eb0aa8 100644 --- a/qpid/cpp/src/qpid/broker/ExpiryPolicy.h +++ b/qpid/cpp/src/qpid/broker/ExpiryPolicy.h @@ -33,7 +33,7 @@ class Message; /** * Default expiry policy. */ -class ExpiryPolicy : public RefCounted +class QPID_BROKER_CLASS_EXTERN ExpiryPolicy : public RefCounted { public: QPID_BROKER_EXTERN virtual ~ExpiryPolicy(); diff --git a/qpid/cpp/src/qpid/broker/MessageBuilder.h b/qpid/cpp/src/qpid/broker/MessageBuilder.h index 75dfd6781d..b99b8efee6 100644 --- a/qpid/cpp/src/qpid/broker/MessageBuilder.h +++ b/qpid/cpp/src/qpid/broker/MessageBuilder.h @@ -33,7 +33,7 @@ namespace qpid { class Message; class MessageStore; - class MessageBuilder : public framing::FrameHandler{ + class QPID_BROKER_CLASS_EXTERN MessageBuilder : public framing::FrameHandler{ public: QPID_BROKER_EXTERN MessageBuilder(MessageStore* const store); QPID_BROKER_EXTERN void handle(framing::AMQFrame& frame); diff --git a/qpid/cpp/src/qpid/broker/NullMessageStore.h b/qpid/cpp/src/qpid/broker/NullMessageStore.h index 5f51d53886..c6f402662e 100644 --- a/qpid/cpp/src/qpid/broker/NullMessageStore.h +++ b/qpid/cpp/src/qpid/broker/NullMessageStore.h @@ -35,7 +35,7 @@ namespace broker { /** * A null implementation of the MessageStore interface */ -class NullMessageStore : public MessageStore +class QPID_BROKER_CLASS_EXTERN NullMessageStore : public MessageStore { std::set prepared; uint64_t nextPersistenceId; diff --git a/qpid/cpp/src/qpid/broker/PersistableMessage.h b/qpid/cpp/src/qpid/broker/PersistableMessage.h index e50b52c09a..d29c2c45b4 100644 --- a/qpid/cpp/src/qpid/broker/PersistableMessage.h +++ b/qpid/cpp/src/qpid/broker/PersistableMessage.h @@ -115,11 +115,11 @@ class PersistableMessage : public Persistable virtual QPID_BROKER_EXTERN bool isPersistent() const = 0; /** track the progress of a message received by the broker - see ingressCompletion above */ - QPID_BROKER_EXTERN bool isIngressComplete() { return ingressCompletion.isDone(); } - QPID_BROKER_EXTERN AsyncCompletion& getIngressCompletion() { return ingressCompletion; } + QPID_BROKER_INLINE_EXTERN bool isIngressComplete() { return ingressCompletion.isDone(); } + QPID_BROKER_INLINE_EXTERN AsyncCompletion& getIngressCompletion() { return ingressCompletion; } - QPID_BROKER_EXTERN void enqueueStart() { ingressCompletion.startCompleter(); } - QPID_BROKER_EXTERN void enqueueComplete() { ingressCompletion.finishCompleter(); } + QPID_BROKER_INLINE_EXTERN void enqueueStart() { ingressCompletion.startCompleter(); } + QPID_BROKER_INLINE_EXTERN void enqueueComplete() { ingressCompletion.finishCompleter(); } QPID_BROKER_EXTERN void enqueueAsync(PersistableQueue::shared_ptr queue, MessageStore* _store); diff --git a/qpid/cpp/src/qpid/broker/TopicExchange.h b/qpid/cpp/src/qpid/broker/TopicExchange.h index 3109e3b7dd..636918f8a1 100644 --- a/qpid/cpp/src/qpid/broker/TopicExchange.h +++ b/qpid/cpp/src/qpid/broker/TopicExchange.h @@ -56,7 +56,7 @@ class TopicExchange : public virtual Exchange { // | +-->d-->... // +-->x-->y-->... // - class BindingNode { + class QPID_BROKER_CLASS_EXTERN BindingNode { public: typedef boost::shared_ptr shared_ptr; diff --git a/qpid/cpp/src/qpid/broker/TxPublish.h b/qpid/cpp/src/qpid/broker/TxPublish.h index effa585676..f0b9c0a302 100644 --- a/qpid/cpp/src/qpid/broker/TxPublish.h +++ b/qpid/cpp/src/qpid/broker/TxPublish.h @@ -45,7 +45,7 @@ namespace qpid { * commit() the messages will be passed to the queue for * dispatch or to be added to the in-memory queue. */ - class TxPublish : public TxOp, public Deliverable{ + class QPID_BROKER_CLASS_EXTERN TxPublish : public TxOp, public Deliverable{ class Commit{ boost::intrusive_ptr& msg; diff --git a/qpid/cpp/src/qpid/framing/AMQBody.h b/qpid/cpp/src/qpid/framing/AMQBody.h index 60ac2d3b7e..56d1d250c1 100644 --- a/qpid/cpp/src/qpid/framing/AMQBody.h +++ b/qpid/cpp/src/qpid/framing/AMQBody.h @@ -46,7 +46,7 @@ struct AMQBodyConstVisitor { virtual void visit(const AMQMethodBody&) = 0; }; -class AMQBody : public RefCounted { +class QPID_COMMON_CLASS_EXTERN AMQBody : public RefCounted { public: AMQBody() {} QPID_COMMON_EXTERN virtual ~AMQBody(); diff --git a/qpid/cpp/src/qpid/framing/AMQContentBody.h b/qpid/cpp/src/qpid/framing/AMQContentBody.h index 69813b221c..e25451e354 100644 --- a/qpid/cpp/src/qpid/framing/AMQContentBody.h +++ b/qpid/cpp/src/qpid/framing/AMQContentBody.h @@ -29,7 +29,7 @@ namespace qpid { namespace framing { -class AMQContentBody : public AMQBody +class QPID_COMMON_CLASS_EXTERN AMQContentBody : public AMQBody { string data; @@ -37,15 +37,15 @@ public: QPID_COMMON_EXTERN AMQContentBody(); QPID_COMMON_EXTERN AMQContentBody(const string& data); inline virtual ~AMQContentBody(){} - QPID_COMMON_EXTERN inline uint8_t type() const { return CONTENT_BODY; }; - QPID_COMMON_EXTERN inline const string& getData() const { return data; } - QPID_COMMON_EXTERN inline string& getData() { return data; } + inline uint8_t type() const { return CONTENT_BODY; }; + inline const string& getData() const { return data; } + inline string& getData() { return data; } QPID_COMMON_EXTERN uint32_t encodedSize() const; QPID_COMMON_EXTERN void encode(Buffer& buffer) const; QPID_COMMON_EXTERN void decode(Buffer& buffer, uint32_t size); QPID_COMMON_EXTERN void print(std::ostream& out) const; - QPID_COMMON_EXTERN void accept(AMQBodyConstVisitor& v) const { v.visit(*this); } - QPID_COMMON_EXTERN boost::intrusive_ptr clone() const { return BodyFactory::copy(*this); } + void accept(AMQBodyConstVisitor& v) const { v.visit(*this); } + boost::intrusive_ptr clone() const { return BodyFactory::copy(*this); } }; } diff --git a/qpid/cpp/src/qpid/framing/AMQFrame.h b/qpid/cpp/src/qpid/framing/AMQFrame.h index d7b04f0f65..c669d12bc0 100644 --- a/qpid/cpp/src/qpid/framing/AMQFrame.h +++ b/qpid/cpp/src/qpid/framing/AMQFrame.h @@ -33,7 +33,7 @@ namespace qpid { namespace framing { -class AMQFrame : public AMQDataBlock +class QPID_COMMON_CLASS_EXTERN AMQFrame : public AMQDataBlock { public: QPID_COMMON_EXTERN AMQFrame(const boost::intrusive_ptr& b=0); diff --git a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h b/qpid/cpp/src/qpid/framing/AMQHeaderBody.h index 8d96e35720..a8c326969a 100644 --- a/qpid/cpp/src/qpid/framing/AMQHeaderBody.h +++ b/qpid/cpp/src/qpid/framing/AMQHeaderBody.h @@ -35,7 +35,7 @@ namespace qpid { namespace framing { -class AMQHeaderBody : public AMQBody +class QPID_COMMON_CLASS_EXTERN AMQHeaderBody : public AMQBody { template struct OptProps { boost::optional props; }; template diff --git a/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h b/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h index 9b1fe8a4c1..19ac2be013 100644 --- a/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h +++ b/qpid/cpp/src/qpid/framing/AMQHeartbeatBody.h @@ -29,7 +29,7 @@ namespace qpid { namespace framing { -class AMQHeartbeatBody : public AMQBody +class QPID_COMMON_CLASS_EXTERN AMQHeartbeatBody : public AMQBody { public: QPID_COMMON_EXTERN virtual ~AMQHeartbeatBody(); diff --git a/qpid/cpp/src/qpid/framing/TransferContent.h b/qpid/cpp/src/qpid/framing/TransferContent.h index 5fe1a513a9..9a698a1823 100644 --- a/qpid/cpp/src/qpid/framing/TransferContent.h +++ b/qpid/cpp/src/qpid/framing/TransferContent.h @@ -32,7 +32,7 @@ namespace qpid { namespace framing { /** Message content */ -class TransferContent : public MethodContent +class QPID_COMMON_CLASS_EXTERN TransferContent : public MethodContent { AMQHeaderBody header; std::string data; diff --git a/qpid/cpp/src/qpid/log/windows/SinkOptions.h b/qpid/cpp/src/qpid/log/windows/SinkOptions.h index 605822fd46..f270c504a2 100644 --- a/qpid/cpp/src/qpid/log/windows/SinkOptions.h +++ b/qpid/cpp/src/qpid/log/windows/SinkOptions.h @@ -26,7 +26,7 @@ namespace qpid { namespace log { namespace windows { -struct SinkOptions : public qpid::log::SinkOptions { +struct QPID_COMMON_CLASS_EXTERN SinkOptions : public qpid::log::SinkOptions { QPID_COMMON_EXTERN SinkOptions(const std::string& argv0); virtual ~SinkOptions() {} diff --git a/qpid/cpp/src/qpid/sys/AggregateOutput.h b/qpid/cpp/src/qpid/sys/AggregateOutput.h index 6dad998bb0..d7c0ff29e3 100644 --- a/qpid/cpp/src/qpid/sys/AggregateOutput.h +++ b/qpid/cpp/src/qpid/sys/AggregateOutput.h @@ -41,7 +41,7 @@ namespace sys { * doOutput is called in another. */ -class AggregateOutput : public OutputTask, public OutputControl +class QPID_COMMON_CLASS_EXTERN AggregateOutput : public OutputTask, public OutputControl { typedef std::deque TaskList; diff --git a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h index e1885bac79..b9867606c4 100644 --- a/qpid/cpp/src/qpid/sys/AsynchIOHandler.h +++ b/qpid/cpp/src/qpid/sys/AsynchIOHandler.h @@ -57,7 +57,7 @@ class AsynchIOHandler : public OutputControl { QPID_COMMON_EXTERN ~AsynchIOHandler(); QPID_COMMON_EXTERN void init(AsynchIO* a, int numBuffs); - QPID_COMMON_EXTERN void setClient() { isClient = true; } + QPID_COMMON_INLINE_EXTERN void setClient() { isClient = true; } // Output side QPID_COMMON_EXTERN void abort(); diff --git a/qpid/cpp/src/qpid/sys/Poller.h b/qpid/cpp/src/qpid/sys/Poller.h index ec53b79bad..01ee139ee6 100644 --- a/qpid/cpp/src/qpid/sys/Poller.h +++ b/qpid/cpp/src/qpid/sys/Poller.h @@ -120,7 +120,7 @@ class PollerHandle { friend struct Poller::Event; PollerHandlePrivate* const impl; - QPID_COMMON_EXTERN virtual void processEvent(Poller::EventType) {}; + QPID_COMMON_INLINE_EXTERN virtual void processEvent(Poller::EventType) {}; public: QPID_COMMON_EXTERN PollerHandle(const IOHandle& h); diff --git a/qpid/cpp/src/qpid/sys/Socket.h b/qpid/cpp/src/qpid/sys/Socket.h index 7d50afc59f..b1cded1aa1 100644 --- a/qpid/cpp/src/qpid/sys/Socket.h +++ b/qpid/cpp/src/qpid/sys/Socket.h @@ -33,7 +33,7 @@ namespace sys { class Duration; class SocketAddress; -class Socket : public IOHandle +class QPID_COMMON_CLASS_EXTERN Socket : public IOHandle { public: /** Create a socket wrapper for descriptor. */ @@ -84,7 +84,7 @@ public: /** * Returns the full address of the connection: local and remote host and port. */ - QPID_COMMON_EXTERN std::string getFullAddress() const { return getLocalAddress()+"-"+getPeerAddress(); } + QPID_COMMON_INLINE_EXTERN std::string getFullAddress() const { return getLocalAddress()+"-"+getPeerAddress(); } QPID_COMMON_EXTERN uint16_t getLocalPort() const; uint16_t getRemotePort() const; -- cgit v1.2.1