gecoder-with-gecode 0.7.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 (634) hide show
  1. data/CHANGES +81 -0
  2. data/COPYING +17 -0
  3. data/LGPL-LICENSE +458 -0
  4. data/README +45 -0
  5. data/Rakefile +13 -0
  6. data/example/example_helper.rb +1 -0
  7. data/example/magic_sequence.rb +43 -0
  8. data/example/queens.rb +43 -0
  9. data/example/raw_bindings.rb +42 -0
  10. data/example/send_more_money.rb +43 -0
  11. data/example/send_most_money.rb +58 -0
  12. data/example/square_tiling.rb +84 -0
  13. data/example/sudoku-set.rb +110 -0
  14. data/example/sudoku.rb +61 -0
  15. data/ext/extconf.rb +29 -0
  16. data/ext/gecode-1.3.1/LICENSE +34 -0
  17. data/ext/gecode-1.3.1/Makefile.contribs +71 -0
  18. data/ext/gecode-1.3.1/Makefile.dep +3928 -0
  19. data/ext/gecode-1.3.1/Makefile.in +966 -0
  20. data/ext/gecode-1.3.1/changelog.in +1065 -0
  21. data/ext/gecode-1.3.1/configure +8590 -0
  22. data/ext/gecode-1.3.1/configure.ac +179 -0
  23. data/ext/gecode-1.3.1/configure.ac.in +175 -0
  24. data/ext/gecode-1.3.1/contribs/README +26 -0
  25. data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
  26. data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
  27. data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
  28. data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
  29. data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
  30. data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
  31. data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
  32. data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
  33. data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
  34. data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
  35. data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
  36. data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
  37. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
  38. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
  39. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
  40. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
  41. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
  42. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
  43. data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
  44. data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
  45. data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
  46. data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
  47. data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
  48. data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
  49. data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
  50. data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
  51. data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
  52. data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
  53. data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
  54. data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
  55. data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
  56. data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
  57. data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
  58. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
  59. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
  60. data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
  61. data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
  62. data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
  63. data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
  64. data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
  65. data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
  66. data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
  67. data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
  68. data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
  69. data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
  70. data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
  71. data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
  72. data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
  73. data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
  74. data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
  75. data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
  76. data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
  77. data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
  78. data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
  79. data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
  80. data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
  81. data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
  82. data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
  83. data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
  84. data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
  85. data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
  86. data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
  87. data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
  88. data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
  89. data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
  90. data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
  91. data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
  92. data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
  93. data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
  94. data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
  95. data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
  96. data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
  97. data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
  98. data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
  99. data/ext/gecode-1.3.1/examples/cars.cc +165 -0
  100. data/ext/gecode-1.3.1/examples/crew.cc +220 -0
  101. data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
  102. data/ext/gecode-1.3.1/examples/donald.cc +93 -0
  103. data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
  104. data/ext/gecode-1.3.1/examples/golf.cc +242 -0
  105. data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
  106. data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
  107. data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
  108. data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
  109. data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
  110. data/ext/gecode-1.3.1/examples/knights.cc +146 -0
  111. data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
  112. data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
  113. data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
  114. data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
  115. data/ext/gecode-1.3.1/examples/money.cc +92 -0
  116. data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
  117. data/ext/gecode-1.3.1/examples/packing.cc +211 -0
  118. data/ext/gecode-1.3.1/examples/partition.cc +126 -0
  119. data/ext/gecode-1.3.1/examples/photo.cc +155 -0
  120. data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
  121. data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
  122. data/ext/gecode-1.3.1/examples/queens.cc +99 -0
  123. data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
  124. data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
  125. data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
  126. data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
  127. data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
  128. data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
  129. data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
  130. data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
  131. data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
  132. data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
  133. data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
  134. data/ext/gecode-1.3.1/examples/support.cc +160 -0
  135. data/ext/gecode-1.3.1/examples/support.hh +98 -0
  136. data/ext/gecode-1.3.1/examples/support.icc +187 -0
  137. data/ext/gecode-1.3.1/examples/timer.cc +47 -0
  138. data/ext/gecode-1.3.1/examples/timer.hh +72 -0
  139. data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
  140. data/ext/gecode-1.3.1/extconf.rb +8 -0
  141. data/ext/gecode-1.3.1/gecode.m4 +736 -0
  142. data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
  143. data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
  144. data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
  145. data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
  146. data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
  147. data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
  148. data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
  149. data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
  150. data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
  151. data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
  152. data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
  153. data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
  154. data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
  155. data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
  156. data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
  157. data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
  158. data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
  159. data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
  160. data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
  161. data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
  162. data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
  163. data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
  164. data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
  165. data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
  166. data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
  167. data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
  168. data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
  169. data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
  170. data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
  171. data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
  172. data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
  173. data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
  174. data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
  175. data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
  176. data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
  177. data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
  178. data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
  179. data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
  180. data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
  181. data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
  182. data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
  183. data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
  184. data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
  185. data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
  186. data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
  187. data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
  188. data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
  189. data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
  190. data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
  191. data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
  192. data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
  193. data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
  194. data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
  195. data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
  196. data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
  197. data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
  198. data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
  199. data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
  200. data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
  201. data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
  202. data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
  203. data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
  204. data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
  205. data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
  206. data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
  207. data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
  208. data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
  209. data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
  210. data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
  211. data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
  212. data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
  213. data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
  214. data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
  215. data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
  216. data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
  217. data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
  218. data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
  219. data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
  220. data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
  221. data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
  222. data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
  223. data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
  224. data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
  225. data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
  226. data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
  227. data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
  228. data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
  229. data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
  230. data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
  231. data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
  232. data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
  233. data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
  234. data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
  235. data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
  236. data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
  237. data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
  238. data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
  239. data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
  240. data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
  241. data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
  242. data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
  243. data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
  244. data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
  245. data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
  246. data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
  247. data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
  248. data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
  249. data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
  250. data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
  251. data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
  252. data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
  253. data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
  254. data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
  255. data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
  256. data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
  257. data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
  258. data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
  259. data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
  260. data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
  261. data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
  262. data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
  263. data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
  264. data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
  265. data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
  266. data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
  267. data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
  268. data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
  269. data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
  270. data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
  271. data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
  272. data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
  273. data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
  274. data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
  275. data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
  276. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
  277. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
  278. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
  279. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
  280. data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
  281. data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
  282. data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
  283. data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
  284. data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
  285. data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
  286. data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
  287. data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
  288. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
  289. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
  290. data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
  291. data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
  292. data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
  293. data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
  294. data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
  295. data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
  296. data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
  297. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
  298. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
  299. data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
  300. data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
  301. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
  302. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
  303. data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
  304. data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
  305. data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
  306. data/ext/gecode-1.3.1/gecode/search.hh +745 -0
  307. data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
  308. data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
  309. data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
  310. data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
  311. data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
  312. data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
  313. data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
  314. data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
  315. data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
  316. data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
  317. data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
  318. data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
  319. data/ext/gecode-1.3.1/gecode/set.hh +419 -0
  320. data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
  321. data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
  322. data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
  323. data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
  324. data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
  325. data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
  326. data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
  327. data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
  328. data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
  329. data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
  330. data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
  331. data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
  332. data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
  333. data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
  334. data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
  335. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
  336. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
  337. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
  338. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
  339. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
  340. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
  341. data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
  342. data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
  343. data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
  344. data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
  345. data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
  346. data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
  347. data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
  348. data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
  349. data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
  350. data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
  351. data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
  352. data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
  353. data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
  354. data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
  355. data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
  356. data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
  357. data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
  358. data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
  359. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
  360. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
  361. data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
  362. data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
  363. data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
  364. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
  365. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
  366. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
  367. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
  368. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
  369. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
  370. data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
  371. data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
  372. data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
  373. data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
  374. data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
  375. data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
  376. data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
  377. data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
  378. data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
  379. data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
  380. data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
  381. data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
  382. data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
  383. data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
  384. data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
  385. data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
  386. data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
  387. data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
  388. data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
  389. data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
  390. data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
  391. data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
  392. data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
  393. data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
  394. data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
  395. data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
  396. data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
  397. data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
  398. data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
  399. data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
  400. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
  401. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
  402. data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
  403. data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
  404. data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
  405. data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
  406. data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
  407. data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
  408. data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
  409. data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
  410. data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
  411. data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
  412. data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
  413. data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
  414. data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
  415. data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
  416. data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
  417. data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
  418. data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
  419. data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
  420. data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
  421. data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
  422. data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
  423. data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
  424. data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
  425. data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
  426. data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
  427. data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
  428. data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
  429. data/ext/gecode-1.3.1/install-sh +323 -0
  430. data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
  431. data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
  432. data/ext/gecode-1.3.1/misc/debian/control +11 -0
  433. data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
  434. data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
  435. data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
  436. data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
  437. data/ext/gecode-1.3.1/misc/debian/rules +81 -0
  438. data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
  439. data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
  440. data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
  441. data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
  442. data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
  443. data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
  444. data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
  445. data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
  446. data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
  447. data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
  448. data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
  449. data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
  450. data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
  451. data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
  452. data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
  453. data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
  454. data/ext/gecode-1.3.1/test/int.cc +497 -0
  455. data/ext/gecode-1.3.1/test/int.hh +119 -0
  456. data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
  457. data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
  458. data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
  459. data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
  460. data/ext/gecode-1.3.1/test/int/count.cc +264 -0
  461. data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
  462. data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
  463. data/ext/gecode-1.3.1/test/int/element.cc +132 -0
  464. data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
  465. data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
  466. data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
  467. data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
  468. data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
  469. data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
  470. data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
  471. data/ext/gecode-1.3.1/test/intset.cc +40 -0
  472. data/ext/gecode-1.3.1/test/log.cc +515 -0
  473. data/ext/gecode-1.3.1/test/log.hh +68 -0
  474. data/ext/gecode-1.3.1/test/set.cc +542 -0
  475. data/ext/gecode-1.3.1/test/set.hh +152 -0
  476. data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
  477. data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
  478. data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
  479. data/ext/gecode-1.3.1/test/set/int.cc +249 -0
  480. data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
  481. data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
  482. data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
  483. data/ext/gecode-1.3.1/test/set/select.cc +108 -0
  484. data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
  485. data/ext/gecode-1.3.1/test/stress.cc +93 -0
  486. data/ext/gecode-1.3.1/test/stress.hh +74 -0
  487. data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
  488. data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
  489. data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
  490. data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
  491. data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
  492. data/ext/gecode-1.3.1/test/test.cc +215 -0
  493. data/ext/gecode-1.3.1/test/test.hh +107 -0
  494. data/ext/missing.cpp +328 -0
  495. data/ext/missing.h +120 -0
  496. data/ext/vararray.cpp +330 -0
  497. data/ext/vararray.h +149 -0
  498. data/lib/gecoder.rb +5 -0
  499. data/lib/gecoder/bindings.rb +34 -0
  500. data/lib/gecoder/bindings/bindings.rb +2209 -0
  501. data/lib/gecoder/interface.rb +8 -0
  502. data/lib/gecoder/interface/binding_changes.rb +313 -0
  503. data/lib/gecoder/interface/branch.rb +152 -0
  504. data/lib/gecoder/interface/constraints.rb +397 -0
  505. data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
  506. data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
  507. data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
  508. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
  509. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
  510. data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
  511. data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
  512. data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
  513. data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
  514. data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
  515. data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
  516. data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
  517. data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
  518. data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
  519. data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
  520. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
  521. data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
  522. data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
  523. data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
  524. data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
  525. data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
  526. data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
  527. data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
  528. data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
  529. data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
  530. data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
  531. data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
  532. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
  533. data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
  534. data/lib/gecoder/interface/enum_matrix.rb +64 -0
  535. data/lib/gecoder/interface/enum_wrapper.rb +153 -0
  536. data/lib/gecoder/interface/model.rb +251 -0
  537. data/lib/gecoder/interface/search.rb +123 -0
  538. data/lib/gecoder/interface/variables.rb +254 -0
  539. data/lib/gecoder/version.rb +4 -0
  540. data/specs/binding_changes.rb +76 -0
  541. data/specs/bool_var.rb +74 -0
  542. data/specs/branch.rb +170 -0
  543. data/specs/constraints/arithmetic.rb +266 -0
  544. data/specs/constraints/bool_enum.rb +140 -0
  545. data/specs/constraints/boolean.rb +232 -0
  546. data/specs/constraints/cardinality.rb +154 -0
  547. data/specs/constraints/channel.rb +126 -0
  548. data/specs/constraints/connection.rb +373 -0
  549. data/specs/constraints/constraint_helper.rb +180 -0
  550. data/specs/constraints/constraints.rb +74 -0
  551. data/specs/constraints/count.rb +139 -0
  552. data/specs/constraints/distinct.rb +218 -0
  553. data/specs/constraints/element.rb +106 -0
  554. data/specs/constraints/equality.rb +31 -0
  555. data/specs/constraints/int_domain.rb +69 -0
  556. data/specs/constraints/int_relation.rb +78 -0
  557. data/specs/constraints/linear.rb +332 -0
  558. data/specs/constraints/reification_sugar.rb +96 -0
  559. data/specs/constraints/selection.rb +292 -0
  560. data/specs/constraints/set_domain.rb +181 -0
  561. data/specs/constraints/set_operation.rb +285 -0
  562. data/specs/constraints/set_relation.rb +201 -0
  563. data/specs/constraints/sort.rb +175 -0
  564. data/specs/enum_matrix.rb +43 -0
  565. data/specs/enum_wrapper.rb +122 -0
  566. data/specs/int_var.rb +144 -0
  567. data/specs/logging.rb +24 -0
  568. data/specs/model.rb +190 -0
  569. data/specs/search.rb +246 -0
  570. data/specs/set_var.rb +68 -0
  571. data/specs/spec_helper.rb +93 -0
  572. data/tasks/all_tasks.rb +1 -0
  573. data/tasks/distribution.rake +129 -0
  574. data/tasks/rcov.rake +17 -0
  575. data/tasks/specs.rake +15 -0
  576. data/tasks/svn.rake +11 -0
  577. data/tasks/website.rake +51 -0
  578. data/vendor/rust/README +28 -0
  579. data/vendor/rust/bin/cxxgenerator.rb +93 -0
  580. data/vendor/rust/include/rust_checks.hh +115 -0
  581. data/vendor/rust/include/rust_conversions.hh +102 -0
  582. data/vendor/rust/rust.rb +67 -0
  583. data/vendor/rust/rust/attribute.rb +51 -0
  584. data/vendor/rust/rust/bindings.rb +172 -0
  585. data/vendor/rust/rust/class.rb +339 -0
  586. data/vendor/rust/rust/constants.rb +48 -0
  587. data/vendor/rust/rust/container.rb +110 -0
  588. data/vendor/rust/rust/cppifaceparser.rb +129 -0
  589. data/vendor/rust/rust/cwrapper.rb +72 -0
  590. data/vendor/rust/rust/cxxclass.rb +98 -0
  591. data/vendor/rust/rust/element.rb +81 -0
  592. data/vendor/rust/rust/enum.rb +63 -0
  593. data/vendor/rust/rust/function.rb +407 -0
  594. data/vendor/rust/rust/namespace.rb +61 -0
  595. data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
  596. data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
  597. data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
  598. data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
  599. data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
  600. data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
  601. data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
  602. data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
  603. data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
  604. data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
  605. data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
  606. data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
  607. data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
  608. data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
  609. data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
  610. data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
  611. data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
  612. data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
  613. data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
  614. data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
  615. data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
  616. data/vendor/rust/rust/type.rb +98 -0
  617. data/vendor/rust/test/Makefile +4 -0
  618. data/vendor/rust/test/constants.rb +36 -0
  619. data/vendor/rust/test/cppclass.cc +45 -0
  620. data/vendor/rust/test/cppclass.hh +67 -0
  621. data/vendor/rust/test/cppclass.rb +59 -0
  622. data/vendor/rust/test/cwrapper.c +74 -0
  623. data/vendor/rust/test/cwrapper.h +41 -0
  624. data/vendor/rust/test/cwrapper.rb +56 -0
  625. data/vendor/rust/test/dummyclass.hh +31 -0
  626. data/vendor/rust/test/lib/extension-test.rb +98 -0
  627. data/vendor/rust/test/operators.cc +41 -0
  628. data/vendor/rust/test/operators.hh +39 -0
  629. data/vendor/rust/test/operators.rb +39 -0
  630. data/vendor/rust/test/test-constants.rb +43 -0
  631. data/vendor/rust/test/test-cppclass.rb +82 -0
  632. data/vendor/rust/test/test-cwrapper.rb +80 -0
  633. data/vendor/rust/test/test-operators.rb +42 -0
  634. metadata +826 -0
@@ -0,0 +1,877 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2005
8
+ * Guido Tack, 2005
9
+ *
10
+ * Last modified:
11
+ * $Date: 2006-10-24 23:25:59 +0200 (Tue, 24 Oct 2006) $ by $Author: tack $
12
+ * $Revision: 3782 $
13
+ *
14
+ * This file is part of Gecode, the generic constraint
15
+ * development environment:
16
+ * http://www.gecode.org
17
+ *
18
+ * See the file "LICENSE" for information on usage and
19
+ * redistribution of this file, and for a
20
+ * DISCLAIMER OF ALL WARRANTIES.
21
+ *
22
+ */
23
+
24
+ /*
25
+ * No code, just contains the group definitions of the
26
+ * Doxygen-generated documentation
27
+ */
28
+
29
+
30
+ /**
31
+ * \defgroup Task Functionality by programming task
32
+ */
33
+
34
+ /**
35
+ * \defgroup TaskInt Interfacing to Gecode
36
+ * \ingroup Task
37
+ */
38
+
39
+ /**
40
+ * \defgroup TaskIntScript Setting up scripts
41
+ *
42
+ * Scripts (or models) are programmed by inheriting from the class
43
+ * Gecode::Space. For many examples see \ref Example.
44
+ *
45
+ * \ingroup TaskInt
46
+ */
47
+
48
+ /**
49
+ * \defgroup TaskIntInt Using finite domain integers
50
+ * \ingroup TaskInt
51
+ */
52
+
53
+ /**
54
+ * \defgroup TaskIntIntVars Integer variables
55
+ * \ingroup TaskIntInt
56
+ */
57
+
58
+ /**
59
+ * \defgroup TaskIntSearch Search engines
60
+ *
61
+ * Defines search engines. All search engines (but Gecode::LDS, where
62
+ * it is not needed) support recomputation. The behaviour of recomputation
63
+ * can be controlled by two parameters:
64
+ * - \a c_d as minimal recomputation distance: this guarantees that
65
+ * a path between two nodes in the search tree for which copies are
66
+ * stored has at least length \a c_d. That is, in order to recompute
67
+ * a node in the search tree, \a c_d recomputation steps are needed.
68
+ * The minimal recomputation distance yields a guarantee on saving
69
+ * memory compared to full copying: it stores \a c_d times less nodes
70
+ * than full copying.
71
+ * - \a a_d as adaptive recomputation distance: when a node needs to be
72
+ * recomputed and the path is longer than \a a_d, an intermediate copy
73
+ * is created (approximately in the middle of the path) to speed up
74
+ * future recomputation. Note that small values of \a a_d can increase
75
+ * the memory consumption considerably.
76
+ *
77
+ * Full copying corresponds to a maximal recomputation distance \a c_d of 1.
78
+ *
79
+ * All recomputation performed is based on batch recomputation: batch
80
+ * recomputation performs propagation only once for an entire path
81
+ * used in recomputation.
82
+ *
83
+ * Requires \code #include "gecode/search.hh" \endcode
84
+ * \ingroup TaskInt
85
+ */
86
+
87
+ /**
88
+ * \defgroup TaskIntSet Using finite integer sets
89
+ * \ingroup TaskInt
90
+ */
91
+
92
+ /**
93
+ * \defgroup TaskIntSetVars Set variables
94
+ * \ingroup TaskIntSet
95
+ */
96
+
97
+ /**
98
+ * \defgroup TaskMiniModel Direct modelling
99
+ * \ingroup Task
100
+ */
101
+
102
+ /**
103
+ * \defgroup TaskSearch Programming search engines
104
+ * \ingroup Task
105
+ */
106
+
107
+ /**
108
+ * \defgroup TaskActor Programming actors
109
+ * \ingroup Task
110
+ */
111
+
112
+ /**
113
+ * \defgroup TaskActorInt Programming integer actors
114
+ * \ingroup TaskActor
115
+ */
116
+
117
+ /**
118
+ * \defgroup TaskActorSet Programming set actors
119
+ * \ingroup TaskActor
120
+ */
121
+
122
+ /**
123
+ * \defgroup TaskVar Programming variables
124
+ * \ingroup Task
125
+ */
126
+
127
+ /**
128
+ * \defgroup TaskVarView Programming views for variables
129
+ * \ingroup TaskVar
130
+ */
131
+
132
+ /**
133
+ * \defgroup Func Common functionality
134
+ */
135
+
136
+ /**
137
+ * \defgroup FuncMem Memory management
138
+ * \ingroup Func
139
+ */
140
+
141
+ /**
142
+ * \defgroup FuncThrow Gecode exceptions
143
+ * \ingroup Func
144
+ */
145
+
146
+ /**
147
+ * \defgroup FuncSupport Support algorithms and datastructures
148
+ *
149
+ * These are some common datastructures used in the implementation of
150
+ * %Gecode. Maybe they can be also useful to others.
151
+ *
152
+ * In order to use them, one needs to include the appropriate header-file
153
+ * as described in the class and function documentation.
154
+ * \ingroup Func
155
+ */
156
+
157
+ /**
158
+ * \defgroup FuncIter Range and value iterators
159
+ *
160
+ * Both range and value iterators have a rather simple interface
161
+ * for controlling iteration (which deviates from what you might be
162
+ * used to from other iterators).
163
+ *
164
+ * The application operator (if \c i is an iterator, it is invoked by \c i() )
165
+ * tests whether an iterator has not yet reached
166
+ * its end (in this case, \c true is returned). The prefix
167
+ * increment operator (if \c i is an iterator, this is invoked as \c ++i)
168
+ * moves the iterator to the next element (either next value or next range).
169
+ *
170
+ * Value iterators provide access to the value by the member function
171
+ * \c val(). Range iterators provide access to the smallest, largest, and
172
+ * width of the current range by \c min(), \c max(), and \c width()
173
+ * respectively.
174
+ *
175
+ * Requires \code #include "gecode/iter.hh" \endcode
176
+ * \ingroup Func
177
+ */
178
+
179
+ /**
180
+ * \defgroup FuncIterRanges Range iterators
181
+ *
182
+ * A range iterator provides incremental access to a sequence of increasing
183
+ * ranges.
184
+ *
185
+ * Requires \code #include "gecode/iter.hh" \endcode
186
+ * \ingroup FuncIter
187
+ */
188
+
189
+ /**
190
+ * \defgroup FuncIterRangesVirt Range iterators with virtual member functions
191
+ *
192
+ * A range iterator provides incremental access to a sequence of increasing
193
+ * ranges. Iterators with virtual member functions have to be used when
194
+ * they are combined dynamically, and the actual types hence cannot be
195
+ * specified as template arguments.
196
+ *
197
+ * Requires \code #include "gecode/iter.hh" \endcode
198
+ * \ingroup FuncIterRanges
199
+ */
200
+
201
+ /**
202
+ * \defgroup FuncIterValues Value iterators
203
+ *
204
+ * A value iterator provides incremental access to a sequence of increasing
205
+ * values.
206
+ *
207
+ * Requires \code #include "gecode/iter.hh" \endcode
208
+ * \ingroup FuncIter
209
+ */
210
+
211
+ /**
212
+ * \defgroup FuncIterValuesVirt Value iterators with virtual member functions
213
+ *
214
+ * A value iterator provides incremental access to a sequence of increasing
215
+ * values. Iterators with virtual member functions have to be used when
216
+ * they are combined dynamically, and the actual types hence cannot be
217
+ * specified as template arguments.
218
+ *
219
+ * Requires \code #include "gecode/iter.hh" \endcode
220
+ * \ingroup FuncIterValues
221
+ */
222
+
223
+ /**
224
+ * \defgroup Other Other available functionality
225
+ *
226
+ */
227
+
228
+ /**
229
+ * \defgroup FuncIntProp Integer propagators
230
+ *
231
+ * This module contains a description of all predefined integer
232
+ * propagators. They can be reused, for example, for rewriting
233
+ * newly defined integer propagators into already available
234
+ * propagators.
235
+ * \ingroup Other
236
+ */
237
+
238
+ /**
239
+ * \defgroup FuncIntSelView Integer view selection for branching
240
+ *
241
+ * Contains a description of view selection strategies on integer
242
+ * views that can be used together with the generic view/value
243
+ * branching class Gecode::ViewValBranching (argument \a ViewSel).
244
+ *
245
+ * All view selection classes require
246
+ * \code #include "gecode/int/branch.hh" \endcode
247
+ * \ingroup Other
248
+ */
249
+
250
+ /**
251
+ * \defgroup FuncIntSelVal Integer value selection for branching
252
+ *
253
+ * Contains a description of value selection strategies on integer
254
+ * views that can be used together with the generic view/value
255
+ * branching class Gecode::ViewValBranching (argument \a ValSel).
256
+ *
257
+ * All value selection classes require
258
+ * \code #include "gecode/int/branch.hh" \endcode
259
+ * \ingroup Other
260
+ */
261
+
262
+ /**
263
+ * \defgroup FuncSetProp Set propagators
264
+ *
265
+ * This module contains a description of all predefined finite set
266
+ * propagators. They can be reused, for example, for rewriting
267
+ * newly defined finite set propagators into already available
268
+ * propagators.
269
+ * \ingroup Other
270
+ */
271
+
272
+ /**
273
+ * \defgroup FuncSetSelView Set view selection for branching
274
+ *
275
+ * Contains a description of view selection strategies on set
276
+ * views that can be used together with the generic view/value
277
+ * branching class Gecode::ViewValBranching (argument \a ViewSel).
278
+ *
279
+ * All view selection classes require
280
+ * \code #include "gecode/set/branch.hh" \endcode
281
+ * \ingroup Other
282
+ */
283
+
284
+ /**
285
+ * \defgroup FuncSetSelVal Set value selection for branching
286
+ *
287
+ * Contains a description of value selection strategies on set
288
+ * views that can be used together with the generic view/value
289
+ * branching class Gecode::ViewValBranching (argument \a ValSel).
290
+ *
291
+ * All value selection classes require
292
+ * \code #include "gecode/set/branch.hh" \endcode
293
+ * \ingroup Other
294
+ */
295
+
296
+ /**
297
+ * \defgroup Example Example scripts (models)
298
+ *
299
+ * All scripts are compiled into simple standalone programs. These
300
+ * programs understand the following options given on the
301
+ * commandline:
302
+ * - <code>-mode (solution, time, stat)</code>
303
+ * - <code>solution</code>: print solutions.
304
+ * - <code>time</code>: measure time.
305
+ * - <code>stat</code>: print statistics.
306
+ * - <code>-naive</code>, <code>-smart</code>: if there is a naive and
307
+ * a smart model of the problem, select which to use
308
+ * - <code>-solutions</code>: give the maximum number of solutions after which
309
+ * the search stops. 0 means all solutions.
310
+ * - <code>-icl (def, val, bnd, dom)</code>: give the consistency level of
311
+ * integer constraints such as <code>distinct</code>.
312
+ * - <code>-c_d</code>, <code>-a_c</code>: copying and adaptive recomputation
313
+ * distance to be used by the search engine.
314
+ * - <code>-samples</code>, <code>-iterations</code>: how many samples and
315
+ * iterations per sample to compute in time mode.
316
+ * - <code>-help</code>: print usage information and default values for
317
+ * all options.
318
+ *
319
+ * Many scripts can be given the problem size as an extra argument.
320
+ */
321
+
322
+ /*
323
+ * Collect some definitions for which no reasonable place exists
324
+ *
325
+ */
326
+
327
+ /**
328
+ * \namespace Gecode::Support
329
+ * \brief %Support algorithms and datastructures
330
+ */
331
+
332
+ /**
333
+ * \mainpage Gecode Reference Documentation
334
+ *
335
+ * This document provides reference information about
336
+ * <A HREF="http://www.gecode.org">%Gecode</A>.
337
+ * The documentation is structured into three major groups:
338
+ * common programming tasks, common functionality, and other
339
+ * available functionality.
340
+ *
341
+ * This document corresponds to %Gecode version @VERSION@.
342
+ *
343
+ * \section SecByTask Programming tasks
344
+ *
345
+ * Documentation is available for the following tasks:
346
+ * - \ref TaskInt
347
+ * - \ref TaskMiniModel
348
+ * - \ref TaskSearch
349
+ * - \ref TaskActor "Programming propagators and branchings"
350
+ * - \ref TaskVar
351
+ *
352
+ * \section SecByFunc Common functionality
353
+ *
354
+ * The most important functionality is:
355
+ * - \ref FuncMem
356
+ * - \ref FuncThrow
357
+ *
358
+ * The complete functionality can be found \ref Func "here".
359
+ *
360
+ * \section SecByOther Other available functionality
361
+ *
362
+ * The part \ref Other documents existing propagators, variable
363
+ * implementations, and so on which serves as documentation of examples.
364
+ *
365
+ * \section SecStart Getting started
366
+ *
367
+ * For your first steps with %Gecode, the following pages may be of interest:
368
+ * - \ref PageNotation
369
+ * - \ref PageGlossary
370
+ * - \ref PageComp
371
+ * - \ref PageUsage
372
+ *
373
+ * \section SecMore More content
374
+ *
375
+ * Additionally, the documentation also features the following parts:
376
+ * - \ref PageLic
377
+ * - \ref PageChange
378
+ *
379
+ * \section SecIndex List and index content
380
+ *
381
+ * The following lists and indices are available
382
+ * - \ref PageCodeStat
383
+ * - <a class="el" href="modules.html">List of all modules</a>
384
+ * - <a class="el" href="annotated.html">List of all classes including brief documentation</a>
385
+ * - <a class="el" href="namespaces.html">List of all namespaces including brief documentation</a>
386
+ * - <a class="el" href="files.html">List of all files</a>
387
+ * - <a class="el" href="hierarchy.html">Class hierarchy</a>
388
+ * - <a class="el" href="classes.html">Alphabetical class index</a>
389
+ * - <a class="el" href="namespacemembers.html">Namespace members</a>
390
+ * - <a class="el" href="functions.html">Class members</a>
391
+ * - <a class="el" href="globals.html">File members</a>
392
+ */
393
+
394
+ /**
395
+ * \page PageNotation Notational conventions
396
+ *
397
+ * Throughout this reference documentation we use some notational conventions
398
+ * designed to keep the documentation concise yet understandable. Please
399
+ * read the following carefully.
400
+ *
401
+ * \section NotationArray Array notation
402
+ *
403
+ * We allow ourselves to refer to the \f$i\f$-th element of an array \f$x\f$
404
+ * by \f$x_i\f$. The size of an array \f$x\f$ (either provided by a member
405
+ * function \c %size() or clear from context) is denoted \f$|x|\f$.
406
+ *
407
+ * \section NotationHome The home space
408
+ *
409
+ * Many functions and member functions take an argument \a home of
410
+ * type \c Space*. The home space serves as manager to many
411
+ * operations used by variables, views, propagators, spaces, and so
412
+ * on. It provides
413
+ * services such as failure management, propagation control,
414
+ * memory management, and so on. To keep the documentation concise
415
+ * the home space is not documented for functions
416
+ * and member functions.
417
+ *
418
+ * \section NotationShare Sharing in update and copy
419
+ *
420
+ * In member functions that either copy or update an object during
421
+ * cloning, an argument \a share of type \c bool is available. This
422
+ * Boolean value controls whether during cloning the data structure at
423
+ * hand will be shared among the newly created cloned space and the original
424
+ * or whether two independent copies are created. Some functions (such
425
+ * as \c copy for spaces (Gecode::Space) or \c copy for propagators
426
+ * (Gecode::Propagator) also feature this argument. Here it is used
427
+ * to pass on the Boolean value to other datastructures used inside spaces
428
+ * or propagators.
429
+ *
430
+ * The actual value the \a share argument has is defined by the search
431
+ * engine: when a search engine uses the \a clone member function of
432
+ * a space it decides whether sharing is to be used in the cloning of
433
+ * the space or not. If the search engine is single-threaded, it will
434
+ * use full sharing (\a share will be true). Only if the search engine
435
+ * uses concurrency or parallelism with more than a single thread,
436
+ * it will pass false as value. This means that by not sharing data structures
437
+ * among spaces which are to be used in different threads, all parts of
438
+ * %Gecode but the actual search engine do not need to provide concurrency
439
+ * control.
440
+ *
441
+ * As examples for data structures which are sensitive to sharing, consider
442
+ * Gecode::Support::SharedArray, Gecode::IntSet, and Gecode::DFA.
443
+ */
444
+
445
+ /**
446
+ \page PageGlossary Brief glossary
447
+
448
+ This page gives brief explanations about some of the most
449
+ frequently occurring terms (currently limited to important
450
+ entities manifest in the implementation) used in the %Gecode
451
+ reference documentation.
452
+
453
+ \section GlossaryActor Actor
454
+
455
+ An actor is either a branching (\ref GlossaryBranching) or a
456
+ propagator (\ref GlossaryPropagator). Actors provide the
457
+ functionality that is common for propagators and branchings such
458
+ as member functions for copying during cloning, memory
459
+ allocation, and so on. Actors are implemented by the class
460
+ Gecode::Actor. More on programming actors can be found in the
461
+ module \ref TaskActor.
462
+
463
+ \section GlossaryBranching Branching
464
+
465
+ A branching defines the shape of the search tree. Branchings are
466
+ also known as labelings or distributors, and a branching creates
467
+ a series of choice points. Branchings are implemented by the
468
+ class Gecode::Branching. A common abstraction for defining
469
+ branchings based on view and value selection is provided by the
470
+ class Gecode::ViewValBranching.
471
+
472
+ \section GlossaryBranchingDesc Branching description
473
+
474
+ A branching description speeds up recomputation by providing
475
+ batch recomputation. It is created by a branching (\ref
476
+ GlossaryBranching) and allows to replay the effect of that
477
+ branching without the need to first perform constraint
478
+ propagation. The base-class for branching descriptions is
479
+ Gecode::BranchingDesc. An example for a branching description
480
+ that works together with branchings based on view and value
481
+ selection is Gecode::PosValDesc.
482
+
483
+ \section GlossarySpace Computation space
484
+
485
+ A computation space (space for short) comprises all entities for
486
+ a constraint problem to be solved, including all actors (\ref
487
+ GlossaryActor) and variables (\ref GlossaryVariable). A space can
488
+ be seen as corresponding to a node in the search tree. It
489
+ organizes constraint propagation, the branching process,
490
+ exploration, and memory management. Spaces are implemented by the
491
+ class Gecode::Space. They provide functionality for \ref
492
+ TaskIntScript, \ref TaskSearch, and \ref FuncMemSpace.
493
+
494
+ \section GlossaryME Modification event
495
+
496
+ A modification event describes how a view (\ref GlossaryView) or
497
+ variable implementation (\ref GlossaryVarImp) is changed by an
498
+ update operation performed on the view or variable. Each variable
499
+ domain defines its own modification events (see \ref
500
+ TaskActorIntMEPC and \ref TaskActorSetMEPC). However modification
501
+ events that describe generic events such as failure, no
502
+ modification, or assignment to a single value are predefined (see
503
+ \ref TaskVarMEPC).
504
+
505
+ \section GlossaryPropCond Propagation condition
506
+
507
+ A propagation condition defines when a propagator requires to be
508
+ re-executed. Re-execution is controlled by the modification events
509
+ that occur on the variables the propagator depends on (see \ref
510
+ GlossaryPropagator). Propagation conditions and the relation
511
+ between propagation conditions and modification events depends on
512
+ the variable domain (see \ref TaskActorIntMEPC and \ref
513
+ TaskActorSetMEPC). However, the propagation conditions that
514
+ states re-execution when a variable becomes assigned is generic
515
+ (see \ref TaskVarMEPC).
516
+
517
+ \section GlossaryPropagator Propagator
518
+
519
+ A propagator implements a constraint (actually, a constraint can
520
+ be implemented by a collection of propagators). Execution by a
521
+ propagator is defined by its dependencies: the views (referring to
522
+ some variables) together with their propagation conditions. A
523
+ propagator is implemented by inheriting from the class
524
+ Gecode::Propagator. Common abstractions for propagators are also
525
+ available (see \ref TaskPropPat, \ref TaskPropRePat, and \ref
526
+ TaskPropSetPat).
527
+
528
+ \section GlossaryPME Propagator modification event
529
+
530
+ A propagator maintains as propagator modification event for each
531
+ variable domain a modification event. These modification events
532
+ describe which modification events occurred on all views
533
+ (variables) the propagator depends on (see \ref
534
+ GlossaryPropagator). A propagator modification event is available
535
+ through a view or variable implementation (see for example \ref
536
+ TaskActorIntView or \ref TaskActorSetView).
537
+
538
+ \section GlossaryVariable Variable
539
+
540
+ A variable is used for modeling problems, be it for direct
541
+ modeling or for modeling through some interface. A variable
542
+ provides only those operations useful for modeling and excludes
543
+ in particular operations that can modify the variable domain
544
+ directly. A variable is implemented by a variable implementation
545
+ (see below).
546
+
547
+ \section GlossaryVarImp Variable implementation
548
+
549
+ A variable implementation is implemented by inheriting from
550
+ Gecode::Variable. It implements the variable domain and provides
551
+ operations to access and modify the domain. Examples of variable
552
+ implementations are Gecode::Int::IntVarImp and
553
+ Gecode::Set::SetVarImp.
554
+
555
+ \section GlossaryView View
556
+
557
+ A view offers essentially the same interface as a variable
558
+ implementation and allows both domain access and
559
+ modification. Typically, several views exist for the same
560
+ variable implementation to obtain several constraints from the
561
+ same propagator. Examples of views are \ref TaskActorIntView and
562
+ \ref TaskActorSetView.
563
+
564
+ */
565
+
566
+ /**
567
+ * \page PageUsage Using Gecode
568
+ *
569
+ * \section SecUsageInclude Including header files
570
+ *
571
+ * Deciding which header files must be included when using %Gecode is
572
+ * quite straightforward. There are the following header files for inclusion:
573
+ * - gecode/kernel.hh must always be included (the header files below
574
+ * also always include kernel.hh).
575
+ * - gecode/search.hh must be included, if search engines are used
576
+ * (see for example \ref TaskIntSearch).
577
+ * - gecode/int.hh must be included, if any integer functionality is used
578
+ * (see for example \ref TaskIntInt and \ref TaskActorInt).
579
+ * - gecode/set.hh must be included, if any finite set functionality is used
580
+ * (see for example \ref TaskIntSet and \ref TaskActorSet).
581
+ * - gecode/minimodel.hh must be included, if direct modelling support
582
+ * is used (see for example \ref TaskMiniModel).
583
+ *
584
+ * Other functionality is available through a set of header files. For example
585
+ * to access the implementation of particular propagators, a particular header
586
+ * file must be included. The header file to be included is always mentioned
587
+ * in the documentation of the class or function.
588
+ *
589
+ * \section SecUsageLink Linking libraries
590
+ *
591
+ * Setting the exact name for a library on a particular platform aside,
592
+ * inclusion of header files basically coincides with against which
593
+ * library must be linked. That is:
594
+ * - If gecode/kernel.hh is included, linking against the kernel library is
595
+ * required.
596
+ * - If gecode/search.hh is included, linking against the search library is
597
+ * required.
598
+ * - If gecode/int.hh is included, linking against the integer library is
599
+ * required.
600
+ * - If gecode/set.hh is included, linking against the set library is
601
+ * required.
602
+ * - If gecode/minimodel.hh is included, linking against the minimodel
603
+ * library is required.
604
+ *
605
+ * The functionality in \ref FuncSupport and \ref FuncIter require no
606
+ * library for linking. Reusing integer or set propagators of course
607
+ * require the integer or set library.
608
+ *
609
+ * If there is a difference between library and DLL (such as on Windows)
610
+ * linking must be done against the appropriate library and the
611
+ * corresponding DLL must be available for execution (such as in the
612
+ * PATH environment variable).
613
+ *
614
+ * \section SecUsageLibraries Library names
615
+ *
616
+ * \subsection SULA Windows with Visual Studio
617
+ *
618
+ * - Kernel library and DLL: GecodeKernel.lib and GecodeKernel.dll
619
+ * - Search library and DLL: GecodeSearch.lib and GecodeSearch.dll
620
+ * - Integer library and DLL: GecodeInt.lib and GecodeInt.dll
621
+ * - Set library and DLL: GecodeSet.lib and GecodeSet.dll
622
+ * - Minimodel library and DLL: GecodeMiniModel.lib and GecodeMiniModel.dll
623
+ *
624
+ * \subsection SULB Unix (Linux, MacOS X)
625
+ *
626
+ * Depending on whether %Gecode was compiled as a static or as a dynamic
627
+ * library, different filename suffixes are used on different Unix platforms.
628
+ * All library names follow the following scheme:
629
+ *
630
+ * - Kernel library: libgecodekernel.<EXT>
631
+ * - Search library: libgecodesearch.<EXT>
632
+ * - Integer library: libgecodeint.<EXT>
633
+ * - Set library: libgecodeset.<EXT>
634
+ * - Minimodel library: libgecodeminimodel.<EXT>
635
+ *
636
+ * where <EXT> depends on the library type and platform:
637
+ *
638
+ * - libgecode[...].a for static libaries on all Unix flavors
639
+ * - libgecode[...].so for shared libraries on Linux
640
+ * - libgecode[...].dylib for shared libraries on MacOS X
641
+ *
642
+ * You can use for example
643
+ *
644
+ * <code>gcc -L$GPREFIX/lib -lgecodekernel</code>
645
+ *
646
+ * to link the kernel library, if the libraries are found in
647
+ * <code>$GPREFIX/lib</code>.
648
+ */
649
+
650
+ /**
651
+ * \page PageComp Compiling and installing Gecode
652
+ *
653
+ * The %Gecode library, including examples and documentation, can be built
654
+ * on all recent versions of Windows, Linux, and MacOS X. Porting to other
655
+ * Unix flavors should be easy, if any change is necessary at all.
656
+ *
657
+ * \section Prerequisites
658
+ *
659
+ * In order to compile %Gecode, you need a standard Unix toolchain including
660
+ * the following programs:
661
+ *
662
+ * - a bash-compatible shell
663
+ * - GNU make
664
+ * - sed
665
+ * - cp
666
+ * - tar
667
+ *
668
+ * These are available in all standard installations of Linux. On MacOS X,
669
+ * you need to install the Apple developer tools. For
670
+ * Windows, we require the
671
+ * <a href="http://www.cygwin.com/">Cygwin environment</a> that provides
672
+ * all necessary tools.
673
+ *
674
+ * We currently support
675
+ * - the Microsoft Visual C++ compilers for Windows. The Microsoft
676
+ * Visual C++ 2005 Express Edition is available free of charge from
677
+ * <a href="http://msdn.microsoft.com/vstudio/express/visualc/">the MSDN
678
+ * web pages</a>.
679
+ * - the GNU Compiler Collection (gcc) for Windows and Unix flavors such as
680
+ * Linux and MacOS X. The GNU gcc is open source software and available
681
+ * from <a href="http://gcc.gnu.org/">the GCC home page</a>. It is included
682
+ * in all Linux distributions and the Apple MacOS X developer tools.
683
+ * %Gecode requires at least version 3.4 of gcc. We recommend using version
684
+ * 4.0 or higher. Very unfortunately, the parser used in versions of gcc
685
+ * before 3.4 is broken and hence cannot compile %Gecode.
686
+ * - The Intel C++ compiler for Windows and Linux. Please note that this
687
+ * compiler was only tested using the evaluation license available from
688
+ * Intel. If you encounter problems or have suggestions for improvements,
689
+ * please let us know.
690
+ *
691
+ * \section CompConf Configuring the sources
692
+ *
693
+ * %Gecode uses GNU autoconf to acquire information about the system it is
694
+ * compiled on. Typically, you need to run the <code>configure</code>
695
+ * script in the toplevel directory.
696
+ *
697
+ * To setup %Gecode for your particular system, you may need to add one or
698
+ * more of the following options to <code>configure</code>:
699
+ *
700
+ * - When using the Microsoft Visual C++ compiler, add
701
+ * <code>CC=cl CXX=cl</code> to your
702
+ * invocation of <code>configure</code>
703
+ * - When using the Intel C++ compiler under Windows, add
704
+ * <code>CC=icl CXX=icl</code> to your
705
+ * invokation of configure.
706
+ * - When using the Intel C++ compiler under Linux, add
707
+ * <code>CC=icc CXX=icpc</code> to your
708
+ * invokation of configure.
709
+ * - To install %Gecode somewhere else than the default
710
+ * <code>/usr/local</code>, use the <code>--prefix=[...]</code> switch
711
+ * - You can enable and disable the individual modules %Gecode consists of
712
+ * using <code>--enable-[MODULE]</code> and <code>--disable-[MODULE]</code>
713
+ *
714
+ * You can get a list of all supported configuration options by calling
715
+ * <code>configure</code> with the <code>--help</code> switch.
716
+ *
717
+ * \subsection CompConfExamples Example configurations
718
+ *
719
+ * To compile %Gecode on a <b>Windows machine using the Microsoft compiler</b>, use
720
+ *
721
+ * <code>./configure CC=cl CXX=cl</code>
722
+ *
723
+ * To compile only the %Gecode library <b>without examples</b> on a Unix machine, use
724
+ *
725
+ * <code>./configure --disable-examples</code>
726
+ *
727
+ * To compile on a <b>Unix machine</b> using a different than the default
728
+ * <code>gcc</code> compiler, and install under <code>/opt/gecode</code>, use
729
+ *
730
+ * <code>./configure --prefix=/opt/gecode CC=gcc-4.0 CXX=g++-4.0</code>
731
+ *
732
+ * To compile a <b>debug build</b> on Unix, turning on all assertions and not
733
+ * inlining anything, use
734
+ *
735
+ * <code>./configure --enable-debug</code>
736
+ *
737
+ * To compile on <b>Cygwin</b>, but linking against the <b>Windows libraries</b> instead
738
+ * of the Cygwin libraries, use
739
+ *
740
+ * <code>./configure CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin"</code>
741
+ *
742
+ * To compile on a system using a different than the default compiler,
743
+ * and a <code>/bin/sh</code> that is not bash compatible (e.g. a
744
+ * <b>Solaris machine</b>), use
745
+ *
746
+ * <code>./configure --with-host-os=linux \ </code><br>
747
+ * <code>&nbsp;&nbsp;&nbsp;CC="gcc-4.0" CXX="g++-4.0" \ </code><br>
748
+ * <code>&nbsp;&nbsp;&nbsp;SHELL="/bin/bash"</code><br>
749
+ * <code>make SHELL="/bin/bash"</code>
750
+ *
751
+ * You can compile as <b>"universal binary" on a Mac OS
752
+ * machine</b>. Configure with
753
+ *
754
+ * <code>./configure --enable-universal</code>
755
+ *
756
+ * For building universal binaries on a PowerPC machine, you have to supply
757
+ * the path to the universal SDK (which is the default on Intel based Macs):
758
+ *
759
+ * <code>./configure --enable-universal</code>
760
+ * <code>&nbsp;&nbsp;&nbsp;--with-sdk=/Developer/SDKs/MacOSX10.4u.sdk</code>
761
+ *
762
+ * \subsection CompConfUsr Passing options for compilation
763
+ *
764
+ * Additional options for compilation can be passed to the compiler
765
+ * from the make commandline via the variable <code>CXXUSR</code>. For
766
+ * example, to pass to gcc the additional option "-mtune=i686" the following
767
+ * can be used:
768
+ *
769
+ * <code>make CXXUSR="-mtune=i686"</code>
770
+ *
771
+ * \subsection CompConfSepDir Compiling in a separate directory
772
+ *
773
+ * The %Gecode library can be built in a separate directory. This is useful
774
+ * if you do not want to clutter the source tree with all the object files
775
+ * and libraries.
776
+ *
777
+ * Configuring %Gecode in a separate directory is easy. Assume that the
778
+ * sources can be found in directory <code>$GSOURCEDIR</code>, change to
779
+ * the directory where you want to compile %Gecode and call
780
+ *
781
+ * <code>$GSOURCEDIR/configure [options]</code>
782
+ *
783
+ * This will generate all necessary files in the new build directory.
784
+ *
785
+ * \section CompComp Compiling the sources
786
+ *
787
+ * After successful configuration, simply invoking
788
+ *
789
+ * <code>make</code>
790
+ *
791
+ * in the toplevel %Gecode directory will compile the whole library.
792
+ *
793
+ * \section CompExamples Running the examples
794
+ *
795
+ * After compiling the examples, they can be run directly from the command
796
+ * line. For instance, try the %Golomb Rulers Problem:
797
+ *
798
+ * <code>./examples/golomb</code>
799
+ *
800
+ * or (when running Windows):
801
+ *
802
+ * <code>./examples/golomb.exe</code>
803
+ *
804
+ * On some platforms, you may need to set environment variables like
805
+ * <code>LD_LIBRARY_PATH</code> (Linux) or <code>DYLD_LIBRARY_PATH</code>
806
+ * (Mac OS) to the toplevel compile directory (where the dynamic libraries
807
+ * are placed after compilation).
808
+ *
809
+ * For more information on example scripts see \ref Example.
810
+ *
811
+ * \section Installation Installation
812
+ *
813
+ * After a successful compilation, you can install the %Gecode library
814
+ * and all header files necessary for compiling against it by invoking
815
+ *
816
+ * <code>make install</code>
817
+ *
818
+ * in the build directory.
819
+ *
820
+ * \section DepMngmt Dependency management
821
+ *
822
+ * The dependencies between source files are not handled automatically. If you
823
+ * are using a Gecode version from our subversion repository or if you
824
+ * modified any of the source files, you will have to call
825
+ * <code>make depend</code> before compilation in order to determine the
826
+ * source dependencies.
827
+ *
828
+ * Dependency management is only needed for recompiling Gecode after changing
829
+ * something. In an unmodified version (or after a <code>make clean</code>)
830
+ * all files are compiled anyway.
831
+ *
832
+ * \section UnsupPlatfrms Compiling for unsupported platforms
833
+ *
834
+ * If you want to try compiling Gecode on a platform that we do not support
835
+ * officially, you can override the platform tests during
836
+ * <code>configure</code>. There are two options to specify the type of
837
+ * platform:
838
+ *
839
+ * - <code>--with-host-os=[linux|darwin|windows]</code>
840
+ * - <code>--with-compiler-vendor=[gnu|microsoft|intel]</code>
841
+ *
842
+ * Using the first option, you can state that your platform should behave like
843
+ * Linux, Darwin (which is actually BSD), or Windows. This affects mainly
844
+ * the filenames and the tools used to generate shared and static libraries.
845
+ *
846
+ * The second option says
847
+ * that your compiler can be used very much like the gnu compiler
848
+ * <code>gcc</code>, the Microsoft compiler <code>cl</code>, or the Intel
849
+ * compiler <code>icl</code>. Please let us know of any successfull attempt at
850
+ * compiling Gecode on other platforms.
851
+ *
852
+ * \section Useful Makefile targets
853
+ *
854
+ * The main %Gecode Makefile supports the following useful targets:
855
+ *
856
+ * - <code>all</code> compiles all parts of the library that were enabled
857
+ * during <code>configure</code>, and the examples if
858
+ * enabled
859
+ * - <code>install</code> installs library, headers and examples (if enabled)
860
+ * into the <code>prefix</code> given at
861
+ * <code>configure</code>
862
+ * - <code>clean</code> removes object files
863
+ * - <code>veryclean</code> removes object files, libraries, and all files
864
+ + generated during <code>make</code>
865
+ * - <code>distclean</code> removes object files, libraries, and all
866
+ * generated files
867
+ * - <code>depend</code> computes dependencies between source files
868
+ * - <code>test</code> compiles the test suite
869
+ * - <code>doc</code> generates this reference documentation using doxygen
870
+ * - <code>installdoc</code> installs the documentation
871
+ * - <code>distdoc</code> creates tgz and zip archives of the documentation
872
+ * - <code>distzip</code> creates a binary distribution as a zip archive
873
+ * - <code>disttgz</code> creates a binary distribution as a tgz archive
874
+ *
875
+ *
876
+ */
877
+