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; |