mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 07:19:27 +02:00
* extracted the parts of the TOmfRecord_LINNUM_MsLink class, which implement a
container of TOmfSubRecord_LINNUM_MsLink_Entry objects to a separate class TOmfSubRecord_LINNUM_MsLink_LineNumberList git-svn-id: trunk@38968 -
This commit is contained in:
parent
718e83954f
commit
0b296ac828
@ -517,27 +517,36 @@ interface
|
||||
property Offset: DWord read FOffset write FOffset;
|
||||
end;
|
||||
|
||||
{ TOmfRecord_LINNUM_MsLink }
|
||||
{ TOmfSubRecord_LINNUM_MsLink_LineNumberList }
|
||||
|
||||
TOmfRecord_LINNUM_MsLink = class(TOmfRecord_LINNUM)
|
||||
TOmfSubRecord_LINNUM_MsLink_LineNumberList = class
|
||||
private
|
||||
FLineNumbers: TFPObjectList;
|
||||
function GetCount: Integer;
|
||||
function GetItem(Index: Integer): TOmfSubRecord_LINNUM_MsLink_Entry;
|
||||
procedure SetCount(AValue: Integer);
|
||||
procedure SetItem(Index: Integer; AValue: TOmfSubRecord_LINNUM_MsLink_Entry);
|
||||
protected
|
||||
procedure DebugFormatSpecific_DecodeFrom(RawRecord:TOmfRawRecord;NextOfs:Integer);override;
|
||||
procedure DebugFormatSpecific_EncodeTo(RawRecord:TOmfRawRecord;var NextOfs:Integer);override;
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy;override;
|
||||
|
||||
property Count: Integer read GetCount write SetCount;
|
||||
function Add(AObject: TOmfSubRecord_LINNUM_MsLink_Entry): Integer;
|
||||
property Count: Integer read GetCount write SetCount;
|
||||
property Items[Index: Integer]: TOmfSubRecord_LINNUM_MsLink_Entry read GetItem write SetItem; default;
|
||||
end;
|
||||
|
||||
{ TOmfRecord_LINNUM_MsLink }
|
||||
|
||||
TOmfRecord_LINNUM_MsLink = class(TOmfRecord_LINNUM)
|
||||
private
|
||||
FLineNumberList: TOmfSubRecord_LINNUM_MsLink_LineNumberList;
|
||||
protected
|
||||
procedure DebugFormatSpecific_DecodeFrom(RawRecord:TOmfRawRecord;NextOfs:Integer);override;
|
||||
procedure DebugFormatSpecific_EncodeTo(RawRecord:TOmfRawRecord;var NextOfs:Integer);override;
|
||||
|
||||
property LineNumberList: TOmfSubRecord_LINNUM_MsLink_LineNumberList read FLineNumberList write FLineNumberList;
|
||||
end;
|
||||
|
||||
{ TOmfSubRecord_FIXUP }
|
||||
|
||||
TOmfSubRecord_FIXUP = class
|
||||
@ -2041,28 +2050,50 @@ implementation
|
||||
Offset:=AOffset;
|
||||
end;
|
||||
|
||||
{ TOmfRecord_LINNUM_MsLink }
|
||||
{ TOmfSubRecord_LINNUM_MsLink_LineNumberList }
|
||||
|
||||
function TOmfRecord_LINNUM_MsLink.GetItem(Index: Integer): TOmfSubRecord_LINNUM_MsLink_Entry;
|
||||
begin
|
||||
result:=TOmfSubRecord_LINNUM_MsLink_Entry(FLineNumbers[Index]);
|
||||
end;
|
||||
|
||||
function TOmfRecord_LINNUM_MsLink.GetCount: Integer;
|
||||
function TOmfSubRecord_LINNUM_MsLink_LineNumberList.GetCount: Integer;
|
||||
begin
|
||||
result:=FLineNumbers.Count;
|
||||
end;
|
||||
|
||||
procedure TOmfRecord_LINNUM_MsLink.SetCount(AValue: Integer);
|
||||
function TOmfSubRecord_LINNUM_MsLink_LineNumberList.GetItem(Index: Integer
|
||||
): TOmfSubRecord_LINNUM_MsLink_Entry;
|
||||
begin
|
||||
result:=TOmfSubRecord_LINNUM_MsLink_Entry(FLineNumbers[Index]);
|
||||
end;
|
||||
|
||||
procedure TOmfSubRecord_LINNUM_MsLink_LineNumberList.SetCount(AValue: Integer
|
||||
);
|
||||
begin
|
||||
FLineNumbers.Count:=AValue;
|
||||
end;
|
||||
|
||||
procedure TOmfRecord_LINNUM_MsLink.SetItem(Index: Integer; AValue: TOmfSubRecord_LINNUM_MsLink_Entry);
|
||||
procedure TOmfSubRecord_LINNUM_MsLink_LineNumberList.SetItem(Index: Integer;
|
||||
AValue: TOmfSubRecord_LINNUM_MsLink_Entry);
|
||||
begin
|
||||
FLineNumbers[Index]:=AValue;
|
||||
end;
|
||||
|
||||
constructor TOmfSubRecord_LINNUM_MsLink_LineNumberList.Create;
|
||||
begin
|
||||
FLineNumbers:=TFPObjectList.Create(true);
|
||||
end;
|
||||
|
||||
destructor TOmfSubRecord_LINNUM_MsLink_LineNumberList.Destroy;
|
||||
begin
|
||||
FLineNumbers.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TOmfSubRecord_LINNUM_MsLink_LineNumberList.Add(
|
||||
AObject: TOmfSubRecord_LINNUM_MsLink_Entry): Integer;
|
||||
begin
|
||||
Result:=FLineNumbers.Add(AObject);
|
||||
end;
|
||||
|
||||
{ TOmfRecord_LINNUM_MsLink }
|
||||
|
||||
procedure TOmfRecord_LINNUM_MsLink.DebugFormatSpecific_DecodeFrom(
|
||||
RawRecord: TOmfRawRecord; NextOfs: Integer);
|
||||
var
|
||||
@ -2070,7 +2101,6 @@ implementation
|
||||
LineNumber: Word;
|
||||
Offset: DWord;
|
||||
begin
|
||||
FLineNumbers.Clear;
|
||||
if Is32Bit then
|
||||
RecordSize:=6
|
||||
else
|
||||
@ -2087,7 +2117,7 @@ implementation
|
||||
else
|
||||
Offset:=RawRecord.RawData[NextOfs+2]+
|
||||
(RawRecord.RawData[NextOfs+3] shl 8);
|
||||
Add(TOmfSubRecord_LINNUM_MsLink_Entry.Create(LineNumber,Offset));
|
||||
LineNumberList.Add(TOmfSubRecord_LINNUM_MsLink_Entry.Create(LineNumber,Offset));
|
||||
Inc(NextOfs,RecordSize);
|
||||
end;
|
||||
end;
|
||||
@ -2097,8 +2127,8 @@ implementation
|
||||
var
|
||||
I: Integer;
|
||||
begin
|
||||
for I:=0 to Count-1 do
|
||||
with Items[I] do
|
||||
for I:=0 to LineNumberList.Count-1 do
|
||||
with LineNumberList.Items[I] do
|
||||
begin
|
||||
RawRecord.RawData[NextOfs]:=byte(LineNumber);
|
||||
RawRecord.RawData[NextOfs+1]:=byte(LineNumber shr 8);
|
||||
@ -2122,24 +2152,6 @@ implementation
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TOmfRecord_LINNUM_MsLink.Create;
|
||||
begin
|
||||
inherited;
|
||||
FLineNumbers:=TFPObjectList.Create(true);
|
||||
end;
|
||||
|
||||
destructor TOmfRecord_LINNUM_MsLink.Destroy;
|
||||
begin
|
||||
FLineNumbers.Free;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TOmfRecord_LINNUM_MsLink.Add(
|
||||
AObject: TOmfSubRecord_LINNUM_MsLink_Entry): Integer;
|
||||
begin
|
||||
Result:=FLineNumbers.Add(AObject);
|
||||
end;
|
||||
|
||||
{ TOmfSubRecord_FIXUP }
|
||||
|
||||
function TOmfSubRecord_FIXUP.GetDataRecordOffset: Integer;
|
||||
|
Loading…
Reference in New Issue
Block a user