|
|
- <?xml version="1.0" encoding="utf-8"?>
- <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
- <Type Name="entt::basic_registry<*>">
- <Intrinsic Name="pools_size" Expression="pools.packed.first_base::value.size()"/>
- <Intrinsic Name="vars_size" Expression="vars.data.packed.first_base::value.size()"/>
- <Intrinsic Name="to_entity" Expression="*((entity_traits::entity_type *)&entity) & entity_traits::entity_mask">
- <Parameter Name="entity" Type="entity_traits::value_type &"/>
- </Intrinsic>
- <DisplayString>{{ size={ entities.size() } }}</DisplayString>
- <Expand>
- <Item IncludeView="simple" Name="[entities]">entities,view(simple)nr</Item>
- <Synthetic Name="[entities]" ExcludeView="simple">
- <DisplayString>{ entities.size() }</DisplayString>
- <Expand>
- <CustomListItems>
- <Variable Name="pos" InitialValue="0" />
- <Variable Name="last" InitialValue="entities.size()"/>
- <Loop>
- <Break Condition="pos == last"/>
- <If Condition="to_entity(entities[pos]) == pos">
- <Item Name="[{ pos }]">entities[pos]</Item>
- </If>
- <Exec>++pos</Exec>
- </Loop>
- </CustomListItems>
- </Expand>
- </Synthetic>
- <Synthetic Name="[destroyed]" ExcludeView="simple">
- <DisplayString>{ to_entity(free_list) != entity_traits::entity_mask }</DisplayString>
- <Expand>
- <CustomListItems>
- <Variable Name="it" InitialValue="to_entity(free_list)" />
- <Loop>
- <Break Condition="it == entity_traits::entity_mask"/>
- <Item Name="[{ it }]">entities[it]</Item>
- <Exec>it = to_entity(entities[it])</Exec>
- </Loop>
- </CustomListItems>
- </Expand>
- </Synthetic>
- <Synthetic Name="[pools]">
- <DisplayString>{ pools_size() }</DisplayString>
- <Expand>
- <IndexListItems ExcludeView="simple">
- <Size>pools_size()</Size>
- <ValueNode>*pools.packed.first_base::value[$i].element.second</ValueNode>
- </IndexListItems>
- <IndexListItems IncludeView="simple">
- <Size>pools_size()</Size>
- <ValueNode>*pools.packed.first_base::value[$i].element.second,view(simple)</ValueNode>
- </IndexListItems>
- </Expand>
- </Synthetic>
- <Item Name="[groups]" ExcludeView="simple">groups.size()</Item>
- <Synthetic Name="[vars]">
- <DisplayString>{ vars_size() }</DisplayString>
- <Expand>
- <IndexListItems>
- <Size>vars_size()</Size>
- <ValueNode>vars.data.packed.first_base::value[$i].element.second</ValueNode>
- </IndexListItems>
- </Expand>
- </Synthetic>
- </Expand>
- </Type>
- <Type Name="entt::basic_sparse_set<*>">
- <DisplayString>{{ size={ packed.size() }, type={ info->alias,na } }}</DisplayString>
- <Expand>
- <Item Name="[capacity]" ExcludeView="simple">packed.capacity()</Item>
- <Item Name="[policy]">mode,en</Item>
- <Synthetic Name="[sparse]">
- <DisplayString>{ sparse.size() * entity_traits::page_size }</DisplayString>
- <Expand>
- <ExpandedItem IncludeView="simple">sparse,view(simple)</ExpandedItem>
- <CustomListItems ExcludeView="simple">
- <Variable Name="pos" InitialValue="0"/>
- <Variable Name="page" InitialValue="0"/>
- <Variable Name="offset" InitialValue="0"/>
- <Variable Name="last" InitialValue="sparse.size() * entity_traits::page_size"/>
- <Loop>
- <Break Condition="pos == last"/>
- <Exec>page = pos / entity_traits::page_size</Exec>
- <Exec>offset = pos & (entity_traits::page_size - 1)</Exec>
- <If Condition="sparse[page] && (*((entity_traits::entity_type *)&sparse[page][offset]) < ~entity_traits::entity_mask)">
- <Item Name="[{ pos }]">*((entity_traits::entity_type *)&sparse[page][offset]) & entity_traits::entity_mask</Item>
- </If>
- <Exec>++pos</Exec>
- </Loop>
- </CustomListItems>
- </Expand>
- </Synthetic>
- <Synthetic Name="[packed]">
- <DisplayString>{ packed.size() }</DisplayString>
- <Expand>
- <ExpandedItem IncludeView="simple">packed,view(simple)</ExpandedItem>
- <CustomListItems ExcludeView="simple">
- <Variable Name="pos" InitialValue="0"/>
- <Variable Name="last" InitialValue="packed.size()"/>
- <Loop>
- <Break Condition="pos == last"/>
- <If Condition="*((entity_traits::entity_type *)&packed[pos]) < ~entity_traits::entity_mask">
- <Item Name="[{ pos }]">packed[pos]</Item>
- </If>
- <Exec>++pos</Exec>
- </Loop>
- </CustomListItems>
- </Expand>
- </Synthetic>
- </Expand>
- </Type>
- <Type Name="entt::basic_storage<*>">
- <DisplayString>{{ size={ base_type::packed.size() }, type={ base_type::info->alias,na } }}</DisplayString>
- <Expand>
- <Item Name="[capacity]" Optional="true" ExcludeView="simple">packed.first_base::value.capacity() * comp_traits::page_size</Item>
- <Item Name="[page size]" Optional="true" ExcludeView="simple">comp_traits::page_size</Item>
- <Item Name="[base]" ExcludeView="simple">(base_type*)this,nand</Item>
- <Item Name="[base]" IncludeView="simple">(base_type*)this,view(simple)nand</Item>
- <!-- having SFINAE-like techniques in natvis is priceless :) -->
- <CustomListItems Condition="packed.first_base::value.size() != 0" Optional="true">
- <Variable Name="pos" InitialValue="0" />
- <Variable Name="last" InitialValue="base_type::packed.size()"/>
- <Loop>
- <Break Condition="pos == last"/>
- <If Condition="*((base_type::entity_traits::entity_type *)&base_type::packed[pos]) < ~base_type::entity_traits::entity_mask">
- <Item Name="[{ pos }]">packed.first_base::value[pos / comp_traits::page_size][pos & (comp_traits::page_size - 1)]</Item>
- </If>
- <Exec>++pos</Exec>
- </Loop>
- </CustomListItems>
- </Expand>
- </Type>
- <Type Name="entt::basic_view<*>">
- <DisplayString>{{ size_hint={ view->packed.size() } }}</DisplayString>
- <Expand>
- <Item Name="[pools]">pools,na</Item>
- <Item Name="[filter]">filter,na</Item>
- </Expand>
- </Type>
- <Type Name="entt::null_t">
- <DisplayString><null></DisplayString>
- </Type>
- <Type Name="entt::tombstone_t">
- <DisplayString><tombstone></DisplayString>
- </Type>
- </AutoVisualizer>
|