Initial commit
This commit is contained in:
761
Vendor/NatVis/EASTL/EASTL.natvis
vendored
Normal file
761
Vendor/NatVis/EASTL/EASTL.natvis
vendored
Normal file
@@ -0,0 +1,761 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
This is a Microsoft natvis file, which allows visualization of complex variables in the
|
||||
Microsoft debugger starting with VS2012. It's a successor to the AutoExp.dat file format.
|
||||
|
||||
This file needs to go into your C:\Users\<user>\Documents\Visual Studio 2011\Visualizers\
|
||||
folder. Microsoft documentation states that it should go into a 2012 folder, but testing
|
||||
in June of 2013 suggests that it still needs to be the 2011 folder.
|
||||
|
||||
You don't need to restart Visual Studio to use it, you just need to restart the debug
|
||||
session. You can have multiple .natvis files and they will all be used.
|
||||
|
||||
VS2017 natvis documentation:
|
||||
https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects
|
||||
-->
|
||||
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
|
||||
<Type Name="eastl::unique_ptr<*>">
|
||||
<DisplayString Condition="mPair.mFirst != nullptr">({(void*)mPair.mFirst} = {*mPair.mFirst})</DisplayString>
|
||||
<DisplayString Condition="mPair.mFirst == nullptr">({nullptr})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[pointer]">(void*)mPair.mFirst</Item>
|
||||
<Item Name="[value]">*mPair.mFirst</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::shared_ptr<*>">
|
||||
<DisplayString Condition="mpValue != nullptr">({(void*)mpValue} = {*mpValue})</DisplayString>
|
||||
<DisplayString Condition="mpValue == nullptr">({nullptr})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[pointer]">(void*)mpValue</Item>
|
||||
<Item Name="[value]">*mpValue</Item>
|
||||
<Item Name="[reference count]">mpRefCount->mRefCount</Item>
|
||||
<Item Name="[weak reference count]">mpRefCount->mWeakRefCount</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::weak_ptr<*>">
|
||||
<DisplayString>{((mpRefCount && mpRefCount->mRefCount) ? mpValue : nullptr)}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>mpRefCount && mpRefCount->mRefCount ? mpValue : nullptr</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::array<*,*>">
|
||||
<DisplayString Condition="$T2 == 0">[{$T2}] {{}}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 1">[{$T2}] {{ {*mValue} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 2">[{$T2}] {{ {*mValue}, {*(mValue+1)} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 3">[{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 4">[{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 5">[{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 == 6">[{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)} }}</DisplayString>
|
||||
<DisplayString Condition="$T2 > 6">[{$T2}] {{ {*mValue}, {*(mValue+1)}, {*(mValue+2)}, {*(mValue+3)}, {*(mValue+4)}, {*(mValue+5)}, ... }}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">$T2</Item>
|
||||
<ArrayItems>
|
||||
<Size>$T2</Size>
|
||||
<ValuePointer>mValue</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::basic_string<*>">
|
||||
<DisplayString Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">"{mPair.mFirst.heap.mpBegin,sb}"</DisplayString>
|
||||
<DisplayString Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">"{mPair.mFirst.sso.mData,sb}"</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[length]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.heap.mnSize</Item>
|
||||
<Item Name="[capacity]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">(mPair.mFirst.heap.mnCapacity & ~kHeapMask)</Item>
|
||||
<Item Name="[value]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.heap.mpBegin,sb</Item>
|
||||
|
||||
<Item Name="[length]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">(SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize)</Item>
|
||||
<Item Name="[capacity]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">SSOLayout::SSO_CAPACITY</Item>
|
||||
<Item Name="[value]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.sso.mData,sb</Item>
|
||||
|
||||
<Item Name="[uses heap]">!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::basic_string<wchar_t,*>">
|
||||
<DisplayString Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">{mPair.mFirst.heap.mpBegin,su}</DisplayString>
|
||||
<DisplayString Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">{mPair.mFirst.sso.mData,su}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[length]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.heap.mnSize</Item>
|
||||
<Item Name="[capacity]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">(mPair.mFirst.heap.mnCapacity & ~kHeapMask)</Item>
|
||||
<Item Name="[value]" Condition="!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.heap.mpBegin,su</Item>
|
||||
|
||||
<Item Name="[length]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">(SSOLayout::SSO_CAPACITY - mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize)</Item>
|
||||
<Item Name="[capacity]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">SSOLayout::SSO_CAPACITY</Item>
|
||||
<Item Name="[value]" Condition="!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)">mPair.mFirst.sso.mData,su</Item>
|
||||
|
||||
<Item Name="[uses heap]">!!(mPair.mFirst.sso.mRemainingSizeField.mnRemainingSize & kSSOMask)</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::pair<*>">
|
||||
<DisplayString>({first}, {second})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="first">first</Item>
|
||||
<Item Name="second">second</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::span<*>">
|
||||
<DisplayString Condition="mnSize == 0">[{mnSize}] {{}}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 1">[{mnSize}] {{ {*mpData} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 2">[{mnSize}] {{ {*mpData}, {*(mpData+1)} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 3">[{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 4">[{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 5">[{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize == 6">[{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)}, {*(mpData+5)} }}</DisplayString>
|
||||
<DisplayString Condition="mnSize > 6">[{mnSize}] {{ {*mpData}, {*(mpData+1)}, {*(mpData+2)}, {*(mpData+3)}, {*(mpData+4)}, {*(mpData+5)}, ... }}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">mnSize</Item>
|
||||
<ArrayItems>
|
||||
<Size>mnSize</Size>
|
||||
<ValuePointer>mpData</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::VectorBase<*>">
|
||||
<DisplayString Condition="mpEnd == mpBegin">[{mpEnd - mpBegin}] {{}}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 1">[{mpEnd - mpBegin}] {{ {*mpBegin} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 2">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 3">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 4">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 5">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin == 6">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)} }}</DisplayString>
|
||||
<DisplayString Condition="mpEnd - mpBegin > 6">[{mpEnd - mpBegin}] {{ {*mpBegin}, {*(mpBegin+1)}, {*(mpBegin+2)}, {*(mpBegin+3)}, {*(mpBegin+4)}, {*(mpBegin+5)}, ... }}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">mpEnd - mpBegin</Item>
|
||||
<Item Name="[capacity]">mCapacityAllocator.mFirst - mpBegin</Item>
|
||||
<ArrayItems>
|
||||
<Size>mpEnd - mpBegin</Size>
|
||||
<ValuePointer>mpBegin</ValuePointer>
|
||||
</ArrayItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::DequeBase<*,*,*>">
|
||||
<DisplayString Condition="mItBegin.mpCurrent == mItEnd.mpCurrent">
|
||||
[0] {{}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) == 1">
|
||||
[1] {{ {*mItBegin.mpCurrent} }}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin) != 0">
|
||||
[{(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin)}]
|
||||
{{
|
||||
{*mItBegin.mpCurrent},
|
||||
...
|
||||
}}
|
||||
</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin)</Item>
|
||||
<IndexListItems>
|
||||
<Size>(mItEnd.mpCurrentArrayPtr - mItBegin.mpCurrentArrayPtr) * $T3 + (mItEnd.mpCurrent-mItEnd.mpBegin) - (mItBegin.mpCurrent-mItBegin.mpBegin)</Size>
|
||||
<ValueNode>mItBegin.mpCurrentArrayPtr[(mItBegin.mpCurrent-mItBegin.mpBegin + $i) / $T3][(mItBegin.mpCurrent-mItBegin.mpBegin + $i) % $T3]</ValueNode>
|
||||
</IndexListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::DequeIterator<*>">
|
||||
<DisplayString>{*mpCurrent}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="Value">*mpCurrent</Item>
|
||||
<Item Name="Previous" Condition="mpCurrent == mpBegin">*(*(mpCurrentArrayPtr-1) + (mpEnd-mpBegin) - 1)</Item>
|
||||
<Item Name="Previous" Condition="mpCurrent != mpBegin">*(mpCurrent-1)</Item>
|
||||
<Item Name="Next" Condition="mpCurrent+1 == mpEnd">**(mpCurrentArrayPtr+1)</Item>
|
||||
<Item Name="Next" Condition="mpCurrent+1 != mpEnd">*(mpCurrent+1)</Item>
|
||||
<Item Name="Begin">mpCurrent == mpBegin</Item>
|
||||
<Item Name="End">mpCurrent+1 == mpEnd</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::queue<*>">
|
||||
<AlternativeType Name="eastl::priority_queue<*>" />
|
||||
<AlternativeType Name="eastl::stack<*>" />
|
||||
<DisplayString>{c}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>c</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::ListBase<*>">
|
||||
<DisplayString Condition="mNodeAllocator.mFirst.mpNext == &mNodeAllocator.mFirst">
|
||||
[0] {{}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNodeAllocator.mFirst.mpNext != &mNodeAllocator.mFirst && mNodeAllocator.mFirst.mpNext->mpNext == &mNodeAllocator.mFirst">
|
||||
[1] {{ {((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue} }}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNodeAllocator.mFirst.mpNext != &mNodeAllocator.mFirst && mNodeAllocator.mFirst.mpNext->mpNext != &mNodeAllocator.mFirst && mNodeAllocator.mFirst.mpNext->mpNext->mpNext == &mNodeAllocator.mFirst">
|
||||
[2]
|
||||
{{
|
||||
{((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue},
|
||||
{((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue}
|
||||
}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNodeAllocator.mFirst.mpNext != &mNodeAllocator.mFirst && mNodeAllocator.mFirst.mpNext->mpNext != &mNodeAllocator.mFirst && mNodeAllocator.mFirst.mpNext->mpNext->mpNext != &mNodeAllocator.mFirst">
|
||||
[?]
|
||||
{{
|
||||
{((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext)->mValue},
|
||||
{((eastl::ListNode<$T1>*)mNodeAllocator.mFirst.mpNext->mpNext)->mValue},
|
||||
...
|
||||
}}
|
||||
</DisplayString>
|
||||
<Expand>
|
||||
<Synthetic Name="NOTE!">
|
||||
<DisplayString>Content of lists will repeat indefinitely. Keep that in mind!</DisplayString>
|
||||
</Synthetic>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>mNodeAllocator.mFirst.mpNext</HeadPointer>
|
||||
<NextPointer>mpNext</NextPointer>
|
||||
<ValueNode>((eastl::ListNode<$T1>*)this)->mValue</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::ListNode<*>">
|
||||
<DisplayString>{mValue}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="Value">mValue</Item>
|
||||
<Item Name="Next">*(eastl::ListNode<$T1>*)mpNext</Item>
|
||||
<Item Name="Previous">*(eastl::ListNode<$T1>*)mpPrev</Item>
|
||||
<Synthetic Name="NOTE!">
|
||||
<DisplayString>Content of lists will repeat indefinitely. Keep that in mind!</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="List">
|
||||
<DisplayString>The rest of the list follows:</DisplayString>
|
||||
</Synthetic>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>(eastl::ListNode<$T1>*)mpNext->mpNext</HeadPointer>
|
||||
<NextPointer>(eastl::ListNode<$T1>*)mpNext</NextPointer>
|
||||
<ValueNode>mValue</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::ListIterator<*>">
|
||||
<DisplayString>{*mpNode}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>*(eastl::ListNode<$T1>*)mpNode</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::SListBase<*>">
|
||||
<DisplayString Condition="mNode.mpNext == 0">
|
||||
[0] {{}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNode.mpNext != 0 && mNode.mpNext->mpNext == 0">
|
||||
[1]
|
||||
{{
|
||||
{((eastl::SListNode<$T1>*)mNode.mpNext)->mValue}
|
||||
}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNode.mpNext != 0 && mNode.mpNext->mpNext != 0 && mNode.mpNext->mpNext->mpNext == 0">
|
||||
[2]
|
||||
{{
|
||||
{((eastl::SListNode<$T1>*)mNode.mpNext)->mValue},
|
||||
{((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue}
|
||||
}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mNode.mpNext != 0 && mNode.mpNext->mpNext != 0 && mNode.mpNext->mpNext->mpNext != 0">
|
||||
[?]
|
||||
{{
|
||||
{((eastl::SListNode<$T1>*)mNode.mpNext)->mValue},
|
||||
{((eastl::SListNode<$T1>*)mNode.mpNext->mpNext)->mValue},
|
||||
...
|
||||
}}
|
||||
</DisplayString>
|
||||
<Expand>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>mNode.mpNext</HeadPointer>
|
||||
<NextPointer>mpNext</NextPointer>
|
||||
<ValueNode>((eastl::SListNode<$T1>*)this)->mValue</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::SListNode<*>">
|
||||
<DisplayString>{mValue}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="Value">mValue</Item>
|
||||
<Item Name="Next">*(eastl::SListNode<$T1>*)mpNext</Item>
|
||||
<Synthetic Name="List">
|
||||
<DisplayString>The rest of the list follows:</DisplayString>
|
||||
</Synthetic>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>mpNext == nullptr ? nullptr : (eastl::SListNode<$T1>*)mpNext->mpNext</HeadPointer>
|
||||
<NextPointer>(eastl::SListNode<$T1>*)mpNext</NextPointer>
|
||||
<ValueNode>mValue</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::SListIterator<*>">
|
||||
<DisplayString>{*mpNode}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>*(eastl::SListNode<$T1>*)mpNode</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::intrusive_list_base">
|
||||
<DisplayString Condition="mAnchor.mpNext == &mAnchor">[0] {{}}</DisplayString>
|
||||
<DisplayString Condition="mAnchor.mpNext != &mAnchor && mAnchor.mpNext->mpNext == &mAnchor">[1] {{ {mAnchor.mpNext} }}</DisplayString>
|
||||
<DisplayString Condition="mAnchor.mpNext != &mAnchor && mAnchor.mpNext->mpNext != &mAnchor">[?] {{ {mAnchor.mpNext}, ... }}</DisplayString>
|
||||
<Expand>
|
||||
<Synthetic Name="NOTE!">
|
||||
<DisplayString>Content of intrusive lists will repeat indefinitely. Keep that in mind!</DisplayString>
|
||||
</Synthetic>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>mAnchor.mpNext</HeadPointer>
|
||||
<NextPointer>mpNext</NextPointer>
|
||||
<ValueNode>*this</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::intrusive_list_iterator<*>">
|
||||
<DisplayString>{*($T1*)mpNode}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>*($T1*)mpNode</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::set<*>">
|
||||
<AlternativeType Name="eastl::multiset<*>" />
|
||||
<DisplayString Condition="mnSize == 0">
|
||||
[0] {{}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mnSize == 1">
|
||||
[1]
|
||||
{{
|
||||
{((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue}
|
||||
}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mnSize > 1">
|
||||
[{mnSize}]
|
||||
{{
|
||||
{((eastl::rbtree_node<$T1>*)mAnchor.mpNodeLeft)->mValue},
|
||||
...
|
||||
}}
|
||||
</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">mnSize</Item>
|
||||
<TreeItems>
|
||||
<Size>mnSize</Size>
|
||||
<HeadPointer>mAnchor.mpNodeParent</HeadPointer>
|
||||
<LeftPointer>mpNodeLeft</LeftPointer>
|
||||
<RightPointer>mpNodeRight</RightPointer>
|
||||
<ValueNode>((eastl::rbtree_node<$T1>*)this)->mValue</ValueNode>
|
||||
</TreeItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::rbtree<*,*>">
|
||||
<DisplayString Condition="mnSize == 0">
|
||||
[0] {{}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mnSize == 1">
|
||||
[1]
|
||||
{{
|
||||
{((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue}
|
||||
}}
|
||||
</DisplayString>
|
||||
<DisplayString Condition="mnSize > 1">
|
||||
[{mnSize}]
|
||||
{{
|
||||
{((eastl::rbtree_node<$T2>*)mAnchor.mpNodeLeft)->mValue},
|
||||
...
|
||||
}}
|
||||
</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[size]">mnSize</Item>
|
||||
<TreeItems>
|
||||
<Size>mnSize</Size>
|
||||
<HeadPointer>mAnchor.mpNodeParent</HeadPointer>
|
||||
<LeftPointer>mpNodeLeft</LeftPointer>
|
||||
<RightPointer>mpNodeRight</RightPointer>
|
||||
<ValueNode>((eastl::rbtree_node<$T2>*)this)->mValue</ValueNode>
|
||||
</TreeItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::rbtree_node<*>">
|
||||
<DisplayString>{mValue}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="Value">mValue</Item>
|
||||
<Synthetic Name="NOTE!">
|
||||
<DisplayString>It is possible to expand parents that do not exist.</DisplayString>
|
||||
</Synthetic>
|
||||
<Item Name="Parent">*(eastl::rbtree_node<$T1>*)mpNodeParent</Item>
|
||||
<Item Name="Left">*(eastl::rbtree_node<$T1>*)mpNodeLeft</Item>
|
||||
<Item Name="Right">*(eastl::rbtree_node<$T1>*)mpNodeRight</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::rbtree_iterator<*>">
|
||||
<DisplayString>{*(eastl::rbtree_node<$T1>*)mpNode}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="Node">*(eastl::rbtree_node<$T1>*)mpNode</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::hashtable<*>">
|
||||
<DisplayString Condition="mnElementCount == 0">[{mnElementCount}] {{}}</DisplayString>
|
||||
<DisplayString Condition="mnElementCount != 0">[{mnElementCount}] {{ ... }}</DisplayString>
|
||||
<Expand>
|
||||
<ArrayItems IncludeView="detailed">
|
||||
<Size>mnBucketCount</Size>
|
||||
<ValuePointer>mpBucketArray</ValuePointer>
|
||||
</ArrayItems>
|
||||
<CustomListItems ExcludeView="detailed">
|
||||
<Variable Name="bucketIndex" InitialValue="0"/>
|
||||
<Variable Name="entry" InitialValue ="mpBucketArray[bucketIndex]"/>
|
||||
<Loop>
|
||||
<Item Condition="entry != nullptr">entry->mValue</Item>
|
||||
<If Condition="entry != nullptr">
|
||||
<Exec>entry = entry->mpNext</Exec>
|
||||
</If>
|
||||
<If Condition="entry == nullptr">
|
||||
<Exec>bucketIndex++</Exec>
|
||||
<Break Condition="bucketIndex == mnBucketCount"/>
|
||||
<Exec>entry = mpBucketArray[bucketIndex]</Exec>
|
||||
</If>
|
||||
</Loop>
|
||||
</CustomListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<!-- specifically for hash_map (instead of base implementation hashtable),
|
||||
show the key as name, and value as value, instead of index -> pair<key, value> -->
|
||||
<Type Name="eastl::hash_map<*>">
|
||||
<DisplayString Condition="mnElementCount == 0">[{mnElementCount}] {{}}</DisplayString>
|
||||
<DisplayString Condition="mnElementCount != 0">[{mnElementCount}] {{ ... }}</DisplayString>
|
||||
<Expand>
|
||||
<CustomListItems ExcludeView="detailed">
|
||||
<Variable Name="bucketIndex" InitialValue="0"/>
|
||||
<Variable Name="entry" InitialValue ="mpBucketArray[bucketIndex]"/>
|
||||
<Loop>
|
||||
<Item Name="[{entry->mValue.first}]" Condition="entry != nullptr">entry->mValue.second</Item>
|
||||
<If Condition="entry != nullptr">
|
||||
<Exec>entry = entry->mpNext</Exec>
|
||||
</If>
|
||||
<If Condition="entry == nullptr">
|
||||
<Exec>bucketIndex++</Exec>
|
||||
<Break Condition="bucketIndex == mnBucketCount"/>
|
||||
<Exec>entry = mpBucketArray[bucketIndex]</Exec>
|
||||
</If>
|
||||
</Loop>
|
||||
</CustomListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::hash_node<*>">
|
||||
<DisplayString Condition="this != 0 && mpNext != 0"> {mValue}, {*mpNext}</DisplayString>
|
||||
<DisplayString Condition="this != 0 && mpNext == 0"> {mValue}</DisplayString>
|
||||
<DisplayString Condition="this == 0"></DisplayString>
|
||||
<Expand>
|
||||
<LinkedListItems>
|
||||
<HeadPointer>this</HeadPointer>
|
||||
<NextPointer>mpNext</NextPointer>
|
||||
<ValueNode>mValue</ValueNode>
|
||||
</LinkedListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::hashtable_iterator_base<*>">
|
||||
<DisplayString>{mpNode->mValue}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>mpNode->mValue</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::reverse_iterator<*>">
|
||||
<DisplayString>{*(mIterator-1)}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>mIterator-1</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::bitset<*>">
|
||||
<DisplayString>{{count = {kSize}}}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[count]">kSize</Item>
|
||||
<CustomListItems>
|
||||
<Variable Name="iWord" InitialValue="0" />
|
||||
<Variable Name="iBitInWord" InitialValue="0" />
|
||||
<Variable Name="bBitValue" InitialValue="false" />
|
||||
|
||||
<Size>kSize</Size>
|
||||
|
||||
<Loop>
|
||||
<Exec>bBitValue = ((mWord[iWord] >> iBitInWord) % 2) != 0 ? true : false</Exec>
|
||||
<Item>bBitValue</Item>
|
||||
<Exec>iBitInWord++</Exec>
|
||||
<If Condition="iBitInWord == kBitsPerWord">
|
||||
<Exec>iWord++</Exec>
|
||||
<Exec>iBitInWord = 0</Exec>
|
||||
</If>
|
||||
</Loop>
|
||||
</CustomListItems>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::ring_buffer<*,*,*>">
|
||||
<DisplayString>{c}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>c</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::basic_string_view<*>">
|
||||
<DisplayString>{mpBegin,[mnCount]}</DisplayString>
|
||||
<StringView>mpBegin,[mnCount]</StringView>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::compressed_pair_imp<*>">
|
||||
<DisplayString Condition="($T3) == 0" Optional="true">({mFirst}, {mSecond})</DisplayString>
|
||||
<DisplayString Condition="($T3) == 1" Optional="true">({mSecond})</DisplayString>
|
||||
<DisplayString Condition="($T3) == 2" Optional="true">({mFirst})</DisplayString>
|
||||
<DisplayString Condition="($T3) == 3" Optional="true">(empty)</DisplayString>
|
||||
<DisplayString Condition="($T3) == 4" Optional="true">(empty)</DisplayString>
|
||||
<DisplayString Condition="($T3) == 5" Optional="true">({mFirst}, {mSecond})</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::optional<*>">
|
||||
<Intrinsic Name="value" Expression="*($T1*)&val"/>
|
||||
<DisplayString Condition="!engaged">nullopt</DisplayString>
|
||||
<DisplayString Condition="engaged">{value()}</DisplayString>
|
||||
<Expand>
|
||||
<Item Condition="engaged" Name="value">value()</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::ratio<*>">
|
||||
<DisplayString>{$T1} to {$T2}}</DisplayString>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<1,1000000000> >">
|
||||
<DisplayString>{mRep} nanoseconds</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<1,1000000> >">
|
||||
<DisplayString>{mRep} microseconds</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<1,1000> >">
|
||||
<DisplayString>{mRep} milliseconds</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<1,1> >">
|
||||
<DisplayString>{mRep} seconds</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<60,1> >">
|
||||
<DisplayString>{mRep} minutes</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<3600,1> >">
|
||||
<DisplayString>{mRep} hours</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::chrono::duration<*,eastl::ratio<*,*> >">
|
||||
<DisplayString>{mRep} duration with ratio = [{$T2} : {$T3}] </DisplayString>
|
||||
</Type>
|
||||
|
||||
|
||||
|
||||
<Type Name="eastl::function<*>">
|
||||
<DisplayString Condition="mInvokeFuncPtr == nullptr">empty</DisplayString>
|
||||
<DisplayString>{mInvokeFuncPtr}</DisplayString>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::reference_wrapper<*>">
|
||||
<DisplayString>{*val}</DisplayString>
|
||||
</Type>
|
||||
|
||||
<!--
|
||||
This implementation isn't ideal because it can't switch between showing inline value vs values stored in a heap allocation.
|
||||
We are hitting the limit of natvis scripting that we can't workaround unless we change the implementation of eastl::any.
|
||||
-->
|
||||
<Type Name="eastl::any">
|
||||
<DisplayString Condition="m_handler == nullptr">empty</DisplayString>
|
||||
<DisplayString Condition="m_handler != nullptr">{m_storage.external_storage}</DisplayString>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::atomic<*>">
|
||||
<DisplayString>{mAtomic}</DisplayString>
|
||||
<Expand>
|
||||
<ExpandedItem>mAtomic</ExpandedItem>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::atomic_flag">
|
||||
<DisplayString>{mFlag.mAtomic}</DisplayString>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::variant<*>">
|
||||
<Intrinsic Name="index" Expression="(int)mIndex"/>
|
||||
<DisplayString Condition="index() == size_t(-1)">[valueless_by_exception]</DisplayString>
|
||||
<DisplayString Condition="index() == 0" Optional="true">{{ index=0, value={($T1*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 1" Optional="true">{{ index=1, value={($T2*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 2" Optional="true">{{ index=2, value={($T3*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 3" Optional="true">{{ index=3, value={($T4*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 4" Optional="true">{{ index=4, value={($T5*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 5" Optional="true">{{ index=5, value={($T6*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 6" Optional="true">{{ index=6, value={($T7*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 7" Optional="true">{{ index=7, value={($T8*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 8" Optional="true">{{ index=8, value={($T9*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 9" Optional="true">{{ index=9, value={($T10*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 10" Optional="true">{{ index=10, value={($T11*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 11" Optional="true">{{ index=11, value={($T12*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 12" Optional="true">{{ index=12, value={($T13*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 13" Optional="true">{{ index=13, value={($T14*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 14" Optional="true">{{ index=14, value={($T15*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 15" Optional="true">{{ index=15, value={($T16*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 16" Optional="true">{{ index=16, value={($T17*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 17" Optional="true">{{ index=17, value={($T18*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 18" Optional="true">{{ index=18, value={($T19*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 19" Optional="true">{{ index=19, value={($T20*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 20" Optional="true">{{ index=20, value={($T21*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 21" Optional="true">{{ index=21, value={($T22*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 22" Optional="true">{{ index=22, value={($T23*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 23" Optional="true">{{ index=23, value={($T24*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 24" Optional="true">{{ index=24, value={($T25*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 25" Optional="true">{{ index=25, value={($T26*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 26" Optional="true">{{ index=26, value={($T27*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 27" Optional="true">{{ index=27, value={($T28*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 28" Optional="true">{{ index=28, value={($T29*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 29" Optional="true">{{ index=29, value={($T30*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<DisplayString Condition="index() == 30" Optional="true">{{ index=30, value={($T31*)mStorage.mBuffer.mCharData}}</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="index">index()</Item>
|
||||
<Item Name="[value]" Condition="index() == 0" Optional="true">($T1*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 1" Optional="true">($T2*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 2" Optional="true">($T3*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 3" Optional="true">($T4*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 4" Optional="true">($T5*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 5" Optional="true">($T6*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 6" Optional="true">($T7*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 7" Optional="true">($T8*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 8" Optional="true">($T9*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 9" Optional="true">($T10*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 10" Optional="true">($T11*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 11" Optional="true">($T12*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 12" Optional="true">($T13*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 13" Optional="true">($T14*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 14" Optional="true">($T15*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 15" Optional="true">($T16*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 16" Optional="true">($T17*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 17" Optional="true">($T18*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 18" Optional="true">($T19*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 19" Optional="true">($T20*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 20" Optional="true">($T21*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 21" Optional="true">($T22*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 22" Optional="true">($T23*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 23" Optional="true">($T24*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 24" Optional="true">($T25*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 25" Optional="true">($T26*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 26" Optional="true">($T27*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 27" Optional="true">($T28*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 28" Optional="true">($T29*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 29" Optional="true">($T30*)mStorage.mBuffer.mCharData</Item>
|
||||
<Item Name="[value]" Condition="index() == 30" Optional="true">($T31*)mStorage.mBuffer.mCharData</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
|
||||
<Type Name="eastl::tuple<>">
|
||||
<DisplayString IncludeView="noparens"></DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand/>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[2]">(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*,*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[2]">(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[3]">(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*,*,*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[2]">(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[3]">(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[4]">(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*,*,*,*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[2]">(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[3]">(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[4]">(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[5]">(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="eastl::tuple<*,*,*,*,*,*,*>">
|
||||
<DisplayString IncludeView="noparens">{(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue}, {(*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue}</DisplayString>
|
||||
<DisplayString ExcludeView="noparens">({*this,view(noparens)})</DisplayString>
|
||||
<Expand>
|
||||
<Item Name="[0]">(*((eastl::Internal::TupleLeaf<0,$T1,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[1]">(*((eastl::Internal::TupleLeaf<1,$T2,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[2]">(*((eastl::Internal::TupleLeaf<2,$T3,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[3]">(*((eastl::Internal::TupleLeaf<3,$T4,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[4]">(*((eastl::Internal::TupleLeaf<4,$T5,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[5]">(*((eastl::Internal::TupleLeaf<5,$T6,0>*)&mImpl)).mValue</Item>
|
||||
<Item Name="[6]">(*((eastl::Internal::TupleLeaf<6,$T7,0>*)&mImpl)).mValue</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
|
||||
</AutoVisualizer>
|
||||
555
Vendor/NatVis/GLM/GLM.natvis
vendored
Normal file
555
Vendor/NatVis/GLM/GLM.natvis
vendored
Normal file
@@ -0,0 +1,555 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
GLM debugger visualizers for Visual Studio
|
||||
|
||||
Makes debugging code using GLM easier by making data more easily accessible
|
||||
from the debugger watch windows.
|
||||
|
||||
For example, a variable declared like this:
|
||||
|
||||
glm::vec4 v = glm::vec4(1, 2, 3, 4);
|
||||
|
||||
Will show up like this in the default debugger windows:
|
||||
|
||||
Name Value
|
||||
..............................................................
|
||||
v {x=1.000000 r=1.000000 s=1.000000 y=2.000000 ...}
|
||||
|
||||
But if you use this file, it will show up like this:
|
||||
|
||||
Name Value
|
||||
..................
|
||||
v [1 2 3 4]
|
||||
|
||||
=== How to Use ===
|
||||
|
||||
Copy this file to the project directory of each project using GLM, or just copy it to
|
||||
|
||||
%USERPROFILE%\Douments\Visual Studio 2019\Visualizers\ (replace '2019' when necessary)
|
||||
or
|
||||
%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers\ (requires admin access)
|
||||
|
||||
if you want to use this from every project.
|
||||
See also https://docs.microsoft.com/en-us/visualstudio/debugger/create-custom-views-of-native-objects
|
||||
-->
|
||||
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
|
||||
<Type Name="glm::vec<1,*,*>">
|
||||
<DisplayString>[{x,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<2,*,*>">
|
||||
<DisplayString>[{x,g} {y,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<3,*,*>">
|
||||
<DisplayString>[{x,g} {y,g} {z,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<4,*,*>">
|
||||
<DisplayString>[{x,g} {y,g} {z,g} {w,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<1,bool,*>" Priority="High">
|
||||
<DisplayString>[{(int)x}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<2,bool,*>" Priority="High">
|
||||
<DisplayString>[{(int)x} {(int)y}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x</Item>
|
||||
<Item Name="y">y</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<3,bool,*>" Priority="High">
|
||||
<DisplayString>[{(int)x,g} {(int)y,g} {(int)z,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x</Item>
|
||||
<Item Name="y">y</Item>
|
||||
<Item Name="z">z</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<4,bool,*>" Priority="High">
|
||||
<DisplayString>[{(int)x,g} {(int)y,g} {(int)z,g} {(int)w,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x</Item>
|
||||
<Item Name="y">y</Item>
|
||||
<Item Name="z">z</Item>
|
||||
<Item Name="w">w</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<2,float,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5F3759DF - ((*(int *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(float *)&i</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0f,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<3,float,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g} {z,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5F3759DF - ((*(int *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(float *)&i</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0f,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Synthetic Name="[rgba]">
|
||||
<DisplayString>
|
||||
<!-- hex RGBA color - alpha is assumed to be 255 -->
|
||||
#{
|
||||
(unsigned((x<0?0:(x>1?1:x))*255.5f) << 24) |
|
||||
(unsigned((y<0?0:(y>1?1:y))*255.5f) << 16) |
|
||||
(unsigned((z<0?0:(z>1?1:z))*255.5f) << 8) | 0xFF,Xb
|
||||
}
|
||||
</DisplayString>
|
||||
</Synthetic>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<4,float,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g} {z,g} {w,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z+w*w"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5F3759DF - ((*(int *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(float *)&i</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0f,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Synthetic Name="[rgba]">
|
||||
<DisplayString>
|
||||
<!-- hex RGBA color -->
|
||||
#{
|
||||
(unsigned((x<0?0:(x>1?1:x))*255.5f) << 24) |
|
||||
(unsigned((y<0?0:(y>1?1:y))*255.5f) << 16) |
|
||||
(unsigned((z<0?0:(z>1?1:z))*255.5f) << 8) |
|
||||
(unsigned((w<0?0:(w>1?1:w))*255.5f) << 0),Xb
|
||||
}
|
||||
</DisplayString>
|
||||
</Synthetic>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<2,double,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5FE6EB50C7B537A9 - ((*(long long *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(double *)&i</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<3,double,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g} {z,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5FE6EB50C7B537A9 - ((*(long long *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(double *)&i</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::vec<4,double,*>" Priority="High">
|
||||
<DisplayString>[{x,g} {y,g} {z,g} {w,g}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z+w*w"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5FE6EB50C7B537A9 - ((*(long long *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(double *)&i</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::qua<*,*>">
|
||||
<DisplayString>{w,g} + {x,g}i + {y,g}j + {z,g}k</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::qua<float,*>" Priority="High">
|
||||
<DisplayString>{w,g} + {x,g}i + {y,g}j + {z,g}k</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z+w*w"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5F3759DF - ((*(int *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(float *)&i</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5f - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0f,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::qua<double,*>" Priority="High">
|
||||
<DisplayString>{w,g} + {x,g}i + {y,g}j + {z,g}k</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<CustomListItems MaxItemsPerView="1">
|
||||
<!-- calculate length using fast inverse sqrt -->
|
||||
<Variable Name="k" InitialValue="x*x+y*y+z*z+w*w"/>
|
||||
<Variable Name="n" InitialValue="k/2"/>
|
||||
<Variable Name="i" InitialValue="0x5FE6EB50C7B537A9 - ((*(long long *)&k) >> 1)"/>
|
||||
<If Condition="k != 0">
|
||||
<Exec>k = *(double *)&i</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Exec>k = k * (1.5 - (n * k * k))</Exec>
|
||||
<Item Name="[len]">1/k,g</Item>
|
||||
</If>
|
||||
<If Condition="k == 0">
|
||||
<Item Name="[len]">0.0,g</Item>
|
||||
</If>
|
||||
</CustomListItems>
|
||||
<Item Name="x">x,g</Item>
|
||||
<Item Name="y">y,g</Item>
|
||||
<Item Name="z">z,g</Item>
|
||||
<Item Name="w">w,g</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<2,2,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<2,3,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<2,4,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 4">
|
||||
<DisplayString>[{value[0].w,g} {value[1].w,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<3,2*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<3,3,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g} {value[2].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<3,4,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g} {value[2].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 4">
|
||||
<DisplayString>[{value[0].w,g} {value[1].w,g} {value[2].w,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat4x2<4,2,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]} {value[3]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g} {value[3].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g} {value[3].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
<Item Name="col 4">value[3]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat4x3<4,3,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]} {value[3]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g} {value[3].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g} {value[3].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g} {value[2].z,g} {value[3].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
<Item Name="col 4">value[3]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::mat<4,4,*,*>">
|
||||
<DisplayString>[{value[0]} {value[1]} {value[2]} {value[3]}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<!-- display matrix in row major order - it makes more sense -->
|
||||
<Synthetic Name="row 1">
|
||||
<DisplayString>[{value[0].x,g} {value[1].x,g} {value[2].x,g} {value[3].x,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 2">
|
||||
<DisplayString>[{value[0].y,g} {value[1].y,g} {value[2].y,g} {value[3].y,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 3">
|
||||
<DisplayString>[{value[0].z,g} {value[1].z,g} {value[2].z,g} {value[3].z,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="row 4">
|
||||
<DisplayString>[{value[0].w,g} {value[1].w,g} {value[2].w,g} {value[3].w,g}]</DisplayString>
|
||||
</Synthetic>
|
||||
<Synthetic Name="columns">
|
||||
<Expand>
|
||||
<Item Name="col 1">value[0]</Item>
|
||||
<Item Name="col 2">value[1]</Item>
|
||||
<Item Name="col 3">value[2]</Item>
|
||||
<Item Name="col 4">value[3]</Item>
|
||||
</Expand>
|
||||
</Synthetic>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
<Type Name="glm::tdualquat<*>">
|
||||
<DisplayString>[r: {real}] [d: {dual}]</DisplayString>
|
||||
<Expand HideRawView="1">
|
||||
<Item Name="real">real</Item>
|
||||
<Item Name="dual">dual</Item>
|
||||
</Expand>
|
||||
</Type>
|
||||
|
||||
</AutoVisualizer>
|
||||
10
Vendor/NatVis/VulkanHpp/VulkanHpp.natvis
vendored
Normal file
10
Vendor/NatVis/VulkanHpp/VulkanHpp.natvis
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
||||
<Type Name="vk::Flags<*>">
|
||||
<DisplayString>[{($T1)m_mask}]</DisplayString>
|
||||
</Type>
|
||||
<Type Name="vk::ArrayWrapper1D<char,*>">
|
||||
<DisplayString>{_Elems,s}</DisplayString>
|
||||
<StringView>_Elems,s</StringView>
|
||||
</Type>
|
||||
</AutoVisualizer>
|
||||
BIN
Vendor/Tools/Mimalloc2.2.4/minject.exe
vendored
Normal file
BIN
Vendor/Tools/Mimalloc2.2.4/minject.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-capture.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-capture.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-csvexport.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-csvexport.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-import-chrome.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-import-chrome.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-import-fuchsia.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-import-fuchsia.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-profiler.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-profiler.exe
vendored
Normal file
Binary file not shown.
BIN
Vendor/Tools/Tracy0.12.2/tracy-update.exe
vendored
Normal file
BIN
Vendor/Tools/Tracy0.12.2/tracy-update.exe
vendored
Normal file
Binary file not shown.
Reference in New Issue
Block a user