Sha256: f1ede06c14bb06cba3c5daa72b2e9baf4ec3fc34ebe56291ff39d53720af9990

Contents?: true

Size: 1.17 KB

Versions: 18

Compression:

Stored size: 1.17 KB

Contents

require "bindata/base"

module BinData
  # 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: -> { 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:
  #
  # [<tt>:assert</tt>]    Raise an error when reading or assigning if the value
  #                       of this evaluated parameter is false.
  # [<tt>:value</tt>]     The virtual object will always have this value.
  #
  class Virtual < BinData::BasePrimitive

    def do_read(io)
    end

    def do_write(io)
    end

    def do_num_bytes
      0.0
    end

    def sensible_default
      nil
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
bindata-2.4.15 lib/bindata/virtual.rb
bindata-2.4.14 lib/bindata/virtual.rb
bindata-2.4.13 lib/bindata/virtual.rb
bindata-2.4.12 lib/bindata/virtual.rb
bindata-2.4.11 lib/bindata/virtual.rb
bindata-2.4.10 lib/bindata/virtual.rb
bindata-2.4.9 lib/bindata/virtual.rb
bindata-2.4.8 lib/bindata/virtual.rb
bindata-2.4.7 lib/bindata/virtual.rb
bindata-2.4.6 lib/bindata/virtual.rb
bindata-2.4.5 lib/bindata/virtual.rb
bindata-2.4.4 lib/bindata/virtual.rb
bindata-2.4.3 lib/bindata/virtual.rb
bindata-2.4.2 lib/bindata/virtual.rb
bindata-2.4.1 lib/bindata/virtual.rb
bindata-2.4.0 lib/bindata/virtual.rb
bindata-2.3.5 lib/bindata/virtual.rb
bindata-2.3.4 lib/bindata/virtual.rb