Re: Rép : Overriding et primitives .

Pascal <[email protected]>
Newsgroups gmane.comp.lang.ada.france
Message-ID <[email protected]>
Bonjour.

Par hasard, je suis tombé sur le fait que la définition et  
l'utilisation du type pointeur d'un type étiqueté comme type de  
retour d'une fonction n'en fait pas une primitive !
Elle ne sera donc pas à redéfinir en cas de dérivation :
    package ess_nap1 is
       type Point is tagged record
          X, Y : Integer;
       end record;
       type PPoint is access all Point;
       function Init (X, Y : Integer) return PPoint; -- not a primitive
       procedure Deplace (P : access Point; DX, DY : Integer); --  
primitive

       type Cercle is new Point with record
          R : Integer;
       end record;
       type PCercle is access all Cercle;
       --  function Init (X, Y : Integer) return PCercle;  -- n'est  
pas à redéfinir !
       function Init (X, Y, R : Integer) return PCercle; -- not a  
primitive
    end ess_nap1;

Quelle est la différence avec la fonction isolée dans un paquetage  
interne ?

Cordialement, Pascal Pignard.
http://blady.pagesperso-orange.fr


Le 18 août 08 à 21:45, Pascal a écrit :

> Bonsoir.
> J'ai en effet vu cette technique employée pour mettre des fonctions  
> dans des paquetages fils qui n'étaient donc pas héritées lors d'une  
> dérivation du type, ce qui d'ailleurs posaient alors d'autres  
> problèmes de compatibilité.
>
> De mon point de vue cela ajoute de la "verbosité" au code source  
> englobant la fonction pour sa déclaration et pour son corps, alors  
> qu'un pragma aurait l'avantage de garder la linéarité des  
> opérations sur le type étiquetté.
>
> Je me souviens d'un pragma Java_Constructor chez ObjectAda mais  
> c'est dans un contexte différent.
>
> Cordialement, Pascal Pignard.
> http://blady.pagesperso-orange.fr
>
>
>
>> Il suffit de déclarer la fonction dans un sous-paquetage pour  
>> l'empecher d'être primitive. J'ai le cas dans AdaControl, où j'ai  
>> un constructeur pour le type Basic_Context. Le constructeur  
>> s'appelle New_Context dans le sous-paquetage Basic. Comme ça  
>> j'écris Basic.New_Context, alors que si je n'avais pas fait de  
>> sous-paquetage, j'aurais surement appelé la fonction  
>> Basic_New_Context. Bref, on ne peut pas dire que le niveau de  
>> paquetage supplémentaire soit vraiment génant...
>>
>> -- 
>> ---------------------------------------------------------
>>            J-P. Rosen ([email protected])
>> Visit Adalog's web site at http://www.adalog.fr
>>


_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
[email protected]
http://www.ada-france.org/mailman/listinfo/ada-france
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.