1 package body Simulator
.Statistics
is
3 protected body Ranking
is
5 procedure Insert
(item
: RankingLine_T
; pos
:out Natural) is
9 for Index
in 1 .. N
loop
10 if ((R
(i
).Lap
> item
.Lap
) or else
11 (R
(i
).Lap
= item
.Lap
and R
(i
).Sector
> item
.Sector
) or else
12 (R
(i
).Lap
= item
.Lap
and R
(i
).Sector
= item
.Sector
and R
(i
).WakeupTime
< item
.WakeupTime
) ) then
17 -- i indica la posizione nell'array in cui deve essere inserito Item
18 -- sposto tutti gli oggetti dalla posizione Index alla posizione N indietro di 1 posizione
19 for S
in reverse i
.. N
loop
22 -- aggiorno la dimensione dell'array e inserisco il record in posizione Index
28 procedure Search
(id
: in CarId_T
; i
: out Natural) is
31 for Index
in 1 .. N
loop
32 if (R
(Index
).Id
= id
) then
39 procedure Delete
(item
: RankingLine_T
) is
42 Ranking
.Search
(item
.Id
,i
);
43 -- se l'elemento รจ presente sposto indietro di 1 tutti gli elementi dell'array da i+1 a N e decremento N
45 for Index
in i
.. N
-1 loop
46 R
(Index
) := R
(Index
+1);
57 procedure GetWakeUpTime
(id
: in CarId_T
; wakeUp
:out Duration) is
61 wakeUp
:= R
(i
).WakeupTime
;
64 procedure GetElapsedTime
(id
: in CarId_T
; elapsed
:out Duration) is
68 elapsed
:= R
(i
).ElapsedTime
;
71 procedure GetLap
(id
: in CarId_T
; lap
:out Natural) is
80 end Simulator
.Statistics
;