Eigen :: Map的Eigen.natvis添加

时间:2019-02-13 17:52:40

标签: c++ visual-studio eigen natvis

我试图添加到Eigen.natvis,找到here,以便Eigen::Map对象也可以在Visual Studio调试器的Eigen库中找到,here

这是我整理的内容:

<Type Name="Eigen::Map&lt;Eigen::Matrix&lt;*,-1,-1,*,*,*&gt;,*,*&gt;">
<DisplayString Condition="m_data == 0">empty</DisplayString>
<DisplayString Condition="m_data != 0">Map[{m_rows.m_value}, {m_cols.m_value}] (dynamic matrix)</DisplayString>
<Expand>
  <ArrayItems Condition="Flags%2"> <!-- row major layout -->
    <Rank>2</Rank>
    <Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>
    <ValuePointer>m_data</ValuePointer>
  </ArrayItems>
  <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
    <Direction>Backward</Direction>
    <Rank>2</Rank>
    <Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>
    <ValuePointer>m_data</ValuePointer>
  </ArrayItems>
</Expand>
</Type>

我面临的主要问题是此行(通过反复试验发现):

<Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>

相反,如果我使用以下任何一种方法,那么它可以工作,但当然不正确(与特定数字常量无关):

<Size>$i==0 ? 4 : 2</Size>
<Size>$i==0 ? 3 : m_cols.m_value</Size>
<Size>$i==0 ? m_rows.m_value : 5</Size>

我想念什么?如何使它正确运行?另外,Eigen::Matrix的natvis也可以完成类似的工作。

0 个答案:

没有答案