Class: BinData::Virtual
- Inherits:
-
BasePrimitive
- Object
- Base
- BasePrimitive
- BinData::Virtual
- Defined in:
- lib/bindata/virtual.rb
Overview
A virtual field is one that is neither read, written nor occupies space. It is used to make assertions or as a convenient label for determining offsets.
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
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
Methods inherited from BasePrimitive
#<=>, #assign, bit_aligned, #clear?, #do_num_bytes, #do_read, #do_read_with_hook, #do_write, #eql?, #hash, #initialize_instance, #initialize_shared_instance, #method_missing, #respond_to?, #snapshot, #trace_value, turn_off_tracing, turn_on_tracing, #value
Methods inherited from Base
#==, #=~, arg_extractor, bindata_name, #clear, #debug_name, #eval_parameter, #get_parameter, #has_parameter?, #initialize_instance, #initialize_with_warning, #inspect, #lazy_evaluator, #new, #num_bytes, #offset, #pretty_print, #read, read, register_subclasses, #rel_offset, #safe_respond_to?, #to_binary_s, #to_s, unregister_self, #write
Methods included from AcceptedParametersPlugin
#accepted_parameters, #default_parameters, #mandatory_parameters, #mutually_exclusive_parameters, #optional_parameters
Methods included from RegisterNamePlugin
included, #initialize_shared_instance
Methods included from CheckOrAdjustOffsetPlugin
included, #initialize_shared_instance
Methods included from Framework
#assign, #clear?, #debug_name_of, included, #offset_of, #snapshot
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class BinData::BasePrimitive
Class Method Details
.sanitize_parameters!(params) ⇒ Object
:nodoc:
25 26 27 28 29 |
# File 'lib/bindata/virtual.rb', line 25 def sanitize_parameters!(params) #:nodoc: if params.has_parameter?(:asserted_value) fail ":asserted_value can not be used on virtual field" end end |