aboutsummaryrefslogtreecommitdiffstats
path: root/src/files_map.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/files_map.adb')
-rw-r--r--src/files_map.adb20
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