Dans le package de bas niveau, j'ai, par exemple :
-- Slew Rate Enable
type PCR0_SRE_Field is
(Fast,
Slow)
with Size => 1;
for PCR0_SRE_Field use
(Fast => 0,
Slow => 1);
Dans le package de plus haut niveau, je définis une procédure
procedure SetSlewRate(sr : in PCR0_SRE_Field) ;
Dans "main", j'aimerais pouvoir faire "SetSlewRate(Fast);".
Je peux redéclarer Fast et Slow dans le package de plus haut niveau
(d'où ma question sur le renommage de types), mais le code peut vite
devenir lourd à écrire...
Peut-être que mes (trop) longues années d'utilisation du C m'ont rendu
fainéant ;)
> Si il y a vraiment besoin de types communs, alors on peut les mettre
> dans un paquetage "Common_Types" utilisé à la fois par pkg1 et pkg2.
J'utilise des packages de bas niveau qui sont générés de façon
automatique par un outil (svd2ada). Donc, pas de souplesse à ce niveau là.
Les packages de plus haut niveau sont écrits par moi.
>
>> (2) : Cette ligne compile mais est-elle correcte ?
> Oui, sinon elle ne compilerait pas ;-)
>
>> (3) : Peut-on renommer un type ? Comment ?
> On ne peut pas renommer un type. En revanche on peut:
Ok.
> Faire un sous-type:
> subtype T_type2 is Pkg1.T_type1;
Ca, je l'ai déjà essayé.
> Avantage: léger
> Inconvénient: n'importe pas les opérations primitives
>
Léger, c'est au niveau compilation ou au niveau exécution ?
> Faire un type dérivé:
> type T_type2 is new Pkg1.T_Type1;
Ca, je n'y avait pas pensé.
> Avantage: importe les opérations primitives
> Inconvénient: nécessite de rajouter des conversions dans certaines
> opérations.
Oui, bien sûr...