54 lines
1.1 KiB
Ada
54 lines
1.1 KiB
Ada
with Unchecked_Conversion;
|
|
|
|
package Rep_Clause2 is
|
|
|
|
type Tiny is range 0 .. 3;
|
|
for Tiny'Size use 2;
|
|
|
|
type Small is range 0 .. 255;
|
|
for Small'Size use 8;
|
|
|
|
type Small_Data is record
|
|
D : Tiny;
|
|
N : Small;
|
|
end record;
|
|
pragma Pack (Small_Data);
|
|
|
|
type Chunk is
|
|
record
|
|
S : Small_Data;
|
|
C : Character;
|
|
end record;
|
|
|
|
for Chunk use record
|
|
S at 0 range 0 .. 15;
|
|
C at 2 range 0 .. 7;
|
|
end record;
|
|
|
|
type Index is range 1 .. 10;
|
|
|
|
type Data_Array is array (Index) of Chunk;
|
|
for Data_Array'Alignment use 2;
|
|
pragma Pack (Data_Array);
|
|
|
|
type Data is record
|
|
D : Data_Array;
|
|
end record;
|
|
|
|
type Bit is range 0 .. 1;
|
|
for Bit'Size use 1;
|
|
|
|
type Bit_Array is array (Positive range <>) of Bit;
|
|
pragma Pack (Bit_Array);
|
|
|
|
type Byte is new Bit_Array (1 .. 8);
|
|
for Byte'Size use 8;
|
|
for Byte'Alignment use 1;
|
|
|
|
function Conv
|
|
is new Unchecked_Conversion(Source => Small, Target => Byte);
|
|
|
|
procedure Assign (From : Data; Offset : Positive; I : Index; To : out Bit_Array);
|
|
|
|
end Rep_Clause2;
|