agpl_1.0.0_b5da3320/src/tests/b001_pack.adb

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
with Ada.Streams;           use Ada.Streams;
with Ada.Streams.Stream_Io; use Ada.Streams.Stream_Io;
with Ada.Text_Io;           use Ada.Text_Io;

procedure B001_Pack is

   type Bool is (F, T);
   type Bit_Array is array (Positive range <>, Positive range <>) of Bool;
   pragma Pack (Bit_Array);

   X : constant Bit_Array (1 .. 3, 1 .. 3) := ((F, T, T), (F, F, T), (F, T, F));

   procedure Print (X : Bit_Array) is
   begin
      for I in X'Range loop
         for J in X'Range (2) loop
            Put_Line (I'Img & J'Img & " " & X (I, J)'Img);
         end loop;
      end loop;
   end Print;

   Fi : Ada.Streams.Stream_Io.File_Type;
begin
   Print (X);

   Create (Fi, Out_File, "b001_pack");
   Bit_Array'Output (Stream (Fi), X);
   Close (Fi);

   Open (Fi, In_File, "b001_pack");
   declare
      Y : constant Bit_Array := Bit_Array'Input (Stream (Fi));
   begin
      Close (Fi);
      Print (Y);
      Put_Line (Boolean'Image (X = Y));
   end;
end B001_Pack;