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,87 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:06:38 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3516 $
11
+ *
12
+ * This file is part of Gecode, the generic constraint
13
+ * development environment:
14
+ * http://www.gecode.org
15
+ *
16
+ * See the file "LICENSE" for information on usage and
17
+ * redistribution of this file, and for a
18
+ * DISCLAIMER OF ALL WARRANTIES.
19
+ *
20
+ */
21
+
22
+ #ifndef __GECODE_LIMITS_HH__
23
+ #define __GECODE_LIMITS_HH__
24
+
25
+ #include <climits>
26
+ #include <cfloat>
27
+
28
+ /*
29
+ * Numerical limits
30
+ *
31
+ */
32
+
33
+ namespace Gecode { namespace Limits {
34
+
35
+ /**
36
+ * \namespace Gecode::Limits
37
+ * \brief Numerical limits
38
+ *
39
+ * Contains constants describing numerical limits
40
+ * for numbers contained in integer and set variables.
41
+ *
42
+ */
43
+
44
+ namespace Int {
45
+ /**
46
+ * \namespace Gecode::Limits::Int
47
+ * \brief Numerical limits for integer variables
48
+ *
49
+ * The integer limits are chosen such that addition and subtraction
50
+ * of two values within the limits can be done safely without
51
+ * numerical overflow. Also, changing the sign is always possible
52
+ * without overflow.
53
+ *
54
+ */
55
+
56
+ /// Largest allowed integer value
57
+ const int int_max = ((INT_MAX)>>1) - 1;
58
+ /// Smallest allowed integer value
59
+ const int int_min = -int_max;
60
+
61
+ /// Largest double that can exactly be represented
62
+ const double double_max = 9007199254740991.0;
63
+ /// Smallest double that can exactly be represented
64
+ const double double_min = -9007199254740991.0;
65
+
66
+ }
67
+
68
+ namespace Set {
69
+ /**
70
+ * \namespace Gecode::Limits::Set
71
+ * \brief Numerical limits for set variables
72
+ *
73
+ */
74
+
75
+ /// Largest allowed integer in integer set
76
+ const int int_max = ((INT_MAX)>>2) - 1;
77
+ /// Smallest allowed integer in integer set
78
+ const int int_min = -int_max;
79
+ /// Maximum cardinality of an integer set
80
+ const unsigned int card_max = int_max-int_min+1;
81
+ }
82
+
83
+ }}
84
+
85
+ #endif
86
+
87
+ // STATISTICS: kernel-other
@@ -0,0 +1,942 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Guido Tack <tack@gecode.org>
5
+ * Mikael Lagerkvist <lagerkvist@gecode.org>
6
+ *
7
+ * Copyright:
8
+ * Christian Schulte, 2004
9
+ * Guido Tack, 2004
10
+ * Mikael Lagerkvist, 2005
11
+ *
12
+ * Last modified:
13
+ * $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
14
+ * $Revision: 3579 $
15
+ *
16
+ * This file is part of Gecode, the generic constraint
17
+ * development environment:
18
+ * http://www.gecode.org
19
+ *
20
+ * See the file "LICENSE" for information on usage and
21
+ * redistribution of this file, and for a
22
+ * DISCLAIMER OF ALL WARRANTIES.
23
+ *
24
+ */
25
+
26
+ #ifndef __GECODE_MINIMODEL_HH__
27
+ #define __GECODE_MINIMODEL_HH__
28
+
29
+ #include "gecode/kernel.hh"
30
+ #include "gecode/int.hh"
31
+ #include "gecode/int/linear.hh"
32
+
33
+ #include "gecode/minimodel/exception.icc"
34
+
35
+ #include <iostream>
36
+
37
+ /*
38
+ * Support for DLLs under Windows
39
+ *
40
+ */
41
+
42
+ #if !defined(GECODE_STATIC_LIBS) && \
43
+ (defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
44
+
45
+ #ifdef GECODE_BUILD_MINIMODEL
46
+ #define GECODE_MINIMODEL_EXPORT __declspec( dllexport )
47
+ #else
48
+ #define GECODE_MINIMODEL_EXPORT __declspec( dllimport )
49
+ #endif
50
+
51
+ #else
52
+
53
+ #ifdef GCC_HASCLASSVISIBILITY
54
+
55
+ #define GECODE_MINIMODEL_EXPORT __attribute__ ((visibility("default")))
56
+
57
+ #else
58
+
59
+ #define GECODE_MINIMODEL_EXPORT
60
+
61
+ #endif
62
+ #endif
63
+
64
+ namespace Gecode {
65
+
66
+ /// Minimal modelling support
67
+ namespace MiniModel {
68
+
69
+ /// Linear expressions
70
+ class LinExpr {
71
+ private:
72
+ /// Nodes for linear expressions
73
+ class Node {
74
+ private:
75
+ /// Nodes are reference counted
76
+ unsigned int use;
77
+ /// Left and right subtrees
78
+ Node *left, *right;
79
+ /// Left and right signs for entire subtress
80
+ int signLeft, signRight;
81
+ /// Coefficient
82
+ int a;
83
+ /// Variable
84
+ IntVar x;
85
+ public:
86
+ /// Construct node for \a a multiplied with \a x
87
+ Node(int a, const IntVar& x);
88
+ /// Construct node from nodes \a n0 and \a n1 with signs \a s0 and \a s1
89
+ Node(Node* n0, int s0, Node* n1, int s1);
90
+
91
+ /// Increment reference count
92
+ void increment(void);
93
+ /// Decrement reference count and possibly free memory
94
+ GECODE_MINIMODEL_EXPORT bool decrement(void);
95
+
96
+ /// Fill in array of linear terms based on this node
97
+ GECODE_MINIMODEL_EXPORT int
98
+ fill(Int::Linear::Term t[], int i, int s) const;
99
+
100
+ /// Memory management
101
+ static void* operator new(size_t size);
102
+ /// Memory management
103
+ static void operator delete(void* p,size_t size);
104
+ };
105
+ Node* ax; ///< Node for expression
106
+ public:
107
+ unsigned int n; ///< Number of variables in sub terms
108
+ int c; ///< Constant for expression
109
+ int sign; ///< Sign for expression
110
+ /// Default constructor
111
+ LinExpr(void);
112
+ /// Copy constructor
113
+ LinExpr(const LinExpr& e);
114
+ /// Create expression \f$a\cdot x+c\f$
115
+ LinExpr(const IntVar& x, int a=1, int c=0);
116
+ /// Create expression \f$e_0+s\cdot e_1\f$ (where \a s is the sign)
117
+ LinExpr(const LinExpr& e0, const LinExpr& e1, int s);
118
+ /// Create expression \f$s\cdot e+c\f$ (where \a s is the sign)
119
+ LinExpr(const LinExpr& e, int c, int s);
120
+ /// Create expression \f$a\cdot e\f$
121
+ LinExpr(int a, const LinExpr& e);
122
+ /// Assignment operator
123
+ const LinExpr& operator=(const LinExpr& e);
124
+ /// Post propagator
125
+ GECODE_MINIMODEL_EXPORT
126
+ void post(Space* home, IntRelType irt, IntConLevel icl) const;
127
+ /// Post reified propagator
128
+ GECODE_MINIMODEL_EXPORT
129
+ void post(Space* home, IntRelType irt, const BoolVar& b) const;
130
+ /// Post propagator and return variable for value
131
+ GECODE_MINIMODEL_EXPORT
132
+ IntVar post(Space* home, IntConLevel icl) const;
133
+ /// Destructor
134
+ ~LinExpr(void);
135
+ };
136
+
137
+ /// Linear relations
138
+ class LinRel {
139
+ private:
140
+ /// Linear expression describing the entire relation
141
+ LinExpr e;
142
+ /// Which relation
143
+ IntRelType irt;
144
+ /// Negate relation type
145
+ static IntRelType neg(IntRelType irt);
146
+ public:
147
+ /// Default constructor
148
+ LinRel(void);
149
+ /// Create linear relation for expressions \a l and \a r
150
+ LinRel(const LinExpr& l, IntRelType irt, const LinExpr& r);
151
+ /// Create linear relation for expression \a l and integer \a r
152
+ LinRel(const LinExpr& l, IntRelType irt, int r);
153
+ /// Create linear relation for integer \a l and expression \a r
154
+ LinRel(int l, IntRelType irt, const LinExpr& r);
155
+ /// Post propagator for relation (if \a t is false for negated relation)
156
+ void post(Space* home, bool t, IntConLevel icl) const;
157
+ /// Post refied propagator for relation
158
+ void post(Space* home, const BoolVar& b) const;
159
+ };
160
+
161
+ }
162
+
163
+ }
164
+
165
+ /**
166
+ * \defgroup TaskMiniModelLin Linear expressions and relations
167
+ *
168
+ * Linear expressions can be freely composed of sums and differences of
169
+ * integer variables (Gecode::IntVar) possibly with integer coefficients
170
+ * and integer constants.
171
+ *
172
+ * Note that integer variables are automatically available as linear
173
+ * expressions.
174
+ *
175
+ * Linear relations are obtained from linear expressions with the normal
176
+ * relation operators.
177
+ *
178
+ * \ingroup TaskMiniModel
179
+ */
180
+
181
+ //@{
182
+
183
+ /// Construct linear expression as sum of linear expression and integer
184
+ Gecode::MiniModel::LinExpr
185
+ operator+(int,
186
+ const Gecode::MiniModel::LinExpr&);
187
+ /// Construct linear expression as sum of integer and linear expression
188
+ Gecode::MiniModel::LinExpr
189
+ operator+(const Gecode::MiniModel::LinExpr&,
190
+ int);
191
+ /// Construct linear expression as sum of linear expressions
192
+ Gecode::MiniModel::LinExpr
193
+ operator+(const Gecode::MiniModel::LinExpr&,
194
+ const Gecode::MiniModel::LinExpr&);
195
+
196
+ /// Construct linear expression as difference of linear expression and integer
197
+ Gecode::MiniModel::LinExpr
198
+ operator-(int,
199
+ const Gecode::MiniModel::LinExpr&);
200
+ /// Construct linear expression as difference of integer and linear expression
201
+ Gecode::MiniModel::LinExpr
202
+ operator-(const Gecode::MiniModel::LinExpr&,
203
+ int);
204
+ /// Construct linear expression as difference of linear expressions
205
+ Gecode::MiniModel::LinExpr
206
+ operator-(const Gecode::MiniModel::LinExpr&,
207
+ const Gecode::MiniModel::LinExpr&);
208
+
209
+ /// Construct linear expression as negative of linear expression
210
+ Gecode::MiniModel::LinExpr
211
+ operator-(const Gecode::MiniModel::LinExpr&);
212
+
213
+
214
+ /// Construct linear expression as product of integer coefficient and integer variable
215
+ Gecode::MiniModel::LinExpr
216
+ operator*(int, const Gecode::IntVar&);
217
+ /// Construct linear expression as product of integer coefficient and integer variable
218
+ Gecode::MiniModel::LinExpr
219
+ operator*(const Gecode::IntVar&, int);
220
+ /// Construct linear expression as product of integer coefficient and linear expression
221
+ Gecode::MiniModel::LinExpr
222
+ operator*(const Gecode::MiniModel::LinExpr&, int);
223
+ /// Construct linear expression as product of integer coefficient and linear expression
224
+ Gecode::MiniModel::LinExpr
225
+ operator*(int, const Gecode::MiniModel::LinExpr&);
226
+
227
+
228
+ /// Construct linear equality relation
229
+ Gecode::MiniModel::LinRel
230
+ operator==(int l,
231
+ const Gecode::MiniModel::LinExpr& r);
232
+ /// Construct linear equality relation
233
+ Gecode::MiniModel::LinRel
234
+ operator==(const Gecode::MiniModel::LinExpr& l,
235
+ int r);
236
+ /// Construct linear equality relation
237
+ Gecode::MiniModel::LinRel
238
+ operator==(const Gecode::MiniModel::LinExpr& l,
239
+ const Gecode::MiniModel::LinExpr& r);
240
+
241
+ /// Construct linear disequality relation
242
+ Gecode::MiniModel::LinRel
243
+ operator!=(int l,
244
+ const Gecode::MiniModel::LinExpr& r);
245
+ /// Construct linear disequality relation
246
+ Gecode::MiniModel::LinRel
247
+ operator!=(const Gecode::MiniModel::LinExpr& l,
248
+ int r);
249
+ /// Construct linear disequality relation
250
+ Gecode::MiniModel::LinRel
251
+ operator!=(const Gecode::MiniModel::LinExpr& l,
252
+ const Gecode::MiniModel::LinExpr& r);
253
+
254
+ /// Construct linear inequality relation
255
+ Gecode::MiniModel::LinRel
256
+ operator<(int l,
257
+ const Gecode::MiniModel::LinExpr& r);
258
+ /// Construct linear inequality relation
259
+ Gecode::MiniModel::LinRel
260
+ operator<(const Gecode::MiniModel::LinExpr& l,
261
+ int r);
262
+ /// Construct linear inequality relation
263
+ Gecode::MiniModel::LinRel
264
+ operator<(const Gecode::MiniModel::LinExpr& l,
265
+ const Gecode::MiniModel::LinExpr& r);
266
+
267
+ /// Construct linear inequality relation
268
+ Gecode::MiniModel::LinRel
269
+ operator<=(int l,
270
+ const Gecode::MiniModel::LinExpr& r);
271
+ /// Construct linear inequality relation
272
+ Gecode::MiniModel::LinRel
273
+ operator<=(const Gecode::MiniModel::LinExpr& l,
274
+ int r);
275
+ /// Construct linear inequality relation
276
+ Gecode::MiniModel::LinRel
277
+ operator<=(const Gecode::MiniModel::LinExpr& l,
278
+ const Gecode::MiniModel::LinExpr& r);
279
+
280
+ /// Construct linear inequality relation
281
+ Gecode::MiniModel::LinRel
282
+ operator>(int l,
283
+ const Gecode::MiniModel::LinExpr& r);
284
+ /// Construct linear inequality relation
285
+ Gecode::MiniModel::LinRel
286
+ operator>(const Gecode::MiniModel::LinExpr& l,
287
+ int r);
288
+ /// Construct linear inequality relation
289
+ Gecode::MiniModel::LinRel
290
+ operator>(const Gecode::MiniModel::LinExpr& l,
291
+ const Gecode::MiniModel::LinExpr& r);
292
+
293
+ /// Construct linear inequality relation
294
+ Gecode::MiniModel::LinRel
295
+ operator>=(int l,
296
+ const Gecode::MiniModel::LinExpr& r);
297
+ /// Construct linear inequality relation
298
+ Gecode::MiniModel::LinRel
299
+ operator>=(const Gecode::MiniModel::LinExpr& l,
300
+ int r);
301
+ /// Construct linear inequality relation
302
+ Gecode::MiniModel::LinRel
303
+ operator>=(const Gecode::MiniModel::LinExpr& l,
304
+ const Gecode::MiniModel::LinExpr& r);
305
+
306
+ //@}
307
+
308
+ namespace Gecode {
309
+
310
+ namespace MiniModel {
311
+
312
+ /// Boolean expressions
313
+ class BoolExpr {
314
+ public:
315
+ /// Type of Boolean expression
316
+ enum NodeType {
317
+ BT_VAR, ///< Variable
318
+ BT_NOT, ///< Negation
319
+ BT_AND, ///< Conjunction
320
+ BT_OR, ///< Disjunction
321
+ BT_IMP, ///< Implication
322
+ BT_XOR, ///< Exclusive or
323
+ BT_EQV, ///< Equivalence
324
+ BT_RLIN ///< Reified linear relation
325
+ };
326
+ /// Node for Boolean expression
327
+ class Node {
328
+ public:
329
+ /// Nodes are reference counted
330
+ unsigned int use;
331
+ /// Number of variables in subtree with same type (for AND and OR)
332
+ unsigned int same;
333
+ /// Type of expression
334
+ NodeType t;
335
+ /// Subexpressions
336
+ Node *l, *r;
337
+ /// Possibly a variable
338
+ BoolVar x;
339
+ /// Possibly a reified linear relation
340
+ LinRel rl;
341
+
342
+ /// Default constructor
343
+ Node(void);
344
+ /// Decrement reference count and possibly free memory
345
+ GECODE_MINIMODEL_EXPORT bool decrement(void);
346
+ /// Post propagators for nested conjunctive and disjunctive expression
347
+ GECODE_MINIMODEL_EXPORT int post(Space* home, NodeType t,
348
+ BoolVarArgs& b, int i) const;
349
+ /// Post propagators for expression
350
+ GECODE_MINIMODEL_EXPORT void post(Space* home, BoolVar b) const;
351
+ /// Post propagators for expression
352
+ GECODE_MINIMODEL_EXPORT BoolVar post(Space* home) const;
353
+ /// Post propagators for relation
354
+ GECODE_MINIMODEL_EXPORT void post(Space* home, bool t) const;
355
+
356
+ /// Memory management
357
+ static void* operator new(size_t size);
358
+ /// Memory management
359
+ static void operator delete(void* p,size_t size);
360
+ };
361
+ private:
362
+ /// Pointer to node for expression
363
+ Node* n;
364
+ public:
365
+ /// Copy constructor
366
+ BoolExpr(const BoolExpr& e);
367
+ /// Construct expression for type and subexpresssions
368
+ BoolExpr(const BoolExpr& l, NodeType t, const BoolExpr& r);
369
+ /// Construct expression for variable
370
+ BoolExpr(const BoolVar& x);
371
+ /// Construct expression for negation
372
+ BoolExpr(const BoolExpr& e, NodeType t);
373
+ /// Construct expression for reified linear relation
374
+ BoolExpr(const LinRel& rl);
375
+ /// Post propagators for expression
376
+ BoolVar post(Space* home) const;
377
+ /// Post propagators for relation
378
+ void post(Space* home, bool t) const;
379
+
380
+ /// Assignment operator
381
+ const BoolExpr& operator=(const BoolExpr& e);
382
+ /// Destructor
383
+ ~BoolExpr(void);
384
+ };
385
+
386
+ /// Boolean relations
387
+ class BoolRel {
388
+ private:
389
+ /// Expression
390
+ BoolExpr e;
391
+ /// Whether expression is true or false
392
+ bool t;
393
+ public:
394
+ /// Constructor
395
+ BoolRel(const BoolExpr& e, bool t);
396
+ /// Post propagators for relation
397
+ void post(Space* home) const;
398
+ };
399
+ }
400
+
401
+ }
402
+
403
+ /**
404
+ * \defgroup TaskMiniModelBool Boolean expressions and relations
405
+ *
406
+ * Boolean expressions can be freely composed of variables with
407
+ * the usual connectives and reified linear expressions.
408
+ *
409
+ * Boolean relations are obtained from Boolean expressions with
410
+ * functions \a tt (stating that the expression must be true)
411
+ * and \a ff (stating that the expression must be false).
412
+ *
413
+ * \ingroup TaskMiniModel
414
+ */
415
+
416
+ //@{
417
+
418
+ /// Negated Boolean expression
419
+ Gecode::MiniModel::BoolExpr
420
+ operator!(const Gecode::MiniModel::BoolExpr&);
421
+
422
+ /// Conjunction of Boolean expressions
423
+ Gecode::MiniModel::BoolExpr
424
+ operator&&(const Gecode::MiniModel::BoolExpr&,
425
+ const Gecode::MiniModel::BoolExpr&);
426
+
427
+ /// Disjunction of Boolean expressions
428
+ Gecode::MiniModel::BoolExpr
429
+ operator||(const Gecode::MiniModel::BoolExpr&,
430
+ const Gecode::MiniModel::BoolExpr&);
431
+
432
+ /// Exclusive-or of Boolean expressions
433
+ Gecode::MiniModel::BoolExpr
434
+ operator^(const Gecode::MiniModel::BoolExpr&,
435
+ const Gecode::MiniModel::BoolExpr&);
436
+
437
+ /// Reification of linear expression
438
+ Gecode::MiniModel::BoolExpr
439
+ operator~(const Gecode::MiniModel::LinExpr&);
440
+
441
+ namespace Gecode {
442
+
443
+ /// Equivalence of Boolean expressions
444
+ MiniModel::BoolExpr
445
+ eqv(const MiniModel::BoolExpr&,
446
+ const MiniModel::BoolExpr&);
447
+ /// Implication of Boolean expressions
448
+ MiniModel::BoolExpr
449
+ imp(const MiniModel::BoolExpr&,
450
+ const MiniModel::BoolExpr&);
451
+
452
+ /// State that Boolean expression must be true
453
+ MiniModel::BoolRel
454
+ tt(const MiniModel::BoolExpr&);
455
+
456
+ /// State that Boolean expression must be false
457
+ MiniModel::BoolRel
458
+ ff(const MiniModel::BoolExpr&);
459
+
460
+ }
461
+
462
+ //@}
463
+
464
+ namespace Gecode {
465
+
466
+ /**
467
+ * \defgroup TaskMiniModelPost Posting of expressions and relations
468
+ *
469
+ * \ingroup TaskMiniModel
470
+ */
471
+ //@{
472
+ /// Post linear expression and return its value
473
+ IntVar post(Space* home, const MiniModel::LinExpr& e,
474
+ IntConLevel icl=ICL_DEF);
475
+ /// Post linear expression (special case for variable) and return its value
476
+ IntVar post(Space* home, const IntVar& x,
477
+ IntConLevel icl=ICL_DEF);
478
+ /// Post linear expression (special case for constant) and return its value
479
+ IntVar post(Space* home, int n,
480
+ IntConLevel icl=ICL_DEF);
481
+
482
+ /// Post linear relation
483
+ void post(Space* home, const MiniModel::LinRel& r,
484
+ IntConLevel icl=ICL_DEF);
485
+ /// Make it work for special integer only-case
486
+ void post(Space* home, bool r,
487
+ IntConLevel icl=ICL_DEF);
488
+
489
+ /// Post Boolean expression and return its value
490
+ BoolVar post(Space* home, const MiniModel::BoolExpr& e,
491
+ IntConLevel icl=ICL_DEF);
492
+ /// Post Boolean expression (special case for variable) and return its value
493
+ BoolVar post(Space* home, const BoolVar& b,
494
+ IntConLevel icl=ICL_DEF);
495
+ /// Post Boolean relation
496
+ void post(Space* home, const MiniModel::BoolRel& r,
497
+ IntConLevel icl=ICL_DEF);
498
+ //@}
499
+
500
+ }
501
+
502
+ #include "gecode/minimodel/lin-expr.icc"
503
+ #include "gecode/minimodel/lin-rel.icc"
504
+ #include "gecode/minimodel/bool-expr.icc"
505
+ #include "gecode/minimodel/bool-rel.icc"
506
+
507
+ namespace Gecode {
508
+
509
+ /**
510
+ * \defgroup TaskMiniModelArith Arithmetic functions
511
+ *
512
+ * \ingroup TaskMiniModel
513
+ */
514
+ //@{
515
+ /// Return variable constrained to \f$|x|\f$
516
+ GECODE_MINIMODEL_EXPORT IntVar
517
+ abs(Space* home, IntVar x, IntConLevel icl=ICL_DEF);
518
+ /// Return variable constrained to \f$\min(x,y)\f$
519
+ GECODE_MINIMODEL_EXPORT IntVar
520
+ min(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
521
+ /// Return variable constrained to \f$\min(x)\f$
522
+ GECODE_MINIMODEL_EXPORT IntVar
523
+ min(Space* home, const IntVarArgs& x, IntConLevel icl=ICL_DEF);
524
+ /// Return variable constrained to \f$\max(x,y)\f$
525
+ GECODE_MINIMODEL_EXPORT IntVar
526
+ max(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
527
+ /// Return variable constrained to \f$\max(x)\f$
528
+ GECODE_MINIMODEL_EXPORT IntVar
529
+ max(Space* home, const IntVarArgs& x, IntConLevel icl=ICL_DEF);
530
+ /// Return variable constrained to \f$x\cdot y\f$
531
+ GECODE_MINIMODEL_EXPORT IntVar
532
+ mult(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
533
+ /// Return variable constrained to \f$x^2\f$
534
+ GECODE_MINIMODEL_EXPORT IntVar
535
+ sqr(Space* home, IntVar x, IntConLevel icl=ICL_DEF);
536
+ /// Return variable constrained to \f$x+y\f$
537
+ GECODE_MINIMODEL_EXPORT IntVar
538
+ plus(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
539
+ /// Return variable constrained to \f$x-y\f$
540
+ GECODE_MINIMODEL_EXPORT IntVar
541
+ minus(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
542
+ //@}
543
+
544
+ }
545
+
546
+ namespace Gecode {
547
+
548
+ /**
549
+ * \defgroup TaskMiniModelIntAlias Aliases for integer constraints
550
+ *
551
+ * Contains definitions of common constraints which have different
552
+ * names in Gecode.
553
+ *
554
+ * \ingroup TaskMiniModel
555
+ */
556
+
557
+ //@{
558
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\leq m\f$
559
+ *
560
+ * Supports domain-consistent propagation only.
561
+ */
562
+ inline void
563
+ atmost(Space* home, const IntVarArgs& x, int n, int m,
564
+ IntConLevel icl=ICL_DEF) {
565
+ count(home,x,n,IRT_LQ,m,icl);
566
+ }
567
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\leq m\f$
568
+ *
569
+ * Supports domain-consistent propagation only.
570
+ */
571
+ inline void
572
+ atmost(Space* home, const IntVarArgs& x, IntVar y, int m,
573
+ IntConLevel icl=ICL_DEF) {
574
+ count(home,x,y,IRT_LQ,m,icl);
575
+ }
576
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\leq z\f$
577
+ *
578
+ * Supports domain-consistent propagation only.
579
+ */
580
+ inline void
581
+ atmost(Space* home, const IntVarArgs& x, int n, IntVar z,
582
+ IntConLevel icl=ICL_DEF) {
583
+ count(home,x,n,IRT_LQ,z,icl);
584
+ }
585
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\leq z\f$
586
+ *
587
+ * Supports domain-consistent propagation only.
588
+ */
589
+ inline void
590
+ atmost(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
591
+ IntConLevel icl=ICL_DEF) {
592
+ count(home,x,y,IRT_LQ,z,icl);
593
+ }
594
+
595
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\geq m\f$
596
+ *
597
+ * Supports domain-consistent propagation only.
598
+ */
599
+ inline void
600
+ atleast(Space* home, const IntVarArgs& x, int n, int m,
601
+ IntConLevel icl=ICL_DEF) {
602
+ count(home,x,n,IRT_GQ,m,icl);
603
+ }
604
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\geq m\f$
605
+ *
606
+ * Supports domain-consistent propagation only.
607
+ */
608
+ inline void
609
+ atleast(Space* home, const IntVarArgs& x, IntVar y, int m,
610
+ IntConLevel icl=ICL_DEF) {
611
+ count(home,x,y,IRT_GQ,m,icl);
612
+ }
613
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\geq z\f$
614
+ *
615
+ * Supports domain-consistent propagation only.
616
+ */
617
+ inline void
618
+ atleast(Space* home, const IntVarArgs& x, int n, IntVar z,
619
+ IntConLevel icl=ICL_DEF) {
620
+ count(home,x,n,IRT_GQ,z,icl);
621
+ }
622
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\geq z\f$
623
+ *
624
+ * Supports domain-consistent propagation only.
625
+ */
626
+ inline void
627
+ atleast(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
628
+ IntConLevel icl=ICL_DEF) {
629
+ count(home,x,y,IRT_GQ,z,icl);
630
+ }
631
+
632
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}=m\f$
633
+ *
634
+ * Supports domain-consistent propagation only.
635
+ */
636
+ inline void
637
+ exactly(Space* home, const IntVarArgs& x, int n, int m,
638
+ IntConLevel icl=ICL_DEF) {
639
+ count(home,x,n,IRT_EQ,m,icl);
640
+ }
641
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}=m\f$
642
+ *
643
+ * Supports domain-consistent propagation only.
644
+ */
645
+ inline void
646
+ exactly(Space* home, const IntVarArgs& x, IntVar y, int m,
647
+ IntConLevel icl=ICL_DEF) {
648
+ count(home,x,y,IRT_EQ,m,icl);
649
+ }
650
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}=z\f$
651
+ *
652
+ * Supports domain-consistent propagation only.
653
+ */
654
+ inline void
655
+ exactly(Space* home, const IntVarArgs& x, int n, IntVar z,
656
+ IntConLevel icl=ICL_DEF) {
657
+ count(home,x,n,IRT_EQ,z,icl);
658
+ }
659
+ /** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}=z\f$
660
+ *
661
+ * Supports domain-consistent propagation only.
662
+ */
663
+ inline void
664
+ exactly(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
665
+ IntConLevel icl=ICL_DEF) {
666
+ count(home,x,y,IRT_EQ,z,icl);
667
+ }
668
+ /** \brief Post propagator for lexical order between \a x and \a y.
669
+ *
670
+ * - Throws an exception of type Int::ArgumentSizeMismatch, if
671
+ * \a x and \a y are of different size.
672
+ */
673
+ inline void
674
+ lex(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
675
+ IntConLevel icl=ICL_DEF) {
676
+ rel(home,x,r,y,icl);
677
+ }
678
+
679
+ //@}
680
+
681
+ }
682
+
683
+ namespace Gecode {
684
+
685
+ /**
686
+ * \defgroup TaskMiniModelScheduling Alternative interfaces to scheduling constraints
687
+ *
688
+ * \ingroup TaskMiniModel
689
+ */
690
+
691
+ //@{
692
+ /** \brief Creates propagator for a producer-consumer constraint.
693
+ *
694
+ * This function will create a propagator that models a
695
+ * producer-consumer constraint, using the translation of such
696
+ * constraints into cumulatives due to Helmut Simoni and Trijntje
697
+ * Cornelissens ("Modelling Producer/Consumer Constraints",
698
+ * Principles and Practice of Constraint Progamming 1995, Cassis,
699
+ * France).
700
+ *
701
+ * \param produce_date \f$ produce\_date_i \f$ is the date of event
702
+ * \f$ i \f$.
703
+ * \param produce_amount \f$ produce\_amount_i \f$ is the amount
704
+ * produced by event \f$ i \f$.
705
+ * \param consume_date \f$ consume\_date_j \f$ is the date of event
706
+ * \f$ j \f$.
707
+ * \param consume_amount \f$ consume\_amount_j \f$ is the amount
708
+ * produced by event \f$ j \f$.
709
+ * \param initial is the amount available at the start
710
+ * \param icl Supports value consistency only (\c cl = ICL_VAL, default)
711
+ *
712
+ * \todo Make amounts variable, requires changes to cumulatives.
713
+ *
714
+ * \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
715
+ * representing producer events or the sizes of the arguments
716
+ * representing consumer events does not match.
717
+ * \exception Int::NumericalOverflow Raised if any numerical argument is
718
+ * larger than Limits::Int::int_max or less than
719
+ * Limits::Int::int_min.
720
+ */
721
+ GECODE_MINIMODEL_EXPORT void
722
+ producer_consumer(Space *home,
723
+ const IntVarArgs& produce_date, const IntArgs& produce_amount,
724
+ const IntVarArgs& consume_date, const IntArgs& consume_amount,
725
+ int initial, IntConLevel icl=ICL_DEF);
726
+
727
+
728
+ /** \brief Creates propagator for the cumulative constraint.
729
+ *
730
+ * This function will create a propagator for the cumulative constraint, by
731
+ * translating it into a cumulatives constraint.
732
+ *
733
+ * \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
734
+ * \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
735
+ * \param height \f$ height_i \f$ is the height is the amount of resources
736
+ * consumed by task \f$ i \f$
737
+ * \param limit \c limit_r is the amount of resource available
738
+ * \param at_most tells if the amount of resources used for a machine
739
+ * should be less than the limit (\c at_most = true, default) or
740
+ * greater than the limit (\c at_most = false)
741
+ * \param icl Supports value-consistency only (\c cl = ICL_VAL, default).
742
+ *
743
+ * \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
744
+ * representing tasks does not match.
745
+ * \exception Int::NumericalOverflow Raised if any numerical argument is
746
+ * larger than Limits::Int::int_max or less than
747
+ * Limits::Int::int_min.
748
+ *
749
+ */
750
+ GECODE_MINIMODEL_EXPORT void
751
+ cumulative(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
752
+ const IntVarArgs& height, int limit, bool at_most = true,
753
+ IntConLevel cl=ICL_DEF);
754
+
755
+ /** \brief Creates propagator for the cumulative constraint.
756
+ *
757
+ * \copydoc cumulative()
758
+ */
759
+ GECODE_MINIMODEL_EXPORT void
760
+ cumulative(Space *home, const IntVarArgs& start, const IntArgs& duration,
761
+ const IntVarArgs& height, int limit, bool at_most = true,
762
+ IntConLevel cl=ICL_DEF);
763
+
764
+ /** \brief Creates propagator for the cumulative constraint.
765
+ *
766
+ * \copydoc cumulative()
767
+ */
768
+ GECODE_MINIMODEL_EXPORT void
769
+ cumulative(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
770
+ const IntArgs& height, int limit, bool at_most = true,
771
+ IntConLevel cl=ICL_DEF);
772
+
773
+ /** \brief Creates propagator for the cumulative constraint.
774
+ *
775
+ * \copydoc cumulative()
776
+ */
777
+ GECODE_MINIMODEL_EXPORT void
778
+ cumulative(Space *home, const IntVarArgs& start, const IntArgs& duration,
779
+ const IntArgs& height, int limit, bool at_most = true,
780
+ IntConLevel cl=ICL_DEF);
781
+
782
+ /** \brief Creates propagator for the serialized constraint.
783
+ *
784
+ * This function will create a propagator for the serialized constraint, by
785
+ * translating it into a cumulative constraint.
786
+ *
787
+ * \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
788
+ * \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
789
+ * \param icl Supports value-consistency only (\c cl = ICL_VAL, default).
790
+ *
791
+ * \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
792
+ * representing tasks does not match.
793
+ * \exception Int::NumericalOverflow Raised if any numerical argument is
794
+ * larger than Limits::Int::int_max or less than
795
+ * Limits::Int::int_min.
796
+ *
797
+ */
798
+ GECODE_MINIMODEL_EXPORT void
799
+ serialized(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
800
+ IntConLevel cl=ICL_DEF);
801
+
802
+
803
+ /** \brief Creates propagator for the serialized constraint.
804
+ *
805
+ * \copydoc serialized()
806
+ */
807
+ GECODE_MINIMODEL_EXPORT void
808
+ serialized(Space *home, const IntVarArgs& start, const IntArgs& duration,
809
+ IntConLevel cl=ICL_DEF);
810
+
811
+
812
+ //@}
813
+
814
+ }
815
+
816
+ /**
817
+ * \addtogroup TaskMiniModelMatrix Matrix interface for arrays
818
+ *
819
+ * Wrapper for arrays to act as a two-dimensional matrix.
820
+ *
821
+ * \ingroup TaskMiniModel
822
+ */
823
+ //@{
824
+ namespace Gecode { namespace MiniModel {
825
+
826
+ /** \brief Matrix-interface for arrays
827
+ *
828
+ * This class allows for wrapping some array and accessing it as a
829
+ * matrix.
830
+ *
831
+ * \note This is a light-weight wrapper, and is not intended for
832
+ * storing variables directly instead of in an array.
833
+ *
834
+ * \ingroup TaskMiniModelMatrix
835
+ */
836
+ template <class A>
837
+ class Matrix {
838
+ public:
839
+ /// The type of elements of this array
840
+ typedef typename ArrayTraits<A>::value_type value_type;
841
+ /// The type of the Args-array type for value_type values.
842
+ typedef typename ArrayTraits<A>::args_type args_type;
843
+
844
+ /** \brief A slice of a matrix.
845
+ *
846
+ * This class represents a slice of the matrix. It is used to get
847
+ * context-dependent behaviour. The slice will be automatically
848
+ * converted to an args_type Args-array or to a Matrix<args_type>
849
+ * depending on the context where it is used.
850
+ */
851
+ class Slice {
852
+ args_type _r; ///< The elements of the slice
853
+ unsigned int _fc, ///< From column
854
+ _tc, ///< To column
855
+ _fr, ///< From row
856
+ _tr; ///< To row
857
+ public:
858
+ Slice(Matrix<A>& a,
859
+ unsigned int fc, unsigned int tc,
860
+ unsigned int fr, unsigned int tr);
861
+
862
+ operator args_type(void);
863
+ operator Matrix<args_type>(void);
864
+ };
865
+
866
+ private:
867
+ /// The type of storage for this array
868
+ typedef typename ArrayTraits<A>::storage_type storage_type;
869
+ storage_type _a; ///< The array wrapped
870
+ unsigned int _w, ///< The width of the matrix
871
+ _h; ///< The height of the matrix
872
+
873
+ public:
874
+ /** \brief Basic constructor
875
+ *
876
+ * Constructs a Matrix from the array \a a, using \a w and \a h as
877
+ * the width and height of the matrix.
878
+ *
879
+ * The elements in the wrapped array \a a are accessed in
880
+ * row-major order.
881
+ *
882
+ * \exception MiniModel::ArgumentSizeMismatch Raised if the
883
+ * parameters \a w and \a h doesn't match the size
884
+ * of the array \a a.
885
+ */
886
+ Matrix(A a, unsigned int w, unsigned int h);
887
+
888
+ /** \brief Basic constructor
889
+ *
890
+ * Constructs a square Matrix from the array \a a, using \a n as
891
+ * the length of the sides.
892
+ *
893
+ * The elements in the wrapped array \a a are accessed in
894
+ * row-major order.
895
+ *
896
+ * \exception MiniModel::ArgumentSizeMismatch Raised if the
897
+ * parameter \a n doesn't match the size
898
+ * of the array \a a.
899
+ */
900
+ Matrix(A a, unsigned int n);
901
+
902
+ /// Return the width of the matrix
903
+ unsigned int width(void) const;
904
+ /// Return the height of the matrix
905
+ unsigned int height(void) const;
906
+ /// Return an Args-array of the contents of the matrix
907
+ args_type const get_array(void);
908
+
909
+ /** \brief Access element (\a c, \a r) of the matrix
910
+ *
911
+ * \exception MiniModel::ArgumentOutOfRange Raised if \a c or \a r
912
+ * are out of range.
913
+ */
914
+ value_type& operator()(unsigned int c, unsigned int r);
915
+
916
+ /** \brief Access slice of the matrix
917
+ *
918
+ * This function allows accessing a slice of the matrix, located at
919
+ * columns \f$[fc,tc)\f$ and rows \f$[fr,tr)\f$. The result of this
920
+ * function is an object that can be converted into either a
921
+ * Matrix<args_type> or into args_type.
922
+ *
923
+ * For further information, see Slice.
924
+ */
925
+ Slice slice(unsigned int fc, unsigned int tc,
926
+ unsigned int fr, unsigned int tr);
927
+
928
+ /// Access row \a r.
929
+ args_type row(int r);
930
+
931
+ /// Access column \a c.
932
+ args_type col(int c);
933
+ };
934
+ }}
935
+
936
+ #include "gecode/minimodel/matrix.icc"
937
+ //@}
938
+
939
+ #endif
940
+
941
+ // STATISTICS: minimodel-any
942
+