module BinData::BasePrimitive::AssertedValuePlugin

def _value

def _value
  reading? ? @value : eval_parameter(:asserted_value)
end

def assert!

def assert!
  assert_value(snapshot)
end

def assert_value(current_value)

def assert_value(current_value)
  expected = eval_parameter(:asserted_value, :value => current_value)
  if current_value != expected
    raise ValidityError,
          "value is '#{current_value}' but " +
          "expected '#{expected}' for #{debug_name}"
  end
end

def assign(val)

def assign(val)
  assert_value(val)
  super(val)
end

def do_read(io) #:nodoc:

:nodoc:
def do_read(io) #:nodoc:
  super(io)
  assert!
end