Class: LemonGraph::Digraph::Arc
- Defined in:
- ext/lemongraph/lemongraph.cc,
ext/lemongraph/lemongraph.cc
Overview
Arc of a LemonGraph::Digraph, from a source Node to a target Node.
Instance Attribute Summary
Attributes inherited from GraphItem
Instance Method Summary collapse
-
#erase ⇒ self
Erases the arc from the graph it belongs to.
-
#reverse! ⇒ self
Reverses the direction of the given arc.
-
#source ⇒ Node
Returns the source node of the arc.
-
#source=(node) ⇒ self
Changes the source node of the arc a to node.
-
#split ⇒ Node
Splits the arc.
-
#target ⇒ Node
Returns the target node of the arc.
-
#target=(node) ⇒ self
Changes the target node of the arc a to node.
-
#valid? ⇒ Boolean
Test if the arc is valid, i.e.
Methods inherited from GraphItem
Instance Method Details
#erase ⇒ self
Erases the arc from the graph it belongs to.
56 57 58 59 60 |
# File 'ext/lemongraph/digraph_arc.cc', line 56 VALUE lemongraph_diarc_erase(VALUE self) { lemongraph_digraph_rb2ref(rb_iv_get(self, "@graph")).erase(lemongraph_rbdiarc2diarc(self)); return self; } |
#reverse! ⇒ self
Reverses the direction of the given arc.
133 134 135 136 137 |
# File 'ext/lemongraph/digraph_arc.cc', line 133 VALUE lemongraph_diarc_reverse(VALUE self) { lemongraph_digraph_rb2ref(rb_iv_get(self, "@graph")).reverseArc(lemongraph_rbdiarc2diarc(self)); return self; } |
#source ⇒ Node
Returns the source node of the arc.
111 112 113 114 115 116 |
# File 'ext/lemongraph/digraph_arc.cc', line 111 VALUE lemongraph_diarc_source(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListDigraph::Node n = lemongraph_digraph_rb2ref(g).source(lemongraph_rbdiarc2diarc(self)); return lemongraph_make_dinode(n, g); } |
#source=(node) ⇒ self
Changes the source node of the arc a to node.
94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'ext/lemongraph/digraph_arc.cc', line 94 VALUE lemongraph_diarc_change_source(VALUE self, VALUE node) { if (rb_class_of(node) != c_DiNode) { rb_raise(rb_eTypeError, "expecting a %" PRIsVALUE ", not a %s", rb_class_name(c_DiNode), rb_obj_classname(node)); } VALUE graph = rb_iv_get(self, "@graph"); if (rb_iv_get(node, "@graph") != graph) rb_raise(rb_eRuntimeError, "arc and node not from the sams graph"); lemongraph_digraph_rb2ref(graph).changeSource(lemongraph_rbdiarc2diarc(self), lemongraph_rbdinode2dinode(node)); return self; } |
#split ⇒ Node
Splits the arc. First, a new node v is added to the graph, then the target node of the original arc is set to v. Finally, an arc from v to the original target is added.
146 147 148 149 150 151 |
# File 'ext/lemongraph/digraph_arc.cc', line 146 VALUE lemongraph_diarc_split(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListDigraph::Node n = lemongraph_digraph_rb2ref(g).split(lemongraph_rbdiarc2diarc(self)); return lemongraph_make_dinode(n, g); } |
#target ⇒ Node
Returns the target node of the arc.
122 123 124 125 126 127 |
# File 'ext/lemongraph/digraph_arc.cc', line 122 VALUE lemongraph_diarc_target(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListDigraph::Node n = lemongraph_digraph_rb2ref(g).target(lemongraph_rbdiarc2diarc(self)); return lemongraph_make_dinode(n, g); } |
#target=(node) ⇒ self
Changes the target node of the arc a to node.
76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'ext/lemongraph/digraph_arc.cc', line 76 VALUE lemongraph_diarc_change_target(VALUE self, VALUE node) { if (rb_class_of(node) != c_DiNode) { rb_raise(rb_eTypeError, "expecting a %" PRIsVALUE ", not a %s", rb_class_name(c_DiNode), rb_obj_classname(node)); } VALUE graph = rb_iv_get(self, "@graph"); if (rb_iv_get(node, "@graph") != graph) rb_raise(rb_eRuntimeError, "arc and node not from the sams graph"); lemongraph_digraph_rb2ref(graph).changeTarget(lemongraph_rbdiarc2diarc(self), lemongraph_rbdinode2dinode(node)); return self; } |
#valid? ⇒ Boolean
Test if the arc is valid, i.e. it is a real arc of the graph it belons to.
66 67 68 69 |
# File 'ext/lemongraph/digraph_arc.cc', line 66 VALUE lemongraph_diarc_is_valid(VALUE self) { return lemongraph_digraph_rb2ref(rb_iv_get(self, "@graph")).valid(lemongraph_rbdiarc2diarc(self)) ? Qtrue : Qfalse; } |