From 22b16a1db143ff6764a55d3b58bd26b1f3c95a8a Mon Sep 17 00:00:00 2001 From: Sona Kurazyan Date: Tue, 9 Aug 2022 17:46:45 +0200 Subject: [PATCH] Rename qtnamespacemacros.h -> qtconfigmacros.h But keep qtnamespacemacros.h for now, some modules include it explicitly, so need to change those to include qtconfigmacros.h first. The plan is to move QT_SHARED, QT_STATIC and QT_CONFIG macros there too. Change-Id: I945b3dfffbd9cd394a6cf42a36df6657d1703d5b Pick-to: 6.4 Reviewed-by: Thiago Macieira --- src/corelib/CMakeLists.txt | 1 + src/corelib/global/qglobal.h | 2 +- src/corelib/global/qtconfigmacros.h | 85 ++++++++++++++++++++++++++ src/corelib/global/qtnamespacemacros.h | 78 +---------------------- 4 files changed, 88 insertions(+), 78 deletions(-) create mode 100644 src/corelib/global/qtconfigmacros.h diff --git a/src/corelib/CMakeLists.txt b/src/corelib/CMakeLists.txt index fac7680b19..6b18d0e506 100644 --- a/src/corelib/CMakeLists.txt +++ b/src/corelib/CMakeLists.txt @@ -51,6 +51,7 @@ qt_internal_add_module(Core global/qcompare_impl.h global/qcompare.h global/qcompilerdetection.h + global/qtconfigmacros.h global/qcontainerinfo.h global/qendian.cpp global/qendian.h global/qendian_p.h global/qenvironmentvariables.cpp global/qenvironmentvariables.h diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index 55ce173183..1151a1b6a9 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -166,7 +166,7 @@ # define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition) #endif -# include +# include #ifndef __ASSEMBLER__ QT_BEGIN_NAMESPACE diff --git a/src/corelib/global/qtconfigmacros.h b/src/corelib/global/qtconfigmacros.h new file mode 100644 index 0000000000..d41c8aed11 --- /dev/null +++ b/src/corelib/global/qtconfigmacros.h @@ -0,0 +1,85 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only + +#ifndef QTCONFIGMACROS_H +#define QTCONFIGMACROS_H + +// valid for both C and C++ +#define QT_MANGLE_NAMESPACE0(x) x +#define QT_MANGLE_NAMESPACE1(a, b) a##_##b +#define QT_MANGLE_NAMESPACE2(a, b) QT_MANGLE_NAMESPACE1(a,b) +#if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN) /* user namespace */ +# define QT_MANGLE_NAMESPACE(name) name +#else +# define QT_MANGLE_NAMESPACE(name) QT_MANGLE_NAMESPACE2( \ + QT_MANGLE_NAMESPACE0(name), QT_MANGLE_NAMESPACE0(QT_NAMESPACE)) +#endif + +#ifdef __cplusplus + +#if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN) /* user namespace */ + +# define QT_PREPEND_NAMESPACE(name) ::name +# define QT_USE_NAMESPACE +# define QT_BEGIN_NAMESPACE +# define QT_END_NAMESPACE +# define QT_BEGIN_INCLUDE_NAMESPACE +# define QT_END_INCLUDE_NAMESPACE +# define QT_FORWARD_DECLARE_CLASS(name) class name; +# define QT_FORWARD_DECLARE_STRUCT(name) struct name; + +#else /* user namespace */ + +# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name +# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE; +# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE { +# define QT_END_NAMESPACE } +# define QT_BEGIN_INCLUDE_NAMESPACE } +# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE { +# define QT_FORWARD_DECLARE_CLASS(name) \ + QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE \ + using QT_PREPEND_NAMESPACE(name); + +# define QT_FORWARD_DECLARE_STRUCT(name) \ + QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE \ + using QT_PREPEND_NAMESPACE(name); + +namespace QT_NAMESPACE {} + +# ifndef QT_BOOTSTRAPPED +# ifndef QT_NO_USING_NAMESPACE + /* + This expands to a "using QT_NAMESPACE" also in _header files_. + It is the only way the feature can be used without too much + pain, but if people _really_ do not want it they can add + QT_NO_USING_NAMESPACE to their build configuration. + */ + QT_USE_NAMESPACE +# endif +# endif + +#endif /* user namespace */ + +#else /* __cplusplus */ + +# define QT_BEGIN_NAMESPACE +# define QT_END_NAMESPACE +# define QT_USE_NAMESPACE +# define QT_BEGIN_INCLUDE_NAMESPACE +# define QT_END_INCLUDE_NAMESPACE + +#endif /* __cplusplus */ + +/* ### Qt 6.9 (or later): remove *_MOC_* macros (moc does not need them since 6.5) */ +#ifndef QT_BEGIN_MOC_NAMESPACE +# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE +#endif +#ifndef QT_END_MOC_NAMESPACE +# define QT_END_MOC_NAMESPACE +#endif + +/* silence syncqt warning */ +QT_BEGIN_NAMESPACE +QT_END_NAMESPACE + +#endif /* QTCONFIGMACROS_H */ diff --git a/src/corelib/global/qtnamespacemacros.h b/src/corelib/global/qtnamespacemacros.h index 056d63ee18..49c1e08842 100644 --- a/src/corelib/global/qtnamespacemacros.h +++ b/src/corelib/global/qtnamespacemacros.h @@ -4,82 +4,6 @@ #ifndef QTNAMESPACEMACROS_H #define QTNAMESPACEMACROS_H -// valid for both C and C++ -#define QT_MANGLE_NAMESPACE0(x) x -#define QT_MANGLE_NAMESPACE1(a, b) a##_##b -#define QT_MANGLE_NAMESPACE2(a, b) QT_MANGLE_NAMESPACE1(a,b) -#if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN) /* user namespace */ -# define QT_MANGLE_NAMESPACE(name) name -#else -# define QT_MANGLE_NAMESPACE(name) QT_MANGLE_NAMESPACE2( \ - QT_MANGLE_NAMESPACE0(name), QT_MANGLE_NAMESPACE0(QT_NAMESPACE)) -#endif - -#ifdef __cplusplus - -#if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN) /* user namespace */ - -# define QT_PREPEND_NAMESPACE(name) ::name -# define QT_USE_NAMESPACE -# define QT_BEGIN_NAMESPACE -# define QT_END_NAMESPACE -# define QT_BEGIN_INCLUDE_NAMESPACE -# define QT_END_INCLUDE_NAMESPACE -# define QT_FORWARD_DECLARE_CLASS(name) class name; -# define QT_FORWARD_DECLARE_STRUCT(name) struct name; - -#else /* user namespace */ - -# define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name -# define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE; -# define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE { -# define QT_END_NAMESPACE } -# define QT_BEGIN_INCLUDE_NAMESPACE } -# define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE { -# define QT_FORWARD_DECLARE_CLASS(name) \ - QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE \ - using QT_PREPEND_NAMESPACE(name); - -# define QT_FORWARD_DECLARE_STRUCT(name) \ - QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE \ - using QT_PREPEND_NAMESPACE(name); - -namespace QT_NAMESPACE {} - -# ifndef QT_BOOTSTRAPPED -# ifndef QT_NO_USING_NAMESPACE - /* - This expands to a "using QT_NAMESPACE" also in _header files_. - It is the only way the feature can be used without too much - pain, but if people _really_ do not want it they can add - DEFINES += QT_NO_USING_NAMESPACE to their .pro files. - */ - QT_USE_NAMESPACE -# endif -# endif - -#endif /* user namespace */ - -#else /* __cplusplus */ - -# define QT_BEGIN_NAMESPACE -# define QT_END_NAMESPACE -# define QT_USE_NAMESPACE -# define QT_BEGIN_INCLUDE_NAMESPACE -# define QT_END_INCLUDE_NAMESPACE - -#endif /* __cplusplus */ - -/* ### Qt 6.9 (or later): remove *_MOC_* macros (moc does not need them since 6.5) */ -#ifndef QT_BEGIN_MOC_NAMESPACE -# define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE -#endif -#ifndef QT_END_MOC_NAMESPACE -# define QT_END_MOC_NAMESPACE -#endif - -/* silence syncqt warning */ -QT_BEGIN_NAMESPACE -QT_END_NAMESPACE +#include #endif /* QTNAMESPACEMACROS_H */