Class: LemonGraph::Graph::Edge
- Inherits:
-
LemonGraph::GraphItem
- Object
- LemonGraph::GraphItem
- LemonGraph::Graph::Edge
- Defined in:
- ext/lemongraph/graph_edge.cc,
ext/lemongraph/lemongraph.cc
Overview
Edge of a LemonGraph::Graph, between two Nodes u and v.
Instance Attribute Summary
Attributes inherited from LemonGraph::GraphItem
Instance Method Summary collapse
-
#arc1 ⇒ Arc
Returns the Arc that represents the edge and whose direction is the same as the inherent orientation of self (from u to v).
-
#arc2 ⇒ Arc
Returns the Arc that represents the edge and whose direction is the opposite as the inherent orientation of self (so, from v to u).
-
#erase ⇒ self
Erases the edge from the graph it belongs to.
-
#u ⇒ Node
Returns the first node of the edge.
-
#u=(node) ⇒ node
Changes the first node of the edge to node.
-
#v ⇒ Node
Returns the second node of the edge.
-
#v=(node) ⇒ node
Changes the second node of the edge to node.
-
#valid? ⇒ Boolean
Test if the edge is valid, i.e.
Methods inherited from LemonGraph::GraphItem
Instance Method Details
#arc1 ⇒ Arc
Returns the Arc that represents the edge and whose direction is the same as the inherent orientation of self (from u to v).
134 135 136 137 138 139 |
# File 'ext/lemongraph/graph_edge.cc', line 134 VALUE lemongraph_unedge_arc1(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListGraph::Arc a = lemongraph_graph_rb2ref(g).direct(lemongraph_rbunedge2unedge(self), true); return lemongraph_make_unarc(a, g); } |
#arc2 ⇒ Arc
Returns the Arc that represents the edge and whose direction is the opposite as the inherent orientation of self (so, from v to u).
146 147 148 149 150 151 |
# File 'ext/lemongraph/graph_edge.cc', line 146 VALUE lemongraph_unedge_arc2(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListGraph::Arc a = lemongraph_graph_rb2ref(g).direct(lemongraph_rbunedge2unedge(self), false); return lemongraph_make_unarc(a, g); } |
#erase ⇒ self
Erases the edge from the graph it belongs to.
56 57 58 59 60 |
# File 'ext/lemongraph/graph_edge.cc', line 56 VALUE lemongraph_unedge_erase(VALUE self) { lemongraph_graph_rb2ref(rb_iv_get(self, "@graph")).erase(lemongraph_rbunedge2unedge(self)); return self; } |
#u ⇒ Node
Returns the first node of the edge.
75 76 77 78 79 80 |
# File 'ext/lemongraph/graph_edge.cc', line 75 VALUE lemongraph_unedge_u(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListGraph::Node n = lemongraph_graph_rb2ref(g).u(lemongraph_rbunedge2unedge(self)); return lemongraph_make_unnode(n, g); } |
#u=(node) ⇒ node
Changes the first node of the edge to node.
98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'ext/lemongraph/graph_edge.cc', line 98 VALUE lemongraph_unedge_change_u(VALUE self, VALUE node) { if (rb_class_of(node) != c_UnNode) { rb_raise(rb_eTypeError, "expecting a %" PRIsVALUE ", not a %s", rb_class_name(c_UnNode), rb_obj_classname(node)); } VALUE graph = rb_iv_get(self, "@graph"); if (rb_iv_get(node, "@graph") != graph) rb_raise(rb_eRuntimeError, "edge and node not from the sams graph"); lemongraph_graph_rb2ref(graph).changeU(lemongraph_rbunedge2unedge(self), lemongraph_rbunnode2unnode(node)); return self; } |
#v ⇒ Node
Returns the second node of the edge.
86 87 88 89 90 91 |
# File 'ext/lemongraph/graph_edge.cc', line 86 VALUE lemongraph_unedge_v(VALUE self) { VALUE g = rb_iv_get(self, "@graph"); lemon::ListGraph::Node n = lemongraph_graph_rb2ref(g).v(lemongraph_rbunedge2unedge(self)); return lemongraph_make_unnode(n, g); } |
#v=(node) ⇒ node
Changes the second node of the edge to node.
116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'ext/lemongraph/graph_edge.cc', line 116 VALUE lemongraph_unedge_change_v(VALUE self, VALUE node) { if (rb_class_of(node) != c_UnNode) { rb_raise(rb_eTypeError, "expecting a %" PRIsVALUE ", not a %s", rb_class_name(c_UnNode), rb_obj_classname(node)); } VALUE graph = rb_iv_get(self, "@graph"); if (rb_iv_get(node, "@graph") != graph) rb_raise(rb_eRuntimeError, "edge and node not from the sams graph"); lemongraph_graph_rb2ref(graph).changeV(lemongraph_rbunedge2unedge(self), lemongraph_rbunnode2unnode(node)); return self; } |
#valid? ⇒ Boolean
Test if the edge is valid, i.e. it is a real edge of the graph it belons to.
66 67 68 69 |
# File 'ext/lemongraph/graph_edge.cc', line 66 VALUE lemongraph_unedge_is_valid(VALUE self) { return lemongraph_graph_rb2ref(rb_iv_get(self, "@graph")).valid(lemongraph_rbunedge2unedge(self)) ? Qtrue : Qfalse; } |