Module: Roby::TaskStructure::Dependency::ModelExtension

Defined in:
lib/roby/task_structure/dependency.rb

Instance Method Summary collapse

Instance Method Details

#each_fullfilled_model {|model| ... } ⇒ void

This method returns an undefined value.

Enumerates the models that all instances of this task model fullfill

Yield Parameters:



834
835
836
# File 'lib/roby/task_structure/dependency.rb', line 834

def each_fullfilled_model(&block)
    fullfilled_model.each(&block)
end

#explicit_fullfilled_modelnil, Array<Models::Task,TaskService>

Returns an explicitly set #fullfilled_model

Returns:

  • (nil, Array<Models::Task,TaskService>)

    either nil if no explicit model has been set, or the list of models it must fullfill



785
# File 'lib/roby/task_structure/dependency.rb', line 785

def explicit_fullfilled_model; @fullfilled_model end

#explicit_fullfilled_model?Boolean

True if a fullfilled model has been explicitly set on self

Returns:

  • (Boolean)


779
# File 'lib/roby/task_structure/dependency.rb', line 779

def explicit_fullfilled_model?; !!@fullfilled_model end

#fullfilled_modelObject

Returns the model that all instances of this taks model fullfill

(see Dependency::Extension#fullfilled_model)



826
827
828
# File 'lib/roby/task_structure/dependency.rb', line 826

def fullfilled_model
    explicit_fullfilled_model || implicit_fullfilled_model
end

#fullfilled_model=(models) ⇒ Object

Specifies the models that all instances of this task must fullfill

This is usually used to under-constraint the model instances

Parameters:



792
793
794
795
796
797
798
799
800
# File 'lib/roby/task_structure/dependency.rb', line 792

def fullfilled_model=(models)
    if !models.respond_to?(:to_ary)
        raise ArgumentError, "expected an array, got #{models}"
    elsif !models.all? { |t| t.kind_of?(Roby::Models::TaskServiceModel) || (t.respond_to?(:<=) && (t <= Roby::Task)) }
        raise ArgumentError, "expected a submodel of TaskService, got #{models}"
    end

    @fullfilled_model = models
end

#implicit_fullfilled_modelArray<Models::Task,TaskService>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns the list of models fullfilled by this task.

Returns:



806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
# File 'lib/roby/task_structure/dependency.rb', line 806

def implicit_fullfilled_model
    if !@implicit_fullfilled_model
        @implicit_fullfilled_model = Array.new
        ancestors.each do |m|
            next if m.singleton_class?
            if m.kind_of?(Class) || (m.kind_of?(Roby::Models::TaskServiceModel) && m != Roby::TaskService)
                @implicit_fullfilled_model << m
            end

            if m == Roby::Task
                break
            end
        end
    end
    @implicit_fullfilled_model
end