353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
|
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
|
-
+
-
-
-
-
-
-
-
-
+
-
+
-
-
|
return Greater;
end if;
L_Pos := L_Pos + Step;
R_Pos := R_Pos + Step;
if L_Pos > Left (L_Chunk).all'Last then
if L_Chunk = Left'Last then
-- L_Chunk cannot be Left'Last because L_Remain > 0
if R_Pos <= Right (R_Chunk).all'Last
or R_Chunk < Right'Last
then
return Lesser;
else
return Equal;
end if;
end if;
L_Chunk := L_Chunk + 1;
L_Pos := Left (L_Chunk).all'First;
end if;
if R_Pos > Right (R_Chunk).all'Last then
if R_Chunk = Right'Last then
-- R_Chunk cannot be Right'Last because R_Remain > 0
return Greater;
end if;
R_Chunk := R_Chunk + 1;
R_Pos := Right (R_Chunk).all'First;
end if;
end loop;
end Compare;
|