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:



906
907
908
# File 'lib/roby/task_structure/dependency.rb', line 906

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



854
855
856
# File 'lib/roby/task_structure/dependency.rb', line 854

def explicit_fullfilled_model
    @fullfilled_model
end

#explicit_fullfilled_model?Boolean

True if a fullfilled model has been explicitly set on self

Returns:

  • (Boolean)


846
847
848
# File 'lib/roby/task_structure/dependency.rb', line 846

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)



898
899
900
# File 'lib/roby/task_structure/dependency.rb', line 898

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:



863
864
865
866
867
868
869
870
871
# File 'lib/roby/task_structure/dependency.rb', line 863

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:



877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
# File 'lib/roby/task_structure/dependency.rb', line 877

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