Bonjour,
Je m'attendais un peu à avoir ce genre de problème.
j'ai déclaré un tableau de "projet" (nom + version) dans une partition shared passive et je ne parviens pas à mettre à jour la version.
Voici les codes.
La partition racine (pragma pure)
Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 -- Adam is Ada manufacture. -- Adam (C) 2013 Copyright Manuel De Girardi -------------------------------------------- -- Author : Manuel De Girardi -- -- Date : 2013/08/11:00_000.0 -- -- Version : 0.0.0release -- -- Description : Ada manufacture. -- -------------------------------------------- package Adam is pragma Pure (Adam); subtype Name_Type is String(1..256); -- Name is string of 256 characters. --type Release_Type is (Alpha, Beta, Debug, Release); type Version_Type is record Maj : Natural := 0; Min : Natural := 0; Rev : Natural := 0; --Rel : Release_Type := Alpha; end record; -- Version is triplet of natural. Default_Version : constant Version_type := (0, 0, 0); -- the default value for remove. type Project_Type is tagged record Name : Name_Type; Version : Version_Type; end record; -- Project is a name and version. type Project_Set_Type is array (Positive range <>) of Project_Type; -- Project_Set is positive array of project. Max_Projects : constant Positive := 128; -- Maximum number of project in Adam.Systemic.Project_Set. subtype Project_Index_Type is Natural range 0..Max_Projects; -- Project_Index is the index of valid project in Adam.Systemic.Project_Set. end Adam;
La partition partagée, (pragma shared passive) contenant mon tableau.
Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 -- Adam is Ada manufacture. -- Adam (C) 2013 Copyright Manuel De Girardi -------------------------------------------- -- Author : Manuel De Girardi -- -- Date : 2013/08/11:43_000.0 -- -- Version : 0.0.3alpha -- -- Description : Ada manufacture. -- -------------------------------------------- package Adam.Systemic is pragma Shared_Passive (Adam.Systemic); procedure Add(Project : out Project_Type; Name : in Name_Type; Version : in Version_Type); function Exist(Name : in Name_Type) return Boolean; function Project(Name : in Name_Type) return Project_Type; function List return Project_Set_Type; procedure Upgrade(Project : out Project_Type; name : in Name_Type; Version : in Version_Type); Full_Set, Empty_Set, Project_Not_Match : exception; Not_Initialized, Already_Initialized : exception; private procedure Reset; procedure Remove(Name : in Name_Type); Passwd : Name_Type; Initialized : Boolean := False; Project_Set : Project_Set_Type(1..Max_Projects); Last_Project : Project_Index_Type := 0; end Adam.Systemic;
Le corps de la procédure "upgrade"
Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 procedure Upgrade(Project : out Project_Type; name : in Name_Type; Version : in Version_Type) is Index : Project_Index_Type := 1; begin if Last_Project < 1 then raise Empty_Set; end if; loop if project_Set(Index).Name = Name then exit; end if; exit when Index = Last_Project; Index := Index + 1; end loop; if Project_Set(Index).Name = Name then Project := (Name, Version); Project_Set(Index) := Project; else raise Project_Not_Match; end if; end Upgrade;
La version reste la même dans mon tableau après upgrade vers une nouvelle version.
Vous pouvez télécharger, non vas cette version, à laquelle j'ai enlever le release dans la version, mais celle avec release sur sourceforge.net projet Ada manufacture by jovalise.
Merci pour vos réponses.
Partager