class AdLint::Cc1::VersionedValue
Public Class Methods
new(orig_val, tag)
click to toggle source
Calls superclass method
AdLint::Cc1::MultipleValue::new
# File lib/adlint/cc1/value.rb, line 2530 def initialize(orig_val, tag) # NOTE: `orig_val.to_single_value' will be done in # MultipleValue#initialize. super(orig_val, nil, tag) @version_controller = ValueVersionController.new(self) end
Public Instance Methods
begin_versioning()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2549 def begin_versioning @version_controller.begin_forking end
coerce_to(type)
click to toggle source
# File lib/adlint/cc1/value.rb, line 2608 def coerce_to(type) VersionedValue.new(to_single_value.coerce_to(type), _base.tag.dup) end
effective_values()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2612 def effective_values @version_controller ? @version_controller.current_values : [self] end
end_versioning()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2553 def end_versioning @version_controller.end_forking invalidate_memo! end
enter_versioning_group()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2538 def enter_versioning_group @version_controller.enter_new_versioning_group end
force_overwrite!(val)
click to toggle source
# File lib/adlint/cc1/value.rb, line 2581 def force_overwrite!(val) # NOTE: This method will be invoked only from VariableTable#define. sval = val.to_single_value @version_controller.original_value.overwrite!(sval, nil) _orig_overwrite!(sval, nil) invalidate_memo! end
invalidate_memo!()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2618 def invalidate_memo! forget_memo_of__to_single_value end
invert_domain!()
click to toggle source
Calls superclass method
AdLint::Cc1::MultipleValue#invert_domain!
# File lib/adlint/cc1/value.rb, line 2602 def invert_domain! @version_controller.fork_current_version super invalidate_memo! end
leave_versioning_group(raise_complement)
click to toggle source
# File lib/adlint/cc1/value.rb, line 2542 def leave_versioning_group(raise_complement) @version_controller.copy_current_version if raise_complement @version_controller.merge_forked_versions @version_controller.leave_current_versioning_group invalidate_memo! end
narrow_domain!(op, ope_val)
click to toggle source
Calls superclass method
AdLint::Cc1::MultipleValue#narrow_domain!
# File lib/adlint/cc1/value.rb, line 2589 def narrow_domain!(op, ope_val) @version_controller.fork_current_version super invalidate_memo! end
overwrite!(val, tag)
click to toggle source
Calls superclass method
AdLint::Cc1::MultipleValue#overwrite!
# File lib/adlint/cc1/value.rb, line 2574 def overwrite!(val, tag) @version_controller.fork_current_version super @version_controller.mark_current_versioning_group_as_sticky invalidate_memo! end
Also aliased as: _orig_overwrite!
rollback_all_versions!()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2563 def rollback_all_versions! delete_descendants! orig_val = @version_controller.original_value @version_controller = nil _orig_overwrite!(orig_val, TransitionTag.new) @version_controller = ValueVersionController.new(self) invalidate_memo! end
thin_latest_version!(with_rollback)
click to toggle source
# File lib/adlint/cc1/value.rb, line 2558 def thin_latest_version!(with_rollback) @version_controller.thin_current_version(with_rollback) invalidate_memo! end
widen_domain!(op, ope_val)
click to toggle source
Calls superclass method
AdLint::Cc1::MultipleValue#widen_domain!
# File lib/adlint/cc1/value.rb, line 2595 def widen_domain!(op, ope_val) @version_controller.fork_current_version super @version_controller.mark_current_versioning_group_as_sticky invalidate_memo! end
Private Instance Methods
compact_descendants!()
click to toggle source
# File lib/adlint/cc1/value.rb, line 2623 def compact_descendants! @descendants = @version_controller.current_values.reject { |mval| mval.equal?(self) }.uniq end