lemongraph 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.yardopts +8 -0
- data/LICENSE +674 -0
- data/README.md +6 -0
- data/ext/lemon-1.3.1/AUTHORS +26 -0
- data/ext/lemon-1.3.1/CMakeLists.txt +371 -0
- data/ext/lemon-1.3.1/INSTALL +167 -0
- data/ext/lemon-1.3.1/LICENSE +32 -0
- data/ext/lemon-1.3.1/NEWS +337 -0
- data/ext/lemon-1.3.1/README +50 -0
- data/ext/lemon-1.3.1/cmake/FindCOIN.cmake +110 -0
- data/ext/lemon-1.3.1/cmake/FindGLPK.cmake +55 -0
- data/ext/lemon-1.3.1/cmake/FindGhostscript.cmake +10 -0
- data/ext/lemon-1.3.1/cmake/FindILOG.cmake +102 -0
- data/ext/lemon-1.3.1/cmake/FindSOPLEX.cmake +23 -0
- data/ext/lemon-1.3.1/cmake/LEMONConfig.cmake.in +13 -0
- data/ext/lemon-1.3.1/cmake/nsis/lemon.ico +0 -0
- data/ext/lemon-1.3.1/cmake/nsis/uninstall.ico +0 -0
- data/ext/lemon-1.3.1/cmake/version.cmake +1 -0
- data/ext/lemon-1.3.1/cmake/version.cmake.in +1 -0
- data/ext/lemon-1.3.1/contrib/CMakeLists.txt +19 -0
- data/ext/lemon-1.3.1/lemon/CMakeLists.txt +91 -0
- data/ext/lemon-1.3.1/lemon/adaptors.h +3638 -0
- data/ext/lemon-1.3.1/lemon/arg_parser.cc +474 -0
- data/ext/lemon-1.3.1/lemon/arg_parser.h +440 -0
- data/ext/lemon-1.3.1/lemon/assert.h +214 -0
- data/ext/lemon-1.3.1/lemon/base.cc +37 -0
- data/ext/lemon-1.3.1/lemon/bellman_ford.h +1116 -0
- data/ext/lemon-1.3.1/lemon/bfs.h +1754 -0
- data/ext/lemon-1.3.1/lemon/bin_heap.h +347 -0
- data/ext/lemon-1.3.1/lemon/binomial_heap.h +445 -0
- data/ext/lemon-1.3.1/lemon/bits/alteration_notifier.h +472 -0
- data/ext/lemon-1.3.1/lemon/bits/array_map.h +351 -0
- data/ext/lemon-1.3.1/lemon/bits/bezier.h +174 -0
- data/ext/lemon-1.3.1/lemon/bits/default_map.h +182 -0
- data/ext/lemon-1.3.1/lemon/bits/edge_set_extender.h +627 -0
- data/ext/lemon-1.3.1/lemon/bits/enable_if.h +131 -0
- data/ext/lemon-1.3.1/lemon/bits/graph_adaptor_extender.h +401 -0
- data/ext/lemon-1.3.1/lemon/bits/graph_extender.h +1332 -0
- data/ext/lemon-1.3.1/lemon/bits/lock.h +65 -0
- data/ext/lemon-1.3.1/lemon/bits/map_extender.h +332 -0
- data/ext/lemon-1.3.1/lemon/bits/path_dump.h +177 -0
- data/ext/lemon-1.3.1/lemon/bits/solver_bits.h +194 -0
- data/ext/lemon-1.3.1/lemon/bits/traits.h +388 -0
- data/ext/lemon-1.3.1/lemon/bits/variant.h +494 -0
- data/ext/lemon-1.3.1/lemon/bits/vector_map.h +244 -0
- data/ext/lemon-1.3.1/lemon/bits/windows.cc +166 -0
- data/ext/lemon-1.3.1/lemon/bits/windows.h +44 -0
- data/ext/lemon-1.3.1/lemon/bucket_heap.h +594 -0
- data/ext/lemon-1.3.1/lemon/capacity_scaling.h +1014 -0
- data/ext/lemon-1.3.1/lemon/cbc.cc +460 -0
- data/ext/lemon-1.3.1/lemon/cbc.h +129 -0
- data/ext/lemon-1.3.1/lemon/christofides_tsp.h +254 -0
- data/ext/lemon-1.3.1/lemon/circulation.h +807 -0
- data/ext/lemon-1.3.1/lemon/clp.cc +464 -0
- data/ext/lemon-1.3.1/lemon/clp.h +164 -0
- data/ext/lemon-1.3.1/lemon/color.cc +44 -0
- data/ext/lemon-1.3.1/lemon/color.h +204 -0
- data/ext/lemon-1.3.1/lemon/concept_check.h +77 -0
- data/ext/lemon-1.3.1/lemon/concepts/bpgraph.h +1029 -0
- data/ext/lemon-1.3.1/lemon/concepts/digraph.h +491 -0
- data/ext/lemon-1.3.1/lemon/concepts/graph.h +788 -0
- data/ext/lemon-1.3.1/lemon/concepts/graph_components.h +2134 -0
- data/ext/lemon-1.3.1/lemon/concepts/heap.h +324 -0
- data/ext/lemon-1.3.1/lemon/concepts/maps.h +223 -0
- data/ext/lemon-1.3.1/lemon/concepts/path.h +312 -0
- data/ext/lemon-1.3.1/lemon/config.h.in +22 -0
- data/ext/lemon-1.3.1/lemon/connectivity.h +1688 -0
- data/ext/lemon-1.3.1/lemon/core.h +2506 -0
- data/ext/lemon-1.3.1/lemon/cost_scaling.h +1607 -0
- data/ext/lemon-1.3.1/lemon/counter.h +249 -0
- data/ext/lemon-1.3.1/lemon/cplex.cc +994 -0
- data/ext/lemon-1.3.1/lemon/cplex.h +292 -0
- data/ext/lemon-1.3.1/lemon/cycle_canceling.h +1230 -0
- data/ext/lemon-1.3.1/lemon/dfs.h +1637 -0
- data/ext/lemon-1.3.1/lemon/dheap.h +352 -0
- data/ext/lemon-1.3.1/lemon/dijkstra.h +1303 -0
- data/ext/lemon-1.3.1/lemon/dim2.h +726 -0
- data/ext/lemon-1.3.1/lemon/dimacs.h +448 -0
- data/ext/lemon-1.3.1/lemon/edge_set.h +1420 -0
- data/ext/lemon-1.3.1/lemon/edmonds_karp.h +556 -0
- data/ext/lemon-1.3.1/lemon/elevator.h +982 -0
- data/ext/lemon-1.3.1/lemon/error.h +276 -0
- data/ext/lemon-1.3.1/lemon/euler.h +287 -0
- data/ext/lemon-1.3.1/lemon/fib_heap.h +475 -0
- data/ext/lemon-1.3.1/lemon/fractional_matching.h +2139 -0
- data/ext/lemon-1.3.1/lemon/full_graph.h +1082 -0
- data/ext/lemon-1.3.1/lemon/glpk.cc +1012 -0
- data/ext/lemon-1.3.1/lemon/glpk.h +263 -0
- data/ext/lemon-1.3.1/lemon/gomory_hu.h +568 -0
- data/ext/lemon-1.3.1/lemon/graph_to_eps.h +1186 -0
- data/ext/lemon-1.3.1/lemon/greedy_tsp.h +251 -0
- data/ext/lemon-1.3.1/lemon/grid_graph.h +699 -0
- data/ext/lemon-1.3.1/lemon/grosso_locatelli_pullan_mc.h +840 -0
- data/ext/lemon-1.3.1/lemon/hao_orlin.h +1015 -0
- data/ext/lemon-1.3.1/lemon/hartmann_orlin_mmc.h +654 -0
- data/ext/lemon-1.3.1/lemon/howard_mmc.h +651 -0
- data/ext/lemon-1.3.1/lemon/hypercube_graph.h +459 -0
- data/ext/lemon-1.3.1/lemon/insertion_tsp.h +533 -0
- data/ext/lemon-1.3.1/lemon/karp_mmc.h +590 -0
- data/ext/lemon-1.3.1/lemon/kruskal.h +324 -0
- data/ext/lemon-1.3.1/lemon/lemon.pc.in +10 -0
- data/ext/lemon-1.3.1/lemon/lgf_reader.h +3854 -0
- data/ext/lemon-1.3.1/lemon/lgf_writer.h +2687 -0
- data/ext/lemon-1.3.1/lemon/list_graph.h +2510 -0
- data/ext/lemon-1.3.1/lemon/lp.h +95 -0
- data/ext/lemon-1.3.1/lemon/lp_base.cc +30 -0
- data/ext/lemon-1.3.1/lemon/lp_base.h +2147 -0
- data/ext/lemon-1.3.1/lemon/lp_skeleton.cc +143 -0
- data/ext/lemon-1.3.1/lemon/lp_skeleton.h +234 -0
- data/ext/lemon-1.3.1/lemon/maps.h +4057 -0
- data/ext/lemon-1.3.1/lemon/matching.h +3505 -0
- data/ext/lemon-1.3.1/lemon/math.h +77 -0
- data/ext/lemon-1.3.1/lemon/max_cardinality_search.h +794 -0
- data/ext/lemon-1.3.1/lemon/min_cost_arborescence.h +808 -0
- data/ext/lemon-1.3.1/lemon/nagamochi_ibaraki.h +702 -0
- data/ext/lemon-1.3.1/lemon/nauty_reader.h +113 -0
- data/ext/lemon-1.3.1/lemon/nearest_neighbor_tsp.h +238 -0
- data/ext/lemon-1.3.1/lemon/network_simplex.h +1659 -0
- data/ext/lemon-1.3.1/lemon/opt2_tsp.h +367 -0
- data/ext/lemon-1.3.1/lemon/pairing_heap.h +474 -0
- data/ext/lemon-1.3.1/lemon/path.h +1164 -0
- data/ext/lemon-1.3.1/lemon/planarity.h +2754 -0
- data/ext/lemon-1.3.1/lemon/preflow.h +985 -0
- data/ext/lemon-1.3.1/lemon/quad_heap.h +343 -0
- data/ext/lemon-1.3.1/lemon/radix_heap.h +438 -0
- data/ext/lemon-1.3.1/lemon/radix_sort.h +487 -0
- data/ext/lemon-1.3.1/lemon/random.cc +29 -0
- data/ext/lemon-1.3.1/lemon/random.h +1005 -0
- data/ext/lemon-1.3.1/lemon/smart_graph.h +1344 -0
- data/ext/lemon-1.3.1/lemon/soplex.cc +465 -0
- data/ext/lemon-1.3.1/lemon/soplex.h +158 -0
- data/ext/lemon-1.3.1/lemon/static_graph.h +476 -0
- data/ext/lemon-1.3.1/lemon/suurballe.h +776 -0
- data/ext/lemon-1.3.1/lemon/time_measure.h +610 -0
- data/ext/lemon-1.3.1/lemon/tolerance.h +242 -0
- data/ext/lemon-1.3.1/lemon/unionfind.h +1824 -0
- data/ext/lemon-1.3.1/scripts/unify-sources.sh +390 -0
- data/ext/lemon-1.3.1/scripts/valgrind-wrapper.sh +22 -0
- data/ext/lemongraph/arc_map.cc +1007 -0
- data/ext/lemongraph/digraph.cc +282 -0
- data/ext/lemongraph/digraph_arc.cc +153 -0
- data/ext/lemongraph/digraph_node.cc +277 -0
- data/ext/lemongraph/edge_map.cc +770 -0
- data/ext/lemongraph/extconf.rb +53 -0
- data/ext/lemongraph/graph.cc +351 -0
- data/ext/lemongraph/graph_arc.cc +95 -0
- data/ext/lemongraph/graph_edge.cc +153 -0
- data/ext/lemongraph/graph_item.cc +76 -0
- data/ext/lemongraph/graph_node.cc +321 -0
- data/ext/lemongraph/lemongraph.cc +260 -0
- data/ext/lemongraph/lemongraph.hh +295 -0
- data/ext/lemongraph/lemongraph.map +6 -0
- data/ext/lemongraph/lemongraph_export.hh +31 -0
- data/ext/lemongraph/node_map.cc +1011 -0
- data/lemongraph.gemspec +176 -0
- data/lib/lemongraph/graphviz.rb +240 -0
- data/lib/lemongraph/version.rb +4 -0
- data/lib/lemongraph.rb +21 -0
- data/samples/lemondeps.rb +38 -0
- metadata +202 -0
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
/* Copyright (C) 2022 Théotime Bollengier <theotime.bollengier@ensta-bretagne.fr>
|
|
2
|
+
*
|
|
3
|
+
* This file is part of LemonGraph. <https://gitlab.ensta-bretagne.fr/bollenth/lemongraph>
|
|
4
|
+
*
|
|
5
|
+
* LemonGraph is free software: you can redistribute it and/or modify it
|
|
6
|
+
* under the terms of the GNU General Public License as published
|
|
7
|
+
* by the Free Software Foundation, either version 3 of the License,
|
|
8
|
+
* or (at your option) any later version.
|
|
9
|
+
*
|
|
10
|
+
* LemonGraph is distributed in the hope that it will be useful,
|
|
11
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
12
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
13
|
+
* See the GNU General Public License for more details.
|
|
14
|
+
*
|
|
15
|
+
* You should have received a copy of the GNU General Public License
|
|
16
|
+
* along with LemonGraph. If not, see <https://www.gnu.org/licenses/>.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
#ifndef LEMONGRAPH_hh
|
|
20
|
+
#define LEMONGRAPH_hh
|
|
21
|
+
|
|
22
|
+
#include <ruby.h>
|
|
23
|
+
#include <lemon/list_graph.h>
|
|
24
|
+
#include "lemongraph_export.hh"
|
|
25
|
+
|
|
26
|
+
namespace LemonGraph {
|
|
27
|
+
class RBValue {
|
|
28
|
+
public:
|
|
29
|
+
VALUE value;
|
|
30
|
+
RBValue() : value(Qundef) {}
|
|
31
|
+
RBValue(VALUE v) : value(v) {}
|
|
32
|
+
RBValue(const RBValue& o) : value(o.value) {}
|
|
33
|
+
bool is_valid() const { return (value != Qundef); }
|
|
34
|
+
RBValue& operator=(const RBValue& v) { value = v.value; return *this; }
|
|
35
|
+
RBValue& operator=(VALUE v) { value = v; return *this; }
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
LEMONGRAPH_LOCAL extern VALUE m_LemonGraph;
|
|
41
|
+
LEMONGRAPH_LOCAL extern VALUE c_GraphItem;
|
|
42
|
+
LEMONGRAPH_LOCAL extern VALUE c_Digraph;
|
|
43
|
+
LEMONGRAPH_LOCAL extern VALUE c_DiNode;
|
|
44
|
+
LEMONGRAPH_LOCAL extern VALUE c_DiArc;
|
|
45
|
+
LEMONGRAPH_LOCAL extern VALUE c_Graph;
|
|
46
|
+
LEMONGRAPH_LOCAL extern VALUE c_UnNode;
|
|
47
|
+
LEMONGRAPH_LOCAL extern VALUE c_UnEdge;
|
|
48
|
+
LEMONGRAPH_LOCAL extern VALUE c_UnArc;
|
|
49
|
+
LEMONGRAPH_LOCAL extern VALUE c_NodeMap;
|
|
50
|
+
LEMONGRAPH_LOCAL extern VALUE c_ArcMap;
|
|
51
|
+
LEMONGRAPH_LOCAL extern VALUE c_EdgeMap;
|
|
52
|
+
|
|
53
|
+
LEMONGRAPH_LOCAL extern ID id_comp;
|
|
54
|
+
LEMONGRAPH_LOCAL extern ID id_eqeq;
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graphitem_initialize(VALUE self, VALUE id, VALUE graph);
|
|
58
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graphitem_is_equal(VALUE self, VALUE other);
|
|
59
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graphitem_is_notequal(VALUE self, VALUE other);
|
|
60
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graphitem_compare(VALUE self, VALUE other);
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
/************************ Digraph *********************************************/
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
LEMONGRAPH_LOCAL extern const rb_data_type_t lemongraph_digraph_type;
|
|
67
|
+
|
|
68
|
+
inline lemon::ListDigraph& lemongraph_digraph_rb2ref(VALUE obj) {
|
|
69
|
+
lemon::ListDigraph *g;
|
|
70
|
+
TypedData_Get_Struct(obj, lemon::ListDigraph, &lemongraph_digraph_type, g);
|
|
71
|
+
return *g;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
LEMONGRAPH_LOCAL void lemongraph_digraph_raise_if_not_valid_node(const lemon::ListDigraph& digraph, VALUE rbdigraph, VALUE node);
|
|
75
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_alloc(VALUE klass);
|
|
76
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_initialize_copy(VALUE self, VALUE orig);
|
|
77
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_add_node(VALUE self);
|
|
78
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_add_arc(VALUE self, VALUE s, VALUE t);
|
|
79
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_item_is_valid(VALUE self, VALUE item);
|
|
80
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_erase_nodearc(VALUE self, VALUE item);
|
|
81
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_clear(VALUE self);
|
|
82
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_nb_nodes(VALUE self);
|
|
83
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_nodes(VALUE self);
|
|
84
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_each_node(VALUE self);
|
|
85
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_nb_arcs(VALUE self);
|
|
86
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_arcs(VALUE self);
|
|
87
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_digraph_each_arc(VALUE self);
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
inline lemon::ListDigraph::Node lemongraph_rbdinode2dinode(VALUE rbnode) {
|
|
91
|
+
return lemon::ListDigraph::nodeFromId(NUM2INT(rb_iv_get(rbnode, "@id")));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_make_dinode(const lemon::ListDigraph::Node& node, VALUE graph);
|
|
95
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_initialize(VALUE self, VALUE id, VALUE graph);
|
|
96
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_is_valid(VALUE self);
|
|
97
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_erase(VALUE self);
|
|
98
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_split(int argc, VALUE *argv, VALUE self);
|
|
99
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_contract(int argc, VALUE *argv, VALUE self);
|
|
100
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_nb_inarcs(VALUE self);
|
|
101
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_inarcs(VALUE self);
|
|
102
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_each_inarc(VALUE self);
|
|
103
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_nb_outarcs(VALUE self);
|
|
104
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_outarcs(VALUE self);
|
|
105
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_each_outarc(VALUE self);
|
|
106
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_arc_to(VALUE self, VALUE target);
|
|
107
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_arc_from(VALUE self, VALUE source);
|
|
108
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_dinode_opposite(VALUE self, VALUE arc);
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
inline lemon::ListDigraph::Arc lemongraph_rbdiarc2diarc(VALUE rbarc) {
|
|
112
|
+
return lemon::ListDigraph::arcFromId(NUM2INT(rb_iv_get(rbarc, "@id")));
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_make_diarc(const lemon::ListDigraph::Arc& arc, VALUE graph);
|
|
116
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_initialize(VALUE self, VALUE id, VALUE graph);
|
|
117
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_is_valid(VALUE self);
|
|
118
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_erase(VALUE self);
|
|
119
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_change_target(VALUE self, VALUE node);
|
|
120
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_change_source(VALUE self, VALUE node);
|
|
121
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_source(VALUE self);
|
|
122
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_target(VALUE self);
|
|
123
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_reverse(VALUE self);
|
|
124
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_diarc_split(VALUE self);
|
|
125
|
+
|
|
126
|
+
|
|
127
|
+
/****************************** Graph *****************************************/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
LEMONGRAPH_LOCAL extern const rb_data_type_t lemongraph_graph_type;
|
|
131
|
+
|
|
132
|
+
inline lemon::ListGraph& lemongraph_graph_rb2ref(VALUE obj) {
|
|
133
|
+
lemon::ListGraph *g;
|
|
134
|
+
TypedData_Get_Struct(obj, lemon::ListGraph, &lemongraph_graph_type, g);
|
|
135
|
+
return *g;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
LEMONGRAPH_LOCAL void lemongraph_graph_raise_if_not_valid_node(const lemon::ListGraph& graph, VALUE rbgraph, VALUE node);
|
|
139
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_alloc(VALUE klass);
|
|
140
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_initialize_copy(VALUE self, VALUE orig);
|
|
141
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_add_node(VALUE self);
|
|
142
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_add_edge(VALUE self, VALUE u, VALUE v);
|
|
143
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_item_is_valid(VALUE self, VALUE item);
|
|
144
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_erase_item(VALUE self, VALUE item);
|
|
145
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_clear(VALUE self);
|
|
146
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_nb_nodes(VALUE self);
|
|
147
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_nodes(VALUE self);
|
|
148
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_each_node(VALUE self);
|
|
149
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_nb_edges(VALUE self);
|
|
150
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_edges(VALUE self);
|
|
151
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_each_edge(VALUE self);
|
|
152
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_nb_arcs(VALUE self);
|
|
153
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_arcs(VALUE self);
|
|
154
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_graph_each_arc(VALUE self);
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
inline lemon::ListGraph::Node lemongraph_rbunnode2unnode(VALUE rbnode) {
|
|
158
|
+
return lemon::ListGraph::nodeFromId(NUM2INT(rb_iv_get(rbnode, "@id")));
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_make_unnode(const lemon::ListGraph::Node& node, VALUE graph);
|
|
162
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_initialize(VALUE self, VALUE id, VALUE graph);
|
|
163
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_is_valid(VALUE self);
|
|
164
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_erase(VALUE self);
|
|
165
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_contract(int argc, VALUE *argv, VALUE self);
|
|
166
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_nb_edges(VALUE self);
|
|
167
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_edges(VALUE self);
|
|
168
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_each_edge(VALUE self);
|
|
169
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_nb_inarcs(VALUE self);
|
|
170
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_inarcs(VALUE self);
|
|
171
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_each_inarc(VALUE self);
|
|
172
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_nb_outarcs(VALUE self);
|
|
173
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_outarcs(VALUE self);
|
|
174
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_each_outarc(VALUE self);
|
|
175
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_edge_to(VALUE self, VALUE node);
|
|
176
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_edge_from(VALUE self, VALUE node);
|
|
177
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unnode_opposite(VALUE self, VALUE edge);
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
inline lemon::ListGraph::Edge lemongraph_rbunedge2unedge(VALUE rbedge) {
|
|
181
|
+
return lemon::ListGraph::edgeFromId(NUM2INT(rb_iv_get(rbedge, "@id")));
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_make_unedge(const lemon::ListGraph::Edge& edge, VALUE graph);
|
|
185
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_initialize(VALUE self, VALUE id, VALUE graph);
|
|
186
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_is_valid(VALUE self);
|
|
187
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_erase(VALUE self);
|
|
188
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_u(VALUE self);
|
|
189
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_v(VALUE self);
|
|
190
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_change_u(VALUE self, VALUE node);
|
|
191
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_change_v(VALUE self, VALUE node);
|
|
192
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_arc1(VALUE self);
|
|
193
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unedge_arc2(VALUE self);
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
inline lemon::ListGraph::Arc lemongraph_rbunarc2unarc(VALUE rbarc) {
|
|
197
|
+
return lemon::ListGraph::arcFromId(NUM2INT(rb_iv_get(rbarc, "@id")));
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_make_unarc(const lemon::ListGraph::Arc& arc, VALUE graph);
|
|
201
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unarc_initialize(VALUE self, VALUE id, VALUE graph);
|
|
202
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unarc_is_valid(VALUE self);
|
|
203
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unarc_source(VALUE self);
|
|
204
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unarc_target(VALUE self);
|
|
205
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_unarc_opposite(VALUE self);
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
/****************************** NodeMap ***************************************/
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_alloc(VALUE klass);
|
|
212
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_initialize(int argc, VALUE *argv, VALUE self);
|
|
213
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_initialize_copy(VALUE self, VALUE orig);
|
|
214
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_graph(VALUE self);
|
|
215
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_get_dflt_val(VALUE self);
|
|
216
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_set_dflt_val(VALUE self, VALUE dflt);
|
|
217
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_get_dflt_proc(VALUE self);
|
|
218
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_set_dflt_proc(VALUE self, VALUE proc);
|
|
219
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_get(VALUE self, VALUE key);
|
|
220
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_set(VALUE self, VALUE key, VALUE value);
|
|
221
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_nodes(VALUE self);
|
|
222
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_values(VALUE self);
|
|
223
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_length(VALUE self);
|
|
224
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_each_node(VALUE self);
|
|
225
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_each_value(VALUE self);
|
|
226
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_each_pair(VALUE self);
|
|
227
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_clear(VALUE self);
|
|
228
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_delete(VALUE self, VALUE key);
|
|
229
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_delete_if(VALUE self);
|
|
230
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_is_empty(VALUE self);
|
|
231
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_has_node(VALUE self, VALUE node);
|
|
232
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_has_value(VALUE self, VALUE value);
|
|
233
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_is_equal(VALUE self, VALUE other);
|
|
234
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_nodemap_hash(VALUE self);
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
/****************************** ArcMap ****************************************/
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_alloc(VALUE klass);
|
|
241
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_initialize(int argc, VALUE *argv, VALUE self);
|
|
242
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_initialize_copy(VALUE self, VALUE orig);
|
|
243
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_graph(VALUE self);
|
|
244
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_get_dflt_val(VALUE self);
|
|
245
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_set_dflt_val(VALUE self, VALUE dflt);
|
|
246
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_get_dflt_proc(VALUE self);
|
|
247
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_set_dflt_proc(VALUE self, VALUE proc);
|
|
248
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_get(VALUE self, VALUE key);
|
|
249
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_set(VALUE self, VALUE key, VALUE value);
|
|
250
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_arcs(VALUE self);
|
|
251
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_values(VALUE self);
|
|
252
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_length(VALUE self);
|
|
253
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_each_arc(VALUE self);
|
|
254
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_each_value(VALUE self);
|
|
255
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_each_pair(VALUE self);
|
|
256
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_clear(VALUE self);
|
|
257
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_delete(VALUE self, VALUE key);
|
|
258
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_delete_if(VALUE self);
|
|
259
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_is_empty(VALUE self);
|
|
260
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_has_arc(VALUE self, VALUE arc);
|
|
261
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_has_value(VALUE self, VALUE value);
|
|
262
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_is_equal(VALUE self, VALUE other);
|
|
263
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_arcmap_hash(VALUE self);
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
/****************************** EdgeMap ***************************************/
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_alloc(VALUE klass);
|
|
270
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_initialize(int argc, VALUE *argv, VALUE self);
|
|
271
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_initialize_copy(VALUE self, VALUE orig);
|
|
272
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_graph(VALUE self);
|
|
273
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_get_dflt_val(VALUE self);
|
|
274
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_set_dflt_val(VALUE self, VALUE dflt);
|
|
275
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_get_dflt_proc(VALUE self);
|
|
276
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_set_dflt_proc(VALUE self, VALUE proc);
|
|
277
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_get(VALUE self, VALUE key);
|
|
278
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_set(VALUE self, VALUE key, VALUE value);
|
|
279
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_edges(VALUE self);
|
|
280
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_values(VALUE self);
|
|
281
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_length(VALUE self);
|
|
282
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_each_edge(VALUE self);
|
|
283
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_each_value(VALUE self);
|
|
284
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_each_pair(VALUE self);
|
|
285
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_clear(VALUE self);
|
|
286
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_delete(VALUE self, VALUE key);
|
|
287
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_delete_if(VALUE self);
|
|
288
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_is_empty(VALUE self);
|
|
289
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_has_edge(VALUE self, VALUE edge);
|
|
290
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_has_value(VALUE self, VALUE value);
|
|
291
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_is_equal(VALUE self, VALUE other);
|
|
292
|
+
LEMONGRAPH_LOCAL VALUE lemongraph_edgemap_hash(VALUE self);
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
#endif /* LEMONGRAPH_hh */
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#ifndef LEMONGRAPH_EXPORT_HH
|
|
2
|
+
#define LEMONGRAPH_EXPORT_HH
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
#if defined _WIN32 || defined __CYGWIN__
|
|
6
|
+
#ifdef BUILDING_DLL
|
|
7
|
+
#ifdef __GNUC__
|
|
8
|
+
#define LEMONGRAPH_PUBLIC __attribute__ ((dllexport))
|
|
9
|
+
#else
|
|
10
|
+
#define LEMONGRAPH_PUBLIC __declspec(dllexport) // Note: actually gcc seems to also supports this syntax.
|
|
11
|
+
#endif
|
|
12
|
+
#else
|
|
13
|
+
#ifdef __GNUC__
|
|
14
|
+
#define LEMONGRAPH_PUBLIC __attribute__ ((dllimport))
|
|
15
|
+
#else
|
|
16
|
+
#define LEMONGRAPH_PUBLIC __declspec(dllimport) // Note: actually gcc seems to also supports this syntax.
|
|
17
|
+
#endif
|
|
18
|
+
#endif
|
|
19
|
+
#define LEMONGRAPH_LOCAL
|
|
20
|
+
#else
|
|
21
|
+
#if __GNUC__ >= 4
|
|
22
|
+
#define LEMONGRAPH_PUBLIC __attribute__ ((visibility ("default")))
|
|
23
|
+
#define LEMONGRAPH_LOCAL __attribute__ ((visibility ("hidden")))
|
|
24
|
+
#else
|
|
25
|
+
#define LEMONGRAPH_PUBLIC
|
|
26
|
+
#define LEMONGRAPH_LOCAL
|
|
27
|
+
#endif
|
|
28
|
+
#endif
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
#endif /* LEMONGRAPH_EXPORT_HH */
|