mirror of
https://github.com/NohamR/RMHook-Win.git
synced 2026-05-25 19:59:46 +00:00
161 lines
4.9 KiB
C++
161 lines
4.9 KiB
C++
// 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
|
|
|
|
#if 0
|
|
# pragma qt_sync_stop_processing
|
|
#endif
|
|
#ifdef QT_BOOTSTRAPPED
|
|
// qconfig-bootstrapped.h is not supposed to be a part of the synced header files. So we find it by
|
|
// the include path specified for Bootstrap library in the source tree instead of the build tree as
|
|
// it's done for regular header files.
|
|
#include "qconfig-bootstrapped.h"
|
|
#else
|
|
#include <QtCore/qconfig.h>
|
|
#include <QtCore/qtcore-config.h>
|
|
#endif
|
|
|
|
/*
|
|
The Qt modules' export macros.
|
|
The options are:
|
|
- defined(QT_STATIC): Qt was built or is being built in static mode
|
|
- defined(QT_SHARED): Qt was built or is being built in shared/dynamic mode
|
|
If neither was defined, then QT_SHARED is implied. If Qt was compiled in static
|
|
mode, QT_STATIC is defined in qconfig.h. In shared mode, QT_STATIC is implied
|
|
for the bootstrapped tools.
|
|
*/
|
|
|
|
#ifdef QT_BOOTSTRAPPED
|
|
# ifdef QT_SHARED
|
|
# error "QT_SHARED and QT_BOOTSTRAPPED together don't make sense. Please fix the build"
|
|
# elif !defined(QT_STATIC)
|
|
# define QT_STATIC
|
|
# endif
|
|
#endif
|
|
|
|
#if defined(QT_SHARED) || !defined(QT_STATIC)
|
|
# ifdef QT_STATIC
|
|
# error "Both QT_SHARED and QT_STATIC defined, please make up your mind"
|
|
# endif
|
|
# ifndef QT_SHARED
|
|
# define QT_SHARED
|
|
# endif
|
|
#endif
|
|
|
|
/*
|
|
No, this is not an evil backdoor. QT_BUILD_INTERNAL just exports more symbols
|
|
for Qt's internal unit tests. If you want slower loading times and more
|
|
symbols that can vanish from version to version, feel free to define QT_BUILD_INTERNAL.
|
|
*/
|
|
#if defined(QT_BUILD_INTERNAL) && defined(QT_BUILDING_QT) && defined(QT_SHARED)
|
|
# define Q_AUTOTEST_EXPORT Q_DECL_EXPORT
|
|
#elif defined(QT_BUILD_INTERNAL) && defined(QT_SHARED)
|
|
# define Q_AUTOTEST_EXPORT Q_DECL_IMPORT
|
|
#else
|
|
# define Q_AUTOTEST_EXPORT
|
|
#endif
|
|
|
|
/*
|
|
The QT_CONFIG macro implements a safe compile time check for features of Qt.
|
|
Features can be in three states:
|
|
0 or undefined: This will lead to a compile error when testing for it
|
|
-1: The feature is not available
|
|
1: The feature is available
|
|
*/
|
|
#define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1)
|
|
#define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(QT_FEATURE_##feature == 1, "Required feature " #feature " for file " __FILE__ " not available.")
|
|
|
|
/* moc compats (signals/slots) */
|
|
#ifndef QT_MOC_COMPAT
|
|
# define QT_MOC_COMPAT
|
|
#else
|
|
# undef QT_MOC_COMPAT
|
|
# define QT_MOC_COMPAT
|
|
#endif
|
|
|
|
/*
|
|
Debugging and error handling
|
|
*/
|
|
|
|
#if !defined(QT_NO_DEBUG) && !defined(QT_DEBUG)
|
|
# define QT_DEBUG
|
|
#endif
|
|
|
|
// 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
|
|
|
|
#endif /* QTCONFIGMACROS_H */
|