Eigen.natvis дополнение для Eigen :: Карта - PullRequest
0 голосов
/ 13 февраля 2019

Я пытаюсь добавить в Eigen.natvis найденный здесь , так что Eigen::Map объекты также могут быть прочитаны в отладчике Visual Studio, библиотека Eigen найдена здесь .

Вот что я собрал:

<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>

Чего мне не хватает?Как мне заставить это работать правильно?Кроме того, natvis для Eigen::Matrix делает что-то подобное, и там это работает.

...