2015-01-09 1 views
0

У меня есть классы, которые в основном похожи на следующее, и я хотел бы сделать, то более удобным для чтения в визуальной Debugger:Visual Studio .natvis файл, массив класса визуализации

template <typename T, precision P = defaultp> 
struct tvec4 
{ 
    T x, y, z, w; 
}; 

template <typename T, precision P = defaultp> 
struct tmat4x4 
{ 
    typedef tvec4<T, P> col_type; 

private: 
    col_type value[4]; 
}; 

Вот что файл natvis выглядит для вектора:

<Type Name="glm::tvec4&lt;*&gt;"> 
    <DisplayString>{x}, {y}, {z}, {w}</DisplayString> 
    <Expand> 
     <Item Name="x">x</Item> 
     <Item Name="y">y</Item> 
     <Item Name="z">z</Item> 
     <Item Name="w">w</Item> 
    </Expand> 
</Type> 

Какая работа прекрасна. Однако для матричного класса я не могу заставить ничего работать.

Try1:

<Type Name="glm::tmat4&lt;*&gt;"> 
    <DisplayString>{{value[0]}, {value[1]}, {value[2]}, {value[3]}}</DisplayString> 
    <Expand> 
     <Item Name="[0]">value[0]</Item> 
     <Item Name="[1]">value[1]</Item> 
     <Item Name="[2]">value[2]</Item> 
     <Item Name="[3]">value[3]</Item> 
    </Expand> 
</Type> 

Try2:

<Type Name="glm::tmat4&lt;*&gt;"> 
    <DisplayString>{size = {4 x 4}}</DisplayString> 
    <Expand> 
     <Item Name="[size]">4</Item> 
     <Item Name="[capacity]">4</Item> 
     <ArrayItems> 
      <Size>4</Size> 
      <ValuePointer>value</ValuePointer> 
     </ArrayItems> 
    </Expand> 
</Type> 

Любая идея, что я делаю неправильно?

Спасибо! Christophe

ответ

0

Это старый вопрос, поэтому я предполагаю, что у вас есть решение сейчас, но только в случае, если кто-то имеет такую ​​же проблему это вниз к использованию фигурных скобок в описании:

<DisplayString>{{value[0]}, {value[1]}, {value[2]}, {value[3]}}</DisplayString> 

Один скобка {} указывает на то, что содержание должно быть истолковано отладчик, но если вы на самом деле хотите подпорку как часть описания, то вам нужно в использовать двойные фигурные скобки:

{{Text here {variable_name_here}}} 

Так что в вашем случае, что бы сделать правильную строку дисплея:

<DisplayString>{{{value[0]}, {value[1]}, {value[2]}, {value[3]}}}</DisplayString> 
Смежные вопросы