Declare Cocoa conversion funcs in objc-mode only.

In practice, there are several ways to forward-declare
objective-c classes. Qt uses "struct objc_object",
other projects may use a plain "class". Mismatched
forward declarations will lead to compile errors,
and this is a form of header pollution.

dd5e40d9 added a workaround where Q_FORWARD_DECLARE_OBJC_CLASS
can be predefined in order to sync up the declarations.

Make forward declaration clashes less likely by
forward-declaring in objc-mode only.

Change-Id: I9f7a399d64dc88bfe05d5385b3d46b5302112aef
Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
This commit is contained in:
Morten Johan Sørvig 2013-10-31 13:03:24 +01:00 committed by The Qt Project
parent 2eb1e28a90
commit fc26b053df
2 changed files with 10 additions and 2 deletions

View File

@ -51,8 +51,10 @@
#include <QtCore/qglobal.h>
#ifdef Q_OS_MAC
Q_FORWARD_DECLARE_OBJC_CLASS(NSURL);
Q_FORWARD_DECLARE_CF_TYPE(CFURL);
# ifdef __OBJC__
Q_FORWARD_DECLARE_OBJC_CLASS(NSURL);
# endif
#endif
QT_BEGIN_NAMESPACE
@ -265,8 +267,10 @@ public:
#if defined(Q_OS_MAC) || defined(Q_QDOC)
static QUrl fromCFURL(CFURLRef url);
CFURLRef toCFURL() const Q_DECL_CF_RETURNS_RETAINED;
# if defined(__OBJC__) || defined(Q_QDOC)
static QUrl fromNSURL(const NSURL *url);
NSURL *toNSURL() const Q_DECL_NS_RETURNS_AUTORELEASED;
# endif
#endif
#if QT_DEPRECATED_SINCE(5,0)

View File

@ -65,8 +65,10 @@ namespace std
#endif
#ifdef Q_OS_MAC
Q_FORWARD_DECLARE_OBJC_CLASS(NSString);
Q_FORWARD_DECLARE_CF_TYPE(CFString);
# ifdef __OBJC__
Q_FORWARD_DECLARE_OBJC_CLASS(NSString);
# endif
#endif
QT_BEGIN_NAMESPACE
@ -681,8 +683,10 @@ public:
#if defined(Q_OS_MAC) || defined(Q_QDOC)
static QString fromCFString(CFStringRef string);
CFStringRef toCFString() const Q_DECL_CF_RETURNS_RETAINED;
# if defined(__OBJC__) || defined(Q_QDOC)
static QString fromNSString(const NSString *string);
NSString *toNSString() const Q_DECL_NS_RETURNS_AUTORELEASED;
# endif
#endif
// compatibility
struct Null { };