module BinData::IO::Common::SeekableStream
def num_bytes_remaining
def num_bytes_remaining start_mark = @raw_io.pos @raw_io.seek(0, ::IO::SEEK_END) end_mark = @raw_io.pos if @buffer_end_points if @buffer_end_points[1] < end_mark end_mark = @buffer_end_points[1] end end bytes_remaining = end_mark - start_mark @raw_io.seek(start_mark, ::IO::SEEK_SET) bytes_remaining end
def offset_raw
def offset_raw @raw_io.pos - @initial_pos end
def read_raw(n)
def read_raw(n) @raw_io.read(n) end
def seek_raw(n)
def seek_raw(n) @raw_io.seek(n, ::IO::SEEK_CUR) end
def stream_init
def stream_init @initial_pos = @raw_io.pos end
def with_readahead
All io calls in +block+ are rolled back after this
def with_readahead mark = @raw_io.pos begin yield ensure @raw_io.seek(mark, ::IO::SEEK_SET) end end
def write_raw(data)
def write_raw(data) @raw_io.write(data) end