Skip to content

Instantly share code, notes, and snippets.

@willyd
Last active August 29, 2015 14:19
Show Gist options
  • Save willyd/3ffd39a1b11fa4c09938 to your computer and use it in GitHub Desktop.
Save willyd/3ffd39a1b11fa4c09938 to your computer and use it in GitHub Desktop.
Eigen Matrix natvis for ImageWatch plugin
<Type Name="Eigen::Matrix&lt;*,*,*,*,*,*&gt;">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
</Type>
<!-- Fixed Sized Matrix -->
<Type Name="Eigen::Matrix&lt;*,*,*,*,*,*&gt;">
<Expand>
<Synthetic Name="[type]" Condition='strcmp("int", "$T1") == 0'>
<DisplayString>INT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("float", "$T1") == 0'>
<DisplayString>FLOAT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("double", "$T1") == 0'>
<DisplayString>FLOAT64</DisplayString>
</Synthetic>
<Item Name="[channels]">1</Item>
<Item Name="[rows]">$T2</Item>
<Item Name="[cols]">$T3</Item>
<Item Name="[width]" Condition="(Flags%2)">$T3</Item>
<Item Name="[width]" Condition="!(Flags%2)">$T2</Item>
<Item Name="[height]" Condition="(Flags%2)">$T2</Item>
<Item Name="[height]" Condition="!(Flags%2)">$T3</Item>
<Item Name="[data]">($T1*)(m_storage.m_data.array)</Item>
<Item Name="[stride]" Condition="(Flags%2)" >$T3*sizeof($T1)</Item> <!-- row major layout -->
<Item Name="[stride]" Condition="!(Flags%2)">$T2*sizeof($T1)</Item> <!-- col major layout -->
</Expand>
</Type>
<!-- Dynamic Matrix -->
<Type Name="Eigen::Matrix&lt;*,-1,-1,*,*,*&gt;">
<Expand>
<Synthetic Name="[type]" Condition='strcmp("int", "$T1") == 0'>
<DisplayString>INT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("float", "$T1") == 0'>
<DisplayString>FLOAT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("double", "$T1") == 0'>
<DisplayString>FLOAT64</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("__int64", "$T1") == 0'>
<DisplayString>INT64</DisplayString>
</Synthetic>
<Item Name="[channels]">1</Item>
<Item Name="[rows]">m_storage.m_rows</Item>
<Item Name="[cols]">m_storage.m_cols</Item>
<Item Name="[width]" Condition="(Flags%2)">m_storage.m_cols</Item>
<Item Name="[width]" Condition="!(Flags%2)">m_storage.m_rows</Item>
<Item Name="[height]" Condition="(Flags%2)">m_storage.m_rows</Item>
<Item Name="[height]" Condition="!(Flags%2)">m_storage.m_cols</Item>
<Item Name="[data]">(m_storage.m_data)</Item>
<Item Name="[stride]" Condition="(Flags%2)" >m_storage.m_cols*sizeof($T1)</Item> <!-- row major layout -->
<Item Name="[stride]" Condition="!(Flags%2)">m_storage.m_rows*sizeof($T1)</Item> <!-- col major layout -->
</Expand>
</Type>
<!-- Dynamic Column Vector -->
<Type Name="Eigen::Matrix&lt;*,-1,1,*,*,*&gt;">
<Expand>
<Synthetic Name="[type]" Condition='strcmp("int", "$T1") == 0'>
<DisplayString>INT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("float", "$T1") == 0'>
<DisplayString>FLOAT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("double", "$T1") == 0'>
<DisplayString>FLOAT64</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("__int64", "$T1") == 0'>
<DisplayString>INT64</DisplayString>
</Synthetic>
<Item Name="[channels]">1</Item>
<Item Name="[rows]">m_storage.m_rows</Item>
<Item Name="[cols]">1</Item>
<Item Name="[width]" Condition="(Flags%2)">1</Item>
<Item Name="[width]" Condition="!(Flags%2)">m_storage.m_rows</Item>
<Item Name="[height]" Condition="(Flags%2)">m_storage.m_rows</Item>
<Item Name="[height]" Condition="!(Flags%2)">1</Item>
<Item Name="[data]">(m_storage.m_data)</Item>
<Item Name="[stride]" Condition="(Flags%2)" >1*sizeof($T1)</Item> <!-- row major layout -->
<Item Name="[stride]" Condition="!(Flags%2)">m_storage.m_rows*sizeof($T1)</Item> <!-- col major layout -->
</Expand>
</Type>
<!-- Dynamic Row Vector -->
<Type Name="Eigen::Matrix&lt;*,1,-1,*,*,*&gt;">
<Expand>
<Synthetic Name="[type]" Condition='strcmp("int", "$T1") == 0'>
<DisplayString>INT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("float", "$T1") == 0'>
<DisplayString>FLOAT32</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("double", "$T1") == 0'>
<DisplayString>FLOAT64</DisplayString>
</Synthetic>
<Synthetic Name="[type]" Condition='strcmp("__int64", "$T1") == 0'>
<DisplayString>INT64</DisplayString>
</Synthetic>
<Item Name="[channels]">1</Item>
<Item Name="[rows]">1</Item>
<Item Name="[cols]">m_storage.m_cols</Item>
<Item Name="[width]" Condition="(Flags%2)">m_storage.m_cols</Item>
<Item Name="[width]" Condition="!(Flags%2)">1</Item>
<Item Name="[height]" Condition="(Flags%2)">1</Item>
<Item Name="[height]" Condition="!(Flags%2)">m_storage.m_cols</Item>
<Item Name="[data]">(m_storage.m_data)</Item>
<Item Name="[stride]" Condition="(Flags%2)" >m_storage.m_cols*sizeof($T1)</Item> <!-- row major layout -->
<Item Name="[stride]" Condition="!(Flags%2)">1*sizeof($T1)</Item> <!-- col major layout -->
</Expand>
</Type>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment