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