Selaa lähdekoodia

* changed the type of TOmfObjSection.PrimaryGroup from string to
TObjSectionGroup, so instead of holding the group's name, it now points to the
TObjSectionGroup object, from which you can retrieve its name or any of the
other fields and properties it contains

git-svn-id: trunk@39271 -

nickysn 7 vuotta sitten
vanhempi
commit
9a0eca52cb
1 muutettua tiedostoa jossa 11 lisäystä ja 13 poistoa
  1. 11 13
      compiler/ogomf.pas

+ 11 - 13
compiler/ogomf.pas

@@ -75,7 +75,7 @@ interface
         FOverlayName: string;
         FCombination: TOmfSegmentCombination;
         FUse: TOmfSegmentUse;
-        FPrimaryGroup: string;
+        FPrimaryGroup: TObjSectionGroup;
         FSortOrder: Integer;
         FMZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment;
         FLinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList;
@@ -89,7 +89,7 @@ interface
         property OmfAlignment: TOmfSegmentAlignment read GetOmfAlignment;
         property Combination: TOmfSegmentCombination read FCombination;
         property Use: TOmfSegmentUse read FUse;
-        property PrimaryGroup: string read FPrimaryGroup;
+        property PrimaryGroup: TObjSectionGroup read FPrimaryGroup;
         property SortOrder: Integer read FSortOrder write FSortOrder;
         property MZExeUnifiedLogicalSegment: TMZExeUnifiedLogicalSegment read FMZExeUnifiedLogicalSegment write FMZExeUnifiedLogicalSegment;
         property LinNumEntries: TOmfSubRecord_LINNUM_MsLink_LineNumberList read FLinNumEntries;
@@ -438,10 +438,10 @@ implementation
               begin
                 FOmfFixup.TargetMethod:=ftmSegmentIndexNoDisp;
                 FOmfFixup.TargetDatum:=ObjSection.Index;
-                if TOmfObjSection(ObjSection).PrimaryGroup<>'' then
+                if TOmfObjSection(ObjSection).PrimaryGroup<>nil then
                   begin
                     FOmfFixup.FrameMethod:=ffmGroupIndex;
-                    FOmfFixup.FrameDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup);
+                    FOmfFixup.FrameDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup.Name);
                   end
                 else
                   FOmfFixup.FrameMethod:=ffmTarget;
@@ -449,10 +449,10 @@ implementation
             else
               begin
                 FOmfFixup.FrameMethod:=ffmTarget;
-                if TOmfObjSection(ObjSection).PrimaryGroup<>'' then
+                if TOmfObjSection(ObjSection).PrimaryGroup<>nil then
                   begin
                     FOmfFixup.TargetMethod:=ftmGroupIndexNoDisp;
-                    FOmfFixup.TargetDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup);
+                    FOmfFixup.TargetDatum:=GetGroupIndex(TOmfObjSection(ObjSection).PrimaryGroup.Name);
                   end
                 else
                   begin
@@ -661,7 +661,7 @@ implementation
             { add the current section to the group }
             SetLength(grp.members,Length(grp.members)+1);
             grp.members[High(grp.members)]:=Result;
-            TOmfObjSection(Result).FPrimaryGroup:=primary_group;
+            TOmfObjSection(Result).FPrimaryGroup:=grp;
           end;
       end;
 
@@ -949,7 +949,6 @@ implementation
         PublicNameElem: TOmfPublicNameElement;
         RawRecord: TOmfRawRecord;
         PubDefRec: TOmfRecord_PUBDEF;
-        PrimaryGroupName: string;
       begin
         RawRecord:=TOmfRawRecord.Create;
         SetLength(PubNamesForSection,Data.ObjSectionList.Count);
@@ -978,9 +977,8 @@ implementation
             begin
               PubDefRec:=TOmfRecord_PUBDEF.Create;
               PubDefRec.BaseSegmentIndex:=i+1;
-              PrimaryGroupName:=TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup;
-              if PrimaryGroupName<>'' then
-                PubDefRec.BaseGroupIndex:=Groups.FindIndexOf(PrimaryGroupName)
+              if TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup<>nil then
+                PubDefRec.BaseGroupIndex:=Groups.FindIndexOf(TOmfObjSection(Data.ObjSectionList[i]).PrimaryGroup.Name)
               else
                 PubDefRec.BaseGroupIndex:=0;
               PubDefRec.PublicNames:=PubNamesForSection[i];
@@ -1111,8 +1109,8 @@ implementation
           with TOmfObjSection(Data.ObjSectionList[I]) do
             begin
               AddSegment(Name,ClassName,OverlayName,OmfAlignment,Combination,Use,Size);
-              if PrimaryGroup<>'' then
-                AddSegmentToGroup(PrimaryGroup,index);
+              if PrimaryGroup<>nil then
+                AddSegmentToGroup(PrimaryGroup.Name,index);
             end;
 
         { write LNAMES record(s) }