Module: Roby::Relations

Defined in:
lib/roby/relations.rb,
lib/roby/relations/graph.rb,
lib/roby/relations/space.rb,
lib/roby/relations/models/graph.rb,
lib/roby/relations/fork_merge_visitor.rb,
lib/roby/relations/task_relation_graph.rb,
lib/roby/relations/event_relation_graph.rb,
lib/roby/relations/directed_relation_support.rb,
lib/roby/relations/models/task_relation_graph.rb,
lib/roby/relations/incremental_transitive_closure.rb,
lib/roby/relations/models/directed_relation_support.rb,
lib/roby/relations/bidirectional_directed_adjacency_graph.rb,
lib/roby/droby/enable.rb

Defined Under Namespace

Modules: DirectedRelationSupport, Models Classes: BidirectionalDirectedAdjacencyGraph, CycleFoundError, EventRelationGraph, ForkMergeVisitor, Graph, IncrementalTransitiveClosure, IncrementalTransitiveClosureVisitor, Space, TaskRelationGraph

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.all_relationsObject (readonly)

Returns the value of attribute all_relations.



23
24
25
# File 'lib/roby/relations.rb', line 23

def all_relations
  @all_relations
end

Class Method Details

.add_relation(rel) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/roby/relations.rb', line 36

def self.add_relation(rel)
    sorted_relations = []

    # Remove from the set of relations the ones that are not leafs
    remaining = self.all_relations
    remaining << rel
    target_size = remaining.size

    while sorted_relations.size != target_size
        queue, remaining = remaining.partition { |g| !g.subsets.intersect?(remaining.to_set) }
        sorted_relations.concat(queue)
    end

    @all_relations = sorted_relations
end

.each_graph_topologically(graphs) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/roby/relations.rb', line 27

def self.each_graph_topologically(graphs)
    rel_to_graph = Hash[*graphs.flat_map { |g| [g.class, g] }]
    all_relations.each do |rel|
        if g = rel_to_graph[rel]
            yield(g)
        end
    end
end

.remove_relation(rel) ⇒ Object



52
53
54
# File 'lib/roby/relations.rb', line 52

def self.remove_relation(rel)
    all_relations.delete(rel)
end