diff options
| author | Andrew Gaspar <andrew.gaspar@outlook.com> | 2017-02-15 01:51:19 -0800 |
|---|---|---|
| committer | Andrew Gaspar <andrew.gaspar@outlook.com> | 2017-02-15 01:51:19 -0800 |
| commit | a8b7b28babdb49387eb56626b8359d7295515775 (patch) | |
| tree | 8d60e3f2e9cf291307a493466450e4a9ac1014a4 | |
| parent | e8154a092558d79f13d7dd48abbfcc4e9d4ed44c (diff) | |
| download | rust-a8b7b28babdb49387eb56626b8359d7295515775.tar.gz rust-a8b7b28babdb49387eb56626b8359d7295515775.zip | |
Vec, LinkedList, VecDeque, String, and Option NatVis visualizations
| -rw-r--r-- | src/etc/natvis/libcollections.natvis | 56 | ||||
| -rw-r--r-- | src/etc/natvis/libcore.natvis | 39 |
2 files changed, 95 insertions, 0 deletions
diff --git a/src/etc/natvis/libcollections.natvis b/src/etc/natvis/libcollections.natvis new file mode 100644 index 00000000000..821c52361f8 --- /dev/null +++ b/src/etc/natvis/libcollections.natvis @@ -0,0 +1,56 @@ +<?xml version="1.0" encoding="utf-8"?> +<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> + <Type Name="collections::vec::Vec<*>"> + <DisplayString>{{ size={len} }}</DisplayString> + <Expand> + <Item Name="[size]" ExcludeView="simple">len</Item> + <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item> + <ArrayItems> + <Size>len</Size> + <ValuePointer>buf.ptr.pointer.__0</ValuePointer> + </ArrayItems> + </Expand> + </Type> + <Type Name="collections::vec_deque::VecDeque<*>"> + <DisplayString>{{ size={tail <= head ? head - tail : buf.cap - tail + head} }}</DisplayString> + <Expand> + <Item Name="[size]" ExcludeView="simple">tail <= head ? head - tail : buf.cap - tail + head</Item> + <Item Name="[capacity]" ExcludeView="simple">buf.cap</Item> + <CustomListItems> + <Variable Name="i" InitialValue="tail" /> + + <Size>tail <= head ? head - tail : buf.cap - tail + head</Size> + <Loop> + <If Condition="i == head"> + <Break/> + </If> + <Item>buf.ptr.pointer.__0 + i</Item> + <Exec>i = (i + 1 == buf.cap ? 0 : i + 1)</Exec> + </Loop> + </CustomListItems> + </Expand> + </Type> + <Type Name="collections::linked_list::LinkedList<*>"> + <DisplayString>{{ size={len} }}</DisplayString> + <Expand> + <LinkedListItems> + <Size>len</Size> + <HeadPointer>*(collections::linked_list::Node<$T1> **)&head</HeadPointer> + <NextPointer>*(collections::linked_list::Node<$T1> **)&next</NextPointer> + <ValueNode>element</ValueNode> + </LinkedListItems> + </Expand> + </Type> + <Type Name="collections::string::String"> + <DisplayString>{*(char**)this,[vec.len]}</DisplayString> + <StringView>*(char**)this,[vec.len]</StringView> + <Expand> + <Item Name="[size]" ExcludeView="simple">vec.len</Item> + <Item Name="[capacity]" ExcludeView="simple">vec.buf.cap</Item> + <ArrayItems> + <Size>vec.len</Size> + <ValuePointer>*(char**)this</ValuePointer> + </ArrayItems> + </Expand> + </Type> +</AutoVisualizer> \ No newline at end of file diff --git a/src/etc/natvis/libcore.natvis b/src/etc/natvis/libcore.natvis new file mode 100644 index 00000000000..37d64be1ce9 --- /dev/null +++ b/src/etc/natvis/libcore.natvis @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="utf-8"?> +<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> + <Type Name="core::ptr::Unique<*>"> + <DisplayString>{{ Unique {*pointer.__0} }}</DisplayString> + <Expand> + <Item Name="[ptr]">pointer.__0</Item> + </Expand> + </Type> + <Type Name="core::ptr::Shared<*>"> + <DisplayString>{{ Shared {*pointer.__0} }}</DisplayString> + <Expand> + <Item Name="[ptr]">pointer.__0</Item> + </Expand> + </Type> + <Type Name="core::option::Option<*>"> + <DisplayString Condition="RUST$ENUM$DISR == 0x0">{{ None }}</DisplayString> + <DisplayString Condition="RUST$ENUM$DISR == 0x1">{{ Some {__0} }}</DisplayString> + <Expand> + <Item Name="[size]" ExcludeView="simple">(ULONG)(RUST$ENUM$DISR != 0)</Item> + <Item Name="[value]" ExcludeView="simple">__0</Item> + <ArrayItems> + <Size>(ULONG)(RUST$ENUM$DISR != 0)</Size> + <ValuePointer>&__0</ValuePointer> + </ArrayItems> + </Expand> + </Type> + <Type Name="core::option::Option<*>" Priority="MediumLow"> + <DisplayString Condition="*(PVOID *)this == nullptr">{{ None }}</DisplayString> + <DisplayString>{{ Some {($T1 *)this} }}</DisplayString> + <Expand> + <Item Name="[size]" ExcludeView="simple">(ULONG)(*(PVOID *)this != nullptr)</Item> + <Item Name="[value]" ExcludeView="simple" Condition="*(PVOID *)this != nullptr">($T1 *)this</Item> + <ArrayItems> + <Size>(ULONG)(*(PVOID *)this != nullptr)</Size> + <ValuePointer>($T1 *)this</ValuePointer> + </ArrayItems> + </Expand> + </Type> +</AutoVisualizer> \ No newline at end of file |
