diff options
| -rw-r--r-- | src/etc/natvis/libstd.natvis | 35 |
1 files changed, 4 insertions, 31 deletions
diff --git a/src/etc/natvis/libstd.natvis b/src/etc/natvis/libstd.natvis index b3fc3d17af7..4e81173d3d0 100644 --- a/src/etc/natvis/libstd.natvis +++ b/src/etc/natvis/libstd.natvis @@ -30,6 +30,7 @@ <Expand> <Item Name="[size]">base.table.items</Item> <Item Name="[capacity]">base.table.items + base.table.growth_left</Item> + <Item Name="[state]">base.hash_builder</Item> <CustomListItems> <Variable Name="i" InitialValue="0" /> @@ -40,7 +41,7 @@ <If Condition="(base.table.ctrl.pointer[i] & 0x80) == 0"> <!-- Bucket is populated --> <Exec>n--</Exec> - <Item Name="{base.table.data.pointer[i].__0}">base.table.data.pointer[i].__1</Item> + <Item Name="{static_cast<tuple<$T1, $T2>*>(base.table.ctrl.pointer)[-(i + 1)].__0}">static_cast<tuple<$T1, $T2>*>(base.table.ctrl.pointer)[-(i + 1)].__1</Item> </If> <Exec>i++</Exec> </Loop> @@ -53,6 +54,7 @@ <Expand> <Item Name="[size]">map.base.table.items</Item> <Item Name="[capacity]">map.base.table.items + map.base.table.growth_left</Item> + <Item Name="[state]">map.base.hash_builder</Item> <CustomListItems> <Variable Name="i" InitialValue="0" /> @@ -63,36 +65,7 @@ <If Condition="(map.base.table.ctrl.pointer[i] & 0x80) == 0"> <!-- Bucket is populated --> <Exec>n--</Exec> - <Item>map.base.table.data.pointer[i].__0</Item> - </If> - <Exec>i++</Exec> - </Loop> - </CustomListItems> - </Expand> - </Type> - - <Type Name="hashbrown::raw::RawTable<*>"> - <!-- RawTable has a nice and simple layout. - items Number of *populated* values in the RawTable (less than the size of ctrl.pointer / data.pointer) - growth_left Remaining capacity before growth - ctrl.pointer[i] & 0x80 Indicates the bucket is empty / should be skipped / doesn't count towards items. - data.pointer[i] The (K,V) tuple, if not empty. - --> - <DisplayString>{{ size={items} }}</DisplayString> - <Expand> - <Item Name="[size]">items</Item> - <Item Name="[capacity]">items + growth_left</Item> - - <CustomListItems> - <Variable Name="i" InitialValue="0" /> - <Variable Name="n" InitialValue="items" /> - <Size>items</Size> - <Loop> - <Break Condition="n == 0" /> - <If Condition="(ctrl.pointer[i] & 0x80) == 0"> - <!-- Bucket is populated --> - <Exec>n--</Exec> - <Item>data.pointer[i]</Item> + <Item>static_cast<$T1*>(map.base.table.ctrl.pointer)[-(i + 1)]</Item> </If> <Exec>i++</Exec> </Loop> |
