class BinData::Virtual
A virtual field is one that is neither read, written nor occupies space in the data stream. It is used to make assertions or as a convenient label for determining offsets or storing values.
require 'bindata' class A < BinData::Record string :a, :read_length => 5 string :b, :read_length => 5 virtual :c, :assert => lambda { a == b } end obj = A.read("abcdeabcde") obj.a #=> "abcde" obj.c.offset #=> 10 obj = A.read("abcdeABCDE") #=> BinData::ValidityError: assertion failed for obj.c
Parameters¶ ↑
Parameters may be provided at initialisation to control the behaviour of an object. These params include those for BinData::Base as well as:
:assert
-
Raise an error when reading or assigning if the value of this evaluated parameter is false.
:value
-
The virtual object will always have this value.
Public Instance Methods
read_and_return_value(io)
click to toggle source
# File lib/bindata/virtual.rb, line 37 def read_and_return_value(io) nil end
sensible_default()
click to toggle source
# File lib/bindata/virtual.rb, line 41 def sensible_default nil end
value_to_binary_string(val)
click to toggle source
# File lib/bindata/virtual.rb, line 33 def value_to_binary_string(val) "" end