aboutsummaryrefslogtreecommitdiff
path: root/devtools/create_project/scripts/scummvm.natvis
blob: 855ab286fdf52c9b4f8a3d8551934a0eb36acdcf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
<?xml version="1.0" encoding="utf-8"?>

<!--
    Debug visualizers for a few common ScummVM types for Visual Studio 2012 and up.

    To use, copy this file into Documents\Visual Studio 20xx\Visualizers.
-->

<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" MenuName="Add to Image Watch"/>

  <Type Name="Graphics::Surface">
    <UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
  </Type>

  <Type Name="Graphics::Surface">
    <Expand>
      <Synthetic Name="[type]">
        <DisplayString>UINT8</DisplayString>
      </Synthetic>
      <Item Name="[channels]" Condition="format.bytesPerPixel==1">1</Item>
      <Item Name="[channels]" Condition="format.bytesPerPixel==2">2</Item>
      <Synthetic Name="[channels]" Condition="format.bytesPerPixel==4">
        <DisplayString>RGBA</DisplayString>
      </Synthetic>
      <Item Name="[width]">w</Item>
      <Item Name="[height]">h</Item>
      <Item Name="[stride]">pitch</Item>
      <Item Name="[data]">pixels</Item>
    </Expand>
  </Type>

  <Type Name="Common::Array&lt;*&gt;">
    <DisplayString>{{size = {_size}}}</DisplayString>
    <Expand>
      <Item Name="[size]">_size</Item>
      <Item Name="[capacity]">_capacity</Item>
      <ArrayItems>
        <Size>_size</Size>
        <ValuePointer>_storage</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>

  <Type Name="Common::HashMap&lt;*,*,*,*&gt;">
    <DisplayString>{{ size = {_size} }}</DisplayString>
    <Expand>
      <Item Name="[size]">_size</Item>
      <Item Name="[capacity]">_mask + 1</Item>
      <Item Name="[deleted]">_deleted</Item>
      <CustomListItems MaxItemsPerView="5000" ExcludeView="Test">
        <Variable Name="ctr" InitialValue="0" />
        <Size>_size</Size>
        <Loop>
          <Break Condition="ctr &gt; _mask" />
          <Item Condition="_storage[ctr] &gt; 1" Name="[{_storage[ctr]->_key}]">*_storage[ctr],view(MapHelper)</Item>
          <Exec>ctr++</Exec>
        </Loop>
      </CustomListItems>
    </Expand>
  </Type>

  <Type Name="Common::HashMap&lt;*,*,*,*&gt;::Node" IncludeView="MapHelper">
    <DisplayString>{_value}</DisplayString>
  </Type>

  <Type Name="Common::List&lt;*&gt;">
    <DisplayString Condition="&amp;_anchor == _anchor._next">{{ empty }}</DisplayString>
    <DisplayString Condition="&amp;_anchor != _anchor._next">{{ non-empty }}</DisplayString>
    <Expand>
      <CustomListItems Condition="&amp;_anchor != _anchor._next">
        <Variable Name="head" InitialValue="&amp;_anchor"/>
        <Variable Name="iter" InitialValue="_anchor._next"/>
        <Loop>
          <Break Condition="iter == head"/>
          <Item>((Common::ListInternal::Node&lt;$T1&gt;*)iter)->_data</Item>
          <Exec>iter = iter->_next</Exec>
        </Loop>
      </CustomListItems>
    </Expand>
  </Type>

  <Type Name="Common::String">
    <DisplayString>{_str,[_size]}</DisplayString>
    <StringView>_str,[_size]</StringView>
    <Expand>
      <Item Name="[size]">_size</Item>
      <Item Condition="_str != _storage" Name="[capacity]">_extern._capacity</Item>
      <Item Condition="_str != _storage" Name="[refCount]">*_extern._refCount</Item>
      <ArrayItems>
        <Size>_size</Size>
        <ValuePointer>_str</ValuePointer>
      </ArrayItems>
    </Expand>
  </Type>
</AutoVisualizer>