Procházet zdrojové kódy

natvis: updated meta views

Michele Caini před 2 roky
rodič
revize
1178b8e0cf
1 změnil soubory, kde provedl 142 přidání a 9 odebrání
  1. 142 9
      natvis/entt/meta.natvis

+ 142 - 9
natvis/entt/meta.natvis

@@ -2,17 +2,25 @@
 <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
 	<Type Name="entt::internal::meta_base_node">
 		<DisplayString>{{}}</DisplayString>
+		<Expand/>
 	</Type>
 	<Type Name="entt::internal::meta_conv_node">
 		<DisplayString>{{}}</DisplayString>
+		<Expand/>
 	</Type>
 	<Type Name="entt::internal::meta_ctor_node">
 		<DisplayString>{{ arity={ arity } }}</DisplayString>
+		<Expand>
+			<Item Name="[arity]">arity</Item>
+		</Expand>
 	</Type>
 	<Type Name="entt::internal::meta_data_node">
 		<Intrinsic Name="has_trait" Expression="!!(traits &amp; property)">
 			<Parameter Name="property" Type="int"/>
 		</Intrinsic>
+		<Intrinsic Name="prop_at" Expression="prop.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
 		<DisplayString>{{ arity={ arity } }}</DisplayString>
 		<Expand>
 			<Item Name="[arity]">arity</Item>
@@ -21,10 +29,15 @@
 			<Synthetic Name="[prop]">
 				<DisplayString>{ prop.size() }</DisplayString>
 				<Expand>
-					<IndexListItems>
-						<Size>prop.size()</Size>
-						<ValueNode>prop.packed.first_base::value[$i].element.first</ValueNode>
-					</IndexListItems>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="prop.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ prop_at(pos).first }]">prop_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
 				</Expand>
 			</Synthetic>
 		</Expand>
@@ -33,6 +46,9 @@
 		<Intrinsic Name="has_trait" Expression="!!(traits &amp; property)">
 			<Parameter Name="property" Type="int"/>
 		</Intrinsic>
+		<Intrinsic Name="prop_at" Expression="prop.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
 		<DisplayString>{{ arity={ arity } }}</DisplayString>
 		<Expand>
 			<Item Name="[is_const]">has_trait(entt::internal::meta_traits::is_const)</Item>
@@ -41,19 +57,135 @@
 			<Synthetic Name="[prop]">
 				<DisplayString>{ prop.size() }</DisplayString>
 				<Expand>
-					<IndexListItems>
-						<Size>prop.size()</Size>
-						<ValueNode>prop.packed.first_base::value[$i].element.first</ValueNode>
-					</IndexListItems>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="prop.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ prop_at(pos).first }]">prop_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
 				</Expand>
 			</Synthetic>
 		</Expand>
 	</Type>
 	<Type Name="entt::internal::meta_prop_node">
 		<DisplayString>{ value }</DisplayString>
+		<Expand/>
 	</Type>
 	<Type Name="entt::internal::meta_template_node">
 		<DisplayString>{{ arity={ arity } }}</DisplayString>
+		<Expand>
+			<Item Name="[arity]">arity</Item>
+		</Expand>
+	</Type>
+	<Type Name="entt::internal::meta_type_descriptor">
+		<Intrinsic Name="ctor_at" Expression="ctor.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<Intrinsic Name="base_at" Expression="base.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<Intrinsic Name="conv_at" Expression="conv.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<Intrinsic Name="data_at" Expression="data.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<Intrinsic Name="func_at" Expression="func.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<Intrinsic Name="prop_at" Expression="prop.packed.first_base::value[pos].element">
+			<Parameter Name="pos" Type="int"/>
+		</Intrinsic>
+		<DisplayString/>
+		<Expand>
+			<Synthetic Name="[ctor]">
+				<DisplayString>{ ctor.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="ctor.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ ctor_at(pos).first }]">ctor_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+			<Synthetic Name="[base]">
+				<DisplayString>{ base.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="base.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ base_at(pos).first }]">base_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+			<Synthetic Name="[conv]">
+				<DisplayString>{ conv.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="conv.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ conv_at(pos).first }]">conv_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+			<Synthetic Name="[data]">
+				<DisplayString>{ data.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="data.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ data_at(pos).first }]">data_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+			<Synthetic Name="[func]">
+				<DisplayString>{ func.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="func.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ func_at(pos).first }]">func_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+			<Synthetic Name="[prop]">
+				<DisplayString>{ prop.size() }</DisplayString>
+				<Expand>
+					<CustomListItems>
+						<Variable Name="pos" InitialValue="0"/>
+						<Variable Name="last" InitialValue="prop.size()"/>
+						<Loop>
+							<Break Condition="pos == last"/>
+							<Item Name="[{ prop_at(pos).first }]">prop_at(pos).second</Item>
+							<Exec>++pos</Exec>
+						</Loop>
+					</CustomListItems>
+				</Expand>
+			</Synthetic>
+		</Expand>
 	</Type>
 	<Type Name="entt::internal::meta_type_node">
 		<Intrinsic Name="has_trait" Expression="!!(traits &amp; property)">
@@ -77,7 +209,7 @@
 			<Item Name="[default_constructor]">default_constructor != nullptr</Item>
 			<Item Name="[conversion_helper]">conversion_helper != nullptr</Item>
 			<Item Name="[from_void]">from_void != nullptr</Item>
-			<Item Name="[template_info]">templ</Item>
+			<Item Name="[template_info]" Condition="templ.arity != 0u">templ</Item>
 			<Item Name="[details]" Condition="details != nullptr">*details</Item>
 		</Expand>
 	</Type>
@@ -91,6 +223,7 @@
 	</Type>
 	<Type Name="entt::meta_handle">
 		<DisplayString>{ any }</DisplayString>
+		<Expand/>
 	</Type>
 	<Type Name="entt::meta_associative_container">
 		<DisplayString>{ storage }</DisplayString>