class Roby::EventConstraints::UnboundTaskPredicate::BinaryCommutativePredicate
Representation of a binary combination of predicates that is commutative. It is used to simplify expressions, especially for explanations.
Attributes
predicates[R]
Public Class Methods
new(left, right)
click to toggle source
# File lib/roby/event_constraints.rb, line 476 def initialize(left, right) @predicates = [left, right] end
Public Instance Methods
==(pred)
click to toggle source
# File lib/roby/event_constraints.rb, line 482 def ==(pred) pred.kind_of?(self.class) && ((predicates[0] == pred.predicates[0] && predicates[1] == pred.predicates[1]) || (predicates[0] == pred.predicates[1] && predicates[1] == pred.predicates[0])) end
each_atomic_predicate() { |predicates| ... }
click to toggle source
# File lib/roby/event_constraints.rb, line 530 def each_atomic_predicate(&block) 2.times do |i| if predicates[i].kind_of?(self.class) predicates[i].each_atomic_predicate(&block) else yield(predicates[i]) end end end
explain_false(task)
click to toggle source
# File lib/roby/event_constraints.rb, line 499 def explain_false(task) return if evaluate(task) reason0 = predicates[0].explain_false(task) reason1 = predicates[1].explain_false(task) if reason0 && reason1 Explanation.new(false, self, [reason0, reason1]) else reason0 || reason1 end end
explain_static(task)
click to toggle source
# File lib/roby/event_constraints.rb, line 510 def explain_static(task) return if !static?(task) reason0 = predicates[0].explain_static(task) reason1 = predicates[1].explain_static(task) if reason0 && reason1 Explanation.new(nil, self, [reason0, reason1]) else reason0 || reason1 end end
explain_true(task)
click to toggle source
# File lib/roby/event_constraints.rb, line 488 def explain_true(task) return if !evaluate(task) reason0 = predicates[0].explain_true(task) reason1 = predicates[1].explain_true(task) if reason0 && reason1 Explanation.new(true, self, [reason0, reason1]) else reason0 || reason1 end end
has_atomic_predicate?(pred)
click to toggle source
# File lib/roby/event_constraints.rb, line 522 def has_atomic_predicate?(pred) pred = pred.to_unbound_task_predicate each_atomic_predicate do |p| return(true) if p == pred end false end
required_events()
click to toggle source
# File lib/roby/event_constraints.rb, line 480 def required_events; predicates[0].required_events | predicates[1].required_events end