Class: Roby::EventConstraints::UnboundTaskPredicate::Never

Inherits:
Roby::EventConstraints::UnboundTaskPredicate show all
Defined in:
lib/roby/event_constraints.rb

Overview

Representation of UnboundPredicateSupport#never

See documentation from UnboundPredicateSupport

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Roby::EventConstraints::UnboundTaskPredicate

#and, #compile, #evaluate, #negate, #or, #pretty_print, #to_unbound_task_predicate

Constructor Details

#initialize(pred) ⇒ Never

Returns a new instance of Never.



429
430
431
432
433
434
435
# File 'lib/roby/event_constraints.rb', line 429

def initialize(pred)
    if !pred.kind_of?(UnboundTaskPredicate::SingleEvent)
        raise ArgumentError, "can only create a Never predicate on top of a SingleEvent"
    end

    @predicate = pred
end

Instance Attribute Details

#predicateObject (readonly)

Returns the value of attribute predicate.



428
429
430
# File 'lib/roby/event_constraints.rb', line 428

def predicate
  @predicate
end

Instance Method Details

#==(pred) ⇒ Object



437
# File 'lib/roby/event_constraints.rb', line 437

def ==(pred); pred.kind_of?(Never) && pred.predicate == predicate end

#codeObject



462
463
464
# File 'lib/roby/event_constraints.rb', line 462

def code
    "(!task_#{predicate.event_name} && task_event_#{predicate.event_name}.unreachable?)"
end

#explain_false(task) ⇒ Object



443
444
445
446
447
448
449
450
451
452
# File 'lib/roby/event_constraints.rb', line 443

def explain_false(task)
    return if evaluate(task)
    if predicate.evaluate(task)
        predicate.explain_true(task)
    elsif !predicate.static?(task)
        explanation = predicate.explain_false(task)
        explanation.value = true
        explanation
    end
end

#explain_static(task) ⇒ Object



453
454
455
456
457
458
459
# File 'lib/roby/event_constraints.rb', line 453

def explain_static(task)
    if predicate.evaluate(task)
        predicate.explain_true(task)
    else
        predicate.explain_static(task)
    end
end

#explain_true(task) ⇒ Object



439
440
441
442
# File 'lib/roby/event_constraints.rb', line 439

def explain_true(task)
    return if !evaluate(task)
    predicate.explain_static(task)
end

#required_eventsObject



461
# File 'lib/roby/event_constraints.rb', line 461

def required_events; predicate.required_events end

#static?(task) ⇒ Boolean

Returns:

  • (Boolean)


465
466
467
# File 'lib/roby/event_constraints.rb', line 465

def static?(task)
    evaluate(task) || predicate.static?(task)
end

#to_sObject



468
# File 'lib/roby/event_constraints.rb', line 468

def to_s; "never(#{predicate})" end