|
@@ -102,6 +102,7 @@ interface
|
|
|
procedure alignrecord(fieldoffset:asizeint;varalign:shortint);
|
|
|
procedure addfield(sym:tfieldvarsym;vis:tvisibility);
|
|
|
procedure addfieldlist(list: tfpobjectlist; maybereorder: boolean);
|
|
|
+ function findfieldbyoffset(offset:asizeint): tfieldvarsym;
|
|
|
procedure addalignmentpadding;
|
|
|
procedure insertdef(def:TDefEntry);override;
|
|
|
function is_packed: boolean;
|
|
@@ -1239,6 +1240,25 @@ implementation
|
|
|
end;
|
|
|
|
|
|
|
|
|
+ function tabstractrecordsymtable.findfieldbyoffset(offset: asizeint): tfieldvarsym;
|
|
|
+ var
|
|
|
+ i: longint;
|
|
|
+ sym: tsym;
|
|
|
+ begin
|
|
|
+ for i:=0 to SymList.count-1 do
|
|
|
+ begin
|
|
|
+ sym:=tsym(symlist[i]);
|
|
|
+ if (sym.typ=fieldvarsym) and
|
|
|
+ (tfieldvarsym(sym).fieldoffset=offset) then
|
|
|
+ begin
|
|
|
+ result:=tfieldvarsym(sym);
|
|
|
+ exit;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ result:=nil;
|
|
|
+ end;
|
|
|
+
|
|
|
+
|
|
|
procedure tabstractrecordsymtable.addalignmentpadding;
|
|
|
var
|
|
|
padded_datasize: asizeint;
|