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.
Files changed (161) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +8 -0
  3. data/LICENSE +674 -0
  4. data/README.md +6 -0
  5. data/ext/lemon-1.3.1/AUTHORS +26 -0
  6. data/ext/lemon-1.3.1/CMakeLists.txt +371 -0
  7. data/ext/lemon-1.3.1/INSTALL +167 -0
  8. data/ext/lemon-1.3.1/LICENSE +32 -0
  9. data/ext/lemon-1.3.1/NEWS +337 -0
  10. data/ext/lemon-1.3.1/README +50 -0
  11. data/ext/lemon-1.3.1/cmake/FindCOIN.cmake +110 -0
  12. data/ext/lemon-1.3.1/cmake/FindGLPK.cmake +55 -0
  13. data/ext/lemon-1.3.1/cmake/FindGhostscript.cmake +10 -0
  14. data/ext/lemon-1.3.1/cmake/FindILOG.cmake +102 -0
  15. data/ext/lemon-1.3.1/cmake/FindSOPLEX.cmake +23 -0
  16. data/ext/lemon-1.3.1/cmake/LEMONConfig.cmake.in +13 -0
  17. data/ext/lemon-1.3.1/cmake/nsis/lemon.ico +0 -0
  18. data/ext/lemon-1.3.1/cmake/nsis/uninstall.ico +0 -0
  19. data/ext/lemon-1.3.1/cmake/version.cmake +1 -0
  20. data/ext/lemon-1.3.1/cmake/version.cmake.in +1 -0
  21. data/ext/lemon-1.3.1/contrib/CMakeLists.txt +19 -0
  22. data/ext/lemon-1.3.1/lemon/CMakeLists.txt +91 -0
  23. data/ext/lemon-1.3.1/lemon/adaptors.h +3638 -0
  24. data/ext/lemon-1.3.1/lemon/arg_parser.cc +474 -0
  25. data/ext/lemon-1.3.1/lemon/arg_parser.h +440 -0
  26. data/ext/lemon-1.3.1/lemon/assert.h +214 -0
  27. data/ext/lemon-1.3.1/lemon/base.cc +37 -0
  28. data/ext/lemon-1.3.1/lemon/bellman_ford.h +1116 -0
  29. data/ext/lemon-1.3.1/lemon/bfs.h +1754 -0
  30. data/ext/lemon-1.3.1/lemon/bin_heap.h +347 -0
  31. data/ext/lemon-1.3.1/lemon/binomial_heap.h +445 -0
  32. data/ext/lemon-1.3.1/lemon/bits/alteration_notifier.h +472 -0
  33. data/ext/lemon-1.3.1/lemon/bits/array_map.h +351 -0
  34. data/ext/lemon-1.3.1/lemon/bits/bezier.h +174 -0
  35. data/ext/lemon-1.3.1/lemon/bits/default_map.h +182 -0
  36. data/ext/lemon-1.3.1/lemon/bits/edge_set_extender.h +627 -0
  37. data/ext/lemon-1.3.1/lemon/bits/enable_if.h +131 -0
  38. data/ext/lemon-1.3.1/lemon/bits/graph_adaptor_extender.h +401 -0
  39. data/ext/lemon-1.3.1/lemon/bits/graph_extender.h +1332 -0
  40. data/ext/lemon-1.3.1/lemon/bits/lock.h +65 -0
  41. data/ext/lemon-1.3.1/lemon/bits/map_extender.h +332 -0
  42. data/ext/lemon-1.3.1/lemon/bits/path_dump.h +177 -0
  43. data/ext/lemon-1.3.1/lemon/bits/solver_bits.h +194 -0
  44. data/ext/lemon-1.3.1/lemon/bits/traits.h +388 -0
  45. data/ext/lemon-1.3.1/lemon/bits/variant.h +494 -0
  46. data/ext/lemon-1.3.1/lemon/bits/vector_map.h +244 -0
  47. data/ext/lemon-1.3.1/lemon/bits/windows.cc +166 -0
  48. data/ext/lemon-1.3.1/lemon/bits/windows.h +44 -0
  49. data/ext/lemon-1.3.1/lemon/bucket_heap.h +594 -0
  50. data/ext/lemon-1.3.1/lemon/capacity_scaling.h +1014 -0
  51. data/ext/lemon-1.3.1/lemon/cbc.cc +460 -0
  52. data/ext/lemon-1.3.1/lemon/cbc.h +129 -0
  53. data/ext/lemon-1.3.1/lemon/christofides_tsp.h +254 -0
  54. data/ext/lemon-1.3.1/lemon/circulation.h +807 -0
  55. data/ext/lemon-1.3.1/lemon/clp.cc +464 -0
  56. data/ext/lemon-1.3.1/lemon/clp.h +164 -0
  57. data/ext/lemon-1.3.1/lemon/color.cc +44 -0
  58. data/ext/lemon-1.3.1/lemon/color.h +204 -0
  59. data/ext/lemon-1.3.1/lemon/concept_check.h +77 -0
  60. data/ext/lemon-1.3.1/lemon/concepts/bpgraph.h +1029 -0
  61. data/ext/lemon-1.3.1/lemon/concepts/digraph.h +491 -0
  62. data/ext/lemon-1.3.1/lemon/concepts/graph.h +788 -0
  63. data/ext/lemon-1.3.1/lemon/concepts/graph_components.h +2134 -0
  64. data/ext/lemon-1.3.1/lemon/concepts/heap.h +324 -0
  65. data/ext/lemon-1.3.1/lemon/concepts/maps.h +223 -0
  66. data/ext/lemon-1.3.1/lemon/concepts/path.h +312 -0
  67. data/ext/lemon-1.3.1/lemon/config.h.in +22 -0
  68. data/ext/lemon-1.3.1/lemon/connectivity.h +1688 -0
  69. data/ext/lemon-1.3.1/lemon/core.h +2506 -0
  70. data/ext/lemon-1.3.1/lemon/cost_scaling.h +1607 -0
  71. data/ext/lemon-1.3.1/lemon/counter.h +249 -0
  72. data/ext/lemon-1.3.1/lemon/cplex.cc +994 -0
  73. data/ext/lemon-1.3.1/lemon/cplex.h +292 -0
  74. data/ext/lemon-1.3.1/lemon/cycle_canceling.h +1230 -0
  75. data/ext/lemon-1.3.1/lemon/dfs.h +1637 -0
  76. data/ext/lemon-1.3.1/lemon/dheap.h +352 -0
  77. data/ext/lemon-1.3.1/lemon/dijkstra.h +1303 -0
  78. data/ext/lemon-1.3.1/lemon/dim2.h +726 -0
  79. data/ext/lemon-1.3.1/lemon/dimacs.h +448 -0
  80. data/ext/lemon-1.3.1/lemon/edge_set.h +1420 -0
  81. data/ext/lemon-1.3.1/lemon/edmonds_karp.h +556 -0
  82. data/ext/lemon-1.3.1/lemon/elevator.h +982 -0
  83. data/ext/lemon-1.3.1/lemon/error.h +276 -0
  84. data/ext/lemon-1.3.1/lemon/euler.h +287 -0
  85. data/ext/lemon-1.3.1/lemon/fib_heap.h +475 -0
  86. data/ext/lemon-1.3.1/lemon/fractional_matching.h +2139 -0
  87. data/ext/lemon-1.3.1/lemon/full_graph.h +1082 -0
  88. data/ext/lemon-1.3.1/lemon/glpk.cc +1012 -0
  89. data/ext/lemon-1.3.1/lemon/glpk.h +263 -0
  90. data/ext/lemon-1.3.1/lemon/gomory_hu.h +568 -0
  91. data/ext/lemon-1.3.1/lemon/graph_to_eps.h +1186 -0
  92. data/ext/lemon-1.3.1/lemon/greedy_tsp.h +251 -0
  93. data/ext/lemon-1.3.1/lemon/grid_graph.h +699 -0
  94. data/ext/lemon-1.3.1/lemon/grosso_locatelli_pullan_mc.h +840 -0
  95. data/ext/lemon-1.3.1/lemon/hao_orlin.h +1015 -0
  96. data/ext/lemon-1.3.1/lemon/hartmann_orlin_mmc.h +654 -0
  97. data/ext/lemon-1.3.1/lemon/howard_mmc.h +651 -0
  98. data/ext/lemon-1.3.1/lemon/hypercube_graph.h +459 -0
  99. data/ext/lemon-1.3.1/lemon/insertion_tsp.h +533 -0
  100. data/ext/lemon-1.3.1/lemon/karp_mmc.h +590 -0
  101. data/ext/lemon-1.3.1/lemon/kruskal.h +324 -0
  102. data/ext/lemon-1.3.1/lemon/lemon.pc.in +10 -0
  103. data/ext/lemon-1.3.1/lemon/lgf_reader.h +3854 -0
  104. data/ext/lemon-1.3.1/lemon/lgf_writer.h +2687 -0
  105. data/ext/lemon-1.3.1/lemon/list_graph.h +2510 -0
  106. data/ext/lemon-1.3.1/lemon/lp.h +95 -0
  107. data/ext/lemon-1.3.1/lemon/lp_base.cc +30 -0
  108. data/ext/lemon-1.3.1/lemon/lp_base.h +2147 -0
  109. data/ext/lemon-1.3.1/lemon/lp_skeleton.cc +143 -0
  110. data/ext/lemon-1.3.1/lemon/lp_skeleton.h +234 -0
  111. data/ext/lemon-1.3.1/lemon/maps.h +4057 -0
  112. data/ext/lemon-1.3.1/lemon/matching.h +3505 -0
  113. data/ext/lemon-1.3.1/lemon/math.h +77 -0
  114. data/ext/lemon-1.3.1/lemon/max_cardinality_search.h +794 -0
  115. data/ext/lemon-1.3.1/lemon/min_cost_arborescence.h +808 -0
  116. data/ext/lemon-1.3.1/lemon/nagamochi_ibaraki.h +702 -0
  117. data/ext/lemon-1.3.1/lemon/nauty_reader.h +113 -0
  118. data/ext/lemon-1.3.1/lemon/nearest_neighbor_tsp.h +238 -0
  119. data/ext/lemon-1.3.1/lemon/network_simplex.h +1659 -0
  120. data/ext/lemon-1.3.1/lemon/opt2_tsp.h +367 -0
  121. data/ext/lemon-1.3.1/lemon/pairing_heap.h +474 -0
  122. data/ext/lemon-1.3.1/lemon/path.h +1164 -0
  123. data/ext/lemon-1.3.1/lemon/planarity.h +2754 -0
  124. data/ext/lemon-1.3.1/lemon/preflow.h +985 -0
  125. data/ext/lemon-1.3.1/lemon/quad_heap.h +343 -0
  126. data/ext/lemon-1.3.1/lemon/radix_heap.h +438 -0
  127. data/ext/lemon-1.3.1/lemon/radix_sort.h +487 -0
  128. data/ext/lemon-1.3.1/lemon/random.cc +29 -0
  129. data/ext/lemon-1.3.1/lemon/random.h +1005 -0
  130. data/ext/lemon-1.3.1/lemon/smart_graph.h +1344 -0
  131. data/ext/lemon-1.3.1/lemon/soplex.cc +465 -0
  132. data/ext/lemon-1.3.1/lemon/soplex.h +158 -0
  133. data/ext/lemon-1.3.1/lemon/static_graph.h +476 -0
  134. data/ext/lemon-1.3.1/lemon/suurballe.h +776 -0
  135. data/ext/lemon-1.3.1/lemon/time_measure.h +610 -0
  136. data/ext/lemon-1.3.1/lemon/tolerance.h +242 -0
  137. data/ext/lemon-1.3.1/lemon/unionfind.h +1824 -0
  138. data/ext/lemon-1.3.1/scripts/unify-sources.sh +390 -0
  139. data/ext/lemon-1.3.1/scripts/valgrind-wrapper.sh +22 -0
  140. data/ext/lemongraph/arc_map.cc +1007 -0
  141. data/ext/lemongraph/digraph.cc +282 -0
  142. data/ext/lemongraph/digraph_arc.cc +153 -0
  143. data/ext/lemongraph/digraph_node.cc +277 -0
  144. data/ext/lemongraph/edge_map.cc +770 -0
  145. data/ext/lemongraph/extconf.rb +53 -0
  146. data/ext/lemongraph/graph.cc +351 -0
  147. data/ext/lemongraph/graph_arc.cc +95 -0
  148. data/ext/lemongraph/graph_edge.cc +153 -0
  149. data/ext/lemongraph/graph_item.cc +76 -0
  150. data/ext/lemongraph/graph_node.cc +321 -0
  151. data/ext/lemongraph/lemongraph.cc +260 -0
  152. data/ext/lemongraph/lemongraph.hh +295 -0
  153. data/ext/lemongraph/lemongraph.map +6 -0
  154. data/ext/lemongraph/lemongraph_export.hh +31 -0
  155. data/ext/lemongraph/node_map.cc +1011 -0
  156. data/lemongraph.gemspec +176 -0
  157. data/lib/lemongraph/graphviz.rb +240 -0
  158. data/lib/lemongraph/version.rb +4 -0
  159. data/lib/lemongraph.rb +21 -0
  160. data/samples/lemondeps.rb +38 -0
  161. metadata +202 -0
@@ -0,0 +1,176 @@
1
+ require File.expand_path('../lib/lemongraph/version.rb', __FILE__)
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'lemongraph'
5
+ s.version = LemonGraph::VERSION
6
+ s.date = Time.now.strftime '%Y-%m-%d'
7
+ s.summary = 'A Ruby C extension to use parts of the LEMON graph library'
8
+ s.description = 'LemonGraph is a Ruby C extension wrapping parts of the LEMON graph library'
9
+ s.license = 'GPL-3.0+'
10
+ s.authors = ['Théotime Bollengier']
11
+ s.email = 'theotime.bollengier@ensta-bretagne.fr'
12
+ s.homepage = 'https://gitlab.ensta-bretagne.fr/bollenth/lemongraph'
13
+ s.extensions = ['ext/lemongraph/extconf.rb']
14
+ s.files = [
15
+ 'LICENSE',
16
+ 'README.md',
17
+ 'lemongraph.gemspec',
18
+ '.yardopts',
19
+ 'lib/lemongraph.rb',
20
+ 'lib/lemongraph/version.rb',
21
+ 'lib/lemongraph/graphviz.rb',
22
+ 'samples/lemondeps.rb',
23
+ 'ext/lemongraph/extconf.rb',
24
+ 'ext/lemongraph/lemongraph.map',
25
+ 'ext/lemongraph/arc_map.cc',
26
+ 'ext/lemongraph/digraph_arc.cc',
27
+ 'ext/lemongraph/digraph.cc',
28
+ 'ext/lemongraph/digraph_node.cc',
29
+ 'ext/lemongraph/edge_map.cc',
30
+ 'ext/lemongraph/graph_arc.cc',
31
+ 'ext/lemongraph/graph.cc',
32
+ 'ext/lemongraph/graph_edge.cc',
33
+ 'ext/lemongraph/graph_item.cc',
34
+ 'ext/lemongraph/graph_node.cc',
35
+ 'ext/lemongraph/lemongraph.cc',
36
+ 'ext/lemongraph/lemongraph.hh',
37
+ 'ext/lemongraph/node_map.cc',
38
+ 'ext/lemongraph/lemongraph_export.hh',
39
+ 'ext/lemon-1.3.1/LICENSE',
40
+ 'ext/lemon-1.3.1/AUTHORS',
41
+ 'ext/lemon-1.3.1/INSTALL',
42
+ 'ext/lemon-1.3.1/CMakeLists.txt',
43
+ 'ext/lemon-1.3.1/README',
44
+ 'ext/lemon-1.3.1/NEWS',
45
+ 'ext/lemon-1.3.1/scripts/unify-sources.sh',
46
+ 'ext/lemon-1.3.1/scripts/valgrind-wrapper.sh',
47
+ 'ext/lemon-1.3.1/contrib/CMakeLists.txt',
48
+ 'ext/lemon-1.3.1/cmake/FindILOG.cmake',
49
+ 'ext/lemon-1.3.1/cmake/FindCOIN.cmake',
50
+ 'ext/lemon-1.3.1/cmake/FindSOPLEX.cmake',
51
+ 'ext/lemon-1.3.1/cmake/version.cmake.in',
52
+ 'ext/lemon-1.3.1/cmake/nsis/lemon.ico',
53
+ 'ext/lemon-1.3.1/cmake/nsis/uninstall.ico',
54
+ 'ext/lemon-1.3.1/cmake/FindGhostscript.cmake',
55
+ 'ext/lemon-1.3.1/cmake/version.cmake',
56
+ 'ext/lemon-1.3.1/cmake/LEMONConfig.cmake.in',
57
+ 'ext/lemon-1.3.1/cmake/FindGLPK.cmake',
58
+ 'ext/lemon-1.3.1/lemon/capacity_scaling.h',
59
+ 'ext/lemon-1.3.1/lemon/math.h',
60
+ 'ext/lemon-1.3.1/lemon/arg_parser.h',
61
+ 'ext/lemon-1.3.1/lemon/config.h.in',
62
+ 'ext/lemon-1.3.1/lemon/assert.h',
63
+ 'ext/lemon-1.3.1/lemon/hypercube_graph.h',
64
+ 'ext/lemon-1.3.1/lemon/adaptors.h',
65
+ 'ext/lemon-1.3.1/lemon/bin_heap.h',
66
+ 'ext/lemon-1.3.1/lemon/fractional_matching.h',
67
+ 'ext/lemon-1.3.1/lemon/cycle_canceling.h',
68
+ 'ext/lemon-1.3.1/lemon/binomial_heap.h',
69
+ 'ext/lemon-1.3.1/lemon/clp.cc',
70
+ 'ext/lemon-1.3.1/lemon/howard_mmc.h',
71
+ 'ext/lemon-1.3.1/lemon/nauty_reader.h',
72
+ 'ext/lemon-1.3.1/lemon/lp_base.h',
73
+ 'ext/lemon-1.3.1/lemon/min_cost_arborescence.h',
74
+ 'ext/lemon-1.3.1/lemon/bucket_heap.h',
75
+ 'ext/lemon-1.3.1/lemon/planarity.h',
76
+ 'ext/lemon-1.3.1/lemon/matching.h',
77
+ 'ext/lemon-1.3.1/lemon/concept_check.h',
78
+ 'ext/lemon-1.3.1/lemon/christofides_tsp.h',
79
+ 'ext/lemon-1.3.1/lemon/time_measure.h',
80
+ 'ext/lemon-1.3.1/lemon/max_cardinality_search.h',
81
+ 'ext/lemon-1.3.1/lemon/kruskal.h',
82
+ 'ext/lemon-1.3.1/lemon/dimacs.h',
83
+ 'ext/lemon-1.3.1/lemon/unionfind.h',
84
+ 'ext/lemon-1.3.1/lemon/random.h',
85
+ 'ext/lemon-1.3.1/lemon/list_graph.h',
86
+ 'ext/lemon-1.3.1/lemon/dheap.h',
87
+ 'ext/lemon-1.3.1/lemon/core.h',
88
+ 'ext/lemon-1.3.1/lemon/circulation.h',
89
+ 'ext/lemon-1.3.1/lemon/euler.h',
90
+ 'ext/lemon-1.3.1/lemon/bfs.h',
91
+ 'ext/lemon-1.3.1/lemon/soplex.h',
92
+ 'ext/lemon-1.3.1/lemon/opt2_tsp.h',
93
+ 'ext/lemon-1.3.1/lemon/karp_mmc.h',
94
+ 'ext/lemon-1.3.1/lemon/hartmann_orlin_mmc.h',
95
+ 'ext/lemon-1.3.1/lemon/preflow.h',
96
+ 'ext/lemon-1.3.1/lemon/radix_sort.h',
97
+ 'ext/lemon-1.3.1/lemon/edge_set.h',
98
+ 'ext/lemon-1.3.1/lemon/color.cc',
99
+ 'ext/lemon-1.3.1/lemon/nagamochi_ibaraki.h',
100
+ 'ext/lemon-1.3.1/lemon/cplex.h',
101
+ 'ext/lemon-1.3.1/lemon/cbc.h',
102
+ 'ext/lemon-1.3.1/lemon/lp_skeleton.cc',
103
+ 'ext/lemon-1.3.1/lemon/bellman_ford.h',
104
+ 'ext/lemon-1.3.1/lemon/lp_base.cc',
105
+ 'ext/lemon-1.3.1/lemon/grosso_locatelli_pullan_mc.h',
106
+ 'ext/lemon-1.3.1/lemon/edmonds_karp.h',
107
+ 'ext/lemon-1.3.1/lemon/concepts/heap.h',
108
+ 'ext/lemon-1.3.1/lemon/concepts/bpgraph.h',
109
+ 'ext/lemon-1.3.1/lemon/concepts/graph.h',
110
+ 'ext/lemon-1.3.1/lemon/concepts/digraph.h',
111
+ 'ext/lemon-1.3.1/lemon/concepts/maps.h',
112
+ 'ext/lemon-1.3.1/lemon/concepts/graph_components.h',
113
+ 'ext/lemon-1.3.1/lemon/concepts/path.h',
114
+ 'ext/lemon-1.3.1/lemon/CMakeLists.txt',
115
+ 'ext/lemon-1.3.1/lemon/lgf_writer.h',
116
+ 'ext/lemon-1.3.1/lemon/maps.h',
117
+ 'ext/lemon-1.3.1/lemon/counter.h',
118
+ 'ext/lemon-1.3.1/lemon/gomory_hu.h',
119
+ 'ext/lemon-1.3.1/lemon/elevator.h',
120
+ 'ext/lemon-1.3.1/lemon/full_graph.h',
121
+ 'ext/lemon-1.3.1/lemon/lemon.pc.in',
122
+ 'ext/lemon-1.3.1/lemon/cplex.cc',
123
+ 'ext/lemon-1.3.1/lemon/dfs.h',
124
+ 'ext/lemon-1.3.1/lemon/radix_heap.h',
125
+ 'ext/lemon-1.3.1/lemon/insertion_tsp.h',
126
+ 'ext/lemon-1.3.1/lemon/cost_scaling.h',
127
+ 'ext/lemon-1.3.1/lemon/random.cc',
128
+ 'ext/lemon-1.3.1/lemon/suurballe.h',
129
+ 'ext/lemon-1.3.1/lemon/graph_to_eps.h',
130
+ 'ext/lemon-1.3.1/lemon/smart_graph.h',
131
+ 'ext/lemon-1.3.1/lemon/lgf_reader.h',
132
+ 'ext/lemon-1.3.1/lemon/error.h',
133
+ 'ext/lemon-1.3.1/lemon/nearest_neighbor_tsp.h',
134
+ 'ext/lemon-1.3.1/lemon/pairing_heap.h',
135
+ 'ext/lemon-1.3.1/lemon/static_graph.h',
136
+ 'ext/lemon-1.3.1/lemon/connectivity.h',
137
+ 'ext/lemon-1.3.1/lemon/fib_heap.h',
138
+ 'ext/lemon-1.3.1/lemon/clp.h',
139
+ 'ext/lemon-1.3.1/lemon/glpk.cc',
140
+ 'ext/lemon-1.3.1/lemon/glpk.h',
141
+ 'ext/lemon-1.3.1/lemon/greedy_tsp.h',
142
+ 'ext/lemon-1.3.1/lemon/cbc.cc',
143
+ 'ext/lemon-1.3.1/lemon/lp.h',
144
+ 'ext/lemon-1.3.1/lemon/base.cc',
145
+ 'ext/lemon-1.3.1/lemon/arg_parser.cc',
146
+ 'ext/lemon-1.3.1/lemon/tolerance.h',
147
+ 'ext/lemon-1.3.1/lemon/soplex.cc',
148
+ 'ext/lemon-1.3.1/lemon/dim2.h',
149
+ 'ext/lemon-1.3.1/lemon/path.h',
150
+ 'ext/lemon-1.3.1/lemon/hao_orlin.h',
151
+ 'ext/lemon-1.3.1/lemon/lp_skeleton.h',
152
+ 'ext/lemon-1.3.1/lemon/grid_graph.h',
153
+ 'ext/lemon-1.3.1/lemon/bits/windows.h',
154
+ 'ext/lemon-1.3.1/lemon/bits/path_dump.h',
155
+ 'ext/lemon-1.3.1/lemon/bits/solver_bits.h',
156
+ 'ext/lemon-1.3.1/lemon/bits/windows.cc',
157
+ 'ext/lemon-1.3.1/lemon/bits/alteration_notifier.h',
158
+ 'ext/lemon-1.3.1/lemon/bits/variant.h',
159
+ 'ext/lemon-1.3.1/lemon/bits/traits.h',
160
+ 'ext/lemon-1.3.1/lemon/bits/map_extender.h',
161
+ 'ext/lemon-1.3.1/lemon/bits/default_map.h',
162
+ 'ext/lemon-1.3.1/lemon/bits/enable_if.h',
163
+ 'ext/lemon-1.3.1/lemon/bits/array_map.h',
164
+ 'ext/lemon-1.3.1/lemon/bits/vector_map.h',
165
+ 'ext/lemon-1.3.1/lemon/bits/edge_set_extender.h',
166
+ 'ext/lemon-1.3.1/lemon/bits/lock.h',
167
+ 'ext/lemon-1.3.1/lemon/bits/bezier.h',
168
+ 'ext/lemon-1.3.1/lemon/bits/graph_extender.h',
169
+ 'ext/lemon-1.3.1/lemon/bits/graph_adaptor_extender.h',
170
+ 'ext/lemon-1.3.1/lemon/network_simplex.h',
171
+ 'ext/lemon-1.3.1/lemon/dijkstra.h',
172
+ 'ext/lemon-1.3.1/lemon/quad_heap.h',
173
+ 'ext/lemon-1.3.1/lemon/color.h'
174
+ ]
175
+ end
176
+
@@ -0,0 +1,240 @@
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
+ require 'open3'
19
+
20
+
21
+ module LemonGraph
22
+
23
+ class Graphviz
24
+ attr_reader :str #@return [String] A graphviz representation of the graph this instance was build with
25
+
26
+ # Returns a new {Graphviz} object build from graph _graph_.
27
+ #
28
+ # Keyword arguments can be provided.
29
+ # * keyword arguments starting with `node_` are expected to be {NodeMap}s and will be applied to nodes
30
+ # * keyword arguments starting with `edge_` are expected to be {EdgeMap}s and will be applied to edges
31
+ # * keyword arguments starting with `arc_` are expected to be {ArcMap}s and will be applied to arcs
32
+ #
33
+ # Other options can be provided as hashes or other objects.
34
+ #
35
+ # @example
36
+ # d = LemonGraph::Digraph.new
37
+ # n = 7.times.collect{d.add_node}
38
+ # n[0].arc_to n[1]
39
+ # n[1].arc_to n[2]
40
+ # n[1].arc_to n[3]
41
+ # n[4].arc_from n[0]
42
+ # n[5].arc_from n[4]
43
+ # n[4].arc_to n[6]
44
+ #
45
+ # nl = LemonGraph::NodeMap.new(d){|n| n.nb_outarcs > 0 ? n.id.to_s : "Leaf #{n.id}" }
46
+ # nl[n[0]] = "Root 0"
47
+ #
48
+ # nc = LemonGraph::NodeMap.new(d){|n| n.nb_outarcs > 0 ? :blue : :red }
49
+ #
50
+ # al = LemonGraph::ArcMap.new(d){|a| "#{a.source.id} - #{a.target.id}"}
51
+ #
52
+ # gv = LemonGraph::Graphviz.new(d
53
+ # node_label: nl,
54
+ # node_color: nc,
55
+ # arc_label: al,
56
+ # rankdir: 'LR',
57
+ # graph: {bgcolor: '#00FF00FF'},
58
+ # node: {fontname: 'DejaVu Sans', style: :filled, width: 0.4},
59
+ # edge: {penwidth: 0.75, arrowhead: :open}
60
+ # )
61
+ #
62
+ # puts gv.str
63
+ # #=>
64
+ # # digraph {
65
+ # # rankdir="LR";
66
+ # # graph [bgcolor="#00FF00FF"];
67
+ # # node [fontname="DejaVu Sans",style=filled,width=0.4];
68
+ # # edge [penwidth=0.75,arrowhead=open];
69
+ # # 6 [label="Leaf 6",color=red];
70
+ # # 5 [label="Leaf 5",color=red];
71
+ # # 4 [label="4",color=blue];
72
+ # # 3 [label="Leaf 3",color=red];
73
+ # # 2 [label="Leaf 2",color=red];
74
+ # # 1 [label="1",color=blue];
75
+ # # 0 [label="Root 0",color=blue];
76
+ # # 4 -> 6 [label="4 - 6"];
77
+ # # 4 -> 5 [label="4 - 5"];
78
+ # # 1 -> 3 [label="1 - 3"];
79
+ # # 1 -> 2 [label="1 - 2"];
80
+ # # 0 -> 4 [label="0 - 4"];
81
+ # # 0 -> 1 [label="0 - 1"];
82
+ # # }
83
+ #
84
+ # @param graph [Graph, Digraph]
85
+ # @return [Graphviz]
86
+ def initialize(graph, **maps)
87
+ raise TypeError.new("Expecting a #{Graph} or a #{Digraph}, not a #{graph.class}") unless graph.is_a?(Graph) or graph.is_a?(Digraph)
88
+ @str = ''
89
+ node_maps = {}
90
+ arc_maps = {}
91
+ edge_maps = {}
92
+ options = {}
93
+ maps.each do |map_name, map|
94
+ m = map_name.to_s.match(/^(node|arc|edge)_(.+?)s?$/)
95
+ if m then
96
+ case m[1]
97
+ when 'node'
98
+ raise "expecting a #{NodeMap} for :node_*, not a #{map.class}" unless NodeMap === map
99
+ node_maps[m[2].to_sym] = map
100
+ when 'edge'
101
+ raise "expecting a #{EdgeMap} for :edge_*, not a #{map.class}" unless EdgeMap === map
102
+ edge_maps[m[2].to_sym] = map
103
+ when 'arc'
104
+ raise "expecting a #{ArcMap} for :arc_*, not a #{map.class}" unless ArcMap === map
105
+ arc_maps[m[2].to_sym] = map
106
+ end
107
+ else
108
+ #raise 'expecting a Hash for options' unless Hash === map
109
+ options[map_name] = map
110
+ end
111
+ end
112
+ if graph.is_a?(Digraph) then
113
+ @str << "digraph {\n"
114
+ else
115
+ @str << "graph {\n"
116
+ end
117
+ options.each do |k, h|
118
+ if Hash === h then
119
+ @str << " #{k} [#{h.collect{|k, v| "#{k}=#{String === v ? "\"#{v}\"" : v}"}.join(',')}];\n"
120
+ else
121
+ @str << " #{k}=#{String === h ? "\"#{h}\"" : h};\n"
122
+ end
123
+ end
124
+ unless node_maps.empty? then
125
+ graph.each_node do |n|
126
+ params = node_maps.collect { |map_name, map|
127
+ v = map[n]
128
+ next nil if v.nil?
129
+ if v.is_a?(String) then
130
+ "#{map_name}=\"#{v}\""
131
+ else
132
+ "#{map_name}=#{v}"
133
+ end
134
+ }.compact.join(',')
135
+ @str << " #{n.id} [#{params}];\n" unless params.empty?
136
+ end
137
+ end
138
+ if graph.is_a?(Digraph) then
139
+ graph.each_arc do |a|
140
+ @str << " #{a.source.id} -> #{a.target.id}"
141
+ params = arc_maps.collect { |map_name, map|
142
+ v = map[a]
143
+ next nil if v.nil?
144
+ if v.is_a?(String) then
145
+ "#{map_name}=\"#{v}\""
146
+ else
147
+ "#{map_name}=#{v}"
148
+ end
149
+ }.compact.join(',')
150
+ @str << "#{params.empty? ? '' : " [#{params}]"};\n"
151
+ end
152
+ else
153
+ graph.each_edge do |e|
154
+ @str << " #{e.u.id} -- #{e.v.id}"
155
+ params = edge_maps.collect { |map_name, map|
156
+ v = map[e]
157
+ next nil if v.nil?
158
+ if v.is_a?(String) then
159
+ "#{map_name}=\"#{v}\""
160
+ else
161
+ "#{map_name}=#{v}"
162
+ end
163
+ }.compact.join(',')
164
+ @str << "#{params.empty? ? '' : " [#{params}]"};\n"
165
+ end
166
+ end
167
+ @str << "}\n"
168
+ end
169
+
170
+
171
+ # @return [String] an image as a SVG string
172
+ def to_svg
173
+ to_image(:svg)
174
+ end
175
+
176
+
177
+ # # @return [String] a PNG image as a binary string
178
+ # def to_png
179
+ # s = to_image(:png)
180
+ # if defined? IRuby then
181
+ # IRuby.display s, mime: 'image/png'
182
+ # ""
183
+ # else
184
+ # s
185
+ # end
186
+ # end
187
+
188
+
189
+ # @param type [Symbol] :svg, :png or pdf
190
+ # @return [String] the binary content of the image
191
+ def to_image(type)
192
+ input = @str #.force_encoding('ASCII-8BIT')
193
+ output = ''
194
+ # output.force_encoding('ASCII-8BIT') if type == :png
195
+ exit_status = nil
196
+ Open3.popen3("dot #{type == :png ? '-Gdpi=90' : ''} -T#{type}") do |stdin, stdout, stderr, wait_thr|
197
+ loop do
198
+ unless input.empty? then
199
+ n = stdin.write(input)
200
+ input = input[n..-1]
201
+ stdin.close if input.empty?
202
+ end
203
+ output += stdout.read
204
+ begin
205
+ while not(stderr.closed?) and (r = stderr.read_nonblock(8192)).length > 0 do
206
+ $stderr.write r
207
+ end
208
+ rescue EOFError; end
209
+ break if input.empty?
210
+ end
211
+ exit_status = wait_thr.value
212
+ end
213
+ raise "dot program exited with value #{exit_status.exitstatus}" unless exit_status.success?
214
+ output.force_encoding('ASCII-8BIT')
215
+ output
216
+ end
217
+ end
218
+
219
+
220
+ class Digraph
221
+ # Returns a {Graphviz} object.
222
+ # See {Graphviz#initialize} for optional keyword arguments.
223
+ # @return [Graphviz]
224
+ def to_dot(**h)
225
+ Graphviz.new(self, **h)
226
+ end
227
+ end
228
+
229
+
230
+ class Graph
231
+ # Returns a {Graphviz} object.
232
+ # See {Graphviz#initialize} for optional keyword arguments.
233
+ # @return [Graphviz]
234
+ def to_dot(**h)
235
+ Graphviz.new(self, **h)
236
+ end
237
+ end
238
+ end
239
+
240
+
@@ -0,0 +1,4 @@
1
+ module LemonGraph
2
+ # LemonGraph gem version
3
+ VERSION = '0.0.1'
4
+ end
data/lib/lemongraph.rb ADDED
@@ -0,0 +1,21 @@
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
+ require_relative './lemongraph/lemongraph'
19
+ require_relative './lemongraph/version.rb'
20
+ require_relative './lemongraph/graphviz.rb'
21
+
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require '../lib/lemongraph.rb'
4
+
5
+ base_path = '../ext/lemon-1.3.1/install/include/lemon/'
6
+ headers = Dir[base_path + '**/*.h'].collect{|p| p.sub(base_path, '')}
7
+
8
+ g = LemonGraph::Digraph.new
9
+ filename_to_node = {}
10
+ node_to_filename = LemonGraph::NodeMap.new(g)
11
+
12
+ headers.each do |fname|
13
+ source = filename_to_node[fname]
14
+ if source.nil? then
15
+ source = g.add_node
16
+ node_to_filename[source] = fname
17
+ filename_to_node[fname] = source
18
+ end
19
+ includes = File.read(base_path + fname).force_encoding('ASCII-8BIT').scan(/^\s*#include\s+<lemon\/(.+\.h)>$/).flatten
20
+ includes.each do |include_name|
21
+ target = filename_to_node[include_name]
22
+ if target.nil? then
23
+ target = g.add_node
24
+ node_to_filename[target] = include_name
25
+ filename_to_node[include_name] = target
26
+ end
27
+ source.arc_to target
28
+ end
29
+ end
30
+
31
+ gv = g.to_dot(node_labels: node_to_filename,
32
+ rankdir: 'BT',
33
+ graph: {nodesep: 0.2, ranksep: 3, bgcolor: '#ffffff00'},
34
+ node: {fontname: 'DejaVu Sans', fontsize: 12, style: :filled, margin: '0.05,0.02', width: 0.4, height: 0.4},
35
+ edge: {penwidth: 0.75, arrowsize: 0.6, arrowhead: :open})
36
+ File.write('deps.dot', gv.str)
37
+ #File.write('deps.png', gv.to_png)
38
+
metadata ADDED
@@ -0,0 +1,202 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lemongraph
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Théotime Bollengier
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2022-03-08 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: LemonGraph is a Ruby C extension wrapping parts of the LEMON graph library
14
+ email: theotime.bollengier@ensta-bretagne.fr
15
+ executables: []
16
+ extensions:
17
+ - ext/lemongraph/extconf.rb
18
+ extra_rdoc_files: []
19
+ files:
20
+ - ".yardopts"
21
+ - LICENSE
22
+ - README.md
23
+ - ext/lemon-1.3.1/AUTHORS
24
+ - ext/lemon-1.3.1/CMakeLists.txt
25
+ - ext/lemon-1.3.1/INSTALL
26
+ - ext/lemon-1.3.1/LICENSE
27
+ - ext/lemon-1.3.1/NEWS
28
+ - ext/lemon-1.3.1/README
29
+ - ext/lemon-1.3.1/cmake/FindCOIN.cmake
30
+ - ext/lemon-1.3.1/cmake/FindGLPK.cmake
31
+ - ext/lemon-1.3.1/cmake/FindGhostscript.cmake
32
+ - ext/lemon-1.3.1/cmake/FindILOG.cmake
33
+ - ext/lemon-1.3.1/cmake/FindSOPLEX.cmake
34
+ - ext/lemon-1.3.1/cmake/LEMONConfig.cmake.in
35
+ - ext/lemon-1.3.1/cmake/nsis/lemon.ico
36
+ - ext/lemon-1.3.1/cmake/nsis/uninstall.ico
37
+ - ext/lemon-1.3.1/cmake/version.cmake
38
+ - ext/lemon-1.3.1/cmake/version.cmake.in
39
+ - ext/lemon-1.3.1/contrib/CMakeLists.txt
40
+ - ext/lemon-1.3.1/lemon/CMakeLists.txt
41
+ - ext/lemon-1.3.1/lemon/adaptors.h
42
+ - ext/lemon-1.3.1/lemon/arg_parser.cc
43
+ - ext/lemon-1.3.1/lemon/arg_parser.h
44
+ - ext/lemon-1.3.1/lemon/assert.h
45
+ - ext/lemon-1.3.1/lemon/base.cc
46
+ - ext/lemon-1.3.1/lemon/bellman_ford.h
47
+ - ext/lemon-1.3.1/lemon/bfs.h
48
+ - ext/lemon-1.3.1/lemon/bin_heap.h
49
+ - ext/lemon-1.3.1/lemon/binomial_heap.h
50
+ - ext/lemon-1.3.1/lemon/bits/alteration_notifier.h
51
+ - ext/lemon-1.3.1/lemon/bits/array_map.h
52
+ - ext/lemon-1.3.1/lemon/bits/bezier.h
53
+ - ext/lemon-1.3.1/lemon/bits/default_map.h
54
+ - ext/lemon-1.3.1/lemon/bits/edge_set_extender.h
55
+ - ext/lemon-1.3.1/lemon/bits/enable_if.h
56
+ - ext/lemon-1.3.1/lemon/bits/graph_adaptor_extender.h
57
+ - ext/lemon-1.3.1/lemon/bits/graph_extender.h
58
+ - ext/lemon-1.3.1/lemon/bits/lock.h
59
+ - ext/lemon-1.3.1/lemon/bits/map_extender.h
60
+ - ext/lemon-1.3.1/lemon/bits/path_dump.h
61
+ - ext/lemon-1.3.1/lemon/bits/solver_bits.h
62
+ - ext/lemon-1.3.1/lemon/bits/traits.h
63
+ - ext/lemon-1.3.1/lemon/bits/variant.h
64
+ - ext/lemon-1.3.1/lemon/bits/vector_map.h
65
+ - ext/lemon-1.3.1/lemon/bits/windows.cc
66
+ - ext/lemon-1.3.1/lemon/bits/windows.h
67
+ - ext/lemon-1.3.1/lemon/bucket_heap.h
68
+ - ext/lemon-1.3.1/lemon/capacity_scaling.h
69
+ - ext/lemon-1.3.1/lemon/cbc.cc
70
+ - ext/lemon-1.3.1/lemon/cbc.h
71
+ - ext/lemon-1.3.1/lemon/christofides_tsp.h
72
+ - ext/lemon-1.3.1/lemon/circulation.h
73
+ - ext/lemon-1.3.1/lemon/clp.cc
74
+ - ext/lemon-1.3.1/lemon/clp.h
75
+ - ext/lemon-1.3.1/lemon/color.cc
76
+ - ext/lemon-1.3.1/lemon/color.h
77
+ - ext/lemon-1.3.1/lemon/concept_check.h
78
+ - ext/lemon-1.3.1/lemon/concepts/bpgraph.h
79
+ - ext/lemon-1.3.1/lemon/concepts/digraph.h
80
+ - ext/lemon-1.3.1/lemon/concepts/graph.h
81
+ - ext/lemon-1.3.1/lemon/concepts/graph_components.h
82
+ - ext/lemon-1.3.1/lemon/concepts/heap.h
83
+ - ext/lemon-1.3.1/lemon/concepts/maps.h
84
+ - ext/lemon-1.3.1/lemon/concepts/path.h
85
+ - ext/lemon-1.3.1/lemon/config.h.in
86
+ - ext/lemon-1.3.1/lemon/connectivity.h
87
+ - ext/lemon-1.3.1/lemon/core.h
88
+ - ext/lemon-1.3.1/lemon/cost_scaling.h
89
+ - ext/lemon-1.3.1/lemon/counter.h
90
+ - ext/lemon-1.3.1/lemon/cplex.cc
91
+ - ext/lemon-1.3.1/lemon/cplex.h
92
+ - ext/lemon-1.3.1/lemon/cycle_canceling.h
93
+ - ext/lemon-1.3.1/lemon/dfs.h
94
+ - ext/lemon-1.3.1/lemon/dheap.h
95
+ - ext/lemon-1.3.1/lemon/dijkstra.h
96
+ - ext/lemon-1.3.1/lemon/dim2.h
97
+ - ext/lemon-1.3.1/lemon/dimacs.h
98
+ - ext/lemon-1.3.1/lemon/edge_set.h
99
+ - ext/lemon-1.3.1/lemon/edmonds_karp.h
100
+ - ext/lemon-1.3.1/lemon/elevator.h
101
+ - ext/lemon-1.3.1/lemon/error.h
102
+ - ext/lemon-1.3.1/lemon/euler.h
103
+ - ext/lemon-1.3.1/lemon/fib_heap.h
104
+ - ext/lemon-1.3.1/lemon/fractional_matching.h
105
+ - ext/lemon-1.3.1/lemon/full_graph.h
106
+ - ext/lemon-1.3.1/lemon/glpk.cc
107
+ - ext/lemon-1.3.1/lemon/glpk.h
108
+ - ext/lemon-1.3.1/lemon/gomory_hu.h
109
+ - ext/lemon-1.3.1/lemon/graph_to_eps.h
110
+ - ext/lemon-1.3.1/lemon/greedy_tsp.h
111
+ - ext/lemon-1.3.1/lemon/grid_graph.h
112
+ - ext/lemon-1.3.1/lemon/grosso_locatelli_pullan_mc.h
113
+ - ext/lemon-1.3.1/lemon/hao_orlin.h
114
+ - ext/lemon-1.3.1/lemon/hartmann_orlin_mmc.h
115
+ - ext/lemon-1.3.1/lemon/howard_mmc.h
116
+ - ext/lemon-1.3.1/lemon/hypercube_graph.h
117
+ - ext/lemon-1.3.1/lemon/insertion_tsp.h
118
+ - ext/lemon-1.3.1/lemon/karp_mmc.h
119
+ - ext/lemon-1.3.1/lemon/kruskal.h
120
+ - ext/lemon-1.3.1/lemon/lemon.pc.in
121
+ - ext/lemon-1.3.1/lemon/lgf_reader.h
122
+ - ext/lemon-1.3.1/lemon/lgf_writer.h
123
+ - ext/lemon-1.3.1/lemon/list_graph.h
124
+ - ext/lemon-1.3.1/lemon/lp.h
125
+ - ext/lemon-1.3.1/lemon/lp_base.cc
126
+ - ext/lemon-1.3.1/lemon/lp_base.h
127
+ - ext/lemon-1.3.1/lemon/lp_skeleton.cc
128
+ - ext/lemon-1.3.1/lemon/lp_skeleton.h
129
+ - ext/lemon-1.3.1/lemon/maps.h
130
+ - ext/lemon-1.3.1/lemon/matching.h
131
+ - ext/lemon-1.3.1/lemon/math.h
132
+ - ext/lemon-1.3.1/lemon/max_cardinality_search.h
133
+ - ext/lemon-1.3.1/lemon/min_cost_arborescence.h
134
+ - ext/lemon-1.3.1/lemon/nagamochi_ibaraki.h
135
+ - ext/lemon-1.3.1/lemon/nauty_reader.h
136
+ - ext/lemon-1.3.1/lemon/nearest_neighbor_tsp.h
137
+ - ext/lemon-1.3.1/lemon/network_simplex.h
138
+ - ext/lemon-1.3.1/lemon/opt2_tsp.h
139
+ - ext/lemon-1.3.1/lemon/pairing_heap.h
140
+ - ext/lemon-1.3.1/lemon/path.h
141
+ - ext/lemon-1.3.1/lemon/planarity.h
142
+ - ext/lemon-1.3.1/lemon/preflow.h
143
+ - ext/lemon-1.3.1/lemon/quad_heap.h
144
+ - ext/lemon-1.3.1/lemon/radix_heap.h
145
+ - ext/lemon-1.3.1/lemon/radix_sort.h
146
+ - ext/lemon-1.3.1/lemon/random.cc
147
+ - ext/lemon-1.3.1/lemon/random.h
148
+ - ext/lemon-1.3.1/lemon/smart_graph.h
149
+ - ext/lemon-1.3.1/lemon/soplex.cc
150
+ - ext/lemon-1.3.1/lemon/soplex.h
151
+ - ext/lemon-1.3.1/lemon/static_graph.h
152
+ - ext/lemon-1.3.1/lemon/suurballe.h
153
+ - ext/lemon-1.3.1/lemon/time_measure.h
154
+ - ext/lemon-1.3.1/lemon/tolerance.h
155
+ - ext/lemon-1.3.1/lemon/unionfind.h
156
+ - ext/lemon-1.3.1/scripts/unify-sources.sh
157
+ - ext/lemon-1.3.1/scripts/valgrind-wrapper.sh
158
+ - ext/lemongraph/arc_map.cc
159
+ - ext/lemongraph/digraph.cc
160
+ - ext/lemongraph/digraph_arc.cc
161
+ - ext/lemongraph/digraph_node.cc
162
+ - ext/lemongraph/edge_map.cc
163
+ - ext/lemongraph/extconf.rb
164
+ - ext/lemongraph/graph.cc
165
+ - ext/lemongraph/graph_arc.cc
166
+ - ext/lemongraph/graph_edge.cc
167
+ - ext/lemongraph/graph_item.cc
168
+ - ext/lemongraph/graph_node.cc
169
+ - ext/lemongraph/lemongraph.cc
170
+ - ext/lemongraph/lemongraph.hh
171
+ - ext/lemongraph/lemongraph.map
172
+ - ext/lemongraph/lemongraph_export.hh
173
+ - ext/lemongraph/node_map.cc
174
+ - lemongraph.gemspec
175
+ - lib/lemongraph.rb
176
+ - lib/lemongraph/graphviz.rb
177
+ - lib/lemongraph/version.rb
178
+ - samples/lemondeps.rb
179
+ homepage: https://gitlab.ensta-bretagne.fr/bollenth/lemongraph
180
+ licenses:
181
+ - GPL-3.0+
182
+ metadata: {}
183
+ post_install_message:
184
+ rdoc_options: []
185
+ require_paths:
186
+ - lib
187
+ required_ruby_version: !ruby/object:Gem::Requirement
188
+ requirements:
189
+ - - ">="
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ required_rubygems_version: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ requirements: []
198
+ rubygems_version: 3.2.3
199
+ signing_key:
200
+ specification_version: 4
201
+ summary: A Ruby C extension to use parts of the LEMON graph library
202
+ test_files: []