Versione finale relazione
[toni-reis.git] / src / simulator-statistics.adb
blob30c12b6f1210b858203f5e6d0e82332e2c3253fb
1 package body Simulator.Statistics is
3 protected body Ranking is
5 procedure Insert(item : RankingLine_T; pos:out Natural) is
6 i : Integer := 1;
7 begin
8 Delete(item);
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
13 i := i + 1;
14 else exit;
15 end if;
16 end loop;
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
20 R(S+1) := R(S);
21 end loop;
22 -- aggiorno la dimensione dell'array e inserisco il record in posizione Index
23 R(i) := item;
24 N := N+1;
25 pos := i;
26 end Insert;
28 procedure Search(id : in CarId_T; i : out Natural) is
29 begin
30 i := 0;
31 for Index in 1 .. N loop
32 if (R(Index).Id = id) then
33 i := Index;
34 end if;
35 end loop;
36 end Search;
39 procedure Delete(item : RankingLine_T) is
40 i: Natural := 0;
41 begin
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
44 if( i /= 0) then
45 for Index in i .. N-1 loop
46 R(Index) := R(Index+1);
47 end loop;
48 N := N-1;
49 end if;
50 end Delete;
52 procedure Clear is
53 begin
54 N := 0;
55 end Clear;
57 procedure GetWakeUpTime(id : in CarId_T; wakeUp :out Duration) is
58 i : Integer := 0;
59 begin
60 Search(id, i);
61 wakeUp:= R(i).WakeupTime;
62 end GetWakeUpTime;
64 procedure GetElapsedTime(id : in CarId_T; elapsed :out Duration) is
65 i : Integer := 0;
66 begin
67 Search(id, i);
68 elapsed:= R(i).ElapsedTime;
69 end GetElapsedTime;
71 procedure GetLap(id : in CarId_T; lap :out Natural) is
72 i : Integer := 0;
73 begin
74 Search(id, i);
75 lap:= R(i).Lap;
76 end GetLap;
78 end Ranking;
80 end Simulator.Statistics;