class AdLint::Cc1::EqualToValueDomain
Attributes
value[R]
Public Class Methods
new(val, logical_shr)
click to toggle source
Calls superclass method
AdLint::Cc1::ValueDomain::new
# File lib/adlint/cc1/domain.rb, line 2819 def initialize(val, logical_shr) super(logical_shr) if val @value = val else raise ArgumentError, "equal to nil?" end end
Public Instance Methods
!()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3424 def ! if @value == 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
!=(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3513 def !=(rhs_dom) rhs_dom._not_equal_equal_to(self) end
&(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3254 def &(rhs_dom) rhs_dom.coerce_to_integer._and_equal_to(coerce_to_integer) end
*(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3148 def *(rhs_dom) rhs_dom._mul_equal_to(self) end
+(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3120 def +(rhs_dom) rhs_dom._add_equal_to(self) end
+@()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3112 def +@ self end
-@()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3116 def -@ ValueDomain.equal_to(-@value, logical_shr?) end
/(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3204 def /(rhs_dom) rhs_dom._div_equal_to(self) end
<(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3432 def <(rhs_dom) rhs_dom._less_equal_to(self) end
<<(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3352 def <<(rhs_dom) rhs_dom.coerce_to_integer._shl_equal_to(coerce_to_integer) end
==(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3473 def ==(rhs_dom) rhs_dom._equal_equal_to(self) end
>>(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3388 def >>(rhs_dom) rhs_dom.coerce_to_integer._shr_equal_to(coerce_to_integer) end
^(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3324 def ^(rhs_dom) rhs_dom.coerce_to_integer._xor_equal_to(coerce_to_integer) end
_add_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3136 def _add_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value + rhs_dom.value, logical_shr?) end
_add_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3144 def _add_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value + rhs_dom.value, logical_shr?) end
_add_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3140 def _add_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value + rhs_dom.value, logical_shr?) end
_add_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3124 def _add_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes NilValueDomain#_add_equal_to. rhs_dom + lhs_dom end
_add_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3130 def _add_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS + RHS' equals to `RHS + LHS'. # This method invokes UnlimitedValueDomain#_add_equal_to. rhs_dom + lhs_dom end
_and_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3270 def _and_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value & rhs_dom.value, logical_shr?) end
_and_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3285 def _and_greater_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) when rhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) end end
_and_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3274 def _and_less_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(0, logical_shr?) when rhs_dom.value == 0 ValueDomain.equal_to(0, logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(0, logical_shr?) end end
_and_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3258 def _and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes NilValueDomain#_and_equal_to. rhs_dom & lhs_dom end
_and_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3264 def _and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS & RHS' equals to `RHS & LHS'. # This method invokes UnlimitedValueDomain#_and_equal_to. rhs_dom & lhs_dom end
_contain_equal_to?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2858 def _contain_equal_to?(lhs_dom, rhs_dom = self) lhs_dom.value == rhs_dom.value end
_contain_greater_than?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2866 def _contain_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.min_value <= rhs_dom.value end
_contain_intersection?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2870 def _contain_intersection?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.all? { |lhs| lhs.contain_value_domain?(rhs_dom) } end
_contain_less_than?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2862 def _contain_less_than?(lhs_dom, rhs_dom = self) lhs_dom.max_value >= rhs_dom.value end
_contain_nil?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2850 def _contain_nil?(lhs_dom, rhs_dom = self) false end
_contain_union?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2874 def _contain_union?(lhs_dom, rhs_dom = self) lhs_dom.domain_pair.any? { |lhs| lhs.contain_value_domain?(rhs_dom) } end
_contain_unlimited?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2854 def _contain_unlimited?(lhs_dom, rhs_dom = self) true end
_div_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3224 def _div_equal_to(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else ValueDomain.equal_to(lhs_dom.value / rhs_dom.value, logical_shr?) end end
_div_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3243 def _div_greater_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value / rhs_dom.value, logical_shr?) when rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) when rhs_dom.value > 0 ValueDomain.greater_than(lhs_dom.value / rhs_dom.value, logical_shr?) end end
_div_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3232 def _div_less_than(lhs_dom, rhs_dom = self) case when rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value / rhs_dom.value, logical_shr?) when rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) when rhs_dom.value > 0 ValueDomain.less_than(lhs_dom.value / rhs_dom.value, logical_shr?) end end
_div_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3208 def _div_nil(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end
_div_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3216 def _div_unlimited(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_nan(logical_shr?) else lhs_dom end end
_equal_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3489 def _equal_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
_equal_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3505 def _equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
_equal_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3497 def _equal_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value ValueDomain.of_unlimited(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
_equal_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3477 def _equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes NilValueDomain#_equal_equal_to. rhs_dom == lhs_dom end
_equal_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3483 def _equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS == RHS' equals to `RHS == LHS'. # This method invokes UnlimitedValueDomain#_equal_equal_to. rhs_dom == lhs_dom end
_intersect_equal_to?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2895 def _intersect_equal_to?(lhs_dom, rhs_dom = self) lhs_dom.value == rhs_dom.value end
_intersect_greater_than?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2903 def _intersect_greater_than?(lhs_dom, rhs_dom = self) lhs_dom.min_value <= rhs_dom.value end
_intersect_less_than?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2899 def _intersect_less_than?(lhs_dom, rhs_dom = self) lhs_dom.max_value >= rhs_dom.value end
_intersect_nil?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2882 def _intersect_nil?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes NilValueDomain#_intersect_equal_to?. rhs_dom.intersect?(lhs_dom) end
_intersect_unlimited?(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2888 def _intersect_unlimited?(lhs_dom, rhs_dom = self) # NOTE: `LHS intersect? RHS' equals to `RHS intersect? LHS'. # This method invokes # UnlimitedValueDomain#_intersect_equal_to?. rhs_dom.intersect?(lhs_dom) end
_intersection_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3665 def _intersection_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value lhs_dom else ValueDomain.of_nil(logical_shr?) end end
_intersection_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3681 def _intersection_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value rhs_dom else ValueDomain.of_nil(logical_shr?) end end
_intersection_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3673 def _intersection_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value rhs_dom else ValueDomain.of_nil(logical_shr?) end end
_intersection_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3653 def _intersection_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes NilValueDomain#_intersection_equal_to. rhs_dom.intersection(lhs_dom) end
_intersection_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3659 def _intersection_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS intersection RHS' equals to `RHS intersection LHS'. # This method invokes UnlimitedValueDomain#_intersection_equal_to. rhs_dom.intersection(lhs_dom) end
_less_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3449 def _less_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
_less_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3465 def _less_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value > rhs_dom.value ValueDomain.of_false(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end
_less_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3457 def _less_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end
_less_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3436 def _less_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any comparison with NilValueDomain makes no sense. ValueDomain.of_nil(logical_shr?) end
_less_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3442 def _less_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, any comparison with UnlimitedValueDomain makes # UnlimitedValueDomain. ValueDomain.of_unlimited(logical_shr?) end
_logical_and_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3569 def _logical_and_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == 0 || rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_true(logical_shr?) end end
_logical_and_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3589 def _logical_and_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else if lhs_dom.value > 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end
_logical_and_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3577 def _logical_and_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else if lhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end end
_logical_and_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3557 def _logical_and_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes NilValueDomain#_logical_and_equal_to. rhs_dom.logical_and(lhs_dom) end
_logical_and_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3563 def _logical_and_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS && RHS' equals to `RHS && LHS'. # This method invokes UnlimitedValueDomain#_logical_and_equal_to. rhs_dom.logical_and(lhs_dom) end
_logical_or_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3617 def _logical_or_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == 0 && rhs_dom.value == 0 ValueDomain.of_false(logical_shr?) else ValueDomain.of_true(logical_shr?) end end
_logical_or_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3637 def _logical_or_greater_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 if lhs_dom.value > 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else ValueDomain.of_true(logical_shr?) end end
_logical_or_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3625 def _logical_or_less_than(lhs_dom, rhs_dom = self) if rhs_dom.value == 0 if lhs_dom.value < 0 ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end else ValueDomain.of_true(logical_shr?) end end
_logical_or_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3605 def _logical_or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes NilValueDomain#_logical_or_equal_to. rhs_dom.logical_or(lhs_dom) end
_logical_or_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3611 def _logical_or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS || RHS' equals to `RHS || LHS'. # This method invokes UnlimitedValueDomain#_logical_or_equal_to. rhs_dom.logical_or(lhs_dom) end
_mul_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3164 def _mul_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value * rhs_dom.value, logical_shr?) end
_mul_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3186 def _mul_greater_than(lhs_dom, rhs_dom = self) return ValueDomain.equal_to(0, logical_shr?) if rhs_dom.value == 0 if lhs_dom.value >= 0 if rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) end else if rhs_dom.value < 0 ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) end end end
_mul_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3168 def _mul_less_than(lhs_dom, rhs_dom = self) return ValueDomain.equal_to(0, logical_shr?) if rhs_dom.value == 0 if lhs_dom.value <= 0 if rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) end else if rhs_dom.value < 0 ValueDomain.greater_than(lhs_dom.value * rhs_dom.value, logical_shr?) else ValueDomain.less_than(lhs_dom.value * rhs_dom.value, logical_shr?) end end end
_mul_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3152 def _mul_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes NilValueDomain#_mul_equal_to. rhs_dom * lhs_dom end
_mul_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3158 def _mul_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS * RHS' equals to `RHS * LHS'. # This method invokes UnlimitedValueDomain#_mul_equal_to. rhs_dom * lhs_dom end
_narrow_by_eq(rhs_dom, lhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2907 def _narrow_by_eq(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_eq(lhs_dom) end
_narrow_by_gt(rhs_dom, lhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3051 def _narrow_by_gt(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_gt(lhs_dom) end
_narrow_by_lt(rhs_dom, lhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3007 def _narrow_by_lt(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_lt(lhs_dom) end
_narrow_by_ne(rhs_dom, lhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2958 def _narrow_by_ne(rhs_dom, lhs_dom = self) rhs_dom._narrow_equal_to_by_ne(lhs_dom) end
_narrow_equal_to_by_eq(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2922 def _narrow_equal_to_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value # NOTE: Narrowing `------|------' by `== ------|-----' makes # `------|------'. lhs_dom else # NOTE: Narrowing `---|---------' by `== --------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end
_narrow_equal_to_by_gt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3066 def _narrow_equal_to_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.value > rhs_dom.value # NOTE: Narrowing `---------|---' by `> ---|---------' makes # `---------|---'. lhs_dom else # NOTE: Narrowing `---|---------' by `> ---------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end
_narrow_equal_to_by_lt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3022 def _narrow_equal_to_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.value < rhs_dom.value lhs_dom else ValueDomain.of_nil(logical_shr?) end end
_narrow_equal_to_by_ne(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2973 def _narrow_equal_to_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value # NOTE: Narrowing `------|------' by `!= ------|-----' makes # `-------------'. ValueDomain.of_nil(logical_shr?) else # NOTE: Narrowing `---|---------' by `!= --------|---' makes # `---|---------'. lhs_dom end end
_narrow_greater_than_by_eq(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2946 def _narrow_greater_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `== --------|---' makes # `---------|---'. rhs_dom else # NOTE: Narrowing `---------<===' by `== ---|--------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end
_narrow_greater_than_by_gt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3091 def _narrow_greater_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `> ------|------' makes # `------<======'. ValueDomain.greater_than(rhs_dom.value, logical_shr?) else # NOTE: Narrowing `---------<===' by `> ---|---------' makes # `---------<==='. lhs_dom end end
_narrow_greater_than_by_lt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3040 def _narrow_greater_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `< ------|------' makes # `---<=>-------'. lhs_dom.intersection( ValueDomain.less_than(rhs_dom.value, logical_shr?)) else ValueDomain.of_nil(logical_shr?) end end
_narrow_greater_than_by_ne(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2997 def _narrow_greater_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value # NOTE: Narrowing `---<=========' by `!= ------|------' makes # `---<=>-<====='. lhs_dom.intersection(rhs_dom.inversion) else lhs_dom end end
_narrow_less_than_by_eq(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2934 def _narrow_less_than_by_eq(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `== ---|--------' makes # `---|---------'. rhs_dom else # NOTE: Narrowing `===>---------' by `== --------|---' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end
_narrow_less_than_by_gt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3078 def _narrow_less_than_by_gt(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `> ---|---------' makes # `---<=====>---'. ValueDomain.greater_than(rhs_dom.value, logical_shr?).intersection(lhs_dom) else # NOTE: Narrowing `===>---------' by `> ------|------' makes # `-------------'. ValueDomain.of_nil(logical_shr?) end end
_narrow_less_than_by_lt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3030 def _narrow_less_than_by_lt(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `< ------|------' makes # `=====>-------'. ValueDomain.less_than(rhs_dom.value, logical_shr?) else lhs_dom end end
_narrow_less_than_by_ne(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2985 def _narrow_less_than_by_ne(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value # NOTE: Narrowing `=========>---' by `!= ------|------' makes # `=====>-<=>---'. lhs_dom.intersection(rhs_dom.inversion) else # NOTE: Narrowing `===>---------' by `!= ------|------' makes # `===>---------'. lhs_dom end end
_narrow_nil_by_eq(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2911 def _narrow_nil_by_eq(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end
_narrow_nil_by_gt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3055 def _narrow_nil_by_gt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end
_narrow_nil_by_lt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3011 def _narrow_nil_by_lt(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end
_narrow_nil_by_ne(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2962 def _narrow_nil_by_ne(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, narrowing NilValueDomain by anything makes no effect to the # target value-domain. lhs_dom end
_narrow_unlimited_by_eq(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2918 def _narrow_unlimited_by_eq(lhs_dom, rhs_dom = self) rhs_dom end
_narrow_unlimited_by_gt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3062 def _narrow_unlimited_by_gt(lhs_dom, rhs_dom = self) ValueDomain.greater_than(rhs_dom.value, logical_shr?) end
_narrow_unlimited_by_lt(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3018 def _narrow_unlimited_by_lt(lhs_dom, rhs_dom = self) ValueDomain.less_than(rhs_dom.value, logical_shr?) end
_narrow_unlimited_by_ne(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2969 def _narrow_unlimited_by_ne(lhs_dom, rhs_dom = self) rhs_dom.inversion end
_not_equal_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3529 def _not_equal_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value != rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_false(logical_shr?) end end
_not_equal_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3545 def _not_equal_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value > rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end
_not_equal_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3537 def _not_equal_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value < rhs_dom.value ValueDomain.of_true(logical_shr?) else ValueDomain.of_unlimited(logical_shr?) end end
_not_equal_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3517 def _not_equal_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes NilValueDomain#_not_equal_equal_to. rhs_dom != lhs_dom end
_not_equal_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3523 def _not_equal_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS != RHS' equals to `RHS != LHS'. # This method invokes UnlimitedValueDomain#_not_equal_equal_to. rhs_dom != lhs_dom end
_or_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3312 def _or_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value | rhs_dom.value, logical_shr?) end
_or_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3320 def _or_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value | rhs_dom.value, logical_shr?) end
_or_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3316 def _or_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value | rhs_dom.value, logical_shr?) end
_or_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3300 def _or_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes NilValueDomain#_or_equal_to. rhs_dom | lhs_dom end
_or_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3306 def _or_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS | RHS' equals to `RHS | LHS'. # This method invokes UnlimitedValueDomain#_or_equal_to. rhs_dom | lhs_dom end
_shl_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3373 def _shl_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shl_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3383 def _shl_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shl_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3378 def _shl_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(left_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shl_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3356 def _shl_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end
_shl_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3363 def _shl_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end
_shr_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3409 def _shr_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shr_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3419 def _shr_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shr_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3414 def _shr_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(right_shift(lhs_dom.value, rhs_dom.value), logical_shr?) end
_shr_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3392 def _shr_nil(lhs_dom, rhs_dom = self) # NOTE: NilValueDomain contains no values. # So, any arithmetic operation with NilValueDomain makes # NilValueDomain. lhs_dom end
_shr_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3399 def _shr_unlimited(lhs_dom, rhs_dom = self) # NOTE: UnlimitedValueDomain contains everything. # So, this arithmetic operation with UnlimitedValueDomain makes # UnlimitedValueDomain because of the bit-overflow. # NOTE: NaN is a subclass of UnlimitedValueDomain. # Arithmetic operation with UnlimitedValueDomain should make # UnlimitedValueDomain, and with NaN should make NaN. lhs_dom end
_union_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3705 def _union_equal_to(lhs_dom, rhs_dom = self) if lhs_dom.value == rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end
_union_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3721 def _union_greater_than(lhs_dom, rhs_dom = self) if lhs_dom.min_value <= rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end
_union_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3713 def _union_less_than(lhs_dom, rhs_dom = self) if lhs_dom.max_value >= rhs_dom.value lhs_dom else ValueDomain._create_union(lhs_dom, rhs_dom) end end
_union_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3693 def _union_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes NilValueDomain#_union_equal_to. rhs_dom.union(lhs_dom) end
_union_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3699 def _union_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS union RHS' equals to `RHS union LHS'. # This method invokes UnlimitedValueDomain#_union_equal_to. rhs_dom.union(lhs_dom) end
_xor_equal_to(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3340 def _xor_equal_to(lhs_dom, rhs_dom = self) ValueDomain.equal_to(lhs_dom.value ^ rhs_dom.value, logical_shr?) end
_xor_greater_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3348 def _xor_greater_than(lhs_dom, rhs_dom = self) ValueDomain.greater_than(lhs_dom.value ^ rhs_dom.value, logical_shr?) end
_xor_less_than(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3344 def _xor_less_than(lhs_dom, rhs_dom = self) ValueDomain.less_than(lhs_dom.value ^ rhs_dom.value, logical_shr?) end
_xor_nil(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3328 def _xor_nil(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes NilValueDomain#_xor_equal_to. rhs_dom ^ lhs_dom end
_xor_unlimited(lhs_dom, rhs_dom = self)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3334 def _xor_unlimited(lhs_dom, rhs_dom = self) # NOTE: `LHS ^ RHS' equals to `RHS ^ LHS'. # This method invokes UnlimitedValueDomain#_xor_equal_to. rhs_dom ^ lhs_dom end
ambiguous?()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2842 def ambiguous? false end
coerce_to_integer()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3729 def coerce_to_integer if @value.integer? self else ValueDomain.equal_to(@value.to_i, logical_shr?) end end
coerce_to_real()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3737 def coerce_to_real if @value.real? self else ValueDomain.equal_to(@value.to_f, logical_shr?) end end
complexity()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3771 def complexity 1 end
contain_value_domain?(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2846 def contain_value_domain?(rhs_dom) rhs_dom._contain_equal_to?(self) end
each_sample() { |value| ... }
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3753 def each_sample if block_given? yield(@value) self else to_enum(:each_sample) end end
empty?()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2830 def empty? false end
intersect?(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2878 def intersect?(rhs_dom) rhs_dom._intersect_equal_to?(self) end
intersection(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3649 def intersection(rhs_dom) rhs_dom._intersection_equal_to(self) end
inversion()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3103 def inversion ValueDomain.less_than(@value, logical_shr?).union( ValueDomain.greater_than(@value, logical_shr?)) end
logical_and(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3553 def logical_and(rhs_dom) rhs_dom._logical_and_equal_to(self) end
logical_or(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3601 def logical_or(rhs_dom) rhs_dom._logical_or_equal_to(self) end
max_value()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3749 def max_value @value end
min_value()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3745 def min_value @value end
nan?()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2834 def nan? false end
to_defined_domain()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3762 def to_defined_domain self end
to_s()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3766 def to_s "(== #{@value})" end
undefined?()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 2838 def undefined? false end
union(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3689 def union(rhs_dom) rhs_dom._union_equal_to(self) end
|(rhs_dom)
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3296 def |(rhs_dom) rhs_dom.coerce_to_integer._or_equal_to(coerce_to_integer) end
~()
click to toggle source
# File lib/adlint/cc1/domain.rb, line 3108 def ~ ValueDomain.equal_to(~coerce_to_integer.value, logical_shr?) end