logo       

Re: taille des types / streams: msg#00039

lang.ada.france

Subject: Re: taille des types / streams

On 31/03, Thomas De Contes wrote:
|
| type diffBranches is new Natural range 0..2**
| Natural'min(donneesBranches'size,Natural'size) -1;

Une solution generale consiste a redefinir les attributs read et write
de diffBranches.

-- spec

type diffBranches is ...

procedure Read
(S : access Ada.Streams.Root_Stream_Type'Class;
X : out diffBranches);

procedure Write
(S : access Ada.Streams.Root_Stream_Type'Class;
X : in diffBranches);

for diffBranches'Read use Read;
for diffBranches'Write use Write;

-- body

procedure Read
(S : access Ada.Streams.Root_Stream_Type'Class;
X : out diffBranches)
is
SEA : Ada.Streams.Stream_Element_Array (1 .. 1);
Last : Ada.Streams.Stream_Element_Count;
begin
Ada.Streams.Read (S.all, SEA, Last);
if Last /= SEA'Last then
raise Constraint_Error;
end if;
X := diffBranches (SEA (1));
end Read;

procedure Write
(S : access Ada.Streams.Root_Stream_Type'Class;
X : in diffBranches)
is
SEA : Ada.Streams.Stream_Element_Array (1 .. 1);
begin
SEA (1) := Stream_Element (X);
Ada.Streams.Write (S.all, SEA);
end Write;

--
-- Laurent
_______________________________________________
Site WWW de l'association Ada-France: http://www.ada-france.org/
Ada-France@xxxxxxxxxxxxxx
http://www.ada-france.org/mailman/listinfo/ada-france



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise