Class: Roby::EventConstraints::UnboundTaskPredicate::NotFollowedBy
- Inherits:
-
UnboundTaskPredicate::BinaryCommutativePredicate
- Object
- UnboundTaskPredicate::BinaryCommutativePredicate
- Roby::EventConstraints::UnboundTaskPredicate::NotFollowedBy
- Defined in:
- lib/roby/event_constraints.rb
Overview
Representation of UnboundPredicateSupport#not_followed_by
See documentation from UnboundTaskPredicate
Instance Method Summary collapse
- #code ⇒ Object
- #explain_false(task) ⇒ Object
- #explain_static(task) ⇒ Object
- #explain_true(task) ⇒ Object
- #static?(task) ⇒ Boolean
- #to_s ⇒ Object
Instance Method Details
#code ⇒ Object
880 881 882 883 884 885 886 887 |
# File 'lib/roby/event_constraints.rb', line 880 def code this_event = predicates[0].event_name other_event = predicates[1].event_name "(task_#{this_event} && ("\ "!task_#{other_event} || task_#{other_event}.time <"\ "task_#{this_event}.time"\ "))" end |
#explain_false(task) ⇒ Object
825 826 827 828 829 830 831 832 833 834 835 |
# File 'lib/roby/event_constraints.rb', line 825 def explain_false(task) return if evaluate(task) this_generator = task.event(predicates[0].event_name) if !this_generator.last Explanation.new(false, self, [this_generator]) else other_generator = task.event(predicates[1].event_name) Explanation.new(false, self, [other_generator.last]) end end |
#explain_static(task) ⇒ Object
837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 |
# File 'lib/roby/event_constraints.rb', line 837 def explain_static(task) return unless static?(task) if predicates[0].static?(task) this_generator = task.event(predicates[0].event_name) if !predicates[0].evaluate(task) || !evaluate(task) Explanation.new(nil, self, [this_generator]) else other_generator = task.event(predicates[1].event_name) Explanation.new(nil, self, [this_generator, other_generator]) end else other_generator = task.event(predicates[1].event_name) Explanation.new(nil, self, [other_generator]) end end |
#explain_true(task) ⇒ Object
816 817 818 819 820 821 822 823 |
# File 'lib/roby/event_constraints.rb', line 816 def explain_true(task) return unless evaluate(task) this_event = task.event(predicates[0].event_name).last other_generator = task.event(predicates[1].event_name) other_generator = other_generator.last || other_generator Explanation.new(true, self, [this_event, other_generator]) end |
#static?(task) ⇒ Boolean
854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 |
# File 'lib/roby/event_constraints.rb', line 854 def static?(task) event0 = task.event(predicates[0].event_name) event1 = task.event(predicates[1].event_name) if event0.unreachable? # event0 is unreachable, predicate0 is static # Stays true if predicates0 is false as event0 can't change # that anymore return true unless predicates[0].evaluate(task) # Stays false if it is false, since event0 can't be emitted return true unless evaluate(task) # Stays whatever it is if predicate1 is static as well true if predicates[1].static?(task) elsif event1.unreachable? # Stay true if it is true as event1 can't emit # # However, if its current value is false, (event0 is # followed by event1), it may change as event0 can still be # emitted evaluate(task) end end |
#to_s ⇒ Object
889 890 891 892 |
# File 'lib/roby/event_constraints.rb', line 889 def to_s "#{predicates[0].event_name}"\ ".not_followed_by(#{predicates[1].event_name})" end |