45 # include <type_traits>
58 #define QT_VERSION QT_VERSION_CHECK(QT_VERSION_MAJOR, QT_VERSION_MINOR, QT_VERSION_PATCH)
62 #define QT_VERSION_CHECK(major, minor, patch) ((major<<16)|(minor<<8)|(patch))
64 #ifdef QT_BOOTSTRAPPED
65 #include <QtCore/qconfig-bootstrapped.h>
67 #include <QtCore/qconfig.h>
68 #include <QtCore/qtcore-config.h>
81 #ifdef QT_BOOTSTRAPPED
83 # error "QT_SHARED and QT_BOOTSTRAPPED together don't make sense. Please fix the build"
84 # elif !defined(QT_STATIC)
89 #if defined(QT_SHARED) || !defined(QT_STATIC)
91 # error "Both QT_SHARED and QT_STATIC defined, please make up your mind"
98 #include <QtCore/qtcoreexports.h>
107 #define QT_CONFIG(feature) (1/QT_FEATURE_##feature == 1)
108 #define QT_REQUIRE_CONFIG(feature) Q_STATIC_ASSERT_X(QT_FEATURE_##feature == 1, "Required feature " #feature " for file " __FILE__ " not available.")
118 #if QT_VERSION_MAJOR == 7
119 # define QT7_ONLY(...) __VA_ARGS__
120 # define QT6_ONLY(...)
121 #elif QT_VERSION_MAJOR == 6
122 # define QT7_ONLY(...)
123 # define QT6_ONLY(...) __VA_ARGS__
125 # error Qt major version not 6 or 7
130 #define QT_STRINGIFY2(x) #x
131 #define QT_STRINGIFY(x) QT_STRINGIFY2(x)
133 #include <QtCore/qsystemdetection.h>
134 #include <QtCore/qprocessordetection.h>
135 #include <QtCore/qcompilerdetection.h>
139 #if defined(__cplusplus) && (__cplusplus < 201703L)
141 # error "Qt requires a C++17 compiler, and a suitable value for __cplusplus. On MSVC, you must pass the /Zc:__cplusplus option to the compiler."
143 # error "Qt requires a C++17 compiler"
147 #if defined(__cplusplus) && defined(Q_CC_MSVC) && !defined(Q_CC_CLANG)
148 # if Q_CC_MSVC < 1927
150 # error "Qt requires at least Visual Studio 2019 version 16.7 (VC++ version 14.27). Please upgrade."
157 static_assert(!std::is_convertible_v<std::nullptr_t, bool>,
158 "On MSVC you must pass the /permissive- option to the compiler.");
161 #if defined (__ELF__)
164 #if defined (__MACH__) && defined (__APPLE__)
171 #define Q_UNUSED(x) (void)x;
173 #if defined(__cplusplus)
176 # define Q_STATIC_ASSERT(Condition) static_assert(bool(Condition), #Condition)
177 # define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
178 #elif defined(Q_COMPILER_STATIC_ASSERT)
180 # define Q_STATIC_ASSERT(Condition) _Static_assert(!!(Condition), #Condition)
181 # define Q_STATIC_ASSERT_X(Condition, Message) _Static_assert(!!(Condition), Message)
184 # define Q_STATIC_ASSERT_PRIVATE_JOIN(A, B) Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B)
185 # define Q_STATIC_ASSERT_PRIVATE_JOIN_IMPL(A, B) A ## B
187 # define Q_STATIC_ASSERT(Condition) \
188 typedef char Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __COUNTER__) [(Condition) ? 1 : -1];
190 # define Q_STATIC_ASSERT(Condition) \
191 typedef char Q_STATIC_ASSERT_PRIVATE_JOIN(q_static_assert_result, __LINE__) [(Condition) ? 1 : -1];
193 # define Q_STATIC_ASSERT_X(Condition, Message) Q_STATIC_ASSERT(Condition)
198 #if !defined(QT_NAMESPACE) || defined(Q_MOC_RUN)
200 # define QT_PREPEND_NAMESPACE(name) ::name
201 # define QT_USE_NAMESPACE
202 # define QT_BEGIN_NAMESPACE
203 # define QT_END_NAMESPACE
204 # define QT_BEGIN_INCLUDE_NAMESPACE
205 # define QT_END_INCLUDE_NAMESPACE
206 #ifndef QT_BEGIN_MOC_NAMESPACE
207 # define QT_BEGIN_MOC_NAMESPACE
209 #ifndef QT_END_MOC_NAMESPACE
210 # define QT_END_MOC_NAMESPACE
212 # define QT_FORWARD_DECLARE_CLASS(name) class name;
213 # define QT_FORWARD_DECLARE_STRUCT(name) struct name;
214 # define QT_MANGLE_NAMESPACE(name) name
218 # define QT_PREPEND_NAMESPACE(name) ::QT_NAMESPACE::name
219 # define QT_USE_NAMESPACE using namespace ::QT_NAMESPACE;
220 # define QT_BEGIN_NAMESPACE namespace QT_NAMESPACE {
221 # define QT_END_NAMESPACE }
222 # define QT_BEGIN_INCLUDE_NAMESPACE }
223 # define QT_END_INCLUDE_NAMESPACE namespace QT_NAMESPACE {
224 #ifndef QT_BEGIN_MOC_NAMESPACE
225 # define QT_BEGIN_MOC_NAMESPACE QT_USE_NAMESPACE
227 #ifndef QT_END_MOC_NAMESPACE
228 # define QT_END_MOC_NAMESPACE
230 # define QT_FORWARD_DECLARE_CLASS(name) \
231 QT_BEGIN_NAMESPACE class name; QT_END_NAMESPACE \
232 using QT_PREPEND_NAMESPACE(name);
234 # define QT_FORWARD_DECLARE_STRUCT(name) \
235 QT_BEGIN_NAMESPACE struct name; QT_END_NAMESPACE \
236 using QT_PREPEND_NAMESPACE(name);
238 # define QT_MANGLE_NAMESPACE0(x) x
239 # define QT_MANGLE_NAMESPACE1(a, b) a##_##b
240 # define QT_MANGLE_NAMESPACE2(a, b) QT_MANGLE_NAMESPACE1(a,b)
241 # define QT_MANGLE_NAMESPACE(name) QT_MANGLE_NAMESPACE2( \
242 QT_MANGLE_NAMESPACE0(name), QT_MANGLE_NAMESPACE0(QT_NAMESPACE))
244 namespace QT_NAMESPACE {}
246 # ifndef QT_BOOTSTRAPPED
247 # ifndef QT_NO_USING_NAMESPACE
262 # define QT_BEGIN_NAMESPACE
263 # define QT_END_NAMESPACE
264 # define QT_USE_NAMESPACE
265 # define QT_BEGIN_INCLUDE_NAMESPACE
266 # define QT_END_INCLUDE_NAMESPACE
270 #if defined(Q_OS_DARWIN) && !defined(QT_LARGEFILE_SUPPORT)
271 # define QT_LARGEFILE_SUPPORT 64
274 #ifndef __ASSEMBLER__
292 # define Q_INT64_C(c) static_cast<long long>(c ## LL)
293 # define Q_UINT64_C(c) static_cast<unsigned long long>(c ## ULL)
295 # define Q_INT64_C(c) ((long long)(c ## LL))
296 # define Q_UINT64_C(c) ((unsigned long long)(c ## ULL))
306 Q_STATIC_ASSERT_X(
sizeof(ptrdiff_t) ==
sizeof(
size_t),
"Weird ptrdiff_t and size_t definitions");
312 #define PRIdQPTRDIFF "td"
313 #define PRIiQPTRDIFF "ti"
315 #define PRIdQSIZETYPE "td"
316 #define PRIiQSIZETYPE "ti"
318 #define PRIdQINTPTR "td"
319 #define PRIiQINTPTR "ti"
321 #define PRIuQUINTPTR "zu"
322 #define PRIoQUINTPTR "zo"
323 #define PRIxQUINTPTR "zx"
324 #define PRIXQUINTPTR "zX"
338 #if defined(QT_COORD_TYPE)
339 typedef QT_COORD_TYPE
qreal;
344 #if defined(QT_NO_DEPRECATED)
345 # undef QT_DEPRECATED
346 # undef QT_DEPRECATED_X
347 # undef QT_DEPRECATED_VARIABLE
348 # undef QT_DEPRECATED_CONSTRUCTOR
349 #elif !defined(QT_NO_DEPRECATED_WARNINGS)
350 # undef QT_DEPRECATED
351 # define QT_DEPRECATED Q_DECL_DEPRECATED
352 # undef QT_DEPRECATED_X
353 # define QT_DEPRECATED_X(text) Q_DECL_DEPRECATED_X(text)
354 # undef QT_DEPRECATED_VARIABLE
355 # define QT_DEPRECATED_VARIABLE Q_DECL_VARIABLE_DEPRECATED
356 # undef QT_DEPRECATED_CONSTRUCTOR
357 # define QT_DEPRECATED_CONSTRUCTOR Q_DECL_CONSTRUCTOR_DEPRECATED explicit
359 # undef QT_DEPRECATED
360 # define QT_DEPRECATED
361 # undef QT_DEPRECATED_X
362 # define QT_DEPRECATED_X(text)
363 # undef QT_DEPRECATED_VARIABLE
364 # define QT_DEPRECATED_VARIABLE
365 # undef QT_DEPRECATED_CONSTRUCTOR
366 # define QT_DEPRECATED_CONSTRUCTOR
367 # undef Q_DECL_ENUMERATOR_DEPRECATED
368 # define Q_DECL_ENUMERATOR_DEPRECATED
371 #ifndef QT_DEPRECATED_WARNINGS_SINCE
372 # ifdef QT_DISABLE_DEPRECATED_BEFORE
373 # define QT_DEPRECATED_WARNINGS_SINCE QT_DISABLE_DEPRECATED_BEFORE
375 # define QT_DEPRECATED_WARNINGS_SINCE QT_VERSION
379 #ifndef QT_DISABLE_DEPRECATED_BEFORE
380 #define QT_DISABLE_DEPRECATED_BEFORE QT_VERSION_CHECK(5, 0, 0)
396 #define QT_DEPRECATED_SINCE(major, minor) (QT_VERSION_CHECK(major, minor, 0) > QT_DISABLE_DEPRECATED_BEFORE)
398 #define QT_DEPRECATED_SINCE(major, minor) 0
408 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(5, 12, 0)
409 # define QT_DEPRECATED_VERSION_X_5_12(text) QT_DEPRECATED_X(text)
410 # define QT_DEPRECATED_VERSION_5_12 QT_DEPRECATED
412 # define QT_DEPRECATED_VERSION_X_5_12(text)
413 # define QT_DEPRECATED_VERSION_5_12
416 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(5, 13, 0)
417 # define QT_DEPRECATED_VERSION_X_5_13(text) QT_DEPRECATED_X(text)
418 # define QT_DEPRECATED_VERSION_5_13 QT_DEPRECATED
420 # define QT_DEPRECATED_VERSION_X_5_13(text)
421 # define QT_DEPRECATED_VERSION_5_13
424 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(5, 14, 0)
425 # define QT_DEPRECATED_VERSION_X_5_14(text) QT_DEPRECATED_X(text)
426 # define QT_DEPRECATED_VERSION_5_14 QT_DEPRECATED
428 # define QT_DEPRECATED_VERSION_X_5_14(text)
429 # define QT_DEPRECATED_VERSION_5_14
432 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(5, 15, 0)
433 # define QT_DEPRECATED_VERSION_X_5_15(text) QT_DEPRECATED_X(text)
434 # define QT_DEPRECATED_VERSION_5_15 QT_DEPRECATED
436 # define QT_DEPRECATED_VERSION_X_5_15(text)
437 # define QT_DEPRECATED_VERSION_5_15
440 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 0, 0)
441 # define QT_DEPRECATED_VERSION_X_6_0(text) QT_DEPRECATED_X(text)
442 # define QT_DEPRECATED_VERSION_6_0 QT_DEPRECATED
444 # define QT_DEPRECATED_VERSION_X_6_0(text)
445 # define QT_DEPRECATED_VERSION_6_0
448 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 1, 0)
449 # define QT_DEPRECATED_VERSION_X_6_1(text) QT_DEPRECATED_X(text)
450 # define QT_DEPRECATED_VERSION_6_1 QT_DEPRECATED
452 # define QT_DEPRECATED_VERSION_X_6_1(text)
453 # define QT_DEPRECATED_VERSION_6_1
456 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 2, 0)
457 # define QT_DEPRECATED_VERSION_X_6_2(text) QT_DEPRECATED_X(text)
458 # define QT_DEPRECATED_VERSION_6_2 QT_DEPRECATED
460 # define QT_DEPRECATED_VERSION_X_6_2(text)
461 # define QT_DEPRECATED_VERSION_6_2
464 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 3, 0)
465 # define QT_DEPRECATED_VERSION_X_6_3(text) QT_DEPRECATED_X(text)
466 # define QT_DEPRECATED_VERSION_6_3 QT_DEPRECATED
468 # define QT_DEPRECATED_VERSION_X_6_3(text)
469 # define QT_DEPRECATED_VERSION_6_3
472 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 4, 0)
473 # define QT_DEPRECATED_VERSION_X_6_4(text) QT_DEPRECATED_X(text)
474 # define QT_DEPRECATED_VERSION_6_4 QT_DEPRECATED
476 # define QT_DEPRECATED_VERSION_X_6_4(text)
477 # define QT_DEPRECATED_VERSION_6_4
480 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 5, 0)
481 # define QT_DEPRECATED_VERSION_X_6_5(text) QT_DEPRECATED_X(text)
482 # define QT_DEPRECATED_VERSION_6_5 QT_DEPRECATED
484 # define QT_DEPRECATED_VERSION_X_6_5(text)
485 # define QT_DEPRECATED_VERSION_6_5
488 #if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 6, 0)
489 # define QT_DEPRECATED_VERSION_X_6_6(text) QT_DEPRECATED_X(text)
490 # define QT_DEPRECATED_VERSION_6_6 QT_DEPRECATED
492 # define QT_DEPRECATED_VERSION_X_6_6(text)
493 # define QT_DEPRECATED_VERSION_6_6
496 #define QT_DEPRECATED_VERSION_X_5(minor, text) QT_DEPRECATED_VERSION_X_5_##minor(text)
497 #define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major##_##minor(text)
499 #define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor
500 #define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major##_##minor
505 enum class Deprecated_t {};
506 constexpr
inline Deprecated_t Deprecated = {};
515 #define Q_DISABLE_COPY(Class) \
516 Class(const Class &) = delete;\
517 Class &operator=(const Class &) = delete;
519 #define Q_DISABLE_COPY_MOVE(Class) \
520 Q_DISABLE_COPY(Class) \
521 Class(Class &&) = delete; \
522 Class &operator=(Class &&) = delete;
556 #define QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_MOVE_AND_SWAP(Class) \
557 Class &operator=(Class &&other) noexcept { \
558 Class moved(std::move(other)); \
563 #define QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(Class) \
564 Class &operator=(Class &&other) noexcept { \
574 #if defined(QT_BUILD_INTERNAL) && defined(QT_BUILDING_QT) && defined(QT_SHARED)
575 # define Q_AUTOTEST_EXPORT Q_DECL_EXPORT
576 #elif defined(QT_BUILD_INTERNAL) && defined(QT_SHARED)
577 # define Q_AUTOTEST_EXPORT Q_DECL_IMPORT
579 # define Q_AUTOTEST_EXPORT
582 #define Q_INIT_RESOURCE(name) \
583 do { extern int QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); \
584 QT_MANGLE_NAMESPACE(qInitResources_ ## name) (); } while (false)
585 #define Q_CLEANUP_RESOURCE(name) \
586 do { extern int QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); \
587 QT_MANGLE_NAMESPACE(qCleanupResources_ ## name) (); } while (false)
597 #if !defined(QT_NAMESPACE) && defined(__cplusplus) && !defined(Q_QDOC)
602 #if defined(__cplusplus)
604 #ifndef Q_CONSTRUCTOR_FUNCTION
605 # define Q_CONSTRUCTOR_FUNCTION0(AFUNC) \
607 static const struct AFUNC ## _ctor_class_ { \
608 inline AFUNC ## _ctor_class_() { AFUNC(); } \
609 } AFUNC ## _ctor_instance_; \
612 # define Q_CONSTRUCTOR_FUNCTION(AFUNC) Q_CONSTRUCTOR_FUNCTION0(AFUNC)
615 #ifndef Q_DESTRUCTOR_FUNCTION
616 # define Q_DESTRUCTOR_FUNCTION0(AFUNC) \
618 static const struct AFUNC ## _dtor_class_ { \
619 inline AFUNC ## _dtor_class_() { } \
620 inline ~ AFUNC ## _dtor_class_() { AFUNC(); } \
621 } AFUNC ## _dtor_instance_; \
623 # define Q_DESTRUCTOR_FUNCTION(AFUNC) Q_DESTRUCTOR_FUNCTION0(AFUNC)
635 template <
int>
struct QIntegerForSize;
636 template <>
struct QIntegerForSize<1> {
typedef quint8 Unsigned;
typedef qint8 Signed; };
637 template <>
struct QIntegerForSize<2> {
typedef quint16 Unsigned;
typedef qint16 Signed; };
638 template <>
struct QIntegerForSize<4> {
typedef quint32 Unsigned;
typedef qint32 Signed; };
639 template <>
struct QIntegerForSize<8> {
typedef quint64 Unsigned;
typedef qint64 Signed; };
640 #if defined(Q_CC_GNU) && defined(__SIZEOF_INT128__)
641 template <>
struct QIntegerForSize<16> {
__extension__ typedef unsigned __int128 Unsigned;
__extension__ typedef __int128 Signed; };
643 template <
class T>
struct QIntegerForSizeof: QIntegerForSize<sizeof(T)> { };
644 typedef QIntegerForSize<Q_PROCESSOR_WORDSIZE>::Signed qregisterint;
645 typedef QIntegerForSize<Q_PROCESSOR_WORDSIZE>::Unsigned qregisteruint;
646 typedef QIntegerForSizeof<void *>::Unsigned
quintptr;
647 typedef QIntegerForSizeof<void *>::Signed
qptrdiff;
649 using qsizetype = QIntegerForSizeof<std::size_t>::Signed;
660 #if SIZE_MAX == 4294967295ULL
661 #define PRIuQUINTPTR "u"
662 #define PRIoQUINTPTR "o"
663 #define PRIxQUINTPTR "x"
664 #define PRIXQUINTPTR "X"
666 #define PRIdQPTRDIFF "d"
667 #define PRIiQPTRDIFF "i"
669 #define PRIdQINTPTR "d"
670 #define PRIiQINTPTR "i"
672 #define PRIdQSIZETYPE "d"
673 #define PRIiQSIZETYPE "i"
674 #elif SIZE_MAX == 18446744073709551615ULL
675 #define PRIuQUINTPTR "llu"
676 #define PRIoQUINTPTR "llo"
677 #define PRIxQUINTPTR "llx"
678 #define PRIXQUINTPTR "llX"
680 #define PRIdQPTRDIFF "lld"
681 #define PRIiQPTRDIFF "lli"
683 #define PRIdQINTPTR "lld"
684 #define PRIiQINTPTR "lli"
686 #define PRIdQSIZETYPE "lld"
687 #define PRIiQSIZETYPE "lli"
689 #error Unsupported platform (unknown value for SIZE_MAX)
693 #ifndef QT_MOC_COMPAT
694 # define QT_MOC_COMPAT
696 # undef QT_MOC_COMPAT
697 # define QT_MOC_COMPAT
700 #ifdef QT_ASCII_CAST_WARNINGS
701 # define QT_ASCII_CAST_WARN Q_DECL_DEPRECATED_X("Use fromUtf8, QStringLiteral, or QLatin1String")
703 # define QT_ASCII_CAST_WARN
706 #ifdef Q_PROCESSOR_X86_32
707 # if defined(Q_CC_GNU)
708 # define QT_FASTCALL __attribute__((regparm(3)))
709 # elif defined(Q_CC_MSVC)
710 # define QT_FASTCALL __fastcall
719 #if defined(Q_CC_GNU) && !defined(__INSURE__)
720 # if defined(Q_CC_MINGW) && !defined(Q_CC_CLANG)
721 # define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \
722 __attribute__((format(gnu_printf, (A), (B))))
724 # define Q_ATTRIBUTE_FORMAT_PRINTF(A, B) \
725 __attribute__((format(printf, (A), (B))))
728 # define Q_ATTRIBUTE_FORMAT_PRINTF(A, B)
732 # define Q_NEVER_INLINE __declspec(noinline)
733 # define Q_ALWAYS_INLINE __forceinline
734 #elif defined(Q_CC_GNU)
735 # define Q_NEVER_INLINE __attribute__((noinline))
736 # define Q_ALWAYS_INLINE inline __attribute__((always_inline))
738 # define Q_NEVER_INLINE
739 # define Q_ALWAYS_INLINE inline
744 #if defined(Q_OS_WIN)
745 # if defined(Q_CC_MINGW) && defined(Q_PROCESSOR_X86_32)
746 # define QT_ENSURE_STACK_ALIGNED_FOR_SSE __attribute__ ((force_align_arg_pointer))
748 # define QT_ENSURE_STACK_ALIGNED_FOR_SSE
750 # define QT_WIN_CALLBACK CALLBACK QT_ENSURE_STACK_ALIGNED_FOR_SSE
757 template <
typename T>
758 constexpr
inline T qAbs(
const T &
t) {
return t >= 0 ?
t : -
t; }
761 #if defined(Q_PROCESSOR_ARM_64) && (__has_builtin(__builtin_round) || defined(Q_CC_GNU)) && !defined(Q_CC_CLANG)
764 constexpr
inline int qRound(
double d)
765 {
return int(__builtin_round(
d)); }
766 constexpr
inline int qRound(
float f)
767 {
return int(__builtin_roundf(
f)); }
769 {
return qint64(__builtin_round(
d)); }
771 {
return qint64(__builtin_roundf(
f)); }
772 #elif defined(__SSE2__) && (__has_builtin(__builtin_copysign) || defined(Q_CC_GNU))
774 constexpr
inline int qRound(
double d)
775 {
return int(
d + __builtin_copysign(0.5,
d)); }
776 constexpr
inline int qRound(
float f)
777 {
return int(
f + __builtin_copysignf(0.5f,
f)); }
779 {
return qint64(
d + __builtin_copysign(0.5,
d)); }
781 {
return qint64(
f + __builtin_copysignf(0.5f,
f)); }
783 constexpr
inline int qRound(
double d)
784 {
return d >= 0.0 ? int(
d + 0.5) : int(
d - 0.5); }
785 constexpr
inline int qRound(
float d)
786 {
return d >= 0.0f ? int(
d + 0.5f) : int(
d - 0.5f); }
794 #ifndef Q_FORWARD_DECLARE_OBJC_CLASS
796 # define Q_FORWARD_DECLARE_OBJC_CLASS(classname) @class classname
798 # define Q_FORWARD_DECLARE_OBJC_CLASS(classname) class classname
801 #ifndef Q_FORWARD_DECLARE_CF_TYPE
802 # define Q_FORWARD_DECLARE_CF_TYPE(type) typedef const struct __ ## type * type ## Ref
804 #ifndef Q_FORWARD_DECLARE_MUTABLE_CF_TYPE
805 # define Q_FORWARD_DECLARE_MUTABLE_CF_TYPE(type) typedef struct __ ## type * type ## Ref
807 #ifndef Q_FORWARD_DECLARE_CG_TYPE
808 #define Q_FORWARD_DECLARE_CG_TYPE(type) typedef const struct type *type ## Ref;
810 #ifndef Q_FORWARD_DECLARE_MUTABLE_CG_TYPE
811 #define Q_FORWARD_DECLARE_MUTABLE_CG_TYPE(type) typedef struct type *type ## Ref;
815 # define QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios, tvos, watchos) \
816 ((defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && macos != __MAC_NA && __MAC_OS_X_VERSION_MAX_ALLOWED >= macos) || \
817 (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && ios != __IPHONE_NA && __IPHONE_OS_VERSION_MAX_ALLOWED >= ios) || \
818 (defined(__TV_OS_VERSION_MAX_ALLOWED) && tvos != __TVOS_NA && __TV_OS_VERSION_MAX_ALLOWED >= tvos) || \
819 (defined(__WATCH_OS_VERSION_MAX_ALLOWED) && watchos != __WATCHOS_NA && __WATCH_OS_VERSION_MAX_ALLOWED >= watchos))
821 # define QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, ios, tvos, watchos) \
822 ((defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && macos != __MAC_NA && __MAC_OS_X_VERSION_MIN_REQUIRED < macos) || \
823 (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && ios != __IPHONE_NA && __IPHONE_OS_VERSION_MIN_REQUIRED < ios) || \
824 (defined(__TV_OS_VERSION_MIN_REQUIRED) && tvos != __TVOS_NA && __TV_OS_VERSION_MIN_REQUIRED < tvos) || \
825 (defined(__WATCH_OS_VERSION_MIN_REQUIRED) && watchos != __WATCHOS_NA && __WATCH_OS_VERSION_MIN_REQUIRED < watchos))
827 # define QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios) \
828 QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios, __TVOS_NA, __WATCHOS_NA)
829 # define QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos) \
830 QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, __IPHONE_NA, __TVOS_NA, __WATCHOS_NA)
831 # define QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(ios) \
832 QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, ios, __TVOS_NA, __WATCHOS_NA)
833 # define QT_TVOS_PLATFORM_SDK_EQUAL_OR_ABOVE(tvos) \
834 QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_NA, tvos, __WATCHOS_NA)
835 # define QT_WATCHOS_PLATFORM_SDK_EQUAL_OR_ABOVE(watchos) \
836 QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_NA, __IPHONE_NA, __TVOS_NA, watchos)
838 # define QT_MACOS_IOS_DEPLOYMENT_TARGET_BELOW(macos, ios) \
839 QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, ios, __TVOS_NA, __WATCHOS_NA)
840 # define QT_MACOS_DEPLOYMENT_TARGET_BELOW(macos) \
841 QT_DARWIN_DEPLOYMENT_TARGET_BELOW(macos, __IPHONE_NA, __TVOS_NA, __WATCHOS_NA)
842 # define QT_IOS_DEPLOYMENT_TARGET_BELOW(ios) \
843 QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, ios, __TVOS_NA, __WATCHOS_NA)
844 # define QT_TVOS_DEPLOYMENT_TARGET_BELOW(tvos) \
845 QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_NA, tvos, __WATCHOS_NA)
846 # define QT_WATCHOS_DEPLOYMENT_TARGET_BELOW(watchos) \
847 QT_DARWIN_DEPLOYMENT_TARGET_BELOW(__MAC_NA, __IPHONE_NA, __TVOS_NA, watchos)
850 # define QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios) QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios)
851 # define QT_MAC_DEPLOYMENT_TARGET_BELOW(osx, ios) QT_MACOS_IOS_DEPLOYMENT_TARGET_BELOW(osx, ios)
852 # define QT_OSX_PLATFORM_SDK_EQUAL_OR_ABOVE(osx) QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(osx)
853 # define QT_OSX_DEPLOYMENT_TARGET_BELOW(osx) QT_MACOS_DEPLOYMENT_TARGET_BELOW(osx)
856 class Q_CORE_EXPORT QMacAutoReleasePool
859 QMacAutoReleasePool();
860 ~QMacAutoReleasePool();
868 #define QT_DARWIN_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios, tvos, watchos) (0)
869 #define QT_MACOS_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos, ios) (0)
870 #define QT_MACOS_PLATFORM_SDK_EQUAL_OR_ABOVE(macos) (0)
871 #define QT_IOS_PLATFORM_SDK_EQUAL_OR_ABOVE(ios) (0)
872 #define QT_TVOS_PLATFORM_SDK_EQUAL_OR_ABOVE(tvos) (0)
873 #define QT_WATCHOS_PLATFORM_SDK_EQUAL_OR_ABOVE(watchos) (0)
875 #define QT_MAC_PLATFORM_SDK_EQUAL_OR_ABOVE(osx, ios) (0)
876 #define QT_OSX_PLATFORM_SDK_EQUAL_OR_ABOVE(osx) (0)
886 inline void qt_noop(
void) {}
896 #if !defined(QT_NO_EXCEPTIONS)
897 # if !defined(Q_MOC_RUN)
898 # if (defined(Q_CC_CLANG) && !defined(Q_CC_INTEL) && !__has_feature(cxx_exceptions)) || \
899 (defined(Q_CC_GNU) && !defined(__EXCEPTIONS))
900 # define QT_NO_EXCEPTIONS
902 # elif defined(QT_BOOTSTRAPPED)
903 # define QT_NO_EXCEPTIONS
908 #ifdef QT_NO_EXCEPTIONS
909 # define QT_TRY if (true)
910 # define QT_CATCH(A) else
911 # define QT_THROW(A) qt_noop()
912 # define QT_RETHROW qt_noop()
913 # define QT_TERMINATE_ON_EXCEPTION(expr) do { expr; } while (false)
916 # define QT_CATCH(A) catch (A)
917 # define QT_THROW(A) throw A
918 # define QT_RETHROW throw
919 # ifdef Q_COMPILER_NOEXCEPT
920 # define QT_TERMINATE_ON_EXCEPTION(expr) do { expr; } while (false)
922 # define QT_TERMINATE_ON_EXCEPTION(expr) do { try { expr; } catch (...) { qTerminate(); } } while (false)
928 #ifndef Q_OUTOFLINE_TEMPLATE
929 # define Q_OUTOFLINE_TEMPLATE
931 #ifndef Q_INLINE_TEMPLATE
932 # define Q_INLINE_TEMPLATE inline
939 #if !defined(QT_NO_DEBUG) && !defined(QT_DEBUG)
945 # define qPrintable(string) QtPrivate::asString(string).toLocal8Bit().constData()
948 #ifndef qUtf8Printable
949 # define qUtf8Printable(string) QtPrivate::asString(string).toUtf8().constData()
956 #ifndef qUtf16Printable
957 # define qUtf16Printable(string) \
958 static_cast<const wchar_t*>(static_cast<const void*>(QString(string).utf16()))
969 Q_CORE_EXPORT
void qt_assert(
const char *assertion,
const char *
file,
int line) noexcept;
971 #if !defined(Q_ASSERT)
972 # if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS)
973 # define Q_ASSERT(cond) static_cast<void>(false && (cond))
975 # define Q_ASSERT(cond) ((cond) ? static_cast<void>(0) : qt_assert(#cond, __FILE__, __LINE__))
983 Q_CORE_EXPORT
void qt_assert_x(
const char *where,
const char *what,
const char *
file,
int line) noexcept;
985 #if !defined(Q_ASSERT_X)
986 # if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS)
987 # define Q_ASSERT_X(cond, where, what) static_cast<void>(false && (cond))
989 # define Q_ASSERT_X(cond, where, what) ((cond) ? static_cast<void>(0) : qt_assert_x(where, what, __FILE__, __LINE__))
993 Q_NORETURN Q_CORE_EXPORT
void qt_check_pointer(
const char *,
int) noexcept;
997 #ifdef QT_NO_EXCEPTIONS
998 # if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS)
999 # define Q_CHECK_PTR(p) qt_noop()
1001 # define Q_CHECK_PTR(p) do {if (!(p)) qt_check_pointer(__FILE__,__LINE__);} while (false)
1004 # define Q_CHECK_PTR(p) do { if (!(p)) qBadAlloc(); } while (false)
1007 template <
typename T>
1010 typedef void (*QFunctionPointer)();
1012 #if !defined(Q_UNIMPLEMENTED)
1013 # define Q_UNIMPLEMENTED() qWarning("Unimplemented code.")
1019 template<
typename T,
typename U,
1020 typename = std::enable_if_t<std::is_arithmetic_v<T> && std::is_arithmetic_v<U> &&
1021 std::is_floating_point_v<T> == std::is_floating_point_v<U> &&
1022 std::is_signed_v<T> == std::is_signed_v<U> &&
1023 !std::is_same_v<T, bool> && !std::is_same_v<U, bool> &&
1024 !std::is_same_v<T, char> && !std::is_same_v<U, char>>>
1027 using type = decltype(
T() +
U());
1031 template <
typename T,
typename U>
1036 template <
typename T>
1037 constexpr
inline const T &qMin(
const T &
a,
const T &
b) {
return (
a <
b) ?
a :
b; }
1038 template <
typename T>
1039 constexpr
inline const T &qMax(
const T &
a,
const T &
b) {
return (
a <
b) ?
b :
a; }
1040 template <
typename T>
1041 constexpr
inline const T &qBound(
const T &min,
const T &
val,
const T &max)
1044 return qMax(min, qMin(max,
val));
1046 template <
typename T,
typename U>
1047 constexpr
inline QTypeTraits::Promoted<T, U> qMin(
const T &
a,
const U &
b)
1049 using P = QTypeTraits::Promoted<T, U>;
1052 return (_a < _b) ? _a : _b;
1054 template <
typename T,
typename U>
1055 constexpr
inline QTypeTraits::Promoted<T, U> qMax(
const T &
a,
const U &
b)
1057 using P = QTypeTraits::Promoted<T, U>;
1060 return (_a < _b) ? _b : _a;
1062 template <
typename T,
typename U>
1063 constexpr
inline QTypeTraits::Promoted<T, U> qBound(
const T &min,
const U &
val,
const T &max)
1066 return qMax(min, qMin(max,
val));
1068 template <
typename T,
typename U>
1069 constexpr
inline QTypeTraits::Promoted<T, U> qBound(
const T &min,
const T &
val,
const U &max)
1071 using P = QTypeTraits::Promoted<T, U>;
1073 return qMax(min, qMin(max,
val));
1075 template <
typename T,
typename U>
1076 constexpr
inline QTypeTraits::Promoted<T, U> qBound(
const U &min,
const T &
val,
const T &max)
1078 using P = QTypeTraits::Promoted<T, U>;
1080 return qMax(min, qMin(max,
val));
1095 return qAbs(
d) <= 0.000000000001;
1100 return qAbs(
f) <= 0.00001f;
1106 [[nodiscard]] constexpr
bool qIsNull(
double d) noexcept
1111 [[nodiscard]] constexpr
bool qIsNull(
float f) noexcept
1127 #ifdef Q_FULL_TEMPLATE_INSTANTIATION
1128 # define Q_DUMMY_COMPARISON_OPERATOR(C) \
1129 bool operator==(const C&) const { \
1130 qWarning(#C"::operator==(const "#C"&) was called"); \
1135 # define Q_DUMMY_COMPARISON_OPERATOR(C)
1144 namespace SwapExceptionTester {
1146 template <
typename T>
1147 void checkSwap(
T &
t)
1148 noexcept(noexcept(
swap(
t,
t)));
1154 template <
typename T>
1155 constexpr
void qSwap(
T &value1,
T &value2)
1156 noexcept(noexcept(QtPrivate::SwapExceptionTester::checkSwap(value1)))
1159 swap(value1, value2);
1163 template <
typename T>
1164 constexpr
inline void qt_ptr_swap(
T* &lhs,
T* &
rhs) noexcept
1183 #if !defined(QT_CC_WARNINGS)
1184 # define QT_NO_WARNINGS
1186 #if defined(QT_NO_WARNINGS)
1187 # if defined(Q_CC_MSVC)
1198 # elif defined(Q_CC_BOR)
1199 # pragma option -w-inl
1200 # pragma option -w-aus
1210 template <
typename T>
1213 template <
typename T>
1214 void qAsConst(
const T &&) =
delete;
1217 template <
typename T,
typename U = T>
1218 constexpr
T qExchange(
T &
t,
U &&newValue)
1219 noexcept(std::conjunction_v<std::is_nothrow_move_constructible<T>, std::is_nothrow_assignable<T &, U>>)
1221 T old = std::move(
t);
1222 t = std::forward<U>(newValue);
1227 template <
typename Enum>
1228 constexpr std::underlying_type_t<Enum> qToUnderlying(
Enum e) noexcept
1230 return static_cast<std::underlying_type_t<Enum>
>(
e);
1233 #ifdef __cpp_conditional_explicit
1234 #define Q_IMPLICIT explicit(false)
1239 #ifndef QT_NO_FOREACH
1243 template <
typename T>
1244 class QForeachContainer {
1247 QForeachContainer(
const T &
t) :
c(
t),
i(qAsConst(
c).
begin()),
e(qAsConst(
c).
end()) {}
1248 QForeachContainer(
T &&
t) :
c(
std::move(
t)),
i(qAsConst(
c).
begin()),
e(qAsConst(
c).
end()) {}
1250 QForeachContainer(QForeachContainer &&
other)
1253 e(qAsConst(
c).
end()),
1258 QForeachContainer &operator=(QForeachContainer &&
other)
1261 i = qAsConst(
c).begin();
1262 e = qAsConst(
c).end();
1263 control = std::move(
other.control);
1273 template <typename T, typename = decltype(std::declval<T>().detach())>
1274 inline void warnIfContainerIsNotShared(
int) {}
1276 #if QT_DEPRECATED_SINCE(6, 0)
1278 template <
typename T>
1280 "Prefer using a range-based for loop with these containers: `for (const auto &it : container)`, "
1281 "keeping in mind that range-based for doesn't copy the container as Q_FOREACH does")
1282 inline void warnIfContainerIsNotShared(...) {}
1285 template<
typename T>
1296 #define Q_FOREACH_IMPL(variable, name, container) \
1297 for (auto name = QtPrivate::qMakeForeachContainer(container); name.i != name.e; ++name.i) \
1298 if (variable = *name.i; false) {} else
1300 #define Q_FOREACH_JOIN(A, B) Q_FOREACH_JOIN_IMPL(A, B)
1301 #define Q_FOREACH_JOIN_IMPL(A, B) A ## B
1303 #define Q_FOREACH(variable, container) \
1304 Q_FOREACH_IMPL(variable, Q_FOREACH_JOIN(_container_, __LINE__), container)
1307 #define Q_FOREVER for(;;)
1308 #ifndef QT_NO_KEYWORDS
1309 # ifndef QT_NO_FOREACH
1311 # define foreach Q_FOREACH
1315 # define forever Q_FOREVER
1319 template <
typename T>
inline T *qGetPtrHelper(
T *ptr) noexcept {
return ptr; }
1320 template <
typename Ptr>
inline auto qGetPtrHelper(Ptr &ptr) noexcept -> decltype(ptr.get())
1321 { static_assert(noexcept(ptr.get()),
"Smart d pointers for Q_DECLARE_PRIVATE must have noexcept get()");
return ptr.get(); }
1324 #define Q_CAST_IGNORE_ALIGN(body) QT_WARNING_PUSH QT_WARNING_DISABLE_GCC("-Wcast-align") body QT_WARNING_POP
1325 #define Q_DECLARE_PRIVATE(Class) \
1326 inline Class##Private* d_func() noexcept \
1327 { Q_CAST_IGNORE_ALIGN(return reinterpret_cast<Class##Private *>(qGetPtrHelper(d_ptr));) } \
1328 inline const Class##Private* d_func() const noexcept \
1329 { Q_CAST_IGNORE_ALIGN(return reinterpret_cast<const Class##Private *>(qGetPtrHelper(d_ptr));) } \
1330 friend class Class##Private;
1332 #define Q_DECLARE_PRIVATE_D(Dptr, Class) \
1333 inline Class##Private* d_func() noexcept \
1334 { Q_CAST_IGNORE_ALIGN(return reinterpret_cast<Class##Private *>(qGetPtrHelper(Dptr));) } \
1335 inline const Class##Private* d_func() const noexcept \
1336 { Q_CAST_IGNORE_ALIGN(return reinterpret_cast<const Class##Private *>(qGetPtrHelper(Dptr));) } \
1337 friend class Class##Private;
1339 #define Q_DECLARE_PUBLIC(Class) \
1340 inline Class* q_func() noexcept { return static_cast<Class *>(q_ptr); } \
1341 inline const Class* q_func() const noexcept { return static_cast<const Class *>(q_ptr); } \
1344 #define Q_D(Class) Class##Private * const d = d_func()
1345 #define Q_Q(Class) Class * const q = q_func()
1347 #define QT_TR_NOOP(x) x
1348 #define QT_TR_NOOP_UTF8(x) x
1349 #define QT_TRANSLATE_NOOP(scope, x) x
1350 #define QT_TRANSLATE_NOOP_UTF8(scope, x) x
1351 #define QT_TRANSLATE_NOOP3(scope, x, comment) {x, comment}
1352 #define QT_TRANSLATE_NOOP3_UTF8(scope, x, comment) {x, comment}
1354 #ifndef QT_NO_TRANSLATION
1356 #define QT_TR_N_NOOP(x) x
1357 #define QT_TRANSLATE_N_NOOP(scope, x) x
1358 #define QT_TRANSLATE_N_NOOP3(scope, x, comment) {x, comment}
1365 #define QT_TRID_NOOP(id) id
1366 #define QT_TRID_N_NOOP(id) id
1373 template<
typename T>
1374 auto qOverload(
T functionPointer);
1375 template<
typename T>
1376 auto qConstOverload(
T memberFunctionPointer);
1377 template<
typename T>
1378 auto qNonConstOverload(
T memberFunctionPointer);
1380 template <
typename...
Args>
1381 struct QNonConstOverload
1383 template <
typename R,
typename T>
1387 template <
typename R,
typename T>
1388 static constexpr
auto of(
R (
T::*ptr)(
Args...)) noexcept -> decltype(ptr)
1392 template <
typename...
Args>
1393 struct QConstOverload
1395 template <
typename R,
typename T>
1399 template <
typename R,
typename T>
1400 static constexpr
auto of(
R (
T::*ptr)(
Args...)
const) noexcept -> decltype(ptr)
1404 template <
typename...
Args>
1405 struct QOverload : QConstOverload<Args...>, QNonConstOverload<Args...>
1407 using QConstOverload<
Args...>::of;
1408 using QConstOverload<Args...>::operator();
1409 using QNonConstOverload<
Args...>::of;
1410 using QNonConstOverload<Args...>::operator();
1412 template <
typename R>
1416 template <
typename R>
1417 static constexpr
auto of(
R (*ptr)(
Args...)) noexcept -> decltype(ptr)
1421 template <
typename...
Args> constexpr
inline QOverload<
Args...> qOverload = {};
1422 template <
typename...
Args> constexpr
inline QConstOverload<
Args...> qConstOverload = {};
1423 template <
typename...
Args> constexpr
inline QNonConstOverload<
Args...> qNonConstOverload = {};
1428 Q_CORE_EXPORT
QByteArray qgetenv(
const char *varName);
1432 Q_CORE_EXPORT
bool qputenv(
const char *varName,
const QByteArray&
value);
1433 Q_CORE_EXPORT
bool qunsetenv(
const char *varName);
1435 Q_CORE_EXPORT
bool qEnvironmentVariableIsEmpty(
const char *varName) noexcept;
1436 Q_CORE_EXPORT
bool qEnvironmentVariableIsSet(
const char *varName) noexcept;
1437 Q_CORE_EXPORT
int qEnvironmentVariableIntValue(
const char *varName,
bool *
ok=
nullptr) noexcept;
1440 inline int qIntCast(
float f) {
return int(
f); }
1442 #define QT_MODULE(x)
1444 #if !defined(QT_BOOTSTRAPPED) && defined(QT_REDUCE_RELOCATIONS) && defined(__ELF__) && \
1445 (!defined(__PIC__) || (defined(__PIE__) && defined(Q_CC_GNU) && Q_CC_GNU >= 500))
1446 # error "You must build your code with position independent code if Qt was built with -reduce-relocations. "\
1447 "Compile your code with -fPIC (and not with -fPIE)."
1450 #define QT_VA_ARGS_CHOOSE(_1, _2, _3, _4, _5, _6, _7, _8, _9, N, ...) N
1451 #define QT_VA_ARGS_EXPAND(...) __VA_ARGS__
1452 #define QT_VA_ARGS_COUNT(...) QT_VA_ARGS_EXPAND(QT_VA_ARGS_CHOOSE(__VA_ARGS__, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0))
1453 #define QT_OVERLOADED_MACRO_EXPAND(MACRO, ARGC) MACRO##_##ARGC
1454 #define QT_OVERLOADED_MACRO_IMP(MACRO, ARGC) QT_OVERLOADED_MACRO_EXPAND(MACRO, ARGC)
1455 #define QT_OVERLOADED_MACRO(MACRO, ...) QT_VA_ARGS_EXPAND(QT_OVERLOADED_MACRO_IMP(MACRO, QT_VA_ARGS_COUNT(__VA_ARGS__))(__VA_ARGS__))
1461 #define Q_OFFSETOF(Class, member) \
1463 QT_WARNING_PUSH QT_WARNING_DISABLE_INVALID_OFFSETOF \
1464 return offsetof(Class, member); \
1472 #include <QtCore/qtypeinfo.h>
1473 #include <QtCore/qsysinfo.h>
1474 #include <QtCore/qlogging.h>
1476 #include <QtCore/qflags.h>
1478 #include <QtCore/qatomic.h>
1479 #include <QtCore/qglobalstatic.h>
1480 #include <QtCore/qnumeric.h>
1481 #include <QtCore/qversiontagging.h>
small capitals from c petite p scientific i
[1]
The QByteArray class provides an array of bytes.
The QDataStream class provides serialization of binary data to a QIODevice.
bool qFuzzyCompare(const QMatrix4x4 &m1, const QMatrix4x4 &m2)
The QString class provides a Unicode character string.
constexpr T & operator()(T &v) const
auto it unsigned count const
typename C::const_iterator const_iterator
void swap(SimpleVector< T > &v1, SimpleVector< T > &v2)
#define Q_DECL_CONST_FUNCTION
#define QT_WARNING_DISABLE_MSVC(number)
#define QT_WARNING_DISABLE_FLOAT_COMPARE
#define Q_DECL_COLD_FUNCTION
#define QT_WARNING_DISABLE_GCC(text)
QString qtTrId(const char *id, int n)
EGLOutputLayerEXT EGLint EGLAttrib value
bool qFuzzyIsNull(qfloat16 f) noexcept
bool qIsNull(qfloat16 f) noexcept
qint64 qRound64(qfloat16 d) noexcept
int qRound(qfloat16 d) noexcept
int qIntCast(qfloat16 f) noexcept
void qt_assert_x(const char *where, const char *what, const char *file, int line) noexcept
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
bool qSharedBuild() noexcept
Q_NORETURN void qTerminate() noexcept
void qt_assert(const char *assertion, const char *file, int line) noexcept
#define Q_STATIC_ASSERT_X(Condition, Message)
#define QT_BEGIN_INCLUDE_NAMESPACE
QT_BEGIN_INCLUDE_NAMESPACE typedef unsigned char uchar
QT_END_INCLUDE_NAMESPACE typedef double qreal
unsigned long long quint64
#define QT_END_INCLUDE_NAMESPACE
#define QT_DEPRECATED_VERSION_X_6_0(text)
#define Q_DISABLE_COPY(Class)
Q_CORE_EXPORT Q_DECL_CONST_FUNCTION const char * qVersion(void) Q_DECL_NOEXCEPT
QT_BEGIN_NAMESPACE typedef signed char qint8
QT_BEGIN_NAMESPACE void * qMallocAligned(size_t size, size_t alignment)
void * qReallocAligned(void *oldptr, size_t newsize, size_t oldsize, size_t alignment)
void qFreeAligned(void *ptr)
GLboolean GLboolean GLboolean b
GLboolean GLboolean GLboolean GLboolean a
[7]
GLenum GLuint GLintptr GLsizeiptr size
[1]
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
QString qt_error_string(int code)
Q_CHECK_PTR(a=new int[80])