package Pack22_Pkg is type byte is mod 256; Temp_buffer : array (0..8) of byte:= (others => 0); for Temp_buffer'Alignment use 2; subtype Id is Short_integer; generic Dummy : Integer := 0; package Bit_Map_Generic is type List is private; function "xor" (L, R : List) return List; private type Offset_T is range 0 .. Id'Last; type Counter_T is new short_integer; for Counter_T'Size use 16; type Bit_List is array (Id range <>) of Boolean; pragma Pack (Bit_List); type List_Counter_T (Is_Defined : Boolean := True) is record Dummy : Boolean := False; case Is_Defined is when True => Counter : Counter_T := 0; when False => null; end case; end record; for List_Counter_T use record Is_Defined at 0 range 0 .. 7; Dummy at 1 range 0 .. 7; Counter at 2 range 0 .. 15; end record; type List is record Offset : Offset_T := Offset_T (1) - 1; Counter : List_Counter_T; Bits : Bit_List (1 .. 6); end record; for List use record Offset at 0 range 0 .. 15; Counter at 2 range 0 .. 31; end record; type Iterator is record No_More_Id : Boolean := True; Current_Id : Id; The_List : List; end record; end Bit_Map_Generic; end Pack22_Pkg;