diff options
Diffstat (limited to 'src/files_map.adb')
-rw-r--r-- | src/files_map.adb | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/files_map.adb b/src/files_map.adb index b8e9311ff..5f16983ed 100644 --- a/src/files_map.adb +++ b/src/files_map.adb @@ -555,7 +555,9 @@ package body Files_Map is File_Length => 0, Lines => <>, Cache_Pos => Source_Ptr_Org, - Cache_Line => 1); + Cache_Line => 1, + Gap_Start => Source_Ptr_Last, + Gap_Last => Source_Ptr_Last); Lines_Tables.Init (Source_Files.Table (Res).Lines); File_Add_Line_Number (Res, 1, Source_Ptr_Org); return Res; @@ -766,6 +768,12 @@ package body Files_Map is Set_File_Length (Res, Length); + -- Set the gap. + Source_Files.Table (Res).Gap_Start := + Source_Ptr_Org + Length + 2; + Source_Files.Table (Res).Gap_Last := + Source_Files.Table (Res).Source'Last; + -- Compute the SHA1. declare use GNAT.SHA1; @@ -818,6 +826,16 @@ package body Files_Map is Source_Files.Table (Source_Files.Last).Last_Location + 1; end Unload_Last_Source_File; + procedure Skip_Gap (File : Source_File_Entry; Pos : in out Source_Ptr) + is + pragma Assert (File <= Source_Files.Last); + F : Source_File_Record renames Source_Files.Table (File); + begin + if Pos = F.Gap_Start then + Pos := F.Gap_Last + 1; + end if; + end Skip_Gap; + -- Check validity of FILE. -- Raise an exception in case of error. procedure Check_File (File : Source_File_Entry) is |