Re: Question de généricité

Liste des GroupesRevenir à fcl ada 
Sujet : Re: Question de généricité
De : 314 (at) *nospam* drpi.fr (DrPi)
Groupes : fr.comp.lang.ada
Date : 30. Aug 2023, 21:13:57
Autres entêtes
Organisation : Posted through news.alphanet.ch
Message-ID : <uco7u8$156$1@shakotay.alphanet.ch>
References : 1 2
User-Agent : Mozilla Thunderbird
--  subtype t_TW_STR32 is char_array (1 .. 34);
--  subtype t_TW_STR64 is char_array (1 .. 66);
--  subtype t_TW_STR128 is char_array (1 .. 130);
--  subtype t_TW_STR255 is char_array (1 .. 256);
 generic
type Item_Type is private;
nul : Item_Type;
type Index_Type is mod <>;
type Array_Type is array (Index_Type range <>) of Item_Type;
with function To_Item_Type (c : Character) return Item_Type;
function To_TW_STR (Item : String) return Array_Type;
 function To_TW_STR (Item : String) return Array_Type is
begin
return Result : Array_Type (1 .. Item'Length + 1) with Relaxed_Initialization do
for J in Item'Range loop
Result (Index_Type (J - Item'First + 1)) := To_Item_Type (Item (J));  --  Was J - Item'First
end loop;
Result (Index_Type (Item'Length + 1)) := nul;  --  Was Item'Last + 1
end return;
end To_TW_STR;
 function To_TW_C is new To_TW_STR (char, nul, size_t, char_array, to_C);
 begin
null;
end;
 
Je ne comprends pas "nul : Item_Type" dans les paramètres génériques. A quoi sert cette ligne ?
Je ne comprends pas non plus pourquoi on passe "Item_Type" et "Index_Type" sachant que "Array_Type" définit complètement le type ("char_array" ici).
Dans mon cas, je veux passer un type entièrement contraint en générique. La taille du tableau de sortie doit être égale au type entièrement contraint passé en générique, pas au paramètre "Item" de la fonction.
Comment faire ?
Sinon, il faudrait avoir accès à l'élément assigné (LHS) à partir de la fonction.
En VHDL-2019 (langage très fortement inspiré de Ada), une fonction peut s'écrire :
function my_func (param1 : in t_type1; param2 : in t_type2) return param_ret of t_type_ret;
Par exemple avec "var := my_func (var1, var2);"
la fonction "my_func" a accès à "var" à travers l'identifiant "param_ret". Dans "my_func", il est possible d'utiliser "param_ret'Length" ou "param_ret'Range" par exemple.
Je ne crois pas que ce soit possible en Ada. Exact ?

Date Sujet#  Auteur
29 Aug 23 * Question de généricité14DrPi
30 Aug 23 `* Re: Question de généricité13Gautier write-only address
30 Aug 23  `* Re: Question de généricité12DrPi
30 Aug 23   `* Re: Question de généricité11Gautier write-only address
31 Aug 23    `* Re: Question de généricité10DrPi
1 Sep 23     `* Re: Question de généricité9Gautier write-only address
1 Sep 23      `* Re: Question de généricité8DrPi
1 Sep 23       +* Re: Question de généricité3Gautier write-only address
2 Sep 23       i`* Re: Question de généricité2DrPi
2 Sep 23       i `- Re: Question de généricité1DrPi
2 Sep 23       `* Re: Question de généricité4J-P. Rosen
2 Sep 23        `* Re: Question de généricité3DrPi
15 Sep 23         `* Re: Question de généricité2Thomas
16 Sep 23          `- Re: Question de généricité1DrPi

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal