1---
2TpiStream:
3  Records:
4    # int*									                        [Index: 0x1000]
5    - Kind:            LF_POINTER
6      Pointer:
7        ReferentType:    116            # int
8        Attrs:           32778
9  # const int*                                      [Index: 0x1001]
10  - Kind:            LF_MODIFIER
11    Modifier:
12      ModifiedType:  0x1000
13      Modifiers:     [ Const ]
14  # char*                                           [Index: 0x1002]
15  - Kind:            LF_POINTER
16    Pointer:
17      ReferentType:    1136           # char*
18      Attrs:           32778
19  # (int, char **)                                  [Index: 0x1003]
20  - Kind:            LF_ARGLIST
21    ArgList:
22      ArgIndicies:  [ 116, 0x1002 ]
23  # (int, double)                                   [Index: 0x1004]
24  - Kind:            LF_ARGLIST
25    ArgList:
26      ArgIndicies:  [ 116, 65 ]       # (int, double)
27  # int main(int argc, char **argv)                 [Index: 0x1005]
28  - Kind:            LF_PROCEDURE
29    Procedure:
30      ReturnType:      117            # int
31      CallConv:        NearC          # __cdecl
32      Options:         [ None ]
33      ParameterCount:  2
34      ArgumentList:    0x1003         # (int, char**)
35  #	<label>                                         [Index: 0x1006]
36  - Kind:            LF_LABEL
37    Label:
38      Mode:          Near
39  # <forward decl>
40  # class FooClass;                                 [Index: 0x1007]
41  - Kind:            LF_STRUCTURE
42    Class:
43      MemberCount:     0
44      Options:         [ None, ForwardReference ]
45      FieldList:       0
46      Name:            'FooClass'
47      DerivationList:  0
48      VTableShape:     0
49      Size:            0
50  # char*                                           [Index: 0x1008]
51  - Kind:            LF_POINTER
52    Pointer:
53      ReferentType:    0x1007         # FooClass
54      Attrs:           33802          # const
55  # int (FooClass::)(int, char **)                  [Index: 0x1009]
56  - Kind:            LF_MFUNCTION
57    MemberFunction:
58      ReturnType:      116            # int
59      ClassType:       0x1007         # FooClass
60      ThisType:        0x1008         # const FooClass*
61      CallConv:        ThisCall
62      Options:         [ None ]
63      ParameterCount:  2
64      ArgumentList:    0x1003         # (int, char**)
65      ThisPointerAdjustment: 0
66  # int (FooClass::)(int, double)                   [Index: 0x100A]
67  - Kind:            LF_MFUNCTION
68    MemberFunction:
69      ReturnType:      116            # int
70      ClassType:       0x1007         # FooClass
71      ThisType:        0x1008         # const FooClass*
72      CallConv:        ThisCall
73      Options:         [ None ]
74      ParameterCount:  2
75      ArgumentList:    0x1004         # (int, double)
76      ThisPointerAdjustment: 0
77  # <method overload list>
78  # int (FooClass::)(int, char **)
79  # int (FooClass::)(int, double)                   [Index: 0x100B]
80  - Kind:            LF_METHODLIST
81    MethodOverloadList:
82      Methods:
83        - Type:            0x1009        # int (FooClass::)(int, char **)
84          Attrs:           3             # public
85          VFTableOffset:   -1
86          Name:            ''
87        - Type:            0x100A        # int (FooClass::)(int, double)
88          Attrs:           3             # public
89          VFTableOffset:   -1
90          Name:            ''
91  # <Field List>
92  #   A, B, C                                       [Index: 0x100C]
93  - Kind:            LF_FIELDLIST
94    FieldList:
95      - Kind:            LF_ENUMERATE
96        Enumerator:
97          Attrs:           3
98          Value:           0
99          Name:            A
100      - Kind:            LF_ENUMERATE
101        Enumerator:
102          Attrs:           3
103          Value:           1
104          Name:            B
105      - Kind:            LF_ENUMERATE
106        Enumerator:
107          Attrs:           3
108          Value:           2
109          Name:            C
110  # enum FooClass::Enum : uint32_t {
111  #   A, B, C
112  # };                                              [Index: 0x100D]
113  - Kind:            LF_ENUM
114    Enum:
115      NumEnumerators:  3
116      Options:         [ None, Nested ]
117      FieldList:       0x100C
118      Name:            'FooClass::Enum'
119      UnderlyingType:  117
120  # <Field List>
121  # public:
122  #   enum FooEnum : uint32_t {
123  #     A, B, C
124  #   };
125  #   FooEnum EnumMember;
126  #   static int StaticInt;
127  #   int FooClass::OverloadedMethod(int, char **);
128  #   int FooClass::OverloadedMethod(int, double);
129  #   int FooClass::RegularMethod(int, double);
130  #                                                 [Index: 0x100E]
131  - Kind:            LF_FIELDLIST
132    FieldList:
133      # enum FooEnum : uint32_t {
134      #   A, B, C
135      # };
136      - Kind:            LF_NESTTYPE
137        NestedType:
138          Type:            0x100D
139          Name:            FooEnum
140      # FooEnum EnumMember;
141      - Kind:            LF_MEMBER
142        DataMember:
143          Attrs:           3           # public
144          Type:            0x100D      # void*
145          FieldOffset:     0
146          Name:            EnumMember
147      # static int StaticInt;
148      - Kind:            LF_STMEMBER
149        StaticDataMember:
150          Attrs:           3           # public
151          Type:            116         # int
152          Name:            StaticInt
153      # int FooClass::OverloadedMethod(int, char **);
154      # int FooClass::OverloadedMethod(int, double);
155      - Kind:            LF_METHOD
156        OverloadedMethod:
157          NumOverloads:    2
158          MethodList:      0x100B
159          Name:            OverloadedMethod
160      # int FooClass::RegularMethod(int, double);
161      - Kind:            LF_ONEMETHOD
162        OneMethod:
163          Type:            0x100A
164          Attrs:           3          # public
165          VFTableOffset:   -1
166          Name:            RegularMethod
167  # class FooClass {
168  # public:
169  #   enum FooEnum : uint32_t {
170  #     A, B, C
171  #   };
172  #   FooEnum EnumMember;
173  #   static int StaticInt;
174  #   int FooClass::OverloadedMethod(int, char **);
175  #   int FooClass::OverloadedMethod(int, double);
176  #   int FooClass::RegularMethod(int, double);
177  # };                                              [Index: 0x100F]
178  - Kind:            LF_CLASS
179    Class:
180      MemberCount:     6
181      Options:         [ None ]
182      FieldList:       0x100E
183      Name:            'FooClass'
184      DerivationList:  0
185      VTableShape:     0
186      Size:            4
187  # struct FooStructure;                            [Index: 0x1010]
188  - Kind:            LF_STRUCTURE
189    Class:
190      MemberCount:     6
191      Options:         [ None ]
192      FieldList:       0x100E
193      Name:            'FooStructure'
194      DerivationList:  0
195      VTableShape:     0
196      Size:            4
197  # interface FooInterface;                         [Index: 0x1011]
198  - Kind:            LF_INTERFACE
199    Class:
200      MemberCount:     6
201      Options:         [ None ]
202      FieldList:       0x100E
203      Name:            'FooInterface'
204      DerivationList:  0
205      VTableShape:     0
206      Size:            4
207  # <field list>
208  # : public FooClass                               [Index: 0x1012]
209  - Kind:            LF_FIELDLIST
210    FieldList:
211      - Kind:            LF_BCLASS
212        Attrs:           3           # public
213        Type:            0x100F      # FooClass
214        Offset:          0
215  # <field list>
216  # : public virtual FooClass                       [Index: 0x1013]
217  - Kind:            LF_FIELDLIST
218    FieldList:
219      - Kind:            LF_VBCLASS
220        Attrs:           3           # public
221        BaseType:        0x100F      # FooClass
222        VBPtrType:       0x1001      # const int *
223        VBPtrOffset:     0
224        VTableIndex:     1
225  # struct Inherit : public FooClass {};             [Index: 0x1014]
226  - Kind:            LF_STRUCTURE
227    Class:
228      MemberCount:     1
229      Options:         [ None ]
230      FieldList:       0x100E
231      Name:            'Inherit'
232      DerivationList:  0x1012
233      VTableShape:     0
234      Size:            4
235  # class VInherit : public virtual FooClass {};             [Index: 0x1015]
236  - Kind:            LF_STRUCTURE
237    Class:
238      MemberCount:     1
239      Options:         [ None ]
240      FieldList:       0x100E
241      Name:            'Inherit'
242      DerivationList:  0x1012
243      VTableShape:     0
244      Size:            4
245  # const volatile enum FooClass::Enum : uint32_t {          [Index: 0x1016]
246  - Kind:            LF_MODIFIER
247    Modifier:
248      ModifiedType:  0x100D
249      Modifiers:     [ Const, Volatile ]
250  # const volatile struct Inherit : public FooClass {} {     [Index: 0x1017]
251  - Kind:            LF_MODIFIER
252    Modifier:
253      ModifiedType:  0x1014
254      Modifiers:     [ Const, Volatile ]
255  # const volatile class FooClass {                          [Index: 0x1018]
256  - Kind:            LF_MODIFIER
257    Modifier:
258      ModifiedType:  0x100F
259      Modifiers:     [ Const, Volatile ]
260  # const volatile interface FooInterface {                  [Index: 0x1019]
261  - Kind:            LF_MODIFIER
262    Modifier:
263      ModifiedType:  0x1011
264      Modifiers:     [ Const, Volatile ]
265
266# // Member type records. These are generally not length prefixed, and appear
267# // inside of a field list record.
268# MEMBER_RECORD(LF_VFUNCTAB, 0x1409, VFPtr)
269
270# MEMBER_RECORD_ALIAS(LF_BINTERFACE, 0x151a, BaseInterface, BaseClass)
271
272# MEMBER_RECORD_ALIAS(LF_IVBCLASS, 0x1402, IndirectVirtualBaseClass,
273#                     VirtualBaseClass)
274
275
276# TYPE_RECORD(LF_ARRAY, 0x1503, Array)
277# TYPE_RECORD(LF_UNION, 0x1506, Union)
278# TYPE_RECORD(LF_TYPESERVER2, 0x1515, TypeServer2)
279# TYPE_RECORD(LF_VFTABLE, 0x151d, VFTable)
280# TYPE_RECORD(LF_VTSHAPE, 0x000a, VFTableShape)
281
282# TYPE_RECORD(LF_BITFIELD, 0x1205, BitField)
283
284
285# // ID leaf records. Subsequent leaf types may be referenced from .debug$S.
286# TYPE_RECORD(LF_FUNC_ID, 0x1601, FuncId)
287# TYPE_RECORD(LF_MFUNC_ID, 0x1602, MemberFuncId)
288# TYPE_RECORD(LF_BUILDINFO, 0x1603, BuildInfo)
289# TYPE_RECORD(LF_SUBSTR_LIST, 0x1604, StringList)
290# TYPE_RECORD(LF_STRING_ID, 0x1605, StringId)
291# TYPE_RECORD(LF_UDT_SRC_LINE, 0x1606, UdtSourceLine)
292# TYPE_RECORD(LF_UDT_MOD_SRC_LINE, 0x1607, UdtModSourceLine)
293