xref: /aosp_15_r20/external/eigen/debug/msvc/eigen.natvis (revision bf2c37156dfe67e5dfebd6d394bad8b2ab5804d4)
1*bf2c3715SXin Li<?xml version="1.0" encoding="utf-8"?>
2*bf2c3715SXin Li
3*bf2c3715SXin Li<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
4*bf2c3715SXin Li
5*bf2c3715SXin Li  <!-- Fixed x Fixed Matrix -->
6*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,*,*,*,*,*&gt;">
7*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,-1,-1,*,*,*&gt;"/>
8*bf2c3715SXin Li      <DisplayString>[{$T2}, {$T3}] (fixed matrix)</DisplayString>
9*bf2c3715SXin Li      <Expand>
10*bf2c3715SXin Li        <ArrayItems Condition="Flags%2"> <!-- row major layout -->
11*bf2c3715SXin Li          <Rank>2</Rank>
12*bf2c3715SXin Li          <Size>$i==0 ? $T2 : $T3</Size>
13*bf2c3715SXin Li          <ValuePointer>m_storage.m_data.array</ValuePointer>
14*bf2c3715SXin Li        </ArrayItems>
15*bf2c3715SXin Li        <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
16*bf2c3715SXin Li          <Direction>Backward</Direction>
17*bf2c3715SXin Li          <Rank>2</Rank>
18*bf2c3715SXin Li          <Size>$i==0 ? $T2 : $T3</Size>
19*bf2c3715SXin Li          <ValuePointer>m_storage.m_data.array</ValuePointer>
20*bf2c3715SXin Li        </ArrayItems>
21*bf2c3715SXin Li      </Expand>
22*bf2c3715SXin Li  </Type>
23*bf2c3715SXin Li
24*bf2c3715SXin Li  <!-- 2 x 2 Matrix -->
25*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,2,2,*,*,*&gt;">
26*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,2,2,*,*,*&gt;"/>
27*bf2c3715SXin Li      <DisplayString>[2, 2] (fixed matrix)</DisplayString>
28*bf2c3715SXin Li      <Expand>
29*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="Flags%2">
30*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]})</DisplayString>
31*bf2c3715SXin Li        </Synthetic>
32*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="!(Flags%2)">
33*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[2]})</DisplayString>
34*bf2c3715SXin Li        </Synthetic>
35*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="Flags%2">
36*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[2]}, {m_storage.m_data.array[3]})</DisplayString>
37*bf2c3715SXin Li        </Synthetic>
38*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="!(Flags%2)">
39*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[1]}, {m_storage.m_data.array[3]})</DisplayString>
40*bf2c3715SXin Li        </Synthetic>
41*bf2c3715SXin Li      </Expand>
42*bf2c3715SXin Li  </Type>
43*bf2c3715SXin Li
44*bf2c3715SXin Li  <!-- 3 x 3 Matrix -->
45*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,3,3,*,*,*&gt;">
46*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,3,3,*,*,*&gt;"/>
47*bf2c3715SXin Li      <DisplayString>[3, 3] (fixed matrix)</DisplayString>
48*bf2c3715SXin Li      <Expand>
49*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="Flags%2">
50*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]}, {m_storage.m_data.array[2]})</DisplayString>
51*bf2c3715SXin Li        </Synthetic>
52*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="!(Flags%2)">
53*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[3]}, {m_storage.m_data.array[6]})</DisplayString>
54*bf2c3715SXin Li        </Synthetic>
55*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="Flags%2">
56*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[3]}, {m_storage.m_data.array[4]}, {m_storage.m_data.array[5]})</DisplayString>
57*bf2c3715SXin Li        </Synthetic>
58*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="!(Flags%2)">
59*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[1]}, {m_storage.m_data.array[4]}, {m_storage.m_data.array[7]})</DisplayString>
60*bf2c3715SXin Li        </Synthetic>
61*bf2c3715SXin Li        <Synthetic Name="[row 2]" Condition="Flags%2">
62*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[6]}, {m_storage.m_data.array[7]}, {m_storage.m_data.array[8]})</DisplayString>
63*bf2c3715SXin Li        </Synthetic>
64*bf2c3715SXin Li        <Synthetic Name="[row 2]" Condition="!(Flags%2)">
65*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[2]}, {m_storage.m_data.array[5]}, {m_storage.m_data.array[8]})</DisplayString>
66*bf2c3715SXin Li        </Synthetic>
67*bf2c3715SXin Li      </Expand>
68*bf2c3715SXin Li  </Type>
69*bf2c3715SXin Li
70*bf2c3715SXin Li  <!-- 4 x 4 Matrix -->
71*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,4,4,*,*,*&gt;">
72*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,4,4,*,*,*&gt;"/>
73*bf2c3715SXin Li      <DisplayString>[4, 4] (fixed matrix)</DisplayString>
74*bf2c3715SXin Li      <Expand>
75*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="Flags%2">
76*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]}, {m_storage.m_data.array[2]}, {m_storage.m_data.array[3]})</DisplayString>
77*bf2c3715SXin Li        </Synthetic>
78*bf2c3715SXin Li        <Synthetic Name="[row 0]" Condition="!(Flags%2)">
79*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[0]}, {m_storage.m_data.array[4]}, {m_storage.m_data.array[8]}, {m_storage.m_data.array[12]})</DisplayString>
80*bf2c3715SXin Li        </Synthetic>
81*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="Flags%2">
82*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[4]}, {m_storage.m_data.array[5]}, {m_storage.m_data.array[6]}, {m_storage.m_data.array[7]})</DisplayString>
83*bf2c3715SXin Li        </Synthetic>
84*bf2c3715SXin Li        <Synthetic Name="[row 1]" Condition="!(Flags%2)">
85*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[1]}, {m_storage.m_data.array[5]}, {m_storage.m_data.array[9]}, {m_storage.m_data.array[13]})</DisplayString>
86*bf2c3715SXin Li        </Synthetic>
87*bf2c3715SXin Li        <Synthetic Name="[row 2]" Condition="Flags%2">
88*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[8]}, {m_storage.m_data.array[9]}, {m_storage.m_data.array[10]}, {m_storage.m_data.array[11]})</DisplayString>
89*bf2c3715SXin Li        </Synthetic>
90*bf2c3715SXin Li        <Synthetic Name="[row 2]" Condition="!(Flags%2)">
91*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[2]}, {m_storage.m_data.array[6]}, {m_storage.m_data.array[10]}, {m_storage.m_data.array[14]})</DisplayString>
92*bf2c3715SXin Li        </Synthetic>
93*bf2c3715SXin Li        <Synthetic Name="[row 3]" Condition="Flags%2">
94*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[12]}, {m_storage.m_data.array[13]}, {m_storage.m_data.array[14]}, {m_storage.m_data.array[15]})</DisplayString>
95*bf2c3715SXin Li        </Synthetic>
96*bf2c3715SXin Li        <Synthetic Name="[row 3]" Condition="!(Flags%2)">
97*bf2c3715SXin Li          <DisplayString>({m_storage.m_data.array[3]}, {m_storage.m_data.array[7]}, {m_storage.m_data.array[11]}, {m_storage.m_data.array[15]})</DisplayString>
98*bf2c3715SXin Li        </Synthetic>
99*bf2c3715SXin Li      </Expand>
100*bf2c3715SXin Li  </Type>
101*bf2c3715SXin Li
102*bf2c3715SXin Li  <!-- Dynamic x Dynamic Matrix -->
103*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,-1,-1,*,*,*&gt;">
104*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,-1,-1,*,*,*&gt;"/>
105*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data == 0">empty</DisplayString>
106*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data != 0">[{m_storage.m_rows}, {m_storage.m_cols}] (dynamic matrix)</DisplayString>
107*bf2c3715SXin Li      <Expand>
108*bf2c3715SXin Li        <ArrayItems Condition="Flags%2"> <!-- row major layout -->
109*bf2c3715SXin Li          <Rank>2</Rank>
110*bf2c3715SXin Li          <Size>$i==0 ? m_storage.m_rows : m_storage.m_cols</Size>
111*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
112*bf2c3715SXin Li        </ArrayItems>
113*bf2c3715SXin Li        <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
114*bf2c3715SXin Li          <Direction>Backward</Direction>
115*bf2c3715SXin Li          <Rank>2</Rank>
116*bf2c3715SXin Li          <Size>$i==0 ? m_storage.m_rows : m_storage.m_cols</Size>
117*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
118*bf2c3715SXin Li        </ArrayItems>
119*bf2c3715SXin Li      </Expand>
120*bf2c3715SXin Li  </Type>
121*bf2c3715SXin Li
122*bf2c3715SXin Li  <!-- Fixed x Dynamic Matrix -->
123*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,*,-1,*,*,*&gt;">
124*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,*,-1,*,*,*&gt;"/>
125*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data == 0">empty</DisplayString>
126*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data != 0">[{$T2}, {m_storage.m_cols}] (dynamic column matrix)</DisplayString>
127*bf2c3715SXin Li      <Expand>
128*bf2c3715SXin Li        <ArrayItems Condition="Flags%2"> <!-- row major layout -->
129*bf2c3715SXin Li          <Rank>2</Rank>
130*bf2c3715SXin Li          <Size>$i==0 ? $T2 : m_storage.m_cols</Size>
131*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
132*bf2c3715SXin Li        </ArrayItems>
133*bf2c3715SXin Li        <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
134*bf2c3715SXin Li          <Direction>Backward</Direction>
135*bf2c3715SXin Li          <Rank>2</Rank>
136*bf2c3715SXin Li          <Size>$i==0 ? $T2 : m_storage.m_cols</Size>
137*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
138*bf2c3715SXin Li        </ArrayItems>
139*bf2c3715SXin Li      </Expand>
140*bf2c3715SXin Li  </Type>
141*bf2c3715SXin Li
142*bf2c3715SXin Li  <!-- Dynamic x Fixed Matrix -->
143*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,-1,*,*,*,*&gt;">
144*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,-1,*,*,*,*&gt;"/>
145*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data == 0">empty</DisplayString>
146*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data != 0">[{m_storage.m_rows}, {$T2}] (dynamic row matrix)</DisplayString>
147*bf2c3715SXin Li      <Expand>
148*bf2c3715SXin Li        <ArrayItems Condition="Flags%2"> <!-- row major layout -->
149*bf2c3715SXin Li          <Rank>2</Rank>
150*bf2c3715SXin Li          <Size>$i==0 ? m_storage.m_rows : $T2</Size>
151*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
152*bf2c3715SXin Li        </ArrayItems>
153*bf2c3715SXin Li        <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
154*bf2c3715SXin Li          <Direction>Backward</Direction>
155*bf2c3715SXin Li          <Rank>2</Rank>
156*bf2c3715SXin Li          <Size>$i==0 ? m_storage.m_rows : $T2</Size>
157*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
158*bf2c3715SXin Li        </ArrayItems>
159*bf2c3715SXin Li      </Expand>
160*bf2c3715SXin Li  </Type>
161*bf2c3715SXin Li
162*bf2c3715SXin Li  <!-- Dynamic Column Vector -->
163*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,1,-1,*,*,*&gt;">
164*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,1,-1,*,*,*&gt;"/>
165*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data == 0">empty</DisplayString>
166*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data != 0">[{m_storage.m_cols}] (dynamic column vector)</DisplayString>
167*bf2c3715SXin Li      <Expand>
168*bf2c3715SXin Li        <Item Name="[size]">m_storage.m_cols</Item>
169*bf2c3715SXin Li        <ArrayItems>
170*bf2c3715SXin Li          <Size>m_storage.m_cols</Size>
171*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
172*bf2c3715SXin Li        </ArrayItems>
173*bf2c3715SXin Li      </Expand>
174*bf2c3715SXin Li  </Type>
175*bf2c3715SXin Li
176*bf2c3715SXin Li  <!-- Dynamic Row Vector -->
177*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,-1,1,*,*,*&gt;">
178*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,-1,1,*,*,*&gt;"/>
179*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data == 0">empty</DisplayString>
180*bf2c3715SXin Li      <DisplayString Condition="m_storage.m_data != 0">[{m_storage.m_rows}] (dynamic row vector)</DisplayString>
181*bf2c3715SXin Li      <Expand>
182*bf2c3715SXin Li        <Item Name="[size]">m_storage.m_rows</Item>
183*bf2c3715SXin Li        <ArrayItems>
184*bf2c3715SXin Li          <Size>m_storage.m_rows</Size>
185*bf2c3715SXin Li          <ValuePointer>m_storage.m_data</ValuePointer>
186*bf2c3715SXin Li        </ArrayItems>
187*bf2c3715SXin Li      </Expand>
188*bf2c3715SXin Li  </Type>
189*bf2c3715SXin Li
190*bf2c3715SXin Li  <!-- Fixed Vector -->
191*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,1,1,*,*,*&gt;">
192*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,1,1,*,*,*&gt;"/>
193*bf2c3715SXin Li      <DisplayString>[1] ({m_storage.m_data.array[0]})</DisplayString>
194*bf2c3715SXin Li      <Expand>
195*bf2c3715SXin Li        <Item Name="[x]">m_storage.m_data.array[0]</Item>
196*bf2c3715SXin Li      </Expand>
197*bf2c3715SXin Li  </Type>
198*bf2c3715SXin Li
199*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,2,1,*,*,*&gt;">
200*bf2c3715SXin Li      <AlternativeType Name="Eigen::Matrix&lt;*,1,2,*,*,*&gt;"/>
201*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,2,1,*,*,*&gt;"/>
202*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,1,2,*,*,*&gt;"/>
203*bf2c3715SXin Li      <DisplayString>[2] ({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]})</DisplayString>
204*bf2c3715SXin Li      <Expand>
205*bf2c3715SXin Li        <Item Name="[x]">m_storage.m_data.array[0]</Item>
206*bf2c3715SXin Li        <Item Name="[y]">m_storage.m_data.array[1]</Item>
207*bf2c3715SXin Li      </Expand>
208*bf2c3715SXin Li  </Type>
209*bf2c3715SXin Li
210*bf2c3715SXin Li  <Type Name="Eigen::Matrix&lt;*,3,1,*,*,*&gt;">
211*bf2c3715SXin Li      <AlternativeType Name="Eigen::Matrix&lt;*,1,3,*,*,*&gt;"/>
212*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,3,1,*,*,*&gt;"/>
213*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,1,3,*,*,*&gt;"/>
214*bf2c3715SXin Li      <DisplayString>[3] ({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]}, {m_storage.m_data.array[2]})</DisplayString>
215*bf2c3715SXin Li      <Expand>
216*bf2c3715SXin Li        <Item Name="[x]">m_storage.m_data.array[0]</Item>
217*bf2c3715SXin Li        <Item Name="[y]">m_storage.m_data.array[1]</Item>
218*bf2c3715SXin Li        <Item Name="[z]">m_storage.m_data.array[2]</Item>
219*bf2c3715SXin Li      </Expand>
220*bf2c3715SXin Li  </Type>
221*bf2c3715SXin Li
222*bf2c3715SXin Li    <Type Name="Eigen::Matrix&lt;*,4,1,*,*,*&gt;">
223*bf2c3715SXin Li      <AlternativeType Name="Eigen::Matrix&lt;*,1,4,*,*,*&gt;"/>
224*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,4,1,*,*,*&gt;"/>
225*bf2c3715SXin Li      <AlternativeType Name="Eigen::Array&lt;*,1,4,*,*,*&gt;"/>
226*bf2c3715SXin Li      <DisplayString>[4] ({m_storage.m_data.array[0]}, {m_storage.m_data.array[1]}, {m_storage.m_data.array[2]}, {m_storage.m_data.array[3]})</DisplayString>
227*bf2c3715SXin Li      <Expand>
228*bf2c3715SXin Li        <Item Name="[x]">m_storage.m_data.array[0]</Item>
229*bf2c3715SXin Li        <Item Name="[y]">m_storage.m_data.array[1]</Item>
230*bf2c3715SXin Li        <Item Name="[z]">m_storage.m_data.array[2]</Item>
231*bf2c3715SXin Li        <Item Name="[w]">m_storage.m_data.array[3]</Item>
232*bf2c3715SXin Li      </Expand>
233*bf2c3715SXin Li  </Type>
234*bf2c3715SXin Li
235*bf2c3715SXin Li</AutoVisualizer>
236