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:



877
878
879
# File 'lib/roby/task_structure/dependency.rb', line 877

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



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

def explicit_fullfilled_model
    @fullfilled_model
end

#explicit_fullfilled_model?Boolean

True if a fullfilled model has been explicitly set on self

Returns:

  • (Boolean)


817
818
819
# File 'lib/roby/task_structure/dependency.rb', line 817

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)



869
870
871
# File 'lib/roby/task_structure/dependency.rb', line 869

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:



834
835
836
837
838
839
840
841
842
# File 'lib/roby/task_structure/dependency.rb', line 834

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:



848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
# File 'lib/roby/task_structure/dependency.rb', line 848

def implicit_fullfilled_model
    unless @implicit_fullfilled_model
        @implicit_fullfilled_model = []
        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