-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathDef_info.pas
66 lines (55 loc) · 1.85 KB
/
Def_info.pas
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
unit Def_info;
interface
type
//procflags
TProcFlag = (
pf_1,pf_2,pf_3,pf_4,pf_5,pf_6,pf_7,pf_8,
pf_9,pf_10,pf_11,pf_12,pf_13,pf_14,pf_15,pf_16,
pf_17,pf_18,pf_19,pf_20,
PF_PUBLISHED, // $00100000; //published
PF_METHOD, // $00200000; //is method of class (other than virtual, dynamic or event)
PF_ARGSIZEL, // $00400000; //If delta between retN and total arguments size < 0
PF_ARGSIZEG, // $00800000; //If delta between retN and total arguments size > 0
PF_BPBASED, // $01000000;
PF_KBPROTO, // $02000000; //if prototype for kb was got
PF_OUTEAX, // $04000000;
PF_EVENT, // $08000000;
PF_DYNAMIC, // $10000000;
PF_VIRTUAL, // $20000000;
PF_EMBED, // $40000000;
PF_MAYBEEMBED // $80000000;
);
TProcFlagSet = Set of TProcFlag;
Const
PF_ALLMETHODS = [PF_METHOD, PF_VIRTUAL, PF_DYNAMIC, PF_EVENT];
//Information about class fields (look VmtSelfPtr)
FIELD_PRIVATE = 9;
FIELD_PROTECTED = 10;
FIELD_PUBLIC = 11;
FIELD_PUBLISHED = 12;
OP_COMMENT = $10;
OP_CALL = $11;
//---------------------------------------------------------------------------
//lastVar
//vmtAdr
//typeIdx??? - for Type search
//---------------------------------------------------------------------------
Type
//Class Methods Information
MethodRec = record
_abstract:Boolean;//call @AbstractError
kind:Char; //'M' - method; 'V' - virtual; 'D' - dynamic
id:Integer; //ID (for virtual methods - offset, for dynamics - MsgId)
address:Integer; //Call Address
name:AnsiString; //Method Name
End;
PMethodRec = ^MethodRec;
//InfoResStringInfo = Array of AnsiString;
PICODE = record
Op:BYTE; //Operation
Offset:Integer; //Field offset or Proc address for OP_CALL
Name:AnsiString; //Type name
End;
PPICODE = ^PICODE;
implementation
end.