63 lines
1.6 KiB
Ada
63 lines
1.6 KiB
Ada
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;
|