Parent

Files

Class/Module Index [+]

Quicksearch

BinData::Buffer

A Buffer is conceptually a substream within a data stream. It has a defined size and it will always read or write the exact number of bytes to fill the buffer. Short reads will skip over unused bytes and short writes will pad the substream with “0” bytes.

require 'bindata'

obj = BinData::Buffer.new(:length => 5, :type => [:string, {:value => "abc"}])
obj.to_binary_s #=> "abc\000\000"

class MyBuffer < BinData::Buffer
  default_parameter :length => 8

  endian :little

  uint16 :num1
  uint16 :num2
  # padding occurs here
end

obj = MyBuffer.read("\001\000\002\000\000\000\000\000")
obj.num1 #=> 1
obj.num1 #=> 2
obj.num_bytes #=> 8

class StringTable < BinData::Record
  endian :little

  uint16 :table_size_in_bytes
  buffer :strings, :length => :table_size_in_bytes do
    array :read_until => :eof do
      uint8 :len
      string :str, :length => :len
    end
  end
end

Parameters

Parameters may be provided at initialisation to control the behaviour of an object. These params are:

:length

The number of bytes in the buffer.

:type

The single type inside the buffer. Use a struct if multiple fields are required.

Public Instance Methods

assign(val) click to toggle source
# File lib/bindata/buffer.rb, line 69
def assign(val)
  @type.assign(val)
end
clear?() click to toggle source
# File lib/bindata/buffer.rb, line 65
def clear?
  @type.clear?
end
initialize_instance() click to toggle source
# File lib/bindata/buffer.rb, line 61
def initialize_instance
  @type = get_parameter(:type).instantiate(nil, self)
end
snapshot() click to toggle source
# File lib/bindata/buffer.rb, line 73
def snapshot
  @type.snapshot
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.