731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
|
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
|
-
-
-
-
-
-
+
+
+
+
+
+
+
+
|
if Bounds.Length = 0 or else Set.Bounds.Is_Empty then
return Result;
end if;
Cursor := Set.Bounds.Floor (Bounds);
if Range_Sets.Has_Element (Cursor) then
R := Range_Sets.Element (Cursor);
if R.First < Bounds.First and then Is_In (Bounds.First, R) then
Set_First (R, Bounds.First);
if Is_In (Last (Bounds), R) then
Set_Last (R, Last (Bounds));
end if;
Result.Bounds.Insert (R);
if R.First < Bounds.First then
if Is_In (Bounds.First, R) then
Set_First (R, Bounds.First);
if Is_In (Last (Bounds), R) then
Set_Last (R, Last (Bounds));
end if;
Result.Bounds.Insert (R);
end if;
Range_Sets.Next (Cursor);
end if;
else
Cursor := Set.Bounds.First;
end if;
while Range_Sets.Has_Element (Cursor) loop
|