Rizin
unix-like reverse engineering framework and cli tools
tpi.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: 2021 Basstorm <basstorm@nyist.edu.cn>
2 // SPDX-License-Identifier: LGPL-3.0-only
3 
4 #ifndef PDB_TPI_H
5 #define PDB_TPI_H
6 
7 #include <rz_util.h>
8 
9 typedef enum {
10  DIRECT = 0, // Not a pointer
11  NEAR_POINTER = 1, // Near pointer
12  FAR_POINTER = 2, // Far pointer
13  HUGE_POINTER = 3, // Huge pointer
14  NEAR_POINTER32 = 4, // 32 bit near pointer
15  FAR_POINTER32 = 5, // 32 bit far pointer
16  NEAR_POINTER64 = 6, // 64 bit near pointer
17  NEAR_POINTER128 = 7 // 128 bit near pointer
19 
20 typedef enum {
21  PDB_NONE = 0x0000, // uncharacterized type (no type)
22  PDB_VOID = 0x0003, // void
23  PDB_NOT_TRANSLATED = 0x0007, // type not translated by cvpack
24  PDB_HRESULT = 0x0008, // OLE/COM HRESULT
25 
26  PDB_SIGNED_CHAR = 0x0010, // 8 bit signed
27  PDB_UNSIGNED_CHAR = 0x0020, // 8 bit unsigned
28  PDB_NARROW_CHAR = 0x0070, // really a char
29  PDB_WIDE_CHAR = 0x0071, // wide char
30  PDB_CHAR16 = 0x007a, // char16_t
31  PDB_CHAR32 = 0x007b, // char32_t
32 
33  PDB_SBYTE = 0x0068, // 8 bit signed int
34  PDB_BYTE = 0x0069, // 8 bit unsigned int
35  PDB_INT16_SHORT = 0x0011, // 16 bit signed
36  PDB_UINT16_SHORT = 0x0021, // 16 bit unsigned
37  PDB_INT16 = 0x0072, // 16 bit signed int
38  PDB_UINT16 = 0x0073, // 16 bit unsigned int
39  PDB_INT32_LONG = 0x0012, // 32 bit signed
40  PDB_UINT32_LONG = 0x0022, // 32 bit unsigned
41  PDB_INT32 = 0x0074, // 32 bit signed int
42  PDB_UINT32 = 0x0075, // 32 bit unsigned int
43  PDB_INT64_QUAD = 0x0013, // 64 bit signed
44  PDB_UINT64_QUAD = 0x0023, // 64 bit unsigned
45  PDB_INT64 = 0x0076, // 64 bit signed int
46  PDB_UINT64 = 0x0077, // 64 bit unsigned int
47  PDB_INT128_OCT = 0x0014, // 128 bit signed int
48  PDB_UINT128_OCT = 0x0024, // 128 bit unsigned int
49  PDB_INT128 = 0x0078, // 128 bit signed int
50  PDB_UINT128 = 0x0079, // 128 bit unsigned int
51 
52  PDB_FLOAT16 = 0x0046, // 16 bit real
53  PDB_FLOAT32 = 0x0040, // 32 bit real
54  PDB_FLOAT32_PP = 0x0045, // 32 bit PP (partial precision) real
55  PDB_FLOAT48 = 0x0044, // 48 bit real
56  PDB_FLOAT64 = 0x0041, // 64 bit real
57  PDB_FLOAT80 = 0x0042, // 80 bit real
58  PDB_FLOAT128 = 0x0043, // 128 bit real
59 
60  PDB_COMPLEX16 = 0x0056, // 16 bit complex
61  PDB_COMPLEX32 = 0x0050, // 32 bit complex
62  PDB_COMPLEX32_PP = 0x0055, // 32 bit PP (partial precision) complex
63  PDB_COMPLEX48 = 0x0054, // 48 bit complex
64  PDB_COMPLEX64 = 0x0051, // 64 bit complex
65  PDB_COMPLEX80 = 0x0052, // 80 bit complex
66  PDB_COMPLEX128 = 0x0053, // 128 bit complex
67 
68  PDB_BOOL8 = 0x0030, // 8 bit boolean
69  PDB_BOOL16 = 0x0031, // 16 bit boolean
70  PDB_BOOL32 = 0x0032, // 32 bit boolean
71  PDB_BOOL64 = 0x0033, // 64 bit boolean
72  PDB_BOOL128 = 0x0034, // 128 bit boolean
74 
75 typedef enum {
76  LF_MODIFIER_16t = 0x0001, // type record for a generalized built-in type modifier
77  LF_POINTER_16t = 0x0002,
78  LF_ARRAY_16t = 0x0003, // type record for basic array
79  LF_CLASS_16t = 0x0004,
80  LF_STRUCTURE_16t = 0x0005,
81  LF_UNION_16t = 0x0006,
82  LF_ENUM_16t = 0x0007, // type record for LF_ENUM
83  LF_PROCEDURE_16t = 0x0008, // Type record for LF_PROCEDURE
84  LF_MFUNCTION_16t = 0x0009, // Type record for member function
85  LF_VTSHAPE = 0x000A, // type record for virtual function table shape
86  LF_COBOL0_16t = 0x000B, // type record for cobol0
87  LF_COBOL1 = 0x000C, // type record for cobol1
88  LF_BARRAY_16t = 0x000D, // type record for basic array
89  LF_LABEL = 0x000E,
90  LF_NULL = 0x000F,
91  LF_NOTTRAN = 0x0010,
92  LF_DIMARRAY_16t = 0x0011, // type record for dimensioned arrays
93  LF_VFTPATH_16t = 0x0012, // type record describing path to virtual function table
94  LF_PRECOMP_16t = 0x0013, // type record describing inclusion of precompiled types
95  LF_ENDPRECOMP = 0x0014, // type record describing end of precompiled types that can be
96  LF_OEM_16t = 0x0015, // type record for OEM definable type strings
97  LF_TYPESERVER_ST = 0x0016, // type record describing using of a type server
98  LF_SKIP_16t = 0x0200,
99  LF_ARGLIST_16t = 0x0201,
100  LF_DEFARG_16t = 0x0202,
101  LF_LIST = 0x0203,
103  LF_DERIVED_16t = 0x0205, // derived class list leaf
104  LF_BITFIELD_16t = 0x0206, // type record for LF_BITFIELD
105  LF_METHODLIST_16t = 0x0207, // type record for non-static methods and friends in overloaded method list
106  LF_DIMCONU_16t = 0x0208, // type record for dimensioned array with constant bounds
107  LF_DIMCONLU_16t = 0x0209, // type record for dimensioned array with constant bounds
108  LF_DIMVARU_16t = 0x020A, // type record for dimensioned array with variable bounds
109  LF_DIMVARLU_16t = 0x020B, // type record for dimensioned array with variable bounds
110  LF_REFSYM = 0x020C, // type record for referenced symbol
111  LF_BCLASS_16t = 0x0400, // subfield record for base class field
112  LF_VBCLASS_16t = 0x0401, // subfield record for direct and indirect virtual base class field
113  LF_IVBCLASS_16t = 0x0402,
114  LF_ENUMERATE_ST = 0x0403, // subfield record for enumerate
115  LF_FRIENDFCN_16t = 0x0404, // subfield record for friend function
116  LF_INDEX_16t = 0x0405, // index leaf - contains type index of another leaf
117  LF_MEMBER_16t = 0x0406,
118  LF_STMEMBER_16t = 0x0407,
119  LF_METHOD_16t = 0x0408, // subfield record for overloaded method list
120  LF_NESTTYPE_16t = 0x0409, // type record for nested (scoped) type definition
121  LF_VFUNCTAB_16t = 0x040A, // subfield record for virtual function table pointer
122  LF_FRIENDCLS_16t = 0x040B, // subfield record for friend class
123  LF_ONEMETHOD_16t = 0x040C, // subfield record for nonoverloaded method
124  LF_VFUNCOFF_16t = 0x040D, // subfield record for virtual function table pointer with offset
125  LF_TI16_MAX = 0x1000,
126  LF_MODIFIER = 0x1001, // type record for a generalized built-in type modifier
127  LF_POINTER = 0x1002,
128  LF_ARRAY_ST = 0x1003, // type record for basic array
129  LF_CLASS_ST = 0x1004,
130  LF_STRUCTURE_ST = 0x1005,
131  LF_UNION_ST = 0x1006,
132  LF_ENUM_ST = 0x1007, // type record for LF_ENUM
133  LF_PROCEDURE = 0x1008, // Type record for LF_PROCEDURE
134  LF_MFUNCTION = 0x1009, // Type record for member function
135  LF_COBOL0 = 0x100A,
136  LF_BARRAY = 0x100B, // type record for basic array
137  LF_DIMARRAY_ST = 0x100C, // type record for dimensioned arrays
138  LF_VFTPATH = 0x100D, // type record describing path to virtual function table
139  LF_PRECOMP_ST = 0x100E, // type record describing inclusion of precompiled types
140  LF_OEM = 0x100F, // type record for OEM definable type strings
141  LF_ALIAS_ST = 0x1010,
142  LF_OEM2 = 0x1011, // type record for OEM definable type strings
143  LF_SKIP = 0x1200,
144  LF_ARGLIST = 0x1201,
145  LF_DEFARG_ST = 0x1202,
146  LF_FIELDLIST = 0x1203,
147  LF_DERIVED = 0x1204, // derived class list leaf
148  LF_BITFIELD = 0x1205, // type record for LF_BITFIELD
149  LF_METHODLIST = 0x1206, // subfield record for overloaded method list
150  LF_DIMCONU = 0x1207, // type record for dimensioned array with constant bounds
151  LF_DIMCONLU = 0x1208, // type record for dimensioned array with constant bounds
152  LF_DIMVARU = 0x1209, // type record for dimensioned array with variable bounds
153  LF_DIMVARLU = 0x120A, // type record for dimensioned array with variable bounds
154  LF_BCLASS = 0x1400, // subfield record for base class field
155  LF_VBCLASS = 0x1401, // subfield record for direct and indirect virtual base class field
156  LF_IVBCLASS = 0x1402,
157  LF_FRIENDFCN_ST = 0x1403, // subfield record for friend function
158  LF_INDEX = 0x1404,
159  LF_MEMBER_ST = 0x1405, // subfield record for non-static data members
160  LF_STMEMBER_ST = 0x1406,
161  LF_METHOD_ST = 0x1407, // subfield record for overloaded method list
162  LF_NESTTYPE_ST = 0x1408, // type record for nested (scoped) type definition
163  LF_VFUNCTAB = 0x1409, // subfield record for virtual function table pointer
164  LF_FRIENDCLS = 0x140A, // subfield record for friend class
165  LF_ONEMETHOD_ST = 0x140B, // subfield record for nonoverloaded method
166  LF_VFUNCOFF = 0x140C, // subfield record for virtual function table pointer with offset
167  LF_NESTTYPEEX_ST = 0x140D, // type record for nested (scoped) type definition, with attributes
168  LF_MEMBERMODIFY_ST = 0x140E, // type record for modifications to members
169  LF_MANAGED_ST = 0x140F,
170  LF_ST_MAX = 0x1500,
171  LF_TYPESERVER = 0x1501, // type record describing using of a type server
172  LF_ENUMERATE = 0x1502, // subfield record for enumerate
173  LF_ARRAY = 0x1503, // type record for basic array
174  LF_CLASS = 0x1504,
175  LF_STRUCTURE = 0x1505,
176  LF_UNION = 0x1506,
177  LF_ENUM = 0x1507, // type record for LF_ENUM
178  LF_DIMARRAY = 0x1508, // type record for dimensioned arrays
179  LF_PRECOMP = 0x1509, // type record describing inclusion of precompiled types
180  LF_ALIAS = 0x150A,
181  LF_DEFARG = 0x150B,
182  LF_FRIENDFCN = 0x150C, // subfield record for friend function
183  LF_MEMBER = 0x150D, // subfield record for non-static data members
184  LF_STMEMBER = 0x150E,
185  LF_METHOD = 0x150F, // subfield record for overloaded method list
186  LF_NESTTYPE = 0x1510, // type record for nested (scoped) type definition
187  LF_ONEMETHOD = 0x1511, // subfield record for nonoverloaded method
188  LF_NESTTYPEEX = 0x1512, // type record for nested (scoped) type definition, with attributes
189  LF_MEMBERMODIFY = 0x1513, // type record for modifications to members
190  LF_MANAGED = 0x1514,
191  LF_TYPESERVER2 = 0x1515, // type record describing using of a type server with v7 (GUID) signatures
192  LF_FUNCTION_ID = 0x1601,
194  LF_BUILD_INFO = 0x1603,
196  LF_STRING_ID = 0x1605,
199  LF_CLASS_19 = 0x1608,
200  LF_STRUCTURE_19 = 0x1609,
201 
208  LF_CHAR = 0x8000, // signed character leaf
209  LF_SHORT = 0x8001, // signed short leaf
210  LF_USHORT = 0x8002, // unsigned short leaf
211  LF_LONG = 0x8003, // signed long leaf
212  LF_ULONG = 0x8004, // unsigned long leaf
213  LF_REAL32 = 0x8005, // real 32-bit leaf
214  LF_REAL64 = 0x8006, // real 64-bit leaf
215  LF_REAL80 = 0x8007, // real 80-bit leaf
216  LF_REAL128 = 0x8008, // real 128-bit leaf
217  LF_QUADWORD = 0x8009, // signed quad leaf
218  LF_UQUADWORD = 0x800A, // unsigned quad leaf
219  LF_REAL48 = 0x800B, // real 48-bit leaf
220  LF_COMPLEX32 = 0x800C, // complex 32-bit leaf
221  LF_COMPLEX64 = 0x800D, // complex 64-bit leaf
222  LF_COMPLEX80 = 0x800E, // complex 80-bit leaf
223  LF_COMPLEX128 = 0x800F, // complex 128-bit leaf
224  LF_VARSTRING = 0x8010, // variable length numeric field
225  LF_OCTWORD = 0x8017, // signed int128 leaf
226  LF_UOCTWORD = 0x8018, // unsigned int128 leaf
227  LF_DECIMAL = 0x8019,
228  LF_DATE = 0x801A,
229  LF_UTF8STRING = 0x801B,
230  LF_PAD0 = 0x00F0,
231  LF_PAD1 = 0x00F1,
232  LF_PAD2 = 0x00F2,
233  LF_PAD3 = 0x00F3,
234  LF_PAD4 = 0x00F4,
235  LF_PAD5 = 0x00F5,
236  LF_PAD6 = 0x00F6,
237  LF_PAD7 = 0x00F7,
238  LF_PAD8 = 0x00F8,
239  LF_PAD9 = 0x00F9,
240  LF_PAD10 = 0x00FA,
241  LF_PAD11 = 0x00FB,
242  LF_PAD12 = 0x00FC,
243  LF_PAD13 = 0x00FD,
244  LF_PAD14 = 0x00FE,
245  LF_PAD15 = 0x00FF,
246  LF_SIMPLE_TYPE = 0xEFFF, // Custom, hopefully it doesn't collide
247  LF_MAX = 0xFFFF
249 
250 typedef union {
251  struct {
252  ut16 packed : 1; // true if structure is packed
253  ut16 ctor : 1; // true if constructors or destructors present
254  ut16 ovlops : 1; // true if overloaded operators present
255  ut16 isnested : 1; // true if this is a nested class
256  ut16 cnested : 1; // true if this class contains nested types
257  ut16 opassign : 1; // true if overloaded assignment (=)
258  ut16 opcast : 1; // true if casting methods
259  ut16 fwdref : 1; // true if forward reference (incomplete defn)
260  ut16 scoped : 1; // scoped definition
261  ut16 hasuniquename : 1; // true if there is a decorated name following the regular name
262  ut16 sealed : 1; // true if class cannot be used as a base class
263  ut16 hfa : 2; // CV_HFA_e
264  ut16 intrinsic : 1; // true if class is an intrinsic type (e.g. __m128d)
265  ut16 mocom : 2; // CV_MOCOM_UDT_e
266  } bits;
267 } TpiCVProperty;
268 
269 typedef enum {
270  MTvanilla = 0x00,
271  MTvirtual = 0x01,
272  MTstatic = 0x02,
273  MTfriend = 0x03,
274  MTintro = 0x04,
275  MTpurevirt = 0x05,
276  MTpureintro = 0x06,
277  MT_MAX
279 
280 typedef enum {
281  Private = 1,
283  Public = 3,
284  AccessMax
286 
287 typedef union {
288  struct {
289  ut16 access : 2; // access protection CV_access_t
290  ut16 mprop : 3; // method properties CV_methodprop_t
291  ut16 pseudo : 1; // compiler generated fcn and does not exist
292  ut16 noinherit : 1; // true if class cannot be inherited
293  ut16 noconstruct : 1; // true if class cannot be constructed
294  ut16 compgenx : 1; // compiler generated fcn and does exist
295  ut16 sealed : 1; // true if method cannot be overridden
296  ut16 unused : 6; // unused
297  } bits;
298 } TpiCVFldattr;
299 
300 typedef union {
301  struct cv_funcattr {
302  unsigned char cxxreturnudt : 1; // true if C++ style ReturnUDT
303  unsigned char ctor : 1; // true if func is an instance constructor
304  unsigned char ctorvbase : 1; // true if func is an instance constructor of a class with virtual bases
305  unsigned char unused : 5; // unused
306  } bits;
307 } TpiCVFuncattr;
308 
309 typedef struct {
317 
318 typedef struct {
329 
330 typedef struct {
335 
336 typedef union {
337  struct {
341  ut16 unused : 13;
342  } bits;
343 } TpiCVModifier;
344 
345 typedef struct {
350 
351 typedef enum {
352  PTR_MODE_PTR = 0x00000000, // "normal" pointer
353  PTR_MODE_LVREF = 0x00000001, // l-value reference
354  PTR_MODE_PMEM = 0x00000002, // pointer to data member
355  PTR_MODE_PMFUNC = 0x00000003, // pointer to member function
356  PTR_MODE_RVREF = 0x00000004, // r-value reference
357  PTR_MODE_RESERVED = 0x00000005, // first unused pointer mode
358  ModeMax
360 
361 typedef enum {
362  PMTYPE_UNDEFINED = 0x00, // not specified (pre VC8)
363  PMTYPE_DATA_SINGLE = 0x01, // member data, single inheritance
364  PMTYPE_DATA_MULTIPLE = 0x02, // member data, multiple inheritance
365  PMTYPE_DATA_VIRTUAL = 0x03, // member data, virtual inheritance
366  PMTYPE_DATA_GENERAL = 0x04, // member data, most general
367  PMTYPE_FCN_SINGLE = 0x05, // member function, single inheritance
368  PMTYPE_FCN_MULTIPLE = 0x06, // member function, multiple inheritance
369  PMTYPE_FCN_VIRTUAL = 0x07, // member function, virtual inheritance
370  PMTYPE_FCN_GENERAL = 0x08, // member function, most general
371 } TpiCVPmType;
372 
373 typedef enum {
374  PTR_NEAR = 0x00000000,
375  PTR_FAR = 0x00000001,
376  PTR_HUGE = 0x00000002,
377  PTR_BASE_SEG = 0x00000003,
378  PTR_BASE_VAL = 0x00000004,
379  PTR_BASE_SEGVAL = 0x00000005,
380  PTR_BASE_ADDR = 0x00000006,
381  PTR_BASE_SEGADDR = 0x00000007,
382  PTR_BASE_TYPE = 0x00000008,
383  PTR_BASE_SELF = 0x00000009,
384  PTR_NEAR32 = 0x0000000A,
385  PTR_FAR32 = 0x0000000B,
386  PTR_64 = 0x0000000C,
387  PTR_UNUSEDPTR = 0x0000000D,
388  TypeMax
390 
391 typedef union {
392  struct {
393  ut32 ptrtype : 5; // ordinal specifying pointer type
394  ut32 ptrmode : 3; // ordinal specifying pointer mode
395  ut32 flat32 : 1; // true if 0:32 pointer
396  ut32 volatile_ : 1; // TRUE if volatile pointer
397  ut32 const_ : 1; // TRUE if const pointer
398  ut32 unaligned : 1; // TRUE if unaligned pointer
399  ut32 restrict_ : 1; // TRUE if restricted pointer (allow agressive opts)
400  ut32 size : 6; // size of pointer (in bytes)
401  ut32 mocom : 1; // TRUE if it is a MoCOM pointer (^ or %)
402  ut32 lref : 1; // TRUE if it is this pointer of member function with & ref-qualifier
403  ut32 rref : 1; // TRUE if it is this pointer of member function with && ref-qualifier
404  ut32 unused : 10; // pad out to 32-bits for following cv_typ_t's
405  } bits;
407 
408 typedef struct {
411  union {
412  struct {
413  ut32 pmclass; // index of containing class for pointer to member
414  ut16 pmtype; // TpiCVPmType
415  } pmember;
416  struct {
417  ut32 index; // type index if PTR_BASE_TYPE
418  } pbase;
419  };
422 
423 typedef struct {
424  char *name;
427 
428 typedef struct {
430  void *data;
433 
434 typedef struct {
440 } Tpi_LF_Array;
441 
442 typedef struct {
444  TpiCVProperty prop; // property attribute field
445  ut32 field_list; // type index of LF_FIELD descriptor list
446  ut32 derived; // type index of derived from list if not zero
447  ut32 vshape; // type index of vshape table for this class
453 
454 typedef struct {
455  TpiCVProperty prop; // property attribute field
457  ut32 field_list; // type index of LF_FIELD descriptor list
458  ut32 derived; // type index of derived from list if not zero
459  ut32 vshape; // type index of vshape table for this class
466 
467 typedef struct {
475 } Tpi_LF_Union;
476 
477 typedef struct {
483 
484 typedef struct {
489 
490 typedef struct {
498 } Tpi_LF_Enum;
499 
500 typedef struct {
506 
507 typedef struct {
512 
513 typedef struct {
517 
518 typedef struct {
523 } Tpi_LF_Method;
524 
525 typedef struct {
531 
532 typedef struct {
533  RzList /* Tpi_Type_MethodListMember */ *members;
535 
536 typedef struct {
542 } Tpi_LF_Member;
543 
544 typedef struct {
550 
551 typedef struct {
555 } Tpi_LF_Index;
556 
557 typedef struct {
564 
565 typedef struct {
570 } Tpi_LF_BClass;
571 
572 typedef struct {
579 
580 typedef struct {
581  RzList /* RzPdbTpiType */ *substructs;
583 
584 typedef struct {
586  char *type;
588 
589 #endif
int bits(struct state *s, int need)
Definition: blast.c:72
uint16_t ut16
uint32_t ut32
uint8_t ut8
Definition: lh5801.h:11
RzPdbTpiCallingConvention
Definition: rz_pdb.h:84
#define st32
Definition: rz_types_base.h:12
unsigned char unused
Definition: tpi.h:305
unsigned char ctor
Definition: tpi.h:303
unsigned char ctorvbase
Definition: tpi.h:304
unsigned char cxxreturnudt
Definition: tpi.h:302
ut32 * arg_type
Definition: tpi.h:332
ut32 count
Definition: tpi.h:331
ut8 pad
Definition: tpi.h:333
Tpi_Type_String name
Definition: tpi.h:438
ut32 index_type
Definition: tpi.h:436
Tpi_Type_Numeric size
Definition: tpi.h:437
ut8 pad
Definition: tpi.h:439
ut32 element_type
Definition: tpi.h:435
TpiCVFldattr fldattr
Definition: tpi.h:566
ut32 index
Definition: tpi.h:567
Tpi_Type_Numeric offset
Definition: tpi.h:568
ut8 pad
Definition: tpi.h:569
ut32 base_type
Definition: tpi.h:478
ut8 length
Definition: tpi.h:479
ut8 position
Definition: tpi.h:480
ut16 count
Definition: tpi.h:491
ut32 utype
Definition: tpi.h:493
ut32 field_list
Definition: tpi.h:494
ut8 pad
Definition: tpi.h:497
TpiCVProperty prop
Definition: tpi.h:492
Tpi_Type_String name
Definition: tpi.h:495
Tpi_Type_String mangled_name
Definition: tpi.h:496
Tpi_Type_String name
Definition: tpi.h:503
TpiCVFldattr fldattr
Definition: tpi.h:501
Tpi_Type_Numeric enum_value
Definition: tpi.h:502
RzList * substructs
Definition: tpi.h:581
ut8 pad
Definition: tpi.h:554
ut32 index
Definition: tpi.h:553
TpiCVFldattr fldattr
Definition: tpi.h:552
ut32 class_type
Definition: tpi.h:320
ut32 this_type
Definition: tpi.h:321
ut32 return_type
Definition: tpi.h:319
TpiCVFuncattr func_attr
Definition: tpi.h:323
ut16 parm_count
Definition: tpi.h:324
RzPdbTpiCallingConvention call_conv
Definition: tpi.h:322
ut32 arglist
Definition: tpi.h:325
st32 this_adjust
Definition: tpi.h:326
Tpi_Type_String name
Definition: tpi.h:540
TpiCVFldattr fldattr
Definition: tpi.h:537
ut8 pad
Definition: tpi.h:541
Tpi_Type_Numeric offset
Definition: tpi.h:539
ut32 index
Definition: tpi.h:538
RzList * members
Definition: tpi.h:533
ut8 pad
Definition: tpi.h:522
ut32 mlist
Definition: tpi.h:520
ut16 count
Definition: tpi.h:519
Tpi_Type_String name
Definition: tpi.h:521
ut32 modified_type
Definition: tpi.h:346
TpiCVModifier umodifier
Definition: tpi.h:347
ut32 index
Definition: tpi.h:509
ut16 pad
Definition: tpi.h:508
Tpi_Type_String name
Definition: tpi.h:510
ut32 index
Definition: tpi.h:559
Tpi_Type_String name
Definition: tpi.h:561
ut32 offset_in_vtable
Definition: tpi.h:560
TpiCVFldattr fldattr
Definition: tpi.h:558
TpiCVPointerAttr ptr_attr
Definition: tpi.h:410
ut32 index
Definition: tpi.h:417
ut16 pmtype
Definition: tpi.h:414
ut8 pad
Definition: tpi.h:420
ut32 utype
Definition: tpi.h:409
ut32 pmclass
Definition: tpi.h:413
TpiCVFuncattr func_attr
Definition: tpi.h:312
ut16 parm_count
Definition: tpi.h:313
ut32 arg_list
Definition: tpi.h:314
RzPdbTpiCallingConvention call_conv
Definition: tpi.h:311
ut32 return_type
Definition: tpi.h:310
char * type
Definition: tpi.h:586
Tpi_Type_String name
Definition: tpi.h:547
TpiCVFldattr fldattr
Definition: tpi.h:545
ut32 field_list
Definition: tpi.h:457
TpiCVProperty prop
Definition: tpi.h:455
Tpi_Type_String mangled_name
Definition: tpi.h:463
Tpi_Type_Numeric size
Definition: tpi.h:461
Tpi_Type_String name
Definition: tpi.h:462
Tpi_Type_Numeric unknown1
Definition: tpi.h:460
Tpi_Type_Numeric size
Definition: tpi.h:448
ut16 count
Definition: tpi.h:443
ut32 vshape
Definition: tpi.h:447
Tpi_Type_String name
Definition: tpi.h:449
ut32 field_list
Definition: tpi.h:445
Tpi_Type_String mangled_name
Definition: tpi.h:450
ut32 derived
Definition: tpi.h:446
TpiCVProperty prop
Definition: tpi.h:444
ut16 count
Definition: tpi.h:468
TpiCVProperty prop
Definition: tpi.h:469
ut32 field_list
Definition: tpi.h:470
Tpi_Type_String name
Definition: tpi.h:472
Tpi_Type_String mangled_name
Definition: tpi.h:473
Tpi_Type_Numeric size
Definition: tpi.h:471
ut32 pad
Definition: tpi.h:474
TpiCVFldattr fldattr
Definition: tpi.h:573
ut32 direct_vbclass_idx
Definition: tpi.h:574
Tpi_Type_Numeric vb_pointer_offset
Definition: tpi.h:576
Tpi_Type_Numeric vb_offset_from_vbtable
Definition: tpi.h:577
ut32 vb_pointer_idx
Definition: tpi.h:575
ut32 index
Definition: tpi.h:515
ut16 pad
Definition: tpi.h:514
char * vt_descriptors
Definition: tpi.h:486
ut8 pad
Definition: tpi.h:487
ut16 count
Definition: tpi.h:485
TpiCVFldattr fldattr
Definition: tpi.h:526
void * data
Definition: tpi.h:430
bool is_integer
Definition: tpi.h:431
ut16 type_index
Definition: tpi.h:429
ut32 size
Definition: tpi.h:425
char * name
Definition: tpi.h:424
struct Tpi_LF_Structure Tpi_LF_Class
struct Tpi_LF_Structure_19 Tpi_LF_Class_19
TpiCVPtrMode
Definition: tpi.h:351
@ PTR_MODE_LVREF
Definition: tpi.h:353
@ PTR_MODE_RESERVED
Definition: tpi.h:357
@ PTR_MODE_PMEM
Definition: tpi.h:354
@ ModeMax
Definition: tpi.h:358
@ PTR_MODE_PMFUNC
Definition: tpi.h:355
@ PTR_MODE_RVREF
Definition: tpi.h:356
@ PTR_MODE_PTR
Definition: tpi.h:352
TpiSimpleTypeKind
Definition: tpi.h:20
@ PDB_INT128_OCT
Definition: tpi.h:47
@ PDB_VOID
Definition: tpi.h:22
@ PDB_NOT_TRANSLATED
Definition: tpi.h:23
@ PDB_NONE
Definition: tpi.h:21
@ PDB_UINT16
Definition: tpi.h:38
@ PDB_INT128
Definition: tpi.h:49
@ PDB_BYTE
Definition: tpi.h:34
@ PDB_FLOAT64
Definition: tpi.h:56
@ PDB_COMPLEX16
Definition: tpi.h:60
@ PDB_BOOL128
Definition: tpi.h:72
@ PDB_BOOL32
Definition: tpi.h:70
@ PDB_COMPLEX80
Definition: tpi.h:65
@ PDB_UINT128
Definition: tpi.h:50
@ PDB_COMPLEX32
Definition: tpi.h:61
@ PDB_FLOAT48
Definition: tpi.h:55
@ PDB_UINT64_QUAD
Definition: tpi.h:44
@ PDB_INT16_SHORT
Definition: tpi.h:35
@ PDB_BOOL16
Definition: tpi.h:69
@ PDB_NARROW_CHAR
Definition: tpi.h:28
@ PDB_BOOL64
Definition: tpi.h:71
@ PDB_COMPLEX48
Definition: tpi.h:63
@ PDB_CHAR32
Definition: tpi.h:31
@ PDB_COMPLEX64
Definition: tpi.h:64
@ PDB_COMPLEX32_PP
Definition: tpi.h:62
@ PDB_CHAR16
Definition: tpi.h:30
@ PDB_BOOL8
Definition: tpi.h:68
@ PDB_UINT32_LONG
Definition: tpi.h:40
@ PDB_INT64
Definition: tpi.h:45
@ PDB_FLOAT32_PP
Definition: tpi.h:54
@ PDB_UINT64
Definition: tpi.h:46
@ PDB_UNSIGNED_CHAR
Definition: tpi.h:27
@ PDB_COMPLEX128
Definition: tpi.h:66
@ PDB_SIGNED_CHAR
Definition: tpi.h:26
@ PDB_FLOAT80
Definition: tpi.h:57
@ PDB_WIDE_CHAR
Definition: tpi.h:29
@ PDB_INT32_LONG
Definition: tpi.h:39
@ PDB_SBYTE
Definition: tpi.h:33
@ PDB_UINT16_SHORT
Definition: tpi.h:36
@ PDB_HRESULT
Definition: tpi.h:24
@ PDB_INT32
Definition: tpi.h:41
@ PDB_FLOAT32
Definition: tpi.h:53
@ PDB_FLOAT16
Definition: tpi.h:52
@ PDB_UINT32
Definition: tpi.h:42
@ PDB_UINT128_OCT
Definition: tpi.h:48
@ PDB_INT64_QUAD
Definition: tpi.h:43
@ PDB_FLOAT128
Definition: tpi.h:58
@ PDB_INT16
Definition: tpi.h:37
TpiSimpleTypeMode
Definition: tpi.h:9
@ DIRECT
Definition: tpi.h:10
@ NEAR_POINTER64
Definition: tpi.h:16
@ NEAR_POINTER
Definition: tpi.h:11
@ HUGE_POINTER
Definition: tpi.h:13
@ FAR_POINTER
Definition: tpi.h:12
@ FAR_POINTER32
Definition: tpi.h:15
@ NEAR_POINTER32
Definition: tpi.h:14
@ NEAR_POINTER128
Definition: tpi.h:17
TpiLeafType
Definition: tpi.h:75
@ LF_NESTTYPE
Definition: tpi.h:186
@ LF_FRIENDCLS_16t
Definition: tpi.h:122
@ LF_PAD1
Definition: tpi.h:231
@ LF_MEMBER
Definition: tpi.h:183
@ LF_SUBSTRING_LIST
Definition: tpi.h:195
@ LF_DIMVARU_16t
Definition: tpi.h:108
@ LF_COMPLEX128
Definition: tpi.h:223
@ LF_VFUNCOFF_16t
Definition: tpi.h:124
@ LF_ENUMERATE_ST
Definition: tpi.h:114
@ LF_PRECOMP_16t
Definition: tpi.h:94
@ LF_MODIFIER_16t
Definition: tpi.h:76
@ LF_COBOL0
Definition: tpi.h:135
@ LF_MANAGED
Definition: tpi.h:190
@ LF_REFSYM
Definition: tpi.h:110
@ LF_METHOD
Definition: tpi.h:185
@ LF_COBOL1
Definition: tpi.h:87
@ LF_DEFARG
Definition: tpi.h:181
@ LF_ENUM_ST
Definition: tpi.h:132
@ LF_DIMCONU_16t
Definition: tpi.h:106
@ LF_NESTTYPE_16t
Definition: tpi.h:120
@ LF_ALIAS_ST
Definition: tpi.h:141
@ LF_ULONG
Definition: tpi.h:212
@ LF_DIMVARLU_16t
Definition: tpi.h:109
@ LF_PAD11
Definition: tpi.h:241
@ LF_REAL32
Definition: tpi.h:213
@ LF_TI16_MAX
Definition: tpi.h:125
@ LF_STRUCTURE_19
Definition: tpi.h:200
@ LF_NOTTRAN
Definition: tpi.h:91
@ LF_STRUCTURE_ST
Definition: tpi.h:130
@ LF_MEMBER_16t
Definition: tpi.h:117
@ LF_ONEMETHOD
Definition: tpi.h:187
@ LF_USER_DEFINED_TYPE_MODULE_SOURCE_AND_LINE
Definition: tpi.h:198
@ LF_BCLASS
Definition: tpi.h:154
@ LF_METHODLIST
Definition: tpi.h:149
@ LF_STMEMBER_ST
Definition: tpi.h:160
@ LF_CLASS_16t
Definition: tpi.h:79
@ LF_SIMPLE_TYPE
Definition: tpi.h:246
@ LF_MANAGED_ST
Definition: tpi.h:169
@ LF_DIMARRAY_16t
Definition: tpi.h:92
@ LF_PAD13
Definition: tpi.h:243
@ LF_ENUM_16t
Definition: tpi.h:82
@ LF_PAD9
Definition: tpi.h:239
@ LF_DEFARG_16t
Definition: tpi.h:100
@ LF_BARRAY_16t
Definition: tpi.h:88
@ LF_STMEMBER_16t
Definition: tpi.h:118
@ LF_CHAR
Definition: tpi.h:208
@ LF_USHORT
Definition: tpi.h:210
@ LF_OEM
Definition: tpi.h:140
@ LF_ONEMETHOD_16t
Definition: tpi.h:123
@ LF_VFUNCOFF
Definition: tpi.h:166
@ LF_METHOD_ST
Definition: tpi.h:161
@ LF_PROCEDURE
Definition: tpi.h:133
@ LF_MEMBERMODIFY_ST
Definition: tpi.h:168
@ LF_DIMCONLU_16t
Definition: tpi.h:107
@ LF_MEMBER_FUNCTION_ID
Definition: tpi.h:193
@ LF_STRING_ID
Definition: tpi.h:196
@ LF_ST_MAX
Definition: tpi.h:170
@ LF_POINTER
Definition: tpi.h:127
@ LF_IVBCLASS
Definition: tpi.h:156
@ LF_PRECOMP
Definition: tpi.h:179
@ LF_PAD14
Definition: tpi.h:244
@ LF_BITFIELD_16t
Definition: tpi.h:104
@ LF_VBCLASS
Definition: tpi.h:155
@ LF_VFTPATH
Definition: tpi.h:138
@ LF_VFUNCTAB_16t
Definition: tpi.h:121
@ LF_IVBCLASS_16t
Definition: tpi.h:113
@ LF_OEM_16t
Definition: tpi.h:96
@ LF_LABEL
Definition: tpi.h:89
@ LF_REAL128
Definition: tpi.h:216
@ LF_COMPLEX32
Definition: tpi.h:220
@ LF_QUADWORD
Definition: tpi.h:217
@ LF_FRIENDFCN_ST
Definition: tpi.h:157
@ LF_CLASS
Definition: tpi.h:174
@ LF_UTF8STRING
Definition: tpi.h:229
@ LF_VFTPATH_16t
Definition: tpi.h:93
@ LF_VARSTRING
Definition: tpi.h:224
@ LF_ENDPRECOMP
Definition: tpi.h:95
@ LF_ONEMETHOD_ST
Definition: tpi.h:165
@ LF_LONG
Definition: tpi.h:211
@ LF_DIMVARU
Definition: tpi.h:152
@ LF_ARGLIST_16t
Definition: tpi.h:99
@ LF_FRIENDFCN_16t
Definition: tpi.h:115
@ LF_DERIVED
Definition: tpi.h:147
@ LF_OEM2
Definition: tpi.h:142
@ LF_NULL
Definition: tpi.h:90
@ LF_INDEX_16t
Definition: tpi.h:116
@ LF_DATE
Definition: tpi.h:228
@ LF_PAD7
Definition: tpi.h:237
@ LF_PAD10
Definition: tpi.h:240
@ LF_NESTTYPEEX
Definition: tpi.h:188
@ LF_REAL64
Definition: tpi.h:214
@ LF_PAD4
Definition: tpi.h:234
@ LF_PAD15
Definition: tpi.h:245
@ LF_MODIFIER
Definition: tpi.h:126
@ LF_MEMBER_ST
Definition: tpi.h:159
@ LF_FRIENDCLS
Definition: tpi.h:164
@ LF_DEFARG_ST
Definition: tpi.h:145
@ LF_REAL48
Definition: tpi.h:219
@ LF_ARRAY_ST
Definition: tpi.h:128
@ LF_UOCTWORD
Definition: tpi.h:226
@ LF_TYPESERVER
Definition: tpi.h:171
@ LF_OCTWORD
Definition: tpi.h:225
@ LF_ENUMERATE
Definition: tpi.h:172
@ LF_VBCLASS_16t
Definition: tpi.h:112
@ LF_LIST
Definition: tpi.h:101
@ LF_STMEMBER
Definition: tpi.h:184
@ LF_USER_DEFINED_TYPE_SOURCE_AND_LINE
Definition: tpi.h:197
@ LF_MAX
Definition: tpi.h:247
@ LF_MFUNCTION
Definition: tpi.h:134
@ LF_ARRAY_16t
Definition: tpi.h:78
@ LF_BARRAY
Definition: tpi.h:136
@ LF_DIMARRAY_ST
Definition: tpi.h:137
@ LF_PAD2
Definition: tpi.h:232
@ LF_UNION_ST
Definition: tpi.h:131
@ LF_FRIENDFCN
Definition: tpi.h:182
@ LF_MFUNCTION_16t
Definition: tpi.h:84
@ LF_UNION
Definition: tpi.h:176
@ LF_TYPESERVER_ST
Definition: tpi.h:97
@ LF_PAD0
Definition: tpi.h:230
@ LF_STRUCTURE
Definition: tpi.h:175
@ LF_REAL80
Definition: tpi.h:215
@ LF_DIMVARLU
Definition: tpi.h:153
@ LF_UNION_16t
Definition: tpi.h:81
@ LF_POINTER_16t
Definition: tpi.h:77
@ LF_DERIVED_16t
Definition: tpi.h:103
@ LF_ARGLIST
Definition: tpi.h:144
@ LF_CLASS_ST
Definition: tpi.h:129
@ LF_SKIP
Definition: tpi.h:143
@ LF_COMPLEX80
Definition: tpi.h:222
@ LF_DIMCONLU
Definition: tpi.h:151
@ LF_ALIAS
Definition: tpi.h:180
@ LF_COBOL0_16t
Definition: tpi.h:86
@ LF_VTSHAPE
Definition: tpi.h:85
@ LF_INDEX
Definition: tpi.h:158
@ LF_PAD3
Definition: tpi.h:233
@ LF_PAD12
Definition: tpi.h:242
@ LF_FIELDLIST_16t
Definition: tpi.h:102
@ LF_FUNCTION_ID
Definition: tpi.h:192
@ LF_NESTTYPE_ST
Definition: tpi.h:162
@ LF_ARRAY
Definition: tpi.h:173
@ LF_CLASS_19
Definition: tpi.h:199
@ LF_BITFIELD
Definition: tpi.h:148
@ LF_PRECOMP_ST
Definition: tpi.h:139
@ LF_METHOD_16t
Definition: tpi.h:119
@ LF_SHORT
Definition: tpi.h:209
@ LF_UQUADWORD
Definition: tpi.h:218
@ LF_BCLASS_16t
Definition: tpi.h:111
@ LF_DIMARRAY
Definition: tpi.h:178
@ LF_SKIP_16t
Definition: tpi.h:98
@ LF_BUILD_INFO
Definition: tpi.h:194
@ LF_TYPESERVER2
Definition: tpi.h:191
@ LF_DECIMAL
Definition: tpi.h:227
@ LF_FIELDLIST
Definition: tpi.h:146
@ LF_PAD5
Definition: tpi.h:235
@ LF_PAD6
Definition: tpi.h:236
@ LF_COMPLEX64
Definition: tpi.h:221
@ LF_METHODLIST_16t
Definition: tpi.h:105
@ LF_PROCEDURE_16t
Definition: tpi.h:83
@ LF_NESTTYPEEX_ST
Definition: tpi.h:167
@ LF_MEMBERMODIFY
Definition: tpi.h:189
@ LF_DIMCONU
Definition: tpi.h:150
@ LF_STRUCTURE_16t
Definition: tpi.h:80
@ LF_PAD8
Definition: tpi.h:238
@ LF_ENUM
Definition: tpi.h:177
@ LF_VFUNCTAB
Definition: tpi.h:163
TpiCVAccess
Definition: tpi.h:280
@ Public
Definition: tpi.h:283
@ Protected
Definition: tpi.h:282
@ AccessMax
Definition: tpi.h:284
@ Private
Definition: tpi.h:281
TpiCVMProp
Definition: tpi.h:269
@ MTfriend
Definition: tpi.h:273
@ MTstatic
Definition: tpi.h:272
@ MTvanilla
Definition: tpi.h:270
@ MTvirtual
Definition: tpi.h:271
@ MTpurevirt
Definition: tpi.h:275
@ MTpureintro
Definition: tpi.h:276
@ MTintro
Definition: tpi.h:274
@ MT_MAX
Definition: tpi.h:277
TpiCVType
Definition: tpi.h:373
@ PTR_NEAR
Definition: tpi.h:374
@ PTR_BASE_TYPE
Definition: tpi.h:382
@ TypeMax
Definition: tpi.h:388
@ PTR_BASE_SEGVAL
Definition: tpi.h:379
@ PTR_BASE_SEG
Definition: tpi.h:377
@ PTR_NEAR32
Definition: tpi.h:384
@ PTR_64
Definition: tpi.h:386
@ PTR_HUGE
Definition: tpi.h:376
@ PTR_UNUSEDPTR
Definition: tpi.h:387
@ PTR_BASE_SEGADDR
Definition: tpi.h:381
@ PTR_BASE_ADDR
Definition: tpi.h:380
@ PTR_BASE_VAL
Definition: tpi.h:378
@ PTR_BASE_SELF
Definition: tpi.h:383
@ PTR_FAR32
Definition: tpi.h:385
@ PTR_FAR
Definition: tpi.h:375
TpiCVPmType
Definition: tpi.h:361
@ PMTYPE_DATA_GENERAL
Definition: tpi.h:366
@ PMTYPE_FCN_VIRTUAL
Definition: tpi.h:369
@ PMTYPE_DATA_VIRTUAL
Definition: tpi.h:365
@ PMTYPE_FCN_SINGLE
Definition: tpi.h:367
@ PMTYPE_DATA_MULTIPLE
Definition: tpi.h:364
@ PMTYPE_FCN_GENERAL
Definition: tpi.h:370
@ PMTYPE_UNDEFINED
Definition: tpi.h:362
@ PMTYPE_DATA_SINGLE
Definition: tpi.h:363
@ PMTYPE_FCN_MULTIPLE
Definition: tpi.h:368
struct Tpi_LF_VBClass Tpi_LF_IVBClass
ut16 access
Definition: tpi.h:289
ut16 unused
Definition: tpi.h:296
ut16 noinherit
Definition: tpi.h:292
ut16 pseudo
Definition: tpi.h:291
ut16 mprop
Definition: tpi.h:290
ut16 sealed
Definition: tpi.h:295
ut16 noconstruct
Definition: tpi.h:293
ut16 compgenx
Definition: tpi.h:294
ut16 const_
Definition: tpi.h:338
ut16 unaligned
Definition: tpi.h:340
ut16 volatile_
Definition: tpi.h:339
ut16 unused
Definition: tpi.h:341
ut32 volatile_
Definition: tpi.h:396
ut32 lref
Definition: tpi.h:402
ut32 unaligned
Definition: tpi.h:398
ut32 flat32
Definition: tpi.h:395
ut32 size
Definition: tpi.h:400
ut32 restrict_
Definition: tpi.h:399
ut32 ptrtype
Definition: tpi.h:393
ut32 ptrmode
Definition: tpi.h:394
ut32 rref
Definition: tpi.h:403
ut32 unused
Definition: tpi.h:404
ut32 const_
Definition: tpi.h:397
ut32 mocom
Definition: tpi.h:401
ut16 scoped
Definition: tpi.h:260
ut16 ctor
Definition: tpi.h:253
ut16 hfa
Definition: tpi.h:263
ut16 packed
Definition: tpi.h:252
ut16 ovlops
Definition: tpi.h:254
ut16 mocom
Definition: tpi.h:265
ut16 fwdref
Definition: tpi.h:259
ut16 opassign
Definition: tpi.h:257
ut16 cnested
Definition: tpi.h:256
ut16 hasuniquename
Definition: tpi.h:261
ut16 intrinsic
Definition: tpi.h:264
ut16 opcast
Definition: tpi.h:258
ut16 sealed
Definition: tpi.h:262
ut16 isnested
Definition: tpi.h:255