// 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 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 #ifndef QT_BEGIN_MOC_NAMESPACE # define QT_BEGIN_MOC_NAMESPACE #endif #ifndef QT_END_MOC_NAMESPACE # define QT_END_MOC_NAMESPACE #endif # 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 { #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 # 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 */ /* silence syncqt warning */ QT_BEGIN_NAMESPACE QT_END_NAMESPACE #endif /* QTNAMESPACEMACROS_H */