diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-04-04 12:00:16 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-04-05 11:24:50 +0200 |
| commit | a060a70cf6a815b18dc42ed76a3a577cc3ec14e2 (patch) | |
| tree | b16ace641360c57c2ce56baecffe9e7406587150 /src/base/QXmppBuildConstants.h.in | |
| parent | 93f9c8cf35d112b8e00da42ab73aa68c448e1011 (diff) | |
| download | qxmpp-a060a70cf6a815b18dc42ed76a3a577cc3ec14e2.tar.gz | |
Rename QXmppGlobal to QXmppBuildConstants
Plan is to split up Global into build constants and other globals. This
avoids hassle when editing QXmppGlobal. With IDEs it can easily happen
that you edit the wrong file from the build dir instead the `.h.in`.
Co-authored-by: Melvin Keskin <melvo@olomono.de>
Diffstat (limited to 'src/base/QXmppBuildConstants.h.in')
| -rw-r--r-- | src/base/QXmppBuildConstants.h.in | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/src/base/QXmppBuildConstants.h.in b/src/base/QXmppBuildConstants.h.in new file mode 100644 index 00000000..5e9d7f96 --- /dev/null +++ b/src/base/QXmppBuildConstants.h.in @@ -0,0 +1,109 @@ +// SPDX-FileCopyrightText: 2010 Manjeet Dahiya <manjeetdahiya@gmail.com> +// SPDX-FileCopyrightText: 2017 Niels Ole Salscheider <niels_ole@salscheider-online.de> +// SPDX-FileCopyrightText: 2019 Linus Jahn <lnj@kaidan.im> +// +// SPDX-License-Identifier: LGPL-2.1-or-later + +#ifndef QXMPPBUILDCONSTANTS_H +#define QXMPPBUILDCONSTANTS_H + +#include <QString> + +#define QXMPP_BUILD_SHARED @QXMPP_BUILD_SHARED@ + +#if QXMPP_BUILD_SHARED +# if defined(QXMPP_BUILD) +# define QXMPP_EXPORT Q_DECL_EXPORT +# else +# define QXMPP_EXPORT Q_DECL_IMPORT +# endif +#else +# define QXMPP_EXPORT +#endif + +#define QXMPP_AUTOTEST_EXPORT + +/// +/// This macro expands a numeric value of the form 0xMMNNPP (MM = +/// major, NN = minor, PP = patch) that specifies QXmpp's version +/// number. For example, if you compile your application against +/// QXmpp 1.2.3, the QXMPP_VERSION macro will expand to 0x010203. +/// +/// You can use QXMPP_VERSION to use the latest QXmpp features where +/// available. +/// +#define QXMPP_VERSION QT_VERSION_CHECK(@PROJECT_VERSION_MAJOR@, @PROJECT_VERSION_MINOR@, @PROJECT_VERSION_PATCH@) + +/// +/// Returns the version of QXmpp used at compile time as a string. +/// +inline QLatin1String QXmppVersion() +{ + return QLatin1String("@PROJECT_VERSION@"); +} + +// This sets which deprecated functions should still be usable +// It works exactly like QT_DISABLE_DEPRECATED_BEFORE +#ifndef QXMPP_DISABLE_DEPRECATED_BEFORE +# define QXMPP_DISABLE_DEPRECATED_BEFORE 0x0 +#endif + +// This works exactly like QT_DEPRECATED_SINCE, but checks QXMPP_DISABLE_DEPRECATED_BEFORE instead. +#define QXMPP_DEPRECATED_SINCE(major, minor) (QT_VERSION_CHECK(major, minor, 0) > QXMPP_DISABLE_DEPRECATED_BEFORE) + +// workaround for Qt < 5.12 +#ifndef Q_DECL_ENUMERATOR_DEPRECATED_X +#define Q_DECL_ENUMERATOR_DEPRECATED_X(msg) +#endif + +#ifndef QT_WARNING_DISABLE_DEPRECATED +#define QT_WARNING_DISABLE_DEPRECATED +#endif + +/// +/// \namespace QXmpp +/// +/// Contains global functions and enumerations. +/// +/// \since QXmpp 1.5 +/// +namespace QXmpp { + +/// +/// Parsing/serialization mode when using Stanza Content Encryption. +/// +/// \sa \xep{0420, Stanza Content Encryption} +/// +/// \since QXmpp 1.5 +/// +enum SceMode : uint8_t { + SceAll, ///< Processes all known elements. + ScePublic, ///< Only processes 'public' elements (e.g. needed for routing). + SceSensitive, ///< Only processes sensitive elements that should be encrypted. +}; + +/// +/// Checks whether a mode is enabled. +/// +/// When an SceMode is given you can use this to check whether Public or Private +/// elements are enabled. +/// +/// \since QXmpp 1.5 +/// +inline constexpr bool operator&(SceMode mode1, SceMode mode2) +{ + return mode1 == SceAll || mode1 == mode2; +} + +/// +/// An empty struct indicating success in results. +/// +/// \since QXmpp 1.5 +/// +struct Success +{ +}; + +} + +#endif // QXMPPBUILDCONSTANTS_H |
