diff options
author | Ali Can Demiralp <ali.demiralp@qt.io> | 2025-04-08 11:30:10 +0200 |
---|---|---|
committer | Ali Can Demiralp <ali.demiralp@qt.io> | 2025-04-08 10:59:47 +0000 |
commit | eb2bcbea2d51ea8eb04275a00f5e273f70ba2972 (patch) | |
tree | 859ca21a9f18fd0e93d141298573b8b6a9ab01a3 | |
parent | 1940a6ecc01a5d668d9a094463265f5c8160bb42 (diff) |
Update qt6.natvis from narnaud/natvis4qt
Re-added the ##NAMESPACE## markers manually with diff.
Change-Id: I5a4094889d03b72172b47363aa96e4da8ca2e377
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r-- | natvis/qt6.natvis | 815 |
1 files changed, 714 insertions, 101 deletions
diff --git a/natvis/qt6.natvis b/natvis/qt6.natvis index 56fe31d..da80ff6 100644 --- a/natvis/qt6.natvis +++ b/natvis/qt6.natvis @@ -1,9 +1,15 @@ <?xml version="1.0" encoding="utf-8"?> <!-- Copyright (C) 2025 The Qt Company Ltd. +Copyright (C) 2025 Klarälvdalens Datakonsult AB, a KDAB Group company +Copyright (C) 2025 Johannes Grunenberg +Copyright (C) 2024 Nic Holthaus +Copyright (C) 2020 Aleksey Nikolaev SPDX-License-Identifier: MIT --> <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> + <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" + MenuName="Add to Image Watch"/> <Type Name="##NAMESPACE##::QPropertyData<*>"> <DisplayString>{val}</DisplayString> @@ -68,7 +74,17 @@ SPDX-License-Identifier: MIT <DisplayString Condition="isNull()">empty</DisplayString> <DisplayString Condition="!isNull()">{_q_value}</DisplayString> <Expand> - <Item Name=" " Condition="!isNull()">*value()</Item> + <ExpandedItem Condition="!isNull()">*value()</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QBasicAtomicPointer<void>"> + <Intrinsic Name="isNull" Expression="value()==0" /> + <Intrinsic Name="value" Expression="_q_value.value()" /> + <DisplayString Condition="isNull()">empty</DisplayString> + <DisplayString Condition="!isNull()">{_q_value}</DisplayString> + <Expand> + <ExpandedItem Condition="!isNull()">value()</ExpandedItem> </Expand> </Type> @@ -131,58 +147,54 @@ SPDX-License-Identifier: MIT </Type> <Type Name="##NAMESPACE##::QPolygon"> - <DisplayString>{{ size={d->size} }}</DisplayString> + <DisplayString>{{ size={d.size} }}</DisplayString> <Expand> - <Item Name="[referenced]">d->ref.atomic._q_value</Item> <ArrayItems> - <Size>d->size</Size> - <ValuePointer>(QPoint*)((reinterpret_cast<char*>(d)) + d->offset)</ValuePointer> + <Size>d.size</Size> + <ValuePointer>d.ptr</ValuePointer> </ArrayItems> </Expand> </Type> <Type Name="##NAMESPACE##::QPolygonF"> - <DisplayString>{{ size={d->size} }}</DisplayString> + <DisplayString>{{ size={d.size} }}</DisplayString> <Expand> <Item Name="[closed]"> - d->size > 0 - && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).xp - == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).xp) - && ((((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[0]).yp - == (((QPointF*)((reinterpret_cast<char*>(d)) + d->offset)[d->size - 1]).yp) + d.size > 0 + && d.ptr[0].xp == d.ptr[d.size - 1].xp + && d.ptr[0].yp == d.ptr[d.size - 1].yp </Item> - <Item Name="[referenced]">d->ref.atomic._q_value</Item> <ArrayItems> - <Size>d->size</Size> - <ValuePointer>(QPointF*)((reinterpret_cast<char*>(d)) + d->offset)</ValuePointer> + <Size>d.size</Size> + <ValuePointer>d.ptr</ValuePointer> </ArrayItems> </Expand> </Type> <Type Name="##NAMESPACE##::QVector2D"> - <DisplayString>{{ x = {xp}, y = {yp} }}</DisplayString> + <DisplayString>{{ x = {v[0]}, y = {v[1]} }}</DisplayString> <Expand> - <Item Name="[x]">xp</Item> - <Item Name="[y]">yp</Item> + <Item Name="[x]">v[0]</Item> + <Item Name="[y]">v[1]</Item> </Expand> </Type> <Type Name="##NAMESPACE##::QVector3D"> - <DisplayString>{{ x = {xp}, y = {yp}, z = {zp} }}</DisplayString> + <DisplayString>{{ x = {v[0]}, y = {v[1]}, z = {v[2]} }}</DisplayString> <Expand> - <Item Name="[x]">xp</Item> - <Item Name="[y]">yp</Item> - <Item Name="[z]">zp</Item> + <Item Name="[x]">v[0]</Item> + <Item Name="[y]">v[1]</Item> + <Item Name="[z]">v[2]</Item> </Expand> </Type> <Type Name="##NAMESPACE##::QVector4D"> - <DisplayString>{{ x = {xp}, y = {yp}, z = {zp}, w = {wp} }}</DisplayString> + <DisplayString>{{ x = {v[0]}, y = {v[1]}, z = {v[2]}, w = {v[3]} }}</DisplayString> <Expand> - <Item Name="[x]">xp</Item> - <Item Name="[y]">yp</Item> - <Item Name="[z]">zp</Item> - <Item Name="[w]">wp</Item> + <Item Name="[x]">v[0]</Item> + <Item Name="[y]">v[1]</Item> + <Item Name="[z]">v[2]</Item> + <Item Name="[w]">v[3]</Item> </Expand> </Type> @@ -230,13 +242,13 @@ SPDX-License-Identifier: MIT </DisplayString> <Expand> <Synthetic Name="[vertical policy]"> - <DisplayString>QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)}</DisplayString> + <DisplayString>##NAMESPACE##::QSizePolicy::Policy::{static_cast<Policy>(bits.verPolicy)}</DisplayString> </Synthetic> <Synthetic Name="[horizontal policy]"> - <DisplayString>QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)}</DisplayString> + <DisplayString>##NAMESPACE##::QSizePolicy::Policy::{static_cast<Policy>(bits.horPolicy)}</DisplayString> </Synthetic> <Synthetic Name="[control type]"> - <DisplayString>QSizePolicy::ControlType::{ControlType(1 << bits.ctype)}</DisplayString> + <DisplayString>##NAMESPACE##::QSizePolicy::ControlType::{ControlType(1 << bits.ctype)}</DisplayString> </Synthetic> <Synthetic Name="[expanding directions]"> <DisplayString @@ -319,16 +331,16 @@ SPDX-License-Identifier: MIT <Intrinsic Name="isEmpty" Expression="size==0"> <Parameter Name="size" Type="int"/> </Intrinsic> - <Intrinsic Name="memberOffset" Expression="sizeof(QAtomicInt) + sizeof(int) + (sizeof(QString) * count)"> + <Intrinsic Name="memberOffset" Expression="sizeof(##NAMESPACE##::QAtomicInt) + sizeof(int) + (sizeof(##NAMESPACE##::QString) * count)"> <Parameter Name="count" Type="int"/> </Intrinsic> - <Intrinsic Name="scheme" Expression="*((QString*)(((char*)(d) + memberOffset(0))))" /> - <Intrinsic Name="username" Expression="*((QString*)(((char*)(d) + memberOffset(1))))" /> - <Intrinsic Name="password" Expression="*((QString*)(((char*)(d) + memberOffset(2))))" /> - <Intrinsic Name="host" Expression="*((QString*)(((char*)(d) + memberOffset(3))))" /> - <Intrinsic Name="path" Expression="*((QString*)(((char*)(d) + memberOffset(4))))" /> - <Intrinsic Name="query" Expression="*((QString*)(((char*)(d) + memberOffset(5))))" /> - <Intrinsic Name="fragment" Expression="*((QString*)(((char*)(d) + memberOffset(6))))" /> + <Intrinsic Name="scheme" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(0))))" /> + <Intrinsic Name="username" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(1))))" /> + <Intrinsic Name="password" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(2))))" /> + <Intrinsic Name="host" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(3))))" /> + <Intrinsic Name="path" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(4))))" /> + <Intrinsic Name="query" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(5))))" /> + <Intrinsic Name="fragment" Expression="*((##NAMESPACE##::QString*)(((char*)(d) + memberOffset(6))))" /> <DisplayString Condition="!isEmpty(scheme().d.size)">{scheme()}://{host()}{path()}</DisplayString> <DisplayString Condition="isEmpty(scheme().d.size)">{path()}</DisplayString> @@ -344,7 +356,26 @@ SPDX-License-Identifier: MIT </Type> <Type Name="##NAMESPACE##::QDate"> - <DisplayString>{{ julian day = {jd} }}</DisplayString> + <!-- formula from https://aa.usno.navy.mil/faq/JD_formula --> + <Intrinsic Name="L1" Expression="jd + 68569" /> + <Intrinsic Name="N" Expression="4 * L1() / 146097" /> + <Intrinsic Name="L2" Expression="L1() - (146097 * N() + 3) / 4" /> + <Intrinsic Name="I1" Expression="4000 * (L2() + 1) / 1461001" /> + <Intrinsic Name="L3" Expression="L2() - 1461 * I1() / 4 + 31" /> + <Intrinsic Name="J1" Expression="80 * L3() / 2447" /> + <Intrinsic Name="day" Expression="L3() - 2447 * J1() / 80" /> + <Intrinsic Name="L4" Expression="J1() / 11" /> + <Intrinsic Name="month" Expression="J1() + 2 - 12 * L4()" /> + <Intrinsic Name="year" Expression="100 * (N() - 49) + I1() + L4()" /> + <DisplayString Condition="month()<10 && day()<10">{year()}-0{month()}-0{day()}</DisplayString> + <DisplayString Condition="month()<10">{year()}-0{month()}-{day()}</DisplayString> + <DisplayString Condition="day()<10">{year()}-{month()}-0{day()}</DisplayString> + <DisplayString>{year()}-{month()}-{day()}</DisplayString> + <Expand> + <Item Name="[year]">year()</Item> + <Item Name="[month]">month()</Item> + <Item Name="[day]">day()</Item> + </Expand> </Type> <Type Name="##NAMESPACE##::QTime"> @@ -405,12 +436,14 @@ SPDX-License-Identifier: MIT </Type> <Type Name="##NAMESPACE##::QMap<*,*>"> - <AlternativeType Name="##NAMESPACE##::QMultiMap<*,*>"/> - <DisplayString>{{ size={d.d->m._Mypair._Myval2._Myval2._Mysize} }}</DisplayString> + <AlternativeType Name="##NAMESPACE##::QMultiMap<*,*>" /> + <Intrinsic Name="p" Optional="true" Expression="d.d"></Intrinsic> <!-- before 6.9 --> + <Intrinsic Name="p" Optional="true" Expression="d.d.ptr"></Intrinsic> <!-- after 6.9 --> + <DisplayString>{{ size={p()->m._Mypair._Myval2._Myval2._Mysize} }}</DisplayString> <Expand> <TreeItems> - <Size>d.d->m._Mypair._Myval2._Myval2._Mysize</Size> - <HeadPointer>d.d->m._Mypair._Myval2._Myval2._Myhead->_Parent</HeadPointer> + <Size>p()->m._Mypair._Myval2._Myval2._Mysize</Size> + <HeadPointer>p()->m._Mypair._Myval2._Myval2._Myhead->_Parent</HeadPointer> <LeftPointer>_Left</LeftPointer> <RightPointer>_Right</RightPointer> <ValueNode Condition="_Isnil == 0" Name="[{_Myval.first}]">_Myval,view(MapHelper)</ValueNode> @@ -418,10 +451,6 @@ SPDX-License-Identifier: MIT </Expand> </Type> - <Type Name="std::pair<*, *>" IncludeView="MapHelper"> - <DisplayString>{second}</DisplayString> - </Type> - <Type Name="##NAMESPACE##::QHashPrivate::Node<*,*>"> <DisplayString>{value}</DisplayString> <Expand> @@ -430,6 +459,13 @@ SPDX-License-Identifier: MIT </Expand> </Type> + <Type Name="##NAMESPACE##::QHashPrivate::Node<*,##NAMESPACE##::QHashDummyValue>"> + <DisplayString>{key}</DisplayString> + <Expand> + <ExpandedItem>key</ExpandedItem> + </Expand> + </Type> + <Type Name="##NAMESPACE##::QHashPrivate::MultiNode<*,*>"> <DisplayString Condition="value->next == 0">{value->value}</DisplayString> <DisplayString Condition="value->next != 0 && value->next->next == 0">({value->value}, {value->next->value})</DisplayString> @@ -611,9 +647,7 @@ SPDX-License-Identifier: MIT <Type Name="##NAMESPACE##::QVariant"> <Intrinsic Name="typeId" Expression="*(int*)(&((const ##NAMESPACE##::QtPrivate::QMetaTypeInterface *)(d.packedType << 2))->typeId)"> </Intrinsic> - <Intrinsic Name="dataStar" Expression="(&(d.data.data))"> - </Intrinsic> - <Intrinsic Name="sharedDataStar" Expression="(d.is_shared ? reinterpret_cast<const void *>((size_t)(d.data.shared) + d.data.shared->offset) : (&(d.data.data)))"> + <Intrinsic Name="dataStar" Expression="(d.is_shared ? reinterpret_cast<const void *>((size_t)(d.data.shared) + d.data.shared->offset) : (&(d.data.data)))"> </Intrinsic> <DisplayString Condition="d.is_null">(null)</DisplayString> @@ -622,12 +656,12 @@ SPDX-License-Identifier: MIT <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QObjectStar">QObject*</DisplayString> <!-- Static core template classes --> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">{*(QMap<QString,QVariant>*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">{*(QList<QVariant>*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">{*(QHash<QString,QVariant>*) sharedDataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">{*(QMap<QString,QVariant>*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">{*(QList<QVariant>*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">{*(QHash<QString,QVariant>*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantPair">QVariantPair</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">{*(QList<QByteArray>*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">{*(QList<QString>*) sharedDataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">{*(QList<QByteArray>*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">{*(QList<QString>*) dataStar()}</DisplayString> <!-- Static primitives--> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::Bool">{*(bool*) dataStar()}</DisplayString> @@ -649,24 +683,24 @@ SPDX-License-Identifier: MIT <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::SChar">{*(signed char*) dataStar()}</DisplayString> <!-- Static core classes --> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QChar">{*(QChar*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QString">{*(QString*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">{*(QByteArray*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">{*(QDate*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">{*(QTime*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDateTime">QDateTime</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUrl">QUrl</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QChar">{*(QChar*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QString">{*(QString*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">{*(QByteArray*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">{*(QDate*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">{*(QTime*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QDateTime">{*(QDateTime*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUrl">{*(QUrl*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLocale">QLocale</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">{*(QRect*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">{*(QRectF*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">{*(QSize*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">{*(QSizeF*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">{*(QLine*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">{*(QLineF*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">{*(QPoint*) sharedDataStar()}</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">{*(QPointF*) sharedDataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">{*(QRect*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">{*(QRectF*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">{*(QSize*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">{*(QSizeF*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">{*(QLine*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">{*(QLineF*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">{*(QPoint*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">{*(QPointF*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QEasingCurve">EasingCurve</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUuid">Uuid</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QUuid">{*(QUuid*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRegularExpression">RegularExpression</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonValue">QJsonValue</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QJsonObject">QJsonObject</DisplayString> @@ -675,60 +709,639 @@ SPDX-License-Identifier: MIT <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborValue">QCborValue</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborArray">QCborArray</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCborMap">QCborMap</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QModelIndex">ModelIndex</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QModelIndex">QModelIndex</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPersistentModelIndex">QPersistentModelIndex</DisplayString> <!-- Static gui classes --> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QFont">QFont</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPixmap">QPixmap</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPixmap">{*(QPixmap*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QBrush">QBrush</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QColor">QColor</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPalette">QPalette</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QIcon">QIcon</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QImage">QImage</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygon">QPolygon</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QImage">{*(QImage*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygon">{*(QPolygon*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QRegion">QRegion</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QBitmap">QBitmap</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QBitmap">{*(QBitmap*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QCursor">QCursor</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QKeySequence">QKeySequence</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPen">QPen</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTextLength">QTextLength</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTextFormat">QTextFormat</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTransform">QTransform</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QMatrix4x4">QMatrix4x4</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector2D">QVector2D</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector3D">QVector3D</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector4D">QVector4D</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QQuaternion">QQuaternion</DisplayString> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygonF">QPolygonF</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QTransform">{*(QTransform*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QMatrix4x4">{*(QMatrix4x4*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector2D">{*(QVector2D*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector3D">{*(QVector3D*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QVector4D">{*(QVector4D*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QQuaternion">{*(QQuaternion*) dataStar()}</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygonF">{*(QPolygonF*) dataStar()}</DisplayString> <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QColorSpace">QColorSpace</DisplayString> <!-- Static widget classes --> - <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizePolicy">QSizePolicy</DisplayString> + <DisplayString Condition="typeId() == ##NAMESPACE##::QMetaType::QSizePolicy">{*(QSizePolicy*) dataStar()}</DisplayString> <!-- Unhandled : display the typeId--> <DisplayString>##NAMESPACE##::QMetaType::Type ({typeId()})</DisplayString> <Expand> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QString">*(QString*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">*(QByteArray*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">*(QDate*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">*(QTime*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">*(QRect*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">*(QRectF*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">*(QSize*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">*(QSizeF*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">*(QLine*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">*(QLineF*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">*(QPoint*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">*(QPointF*) sharedDataStar()</ExpandedItem> - - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">*(QMap<QString,QVariant>*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">*(QList<QVariant>*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">*(QHash<QString,QVariant>*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">*(QList<QByteArray>*) sharedDataStar()</ExpandedItem> - <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">*(QList<QString>*) sharedDataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QString">*(QString*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArray">*(QByteArray*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QDate">*(QDate*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QTime">*(QTime*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QDateTime">*(QDateTime*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QUrl">*(QUrl*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRect">*(QRect*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QRectF">*(QRectF*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSize">*(QSize*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QSizeF">*(QSizeF*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLine">*(QLine*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QLineF">*(QLineF*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPoint">*(QPoint*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPointF">*(QPointF*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QUuid">*(QUuid*) dataStar()</ExpandedItem> + + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPixmap">*(QPixmap*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QImage">*(QImage*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygon">*(QPolygon*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QBitmap">*(QBitmap*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QTransform">*(QTransform*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QMatrix4x4">*(QMatrix4x4*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVector2D">*(QVector2D*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVector3D">*(QVector3D*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVector4D">*(QVector4D*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QQuaternion">*(QQuaternion*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QPolygonF">*(QPolygonF*) dataStar()</ExpandedItem> + + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantMap">*(QMap<QString,QVariant>*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantList">*(QList<QVariant>*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QVariantHash">*(QHash<QString,QVariant>*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QByteArrayList">*(QList<QByteArray>*) dataStar()</ExpandedItem> + <ExpandedItem Condition="typeId() == ##NAMESPACE##::QMetaType::QStringList">*(QList<QString>*) dataStar()</ExpandedItem> </Expand> </Type> + <Type Name="##NAMESPACE##::QHostAddress"> + <Intrinsic Name="a" Expression="(*(quint32**)&d)[12]" /> + <Intrinsic Name="a6" Expression="(*(unsigned char**)&d)[32+offset]"> + <Parameter Name="offset" Type="quint8" /> + </Intrinsic> + <Intrinsic Name="protocol" Expression="(*(char**)&d)[52]" /> + <Intrinsic Name="isIpv4" + Expression="protocol()==##NAMESPACE##::QAbstractSocket::NetworkLayerProtocol::IPv4Protocol" /> + <Intrinsic Name="isIpv6" + Expression="protocol()==##NAMESPACE##::QAbstractSocket::NetworkLayerProtocol::IPv6Protocol" /> + <Intrinsic Name="rshift" Expression="(value>>by)&0xff"> + <Parameter Name="value" Type="quint32" /> + <Parameter Name="by" Type="quint32" /> + </Intrinsic> + <Intrinsic Name="lshift" Expression="(value<<by)"> + <Parameter Name="value" Type="quint8" /> + <Parameter Name="by" Type="quint8" /> + </Intrinsic> + <DisplayString Condition="isIpv4()"> + {rshift(a(),24),d}.{rshift(a(),16),d}.{rshift(a(),8),d}.{rshift(a(),0),d}</DisplayString> + <DisplayString Condition="isIpv6()">{(unsigned + short)(lshift(0xffff&a6(0),8)|a6(1)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(2),8)|a6(3)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(4),8)|a6(5)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(6),8)|a6(7)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(8),8)|a6(9)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(10),8)|a6(11)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(12),8)|a6(13)),nvoXb}:{(unsigned + short)(lshift(0xffff&a6(14),8)|a6(15)),nvoXb} + </DisplayString> + <Expand> + <Item Name="scopeId">*((##NAMESPACE##::QString*)((*(char**)&d)+8))</Item> + <Item Name="protocol">(##NAMESPACE##::QAbstractSocket::NetworkLayerProtocol)protocol()</Item> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QImage" Priority="Low"> + <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" /> + </Type> + <Type Name="##NAMESPACE##::QImage"> + <Intrinsic Name="p" Optional="true" Expression="(qwindowsd.dll!QImageData*)d" /> + <Intrinsic Name="p" Optional="true" Expression="(Qt6Guid.dll!QImageData*)d" /> + <Intrinsic Name="p" Optional="true" Expression="(Qt6Gui.dll!QImageData*)d" /> + <DisplayString Condition="d" Optional="true">{{ {p()->width}x{p()->height} }}</DisplayString> + <DisplayString>empty</DisplayString> + <Expand> + <Item Optional="true" Name="[width]">p()->width</Item> + <Item Optional="true" Name="[height]">p()->height</Item> + <Item Optional="true" Name="[data]">p()->data,[p()->bytes_per_line * p()->height]</Item> + <Item Optional="true" Name="[stride]">p()->bytes_per_line</Item> + <Synthetic Name="[type]"> + <DisplayString>UINT8</DisplayString> + </Synthetic> + <Item Optional="true" Name="[channels]">p()->bytes_per_line / p()->width</Item> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QPixmap" Priority="Low"> + <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" /> + </Type> + <Type Name="##NAMESPACE##::QPixmap"> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Guid.dll!QRasterPlatformPixmap**)&data" /> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Gui.dll!QRasterPlatformPixmap**)&data" /> + <DisplayString Condition="d()" Optional="true">{{ {d()->w}x{d()->h} }}</DisplayString> + <DisplayString>empty</DisplayString> + <Expand> + <ExpandedItem>d()->image</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QFlags<*>"> + <DisplayString>{($T1)i}</DisplayString> + <Expand> + <Item Name="[value]">($T1)i</Item> + </Expand> + </Type> + + <!-- The following types require debug symbols to be loaded. --> + <Type Name="##NAMESPACE##::QDir"> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Cored.dll!QDirPrivate**)&d_ptr"></Intrinsic> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Core.dll!QDirPrivate**)&d_ptr"></Intrinsic> + <DisplayString>{d()->dirEntry.m_filePath}</DisplayString> + <Expand> + <ExpandedItem>d()</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QFileInfo"> + <Intrinsic Name="d" Optional="true" + Expression="*(Qt6Cored.dll!QFileInfoPrivate**)&d_ptr"></Intrinsic> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Core.dll!QFileInfoPrivate**)&d_ptr"></Intrinsic> + <DisplayString>{d()->fileEntry.m_filePath}</DisplayString> + <Expand> + <ExpandedItem>d()</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QFile"> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Cored.dll!QFilePrivate**)&d_ptr"></Intrinsic> + <Intrinsic Name="d" Optional="true" Expression="*(Qt6Core.dll!QFilePrivate**)&d_ptr"></Intrinsic> + <DisplayString>{d()->fileName}</DisplayString> + <Expand> + <ExpandedItem>d()</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QDateTime"> + <Intrinsic Name="priv" Expression="(Qt6Cored.dll!QDateTimePrivate*)d.d"></Intrinsic> + <Intrinsic Name="status" Expression="((uintptr_t)d.d) & 1 ? ((uintptr_t)d.d & 0xff) : priv()->m_status.i"></Intrinsic> + <Intrinsic Name="spec" Expression="(status() & Qt6Cored.dll!QDateTimePrivate::TimeSpecMask) >> Qt6Cored.dll!QDateTimePrivate::TimeSpecShift"></Intrinsic> + <Intrinsic Name="msecs" Expression="((uintptr_t)d.d) & 1 ? ((uintptr_t)d.d >> 8) : priv()->m_msecs"></Intrinsic> + <Intrinsic Name="offset" Expression="priv()->m_offsetFromUtc"></Intrinsic> + <Intrinsic Name="absOffset" Expression="offset() < 0 ? -offset() : offset()"></Intrinsic> + <Intrinsic Name="isLocalShort" Expression="spec() == Qt::TimeSpec::LocalTime && status() & 1"></Intrinsic> + + <!-- https://howardhinnant.github.io/date_algorithms.html#civil_from_days --> + <Intrinsic Name="z" Expression="(msecs() / (24 * 60 * 60 * 1000ull)) + 719468"/> + <Intrinsic Name="era" Expression="(z() >= 0 ? z() : z() - 146096) / 146097"/> + <Intrinsic Name="doe" Expression="(unsigned)(z() - era() * 146097)"/> + <Intrinsic Name="yoe" Expression="(doe() - doe()/1460 + doe()/36524 - doe()/146096) / 365"/> + <Intrinsic Name="doy" Expression="doe() - (365*yoe() + yoe()/4 - yoe()/100)"/> + <Intrinsic Name="mp" Expression="(5*doy() + 2)/153"/> + <Intrinsic Name="day" Expression="doy() - (153*mp()+2)/5 + 1"/> + <Intrinsic Name="month" Expression="mp() < 10 ? mp()+3 : mp()-9"/> + <Intrinsic Name="year" Expression="((long long)yoe()) + era() * 400 + (month() <= 2)"/> + + <DisplayString ExcludeView="RecZone;RecZoneAbs"> + {year(),d}-{month()/10,d}{month()%10,d}-{day()/10,d}{day()%10,d} { + (msecs() % (24 * 60 * 60 * 1000ull))/(10 * 60 * 60 * 1000ull),d + }{ + ((msecs() % (24 * 60 * 60 * 1000ull))/(60 * 60 * 1000ull)) % 10,d + }:{ + (msecs() % (60 * 60 * 1000ull))/(10 * 60 * 1000ull),d + }{ + (msecs() % (10 * 60 * 1000ull)) / (60 * 1000ull),d + }:{ + (msecs() % (60 * 1000ull)) / (10 * 1000ull),d + }{ + (msecs() % (10 * 1000ull)) / 1000ull,d + }.{ + (msecs() % 1000) / 100,d + }{ + (msecs() % 100) / 10,d + }{ + msecs() % 10,d + } {this,view(RecZone)na} + </DisplayString> + <DisplayString IncludeView="RecZone" Condition="spec() == Qt::TimeSpec::UTC">UTC</DisplayString> + <DisplayString IncludeView="RecZone" Condition="isLocalShort()">Local Time</DisplayString> + <DisplayString IncludeView="RecZone" Condition="offset() < 0"> + UTC-{this,view(RecZoneAbs)na} + </DisplayString> + <DisplayString IncludeView="RecZone"> + UTC+{this,view(RecZoneAbs)na} + </DisplayString> + <DisplayString IncludeView="RecZoneAbs" Condition="offset() % 3600 == 0"> + {absOffset() / (60 * 60 * 10),d}{(absOffset() % (60 * 60 * 10)) / (60 * 60),d} + </DisplayString> + <DisplayString IncludeView="RecZoneAbs" Condition="offset() % 60 == 0"> + { + absOffset() / (60 * 60 * 10),d}{(absOffset() % (60 * 60 * 10)) / (60 * 60),d + }:{ + (absOffset() % (60 * 60)) / (60 * 10),d}{(absOffset() % (60 * 10)) / 60,d + } + </DisplayString> + <DisplayString IncludeView="RecZoneAbs"> + { + absOffset() / (60 * 60 * 10),d}{(absOffset() % (60 * 60 * 10)) / (60 * 60),d + }:{ + (absOffset() % (60 * 60)) / (60 * 10),d}{(absOffset() % (60 * 10)) / 60,d + }:{ + (absOffset() % 60) / 10,d}{absOffset() % 10,d + } + </DisplayString> + + <Expand> + <Item Name="[ms]">msecs()</Item> + <Item Name="[s]">msecs()/1000</Item> + <Synthetic Name="[offset]" Condition="spec() == Qt::TimeSpec::UTC"> + <DisplayString>UTC</DisplayString> + </Synthetic> + <Synthetic Name="[offset]" Condition="isLocalShort()"> + <DisplayString>Local Time</DisplayString> + </Synthetic> + <Item Name="[offset-sec]" Condition="spec() != Qt::TimeSpec::UTC && !isLocalShort()">absOffset()</Item> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QJsonDocument"> + <DisplayString Condition="!d._Mypair._Myval2">empty</DisplayString> + <Expand> + <ExpandedItem Condition="d._Mypair._Myval2"> + ((Qt6Cored.dll!QJsonDocumentPrivate*)(d._Mypair._Myval2))->value + </ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QJsonArray"> + <Intrinsic Name="cbor" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&a"></Intrinsic> + <Expand> + <ExpandedItem>cbor(),view(arr)</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QCborArray"> + <Intrinsic Name="cbor" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&d"></Intrinsic> + <Expand> + <ExpandedItem>cbor(),view(arr)</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QJsonObject"> + <Intrinsic Name="cbor" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&o"></Intrinsic> + <DisplayString Condition="!cbor()">empty</DisplayString> + <Expand> + <ExpandedItem + Condition="cbor()">cbor(),view(map)</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QCborMap"> + <Intrinsic Name="cbor" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&d"></Intrinsic> + <DisplayString Condition="!cbor()">empty</DisplayString> + <Expand> + <ExpandedItem + Condition="cbor()">cbor(),view(map)</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QJsonValue"> + <DisplayString>{value}</DisplayString> + <Expand> + <ExpandedItem>value</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QCborValue"> + <DisplayString Condition="t == QCborValue::Null">null</DisplayString> + <DisplayString Condition="t == QCborValue::Invalid">invalid</DisplayString> + <DisplayString Condition="t == QCborValue::Undefined">undefined</DisplayString> + <DisplayString Condition="t == QCborValue::False">false</DisplayString> + <DisplayString Condition="t == QCborValue::True">true</DisplayString> + <DisplayString Condition="t == QCborValue::Integer">{n}</DisplayString> + <DisplayString Condition="t == QCborValue::Double">{*(double*)&n}</DisplayString> + + <DisplayString Condition="t == QCborValue::String && container->flag(n) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + {container->byteDataAt(n)->u16(),[container->byteDataAt(n)->len/2]su} + </DisplayString> + <DisplayString Condition="t == QCborValue::String"> + {container->byteDataAt(n)->str(),[container->byteDataAt(n)->len]s8} + </DisplayString> + + <DisplayString Condition="(t == QCborValue::DateTime || t == QCborValue::Url || t == QCborValue::RegularExpression) && container->flag(1) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + {container->byteDataAt(1)->u16(),[container->byteDataAt(1)->len/2]su} + </DisplayString> + <DisplayString Condition="(t == QCborValue::DateTime || t == QCborValue::Url || t == QCborValue::RegularExpression)"> + {container->byteDataAt(1)->str(),[container->byteDataAt(1)->len]s8} + </DisplayString> + + <DisplayString Condition="t == QCborValue::Array && container == nullptr">[]</DisplayString> + <DisplayString Condition="t == QCborValue::Map && container == nullptr">{{}}</DisplayString> + + <Expand> + <ExpandedItem Condition="t == QCborValue::Array">container,view(arr)na</ExpandedItem> + <ExpandedItem Condition="t == QCborValue::Map">container,view(map)na</ExpandedItem> + <ExpandedItem Condition="t == QCborValue::Uuid">container,view(bytesAtOne)na</ExpandedItem> + <ExpandedItem Condition="t == QCborValue::ByteArray"> + container->byteDataAt(n)->bytes(),[container->byteDataAt(n)->len]hv + </ExpandedItem> + <ExpandedItem Condition="t == QCborValue::String && container->flag(n) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + container->byteDataAt(n)->u16(),[container->byteDataAt(n)->len/2]su + </ExpandedItem> + <ExpandedItem Condition="t == QCborValue::String && !(container->flag(n) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16)"> + container->byteDataAt(n)->str(),[container->byteDataAt(n)->len]s8 + </ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QCborContainerPrivate"> + <Intrinsic + Name="self" Expression="(Qt6Cored.dll!QCborContainerPrivate*)this" /> + <Intrinsic + Name="el" Expression="self()->elements.d.ptr[n]"> + <Parameter Name="n" Type="long long" /> + </Intrinsic> + <Intrinsic + Name="flag" Expression="*((int*)&self()->elements.d.ptr[n].flags)"> + <Parameter Name="n" Type="long long" /> + </Intrinsic> + <Intrinsic + Name="byteDataAt" + Expression="((Qt6Cored.dll!QtCbor::ByteData*)(self()->data.d.ptr + el(n).value))"> + <Parameter Name="n" Type="long long" /> + </Intrinsic> + + <Expand> + <!-- Arrays --> + <CustomListItems Condition="self()->elements.d.size > 0" IncludeView="arr"> + <Variable Name="i" InitialValue="0" /> + <Loop Condition="i < self()->elements.d.size"> + <If Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::HasByteData"> + <If Condition="el(i).type == QCborValue::Type::String"> + <If Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + <Item Name="[{i}]">byteDataAt(i)->u16(),[byteDataAt(i)->len/2]su</Item> + </If> + <Else> + <Item Name="[{i}]">byteDataAt(i)->str(),[byteDataAt(i)->len]s8</Item> + </Else> + </If> + <Else> + <Item Name="[{i}]">byteDataAt(i)->bytes(),[byteDataAt(i)->len]hv</Item> + </Else> + </If> + <Elseif Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::IsContainer"> + <If Condition="el(i).type == QCborValue::Type::Array"> + <Item Name="[{i}]">el(i).container,view(arr)na</Item> + </If> + <Else> + <Item Name="[{i}]">el(i).container,view(map)na</Item> + </Else> + </Elseif> + <Else> + <Item Name="[{i}]">el(i)</Item> + </Else> + <Exec>++i</Exec> + </Loop> + </CustomListItems> + + <!-- Maps/Objects --> + <CustomListItems Condition="self()->elements.d.size > 0" IncludeView="map"> + <!-- keys can be anything in CBOR. Only strings and simple types are supported as keys (others would bloat the file) --> + <Variable Name="key8" InitialValue="(const char *)0" /> + <Variable Name="key16" InitialValue="(const char16_t *)0" /> + <!-- key8 and key16 might be nullptr even though the key is a string (we can't use "key8 || key16" to check if the key is a string) --> + <Variable Name="strKey" InitialValue="true"/> + <Variable Name="len" InitialValue="0" /> + <Variable Name="i" InitialValue="0" /> + <Loop Condition="i < self()->elements.d.size"> + <If Condition="(i&1) == 0"> + <!-- even elements are keys --> + <If Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + <!-- utf16 key --> + <Exec>key8 = nullptr</Exec> + <Exec>key16 = byteDataAt(i)->u16()</Exec> + <Exec>len = byteDataAt(i)->len/2</Exec> + <Exec>strKey = true</Exec> + </If> + <Elseif Condition="el(i).type == QCborValue::Type::String"> + <!-- utf8/ascii key --> + <Exec>key8 = byteDataAt(i)->str()</Exec> + <Exec>key16 = nullptr</Exec> + <Exec>len = byteDataAt(i)->len</Exec> + <Exec>strKey = true</Exec> + </Elseif> + <Else> + <!-- non-string key --> + <Exec>key8 = nullptr</Exec> + <Exec>key16 = nullptr</Exec> + <Exec>len = 0</Exec> + <Exec>strKey = false</Exec> + </Else> + </If> + <Else> + <!-- odd elements are values --> + <If Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::HasByteData"> + <If Condition="el(i).type == QCborValue::Type::String"> + <If Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + <!-- utf16 strings --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">byteDataAt(i)->u16(),[byteDataAt(i)->len/2]su</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">byteDataAt(i)->u16(),[byteDataAt(i)->len/2]su</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">byteDataAt(i)->u16(),[byteDataAt(i)->len/2]su</Item> + </Else> + </If> + <Else> + <!-- utf8 or ascii strings (assume it's utf8) --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">byteDataAt(i)->str(),[byteDataAt(i)->len]s8</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">byteDataAt(i)->str(),[byteDataAt(i)->len]s8</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">byteDataAt(i)->str(),[byteDataAt(i)->len]s8</Item> + </Else> + </Else> + </If> + <Else> + <!-- elements with byte-data that aren't strings (e.g. byte arrays/uuids) --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">byteDataAt(i)->bytes(),[byteDataAt(i)->len]hv</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">byteDataAt(i)->bytes(),[byteDataAt(i)->len]hv</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">byteDataAt(i)->bytes(),[byteDataAt(i)->len]hv</Item> + </Else> + </Else> + </If> + <Elseif Condition="flag(i) & Qt6Cored.dll!QtCbor::Element::IsContainer"> + <If Condition="el(i).type == QCborValue::Type::Array"> + <!-- arrays --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">el(i).container,view(arr)na</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">el(i).container,view(arr)na</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">el(i).container,view(arr)na</Item> + </Else> + </If> + <Else> + <!-- maps/objects --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">el(i).container,view(map)na</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">el(i).container,view(map)na</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">el(i).container,view(map)na</Item> + </Else> + </Else> + </Elseif> + <Else> + <!-- simple types (bool/null/undefined/number) --> + <If Condition="key16"> + <Item Name="[{key16,[len]su}]">el(i)</Item> + </If> + <Elseif Condition="strKey"> + <Item Name="[{key8,[len]s8}]">el(i)</Item> + </Elseif> + <Else> + <Item Name="[{el(i-1)}]">el(i)</Item> + </Else> + </Else> + </Else> + <Exec>++i</Exec> + </Loop> + </CustomListItems> + + <ExpandedItem IncludeView="stringAtOne" Condition="flag(1) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + byteDataAt(1)->u16(),[byteDataAt(1)->len/2]su + </ExpandedItem> + <ExpandedItem IncludeView="stringAtOne" Condition="!(flag(1) & Qt6Cored.dll!QtCbor::Element::StringIsUtf16)"> + byteDataAt(1)->str(),[byteDataAt(1)->len]s8 + </ExpandedItem> + <ExpandedItem IncludeView="bytesAtOne"> + byteDataAt(1)->bytes(),[byteDataAt(1)->len]hv + </ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QtCbor::ByteData"> + <Intrinsic Name="str" Expression="(const char *)(this + 1)" ModuleName="Qt6Cored.dll"></Intrinsic> + <Intrinsic Name="bytes" Expression="(const uint8_t *)(this + 1)" ModuleName="Qt6Cored.dll"></Intrinsic> + <Intrinsic Name="u16" Expression="(const char16_t *)(this + 1)" ModuleName="Qt6Cored.dll"></Intrinsic> + </Type> + + <Type Name="##NAMESPACE##::QtCbor::Element"> + <DisplayString Condition="type == QCborValue::Null">null</DisplayString> + <DisplayString Condition="type == QCborValue::Undefined">undefined</DisplayString> + <DisplayString Condition="type == QCborValue::False">false</DisplayString> + <DisplayString Condition="type == QCborValue::True">true</DisplayString> + <DisplayString Condition="type == QCborValue::Integer">{value}</DisplayString> + <DisplayString Condition="type == QCborValue::Double">{*(double*)&value}</DisplayString> + <DisplayString Condition="type == QCborValue::Type::Array && container == nullptr">[]</DisplayString> + <DisplayString Condition="type == QCborValue::Type::Map && container == nullptr">{{}}</DisplayString> + </Type> + + <Type Name="##NAMESPACE##::QJsonDocumentPrivate"> + <Intrinsic + Name="self" Expression="(Qt6Cored.dll!QJsonDocumentPrivate*)this" /> + <Expand> + <ExpandedItem>self()->value</ExpandedItem> + </Expand> + </Type> + + <Type Name="##NAMESPACE##::QJsonValueRef"> + <Intrinsic Name="container" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&o->o" /> + <Intrinsic Name="idx" Expression="is_object ? index * 2 + 1 : index" /> + <Intrinsic Name="el" Expression="container()->el(idx())"/> + <Intrinsic Name="flags" Expression="container()->flag(idx())"/> + <Intrinsic Name="data" Expression="container()->byteDataAt(idx())" /> + <Intrinsic Name="ty" Expression="el().type" /> + + <DisplayString Condition="ty() == QCborValue::Type::String && flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + {data()->u16(),[data()->len/2]su} + </DisplayString> + <DisplayString Condition="ty() == QCborValue::Type::String"> + {data()->str(),[data()->len]s8} + </DisplayString> + <DisplayString Condition="ty() != QCborValue::Type::Array && ty() != QCborValue::Type::Map || !el().container"> + {el()} + </DisplayString> + + <Expand> + <ExpandedItem Condition="ty() == QCborValue::Type::Array">el().container,view(arr)na</ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::Map">el().container,view(map)na</ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::String && flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + data()->u16(),[data()->len/2]su + </ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::String && !(flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16)"> + data()->str(),[data()->len]s8 + </ExpandedItem> + </Expand> + </Type> + + <!-- Same as QJsonValueRef --> + <Type Name="##NAMESPACE##::QJsonValueConstRef"> + <Intrinsic Name="container" Expression="*(Qt6Cored.dll!QCborContainerPrivate**)&o->o" /> + <Intrinsic Name="idx" Expression="is_object ? index * 2 + 1 : index" /> + <Intrinsic Name="el" Expression="container()->el(idx())"/> + <Intrinsic Name="flags" Expression="container()->flag(idx())"/> + <Intrinsic Name="data" Expression="container()->byteDataAt(idx())" /> + <Intrinsic Name="ty" Expression="el().type" /> + + <DisplayString Condition="ty() == QCborValue::Type::String && flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + {data()->u16(),[data()->len/2]su} + </DisplayString> + <DisplayString Condition="ty() == QCborValue::Type::String"> + {data()->str(),[data()->len]s8} + </DisplayString> + <DisplayString Condition="ty() != QCborValue::Type::Array && ty() != QCborValue::Type::Map || !el().container"> + {el()} + </DisplayString> + + <Expand> + <ExpandedItem Condition="ty() == QCborValue::Type::Array">el().container,view(arr)na</ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::Map">el().container,view(map)na</ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::String && flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16"> + data()->u16(),[data()->len/2]su + </ExpandedItem> + <ExpandedItem Condition="ty() == QCborValue::Type::String && !(flags() & Qt6Cored.dll!QtCbor::Element::StringIsUtf16)"> + data()->str(),[data()->len]s8 + </ExpandedItem> + </Expand> + </Type> + + + <!-- Show the object name for QObject subclasses, if any --> + <Type Name="##NAMESPACE##::QObject" Inheritable="true"> + <Intrinsic Name="d_object" Optional="true" Expression="*((Qt6Cored.dll!QObjectPrivate*)d_ptr.d)"></Intrinsic> + <Intrinsic Name="d_object" Optional="true" Expression="*((Qt6Core.dll!QObjectPrivate*)d_ptr.d)"></Intrinsic> + <DisplayString Condition="d_object().extraData != 0">{d_object().extraData->objectName}</DisplayString> + </Type> + <!-- Show the dynamic properties, but only when opening the QObject under the real object --> + <Type Name="##NAMESPACE##::QObject" Inheritable="false"> + <Intrinsic Name="d_object" Optional="true" Expression="*((Qt6Cored.dll!QObjectPrivate*)d_ptr.d)"></Intrinsic> + <Intrinsic Name="d_object" Optional="true" Expression="*((Qt6Core.dll!QObjectPrivate*)d_ptr.d)"></Intrinsic> + <DisplayString Condition="d_object().extraData != 0">{d_object().extraData->objectName}</DisplayString> + + <Expand> + <Item Condition ="d_object().extraData->propertyNames.d.size != 0" Name="[propertyNames]">d_object().extraData->propertyNames</Item> + <Item Condition ="d_object().extraData->propertyNames.d.size != 0" Name="[propertyValues]">d_object().extraData->propertyValues</Item> + </Expand> + </Type> + </AutoVisualizer> |