+ IO.Readers
This commit is contained in:
parent
92c7e13849
commit
6c7641422f
|
@ -0,0 +1,32 @@
|
|||
with Ada.Unchecked_Conversion;
|
||||
|
||||
package body Video.IO.Readers.LE is
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Unsigned_16) is
|
||||
Buf : Unsigned_8_Array (0 .. 1);
|
||||
begin
|
||||
Reader.Read (Buf);
|
||||
Data := Unsigned_16 (Buf (0))
|
||||
+ Shift_Left (Unsigned_16 (Buf (1)), 8);
|
||||
end Read;
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Unsigned_32) is
|
||||
Buf : Unsigned_8_Array (0 .. 3);
|
||||
begin
|
||||
Reader.Read (Buf);
|
||||
Data := Unsigned_32 (Buf (0))
|
||||
+ Shift_Left (Unsigned_32 (Buf (1)), 8)
|
||||
+ Shift_Left (Unsigned_32 (Buf (2)), 16)
|
||||
+ Shift_Left (Unsigned_32 (Buf (3)), 24);
|
||||
end Read;
|
||||
|
||||
function To_Integer_32 is new Ada.Unchecked_Conversion (Source => Unsigned_32, Target => Integer_32);
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Integer_32) is
|
||||
T : Unsigned_32;
|
||||
begin
|
||||
Reader.Read (T);
|
||||
Data := To_Integer_32 (T);
|
||||
end Read;
|
||||
|
||||
end Video.IO.Readers.LE;
|
|
@ -0,0 +1,10 @@
|
|||
package Video.IO.Readers.LE is
|
||||
type LE_Reader is new Base_Reader with null record;
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Unsigned_16);
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Unsigned_32);
|
||||
|
||||
procedure Read (Reader : in out LE_Reader; Data : out Integer_32);
|
||||
|
||||
end Video.IO.Readers.LE;
|
|
@ -0,0 +1,15 @@
|
|||
package body Video.IO.Readers is
|
||||
|
||||
procedure Read (Reader : in out Base_Reader; Data : out Unsigned_8) is
|
||||
begin
|
||||
Unsigned_8'Read (Reader.Stream, Data);
|
||||
Reader.Pos := Reader.Pos + 1;
|
||||
end Read;
|
||||
|
||||
procedure Read (Reader : in out Base_Reader; Data : out Unsigned_8_Array) is
|
||||
begin
|
||||
Unsigned_8_Array'Read (Reader.Stream, Data);
|
||||
Reader.Pos := Reader.Pos + Data'Length;
|
||||
end Read;
|
||||
|
||||
end Video.IO.Readers;
|
|
@ -0,0 +1,16 @@
|
|||
with Interfaces;
|
||||
use Interfaces;
|
||||
|
||||
package Video.IO.Readers is
|
||||
type Unsigned_8_Array is array (Integer range <>) of Unsigned_8;
|
||||
|
||||
type Base_Reader is tagged limited record
|
||||
Stream : access Ada.Streams.Root_Stream_Type'Class;
|
||||
Pos : Integer := 0;
|
||||
end record;
|
||||
|
||||
procedure Read (Reader : in out Base_Reader; Data : out Unsigned_8);
|
||||
|
||||
procedure Read (Reader : in out Base_Reader; Data : out Unsigned_8_Array);
|
||||
|
||||
end Video.IO.Readers;
|
Loading…
Reference in New Issue