KaitaiStruct.Stream (kaitai_struct v0.1.1)
Interface for streaming data of known size
Implements the functions mentioned in the Kaitai Runtime Specification, implementing the Kaitai Stream API
Summary
Functions
Re-align to bytes after moving to an non-standard bit alignment
Returns a specification to start this module under a supervisor.
Takes a list of bytes and ensures that the next bytes in the stream are an exact match
Takes a list of bytes and ensures that the next bytes in the stream are an exact match. Raises KaitaiStruct.Stream.ReadError
on failure
true
if the stream has emitted its final byte, false
otherwise
Current position (bytes read) within the stream
Read an array of n
bits from stream.
Read an array of n
bits from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read an integer (composed of N bits) from stream.
Read an integer (composed of N bits) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
An array of n
bytes from stream.
An array of n
bytes from stream. Raises KaitaiStruct.Stream.ReadError
on failure
An array of all remaining bytes from stream.
An array of all remaining bytes from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read bytes until the character (in the given encoding) is reached. Accepted encodings at KaitaiStruct.encodings/0
Read bytes until the character (in the given encoding) is reached. Accepted encodings at KaitaiStruct.encodings/0
Raises KaitaiStruct.Stream.ReadError
on failure.
Read float (4 bytes, big-endian) from stream.
Read float (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read float (4 bytes, little-endian) from stream.
Read float (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read float (8 bytes, big-endian) from stream.
Read float (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read float (8 bytes, little-endian) from stream.
Read float (8 bytes, little-endian) from stream.
Read signed integer (1 byte) from stream.
Read signed integer (1 byte) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read signed integer (2 bytes, big-endian) from stream.
Read signed integer (2 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read signed integer (2 bytes, little-endian) from stream.
Read signed integer (2 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read signed integer (4 bytes, big-endian) from stream.
Read signed integer (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read signed integer (4 bytes, little-endian) from stream.
Read signed integer (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read signed integer (8 bytes, big-endian) from stream.
Read signed integer (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (1 byte) from stream.
Read unsigned integer (1 byte) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (2 bytes, big-endian) from stream.
Read unsigned integer (2 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (2 bytes, little-endian) from stream.
Read unsigned integer (2 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (4 bytes, big-endian) from stream.
Read unsigned integer (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (4 bytes, little-endian) from stream.
Read unsigned integer (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (8 bytes, big-endian) from stream.
Read unsigned integer (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Read unsigned integer (8 bytes, little-endian) from stream.
Read unsigned integer (8 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
Moves the stream position forward by n
bytes, or to the end of the stream. Whichever is smaller.
Total size of the stream, in bytes
Types
@type read_error() :: :reached_eof
@type stream_state() :: {:stream_state, stream :: Enumerable.t(), size_bits :: non_neg_integer(), pos_bits :: non_neg_integer(), buffer :: binary()}
Functions
@spec align_to_byte(stream :: pid()) :: :ok
Re-align to bytes after moving to an non-standard bit alignment
Returns a specification to start this module under a supervisor.
See Supervisor
.
@spec ensure_fixed_contents(stream :: pid(), contents :: binary()) :: :ok | {:error, read_error()} | {:error, :fixed_contents_mismatch}
Takes a list of bytes and ensures that the next bytes in the stream are an exact match
Takes a list of bytes and ensures that the next bytes in the stream are an exact match. Raises KaitaiStruct.Stream.ReadError
on failure
true
if the stream has emitted its final byte, false
otherwise
@spec pos(stream :: pid()) :: non_neg_integer()
Current position (bytes read) within the stream
@spec read_bits_array(stream :: pid(), n :: non_neg_integer()) :: {:ok, [boolean()]} | {:error, read_error()}
Read an array of n
bits from stream.
@spec read_bits_array!(stream :: pid(), n :: non_neg_integer()) :: [boolean()]
Read an array of n
bits from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_bits_int(stream :: pid(), n :: non_neg_integer()) :: {:ok, integer()} | {:error, read_error()}
Read an integer (composed of N bits) from stream.
@spec read_bits_int!(stream :: pid(), n :: non_neg_integer()) :: integer()
Read an integer (composed of N bits) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_bytes_array(stream :: pid(), n :: non_neg_integer()) :: {:ok, binary()} | {:error, read_error()}
An array of n
bytes from stream.
@spec read_bytes_array!(stream :: pid(), n :: non_neg_integer()) :: binary()
An array of n
bytes from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_bytes_full(stream :: pid()) :: {:ok, binary()} | {:error, read_error()}
An array of all remaining bytes from stream.
An array of all remaining bytes from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_bytes_term( stream :: pid(), encoding :: String.t(), term :: integer(), include_term :: boolean(), consume_term :: boolean(), eos_error :: boolean() ) :: {:ok, binary()} | {:error, read_error()} | {:error, :unsupported_encoding} | {:error, {:term_encoding_error, term()}}
Read bytes until the character (in the given encoding) is reached. Accepted encodings at KaitaiStruct.encodings/0
@spec read_bytes_term!( stream :: pid(), encoding :: String.t(), term :: integer(), include_term :: boolean(), consume_term :: boolean(), eos_error :: boolean() ) :: binary()
Read bytes until the character (in the given encoding) is reached. Accepted encodings at KaitaiStruct.encodings/0
Raises KaitaiStruct.Stream.ReadError
on failure.
@spec read_f4be(stream :: pid()) :: {:ok, float()} | {:error, read_error()}
Read float (4 bytes, big-endian) from stream.
Read float (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_f4le(stream :: pid()) :: {:ok, float()} | {:error, read_error()}
Read float (4 bytes, little-endian) from stream.
Read float (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_f8be(stream :: pid()) :: {:ok, float()} | {:error, read_error()}
Read float (8 bytes, big-endian) from stream.
Read float (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_f8le(stream :: pid()) :: {:ok, float()} | {:error, read_error()}
Read float (8 bytes, little-endian) from stream.
Read float (8 bytes, little-endian) from stream.
@spec read_s1(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (1 byte) from stream.
Read signed integer (1 byte) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_s2be(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (2 bytes, big-endian) from stream.
Read signed integer (2 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_s2le(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (2 bytes, little-endian) from stream.
Read signed integer (2 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_s4be(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (4 bytes, big-endian) from stream.
Read signed integer (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_s4le(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (4 bytes, little-endian) from stream.
Read signed integer (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_s8be(stream :: pid()) :: {:ok, integer()} | {:error, read_error()}
Read signed integer (8 bytes, big-endian) from stream.
Read signed integer (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u1(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (1 byte) from stream.
@spec read_u1!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (1 byte) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u2be(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (2 bytes, big-endian) from stream.
@spec read_u2be!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (2 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u2le(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (2 bytes, little-endian) from stream.
@spec read_u2le!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (2 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u4be(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (4 bytes, big-endian) from stream.
@spec read_u4be!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (4 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u4le(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (4 bytes, little-endian) from stream.
@spec read_u4le!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (4 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u8be(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (8 bytes, big-endian) from stream.
@spec read_u8be!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (8 bytes, big-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec read_u8le(stream :: pid()) :: {:ok, non_neg_integer()} | {:error, read_error()}
Read unsigned integer (8 bytes, little-endian) from stream.
@spec read_u8le!(stream :: pid()) :: non_neg_integer()
Read unsigned integer (8 bytes, little-endian) from stream. Raises KaitaiStruct.Stream.ReadError
on failure
@spec seek(stream :: pid(), n :: non_neg_integer()) :: :ok | {:error, :reached_eof} | {:error, :cannot_seek_backwards}
Moves the stream position forward by n
bytes, or to the end of the stream. Whichever is smaller.
@spec size(stream :: pid()) :: non_neg_integer()
Total size of the stream, in bytes