Re: Question de généricité

Liste des GroupesRevenir à fcl ada 
Sujet : Re: Question de généricité
De : gautier_niouzes (at) *nospam* hotmail.com (Gautier write-only address)
Groupes : fr.comp.lang.ada
Date : 01. Sep 2023, 19:42:39
Autres entêtes
Message-ID : <a36a4183-5817-4efa-86ee-09e4d883bb23n@googlegroups.com>
References : 1 2 3 4 5 6 7
User-Agent : G2/1.0
Que dis-tu du code ci-dessous?
Une question à mon tour: pourquoi le choix 32, 64, 128 (puissances de deux) puis 255 (=2^8 - 1) et pourquoi +2 pour la longueur des trois premiers tableaux et +1 pour le dernier?

----8<-----------8<-----------8<-----------8<-----------8<-----------8<-------
with Interfaces.C;

procedure genconv is

  generic
  type Item_Type is private;
  terminator : Item_Type;
  type Index_Type is mod <>;
  array_length : Index_Type;
  type Array_Type is array (Index_Type range <>) of Item_Type;
  with function To_Item_Type (c : Character) return Item_Type;

  package TW_Factory is
    subtype Tailored_Array is Array_Type (Index_Type'(1) .. array_length);
    function To_TW_STR (message : String) return Tailored_Array;
  end TW_Factory;

  package body TW_Factory is
    function To_TW_STR (message : String) return Tailored_Array is
    begin
      pragma Assert (message'Length = array_length);  --  Or adjust terminator position ?
      return Result : Tailored_Array with Relaxed_Initialization do
        for J in message'Range loop
          Result (Index_Type (J - message'First + 1)) := To_Item_Type (message (J));
        end loop;
        Result (Index_Type (message'Length + 1)) := terminator;
      end return;
    end To_TW_STR;
  end TW_Factory;

  use Interfaces.C;

  type char_array is array (size_t range <>) of aliased char;

  package TW_128 is new TW_Factory (char, nul, size_t, 128, char_array, to_C);

  x : TW_128.Tailored_Array;

begin
  x := TW_128.To_TW_STR ("Hey!");
end;

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