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,293 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Gabor Szokoli <szokoli@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2002
8
+ * Gabor Szokoli, 2003
9
+ *
10
+ * Last modified:
11
+ * $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
12
+ * $Revision: 3579 $
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
+ #include "gecode/int/rel.hh"
25
+
26
+ #include <algorithm>
27
+
28
+ namespace Gecode {
29
+
30
+ using namespace Int;
31
+
32
+ void
33
+ rel(Space* home, IntVar x0, IntRelType r, int n, IntConLevel) {
34
+ if (home->failed()) return;
35
+ IntView x(x0);
36
+ switch (r) {
37
+ case IRT_EQ:
38
+ GECODE_ME_FAIL(home,x.eq(home,n)); break;
39
+ case IRT_NQ:
40
+ GECODE_ME_FAIL(home,x.nq(home,n)); break;
41
+ case IRT_LQ:
42
+ GECODE_ME_FAIL(home,x.lq(home,n)); break;
43
+ case IRT_LE:
44
+ GECODE_ME_FAIL(home,x.le(home,n)); break;
45
+ case IRT_GQ:
46
+ GECODE_ME_FAIL(home,x.gq(home,n)); break;
47
+ case IRT_GR:
48
+ GECODE_ME_FAIL(home,x.gr(home,n)); break;
49
+ default:
50
+ throw UnknownRelation("Int::rel");
51
+ }
52
+ }
53
+
54
+ void
55
+ rel(Space* home, IntVar x0, IntRelType r, IntVar x1, IntConLevel icl) {
56
+ if (home->failed()) return;
57
+ switch (r) {
58
+ case IRT_EQ:
59
+ if (icl == ICL_BND) {
60
+ GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>::post(home,x0,x1)));
61
+ } else {
62
+ GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>::post(home,x0,x1)));
63
+ }
64
+ break;
65
+ case IRT_NQ:
66
+ GECODE_ES_FAIL(home,Rel::Nq<IntView>::post(home,x0,x1)); break;
67
+ case IRT_GQ:
68
+ std::swap(x0,x1); // Fall through
69
+ case IRT_LQ:
70
+ GECODE_ES_FAIL(home,Rel::Lq<IntView>::post(home,x0,x1)); break;
71
+ case IRT_GR:
72
+ std::swap(x0,x1); // Fall through
73
+ case IRT_LE:
74
+ GECODE_ES_FAIL(home,Rel::Le<IntView>::post(home,x0,x1)); break;
75
+ default:
76
+ throw UnknownRelation("Int::rel");
77
+ }
78
+ }
79
+
80
+
81
+ void
82
+ rel(Space* home, IntVar x0, IntRelType r, IntVar x1, BoolVar b,
83
+ IntConLevel icl) {
84
+ if (home->failed()) return;
85
+ switch (r) {
86
+ case IRT_EQ:
87
+ if (icl == ICL_BND) {
88
+ GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,BoolView>
89
+ ::post(home,x0,x1,b)));
90
+ } else {
91
+ GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,BoolView>
92
+ ::post(home,x0,x1,b)));
93
+ }
94
+ break;
95
+ case IRT_NQ:
96
+ {
97
+ NegBoolView n(b);
98
+ if (icl == ICL_BND) {
99
+ GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,NegBoolView>
100
+ ::post(home,x0,x1,n)));
101
+ } else {
102
+ GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,NegBoolView>
103
+ ::post(home,x0,x1,n)));
104
+ }
105
+ }
106
+ break;
107
+ case IRT_GQ:
108
+ std::swap(x0,x1); // Fall through
109
+ case IRT_LQ:
110
+ GECODE_ES_FAIL(home,(Rel::ReLq<IntView,BoolView>::post(home,x0,x1,b)));
111
+ break;
112
+ case IRT_LE:
113
+ std::swap(x0,x1); // Fall through
114
+ case IRT_GR:
115
+ {
116
+ NegBoolView n(b);
117
+ GECODE_ES_FAIL(home,(Rel::ReLq<IntView,NegBoolView>::post(home,x0,x1,n)));
118
+ }
119
+ break;
120
+ default:
121
+ throw UnknownRelation("Int::rel");
122
+ }
123
+ }
124
+
125
+ void
126
+ rel(Space* home, IntVar x, IntRelType r, int n, BoolVar b,
127
+ IntConLevel icl) {
128
+ if (home->failed()) return;
129
+ switch (r) {
130
+ case IRT_EQ:
131
+ if (icl == ICL_BND) {
132
+ GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,BoolView>
133
+ ::post(home,x,n,b)));
134
+ } else {
135
+ GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,BoolView>
136
+ ::post(home,x,n,b)));
137
+ }
138
+ break;
139
+ case IRT_NQ:
140
+ {
141
+ NegBoolView nb(b);
142
+ if (icl == ICL_BND) {
143
+ GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,NegBoolView>
144
+ ::post(home,x,n,nb)));
145
+ } else {
146
+ GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,NegBoolView>
147
+ ::post(home,x,n,nb)));
148
+ }
149
+ }
150
+ break;
151
+ case IRT_LE:
152
+ n--; // Fall through
153
+ case IRT_LQ:
154
+ GECODE_ES_FAIL(home,(Rel::ReLqInt<IntView,BoolView>
155
+ ::post(home,x,n,b)));
156
+ break;
157
+ case IRT_GQ:
158
+ n--; // Fall through
159
+ case IRT_GR:
160
+ {
161
+ NegBoolView nb(b);
162
+ GECODE_ES_FAIL(home,(Rel::ReLqInt<IntView,NegBoolView>
163
+ ::post(home,x,n,nb)));
164
+ }
165
+ break;
166
+ default:
167
+ throw UnknownRelation("Int::rel");
168
+ }
169
+ }
170
+
171
+ void
172
+ eq(Space* home, IntVar x0, IntVar x1, IntConLevel icl) {
173
+ if (home->failed()) return;
174
+ if (icl == ICL_BND) {
175
+ GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>::post(home,x0,x1)));
176
+ } else {
177
+ GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>::post(home,x0,x1)));
178
+ }
179
+ }
180
+
181
+ void
182
+ eq(Space* home, IntVar x0, int n, IntConLevel) {
183
+ if (home->failed()) return;
184
+ IntView x(x0);
185
+ GECODE_ME_FAIL(home,x.eq(home,n));
186
+ }
187
+
188
+ void
189
+ eq(Space* home, IntVar x0, IntVar x1, BoolVar b, IntConLevel icl) {
190
+ if (home->failed()) return;
191
+ if (icl == ICL_BND) {
192
+ GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,BoolView>::post(home,x0,x1,b)));
193
+ } else {
194
+ GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,BoolView>::post(home,x0,x1,b)));
195
+ }
196
+ }
197
+
198
+ void
199
+ eq(Space* home, IntVar x, int n, BoolVar b, IntConLevel icl) {
200
+ if (home->failed()) return;
201
+ if (icl == ICL_BND) {
202
+ GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,BoolView>::post(home,x,n,b)));
203
+ } else {
204
+ GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,BoolView>::post(home,x,n,b)));
205
+ }
206
+ }
207
+
208
+ void
209
+ eq(Space* home, const IntVarArgs& x, IntConLevel icl) {
210
+ if (home->failed()) return;
211
+ ViewArray<IntView> xv(home,x);
212
+ if (icl == ICL_BND) {
213
+ GECODE_ES_FAIL(home,Rel::NaryEqBnd<IntView>::post(home,xv));
214
+ } else {
215
+ GECODE_ES_FAIL(home,Rel::NaryEqDom<IntView>::post(home,xv));
216
+ }
217
+ }
218
+
219
+
220
+ void
221
+ rel(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
222
+ IntConLevel icl) {
223
+ if (x.size() != y.size())
224
+ throw ArgumentSizeMismatch("Int::rel");
225
+ if (home->failed()) return;
226
+
227
+ switch (r) {
228
+ case IRT_GR:
229
+ {
230
+ ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
231
+ for (int i = x.size(); i--; ) {
232
+ xy[i][0]=y[i]; xy[i][1]=x[i];
233
+ }
234
+ GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,true));
235
+ }
236
+ break;
237
+ case IRT_LE:
238
+ {
239
+ ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
240
+ for (int i = x.size(); i--; ) {
241
+ xy[i][0]=x[i]; xy[i][1]=y[i];
242
+ }
243
+ GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,true));
244
+ }
245
+ break;
246
+ case IRT_GQ:
247
+ {
248
+ ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
249
+ for (int i = x.size(); i--; ) {
250
+ xy[i][0]=y[i]; xy[i][1]=x[i];
251
+ }
252
+ GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,false));
253
+ }
254
+ break;
255
+ case IRT_LQ:
256
+ {
257
+ ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
258
+ for (int i = x.size(); i--; ) {
259
+ xy[i][0]=x[i]; xy[i][1]=y[i];
260
+ }
261
+ GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,false));
262
+ }
263
+ break;
264
+ case IRT_EQ:
265
+ if (icl == ICL_BND)
266
+ for (int i=x.size(); i--; ) {
267
+ GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>
268
+ ::post(home,x[i],y[i])));
269
+ }
270
+ else
271
+ for (int i=x.size(); i--; ) {
272
+ GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>
273
+ ::post(home,x[i],y[i])));
274
+ }
275
+ break;
276
+ case IRT_NQ:
277
+ {
278
+ ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
279
+ for (int i = x.size(); i--; ) {
280
+ xy[i][0]=x[i]; xy[i][1]=y[i];
281
+ }
282
+ GECODE_ES_FAIL(home,Rel::NaryNq<IntView>::post(home,xy));
283
+ }
284
+ break;
285
+ default:
286
+ throw UnknownRelation("Int::rel");
287
+ }
288
+ }
289
+
290
+ }
291
+
292
+ // STATISTICS: int-post
293
+
@@ -0,0 +1,526 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Contributing authors:
7
+ * Gabor Szokoli <szokoli@gecode.org>
8
+ *
9
+ * Copyright:
10
+ * Christian Schulte, 2002
11
+ * Guido Tack, 2004
12
+ * Gabor Szokoli, 2003
13
+ *
14
+ * Last modified:
15
+ * $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
16
+ * $Revision: 3579 $
17
+ *
18
+ * This file is part of Gecode, the generic constraint
19
+ * development environment:
20
+ * http://www.gecode.org
21
+ *
22
+ * See the file "LICENSE" for information on usage and
23
+ * redistribution of this file, and for a
24
+ * DISCLAIMER OF ALL WARRANTIES.
25
+ *
26
+ */
27
+
28
+ #ifndef __GECODE_INT_REL_HH__
29
+ #define __GECODE_INT_REL_HH__
30
+
31
+ #include "gecode/int.hh"
32
+
33
+ #include "gecode/iter.hh"
34
+
35
+ /**
36
+ * \namespace Gecode::Int::Rel
37
+ * \brief Simple relation propagators
38
+ */
39
+
40
+ namespace Gecode { namespace Int { namespace Rel {
41
+
42
+ /*
43
+ * Equality propagators
44
+ *
45
+ */
46
+
47
+ /**
48
+ * \brief Binary domain-consistent equality propagator
49
+ *
50
+ * Uses staging by first performing bounds propagation and only
51
+ * then domain propagation.
52
+ *
53
+ * Requires \code #include "gecode/int/rel.hh" \endcode
54
+ * \ingroup FuncIntProp
55
+ */
56
+ template <class View0,class View1>
57
+ class EqDom :
58
+ public InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM> {
59
+ protected:
60
+ using InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM>::x0;
61
+ using InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM>::x1;
62
+
63
+ /// Constructor for cloning \a p
64
+ EqDom(Space* home, bool share, EqDom<View0,View1>& p);
65
+ /// Constructor for posting
66
+ EqDom(Space* home, View0 x0, View1 x1);
67
+ public:
68
+ /// Copy propagator during cloning
69
+ virtual Actor* copy(Space* home, bool share);
70
+ /**
71
+ * \brief Cost function
72
+ *
73
+ * If a view has been assigned, the cost is PC_UNARY_LO.
74
+ * If in stage for bounds propagation, the cost is
75
+ * PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
76
+ */
77
+ virtual PropCost cost(void) const;
78
+ /// Perform propagation
79
+ virtual ExecStatus propagate(Space* home);
80
+ /// Post domain-consistent propagator \f$ x_0 = x_1\f$
81
+ static ExecStatus post(Space* home, View0 x0, View1 x1);
82
+ };
83
+
84
+ /**
85
+ * \brief Binary bounds-consistent equality propagator
86
+ *
87
+ * Requires \code #include "gecode/int/rel.hh" \endcode
88
+ * \ingroup FuncIntProp
89
+ */
90
+ template <class View0, class View1>
91
+ class EqBnd :
92
+ public InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND> {
93
+ protected:
94
+ using InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND>::x0;
95
+ using InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND>::x1;
96
+
97
+ /// Constructor for cloning \a p
98
+ EqBnd(Space* home, bool share, EqBnd<View0,View1>& p);
99
+ /// Constructor for posting
100
+ EqBnd(Space* home, View0 x0, View1 x1);
101
+ public:
102
+ /// Constructor for rewriting \a p during cloning
103
+ EqBnd(Space* home, bool share, Propagator& p, View0 x0, View1 x1);
104
+ /// Copy propagator during cloning
105
+ virtual Actor* copy(Space* home, bool share);
106
+ /// Perform propagation
107
+ virtual ExecStatus propagate(Space* home);
108
+ /// Post bounds-consistent propagator \f$ x_0 = x_1\f$
109
+ static ExecStatus post(Space* home, View0 x0, View1 x1);
110
+ };
111
+
112
+ /**
113
+ * \brief n-ary domain-consistent equality propagator
114
+ *
115
+ * Uses staging by first performing bounds propagation and only
116
+ * then domain propagation.
117
+ *
118
+ * Requires \code #include "gecode/int/rel.hh" \endcode
119
+ * \ingroup FuncIntProp
120
+ */
121
+ template <class View>
122
+ class NaryEqDom : public NaryPropagator<View,PC_INT_DOM> {
123
+ protected:
124
+ using NaryPropagator<View,PC_INT_DOM>::x;
125
+
126
+ /// Constructor for cloning \a p
127
+ NaryEqDom(Space* home, bool share, NaryEqDom<View>& p);
128
+ /// Constructor for posting
129
+ NaryEqDom(Space* home, ViewArray<View>&);
130
+ public:
131
+ /// Copy propagator during cloning
132
+ virtual Actor* copy(Space* home, bool share);
133
+ /**
134
+ * \brief Cost function
135
+ *
136
+ * If a view has been assigned, the cost is PC_UNARY_LO.
137
+ * If in stage for bounds propagation, the cost is dynamic
138
+ * PC_LINEAR_LO. Otherwise it is dynamic PC_LINEAR_HI.
139
+ */
140
+ virtual PropCost cost(void) const;
141
+ /// Perform propagation
142
+ virtual ExecStatus propagate(Space* home);
143
+ /// Post domain-consistent propagator \f$ x_0 = x_1=\ldots =x_{|x|-1}\f$
144
+ static ExecStatus post(Space* home, ViewArray<View>& x);
145
+ };
146
+
147
+ /**
148
+ * \brief n-ary bounds-consistent equality propagator
149
+ *
150
+ * Requires \code #include "gecode/int/rel.hh" \endcode
151
+ * \ingroup FuncIntProp
152
+ */
153
+ template <class View>
154
+ class NaryEqBnd : public NaryPropagator<View,PC_INT_BND> {
155
+ protected:
156
+ using NaryPropagator<View,PC_INT_BND>::x;
157
+
158
+ /// Constructor for cloning \a p
159
+ NaryEqBnd(Space* home, bool share, NaryEqBnd<View>& p);
160
+ /// Constructor for posting
161
+ NaryEqBnd(Space* home, ViewArray<View>&);
162
+ public:
163
+ /// Copy propagator during cloning
164
+ virtual Actor* copy(Space* home, bool share);
165
+ /**
166
+ * \brief Cost function
167
+ *
168
+ * If a view has been assigned, the cost is PC_UNARY_LO.
169
+ * Otherwise it is dynamic PC_LINEAR_HI.
170
+ */
171
+ virtual PropCost cost(void) const;
172
+ /// Perform propagation
173
+ virtual ExecStatus propagate(Space* home);
174
+ /// Post bounds-consistent propagator \f$ x_0 = x_1=\ldots =x_{|x|-1}\f$
175
+ static ExecStatus post(Space* home, ViewArray<View>& x);
176
+ };
177
+
178
+ /**
179
+ * \brief Reified binary domain-consistent equality propagator
180
+ *
181
+ * Requires \code #include "gecode/int/rel.hh" \endcode
182
+ * \ingroup FuncIntProp
183
+ */
184
+ template <class View, class CtrlView>
185
+ class ReEqDom : public ReBinaryPropagator<View,PC_INT_DOM,CtrlView> {
186
+ protected:
187
+ using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
188
+ using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x1;
189
+ using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::b;
190
+
191
+ /// Constructor for cloning \a p
192
+ ReEqDom(Space* home, bool share, ReEqDom& p);
193
+ /// Constructor for posting
194
+ ReEqDom(Space* home, View x0, View x1, CtrlView b);
195
+ public:
196
+ /// Copy propagator during cloning
197
+ virtual Actor* copy(Space* home, bool share);
198
+ /// Perform propagation
199
+ virtual ExecStatus propagate(Space* home);
200
+ /// Post domain-consistent propagator \f$ (x_0 = x_1)\Leftrightarrow b\f$
201
+ static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
202
+ };
203
+
204
+ /**
205
+ * \brief Reified binary bounds-consistent equality propagator
206
+ *
207
+ * Requires \code #include "gecode/int/rel.hh" \endcode
208
+ * \ingroup FuncIntProp
209
+ */
210
+ template <class View, class CtrlView>
211
+ class ReEqBnd : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
212
+ protected:
213
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
214
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
215
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
216
+
217
+ /// Constructor for cloning \a p
218
+ ReEqBnd(Space* home, bool share, ReEqBnd& p);
219
+ /// Constructor for posting
220
+ ReEqBnd(Space* home, View x0, View x1, CtrlView b);
221
+ public:
222
+ /// Copy propagator during cloning
223
+ virtual Actor* copy(Space* home, bool share);
224
+ /// Perform propagation
225
+ virtual ExecStatus propagate(Space* home);
226
+ /// Post bounds-consistent propagator \f$ (x_0 = x_1)\Leftrightarrow b\f$
227
+ static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
228
+ };
229
+
230
+ /**
231
+ * \brief Reified domain-consistent equality with integer propagator
232
+ *
233
+ * Requires \code #include "gecode/int/rel.hh" \endcode
234
+ * \ingroup FuncIntProp
235
+ */
236
+ template <class View, class CtrlView>
237
+ class ReEqDomInt : public ReUnaryPropagator<View,PC_INT_DOM,CtrlView> {
238
+ protected:
239
+ using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
240
+ using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::b;
241
+
242
+ /// Integer constant to check
243
+ int c;
244
+ /// Constructor for cloning \a p
245
+ ReEqDomInt(Space* home, bool share, ReEqDomInt& p);
246
+ /// Constructor for posting
247
+ ReEqDomInt(Space* home, View x, int c, CtrlView b);
248
+ public:
249
+ /// Copy propagator during cloning
250
+ virtual Actor* copy(Space* home, bool share);
251
+ /// Perform propagation
252
+ virtual ExecStatus propagate(Space* home);
253
+ /// Post domain-consistent propagator \f$ (x = c)\Leftrightarrow b\f$
254
+ static ExecStatus post(Space* home, View x, int c, CtrlView b);
255
+ };
256
+
257
+ /**
258
+ * \brief Reified bounds-consistent equality with integer propagator
259
+ *
260
+ * Requires \code #include "gecode/int/rel.hh" \endcode
261
+ * \ingroup FuncIntProp
262
+ */
263
+ template <class View, class CtrlView>
264
+ class ReEqBndInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
265
+ protected:
266
+ using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
267
+ using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
268
+
269
+ /// Integer constant to check
270
+ int c;
271
+ /// Constructor for cloning \a p
272
+ ReEqBndInt(Space* home, bool share, ReEqBndInt& p);
273
+ /// Constructor for posting
274
+ ReEqBndInt(Space* home, View x, int c, CtrlView b);
275
+ public:
276
+ /// Copy propagator during cloning
277
+ virtual Actor* copy(Space* home, bool share);
278
+ /// Perform propagation
279
+ virtual ExecStatus propagate(Space* home);
280
+ /// Post bounds-consistent propagator \f$ (x = c)\Leftrightarrow b\f$
281
+ static ExecStatus post(Space* home, View x, int c, CtrlView b);
282
+ };
283
+
284
+
285
+
286
+
287
+ /*
288
+ * Disequality propagators
289
+ *
290
+ */
291
+
292
+ /**
293
+ * \brief Binary disequality propagator
294
+ *
295
+ * Requires \code #include "gecode/int/rel.hh" \endcode
296
+ * \ingroup FuncIntProp
297
+ */
298
+
299
+ template <class View>
300
+ class Nq : public BinaryPropagator<View,PC_INT_VAL> {
301
+ protected:
302
+ using BinaryPropagator<View,PC_INT_VAL>::x0;
303
+ using BinaryPropagator<View,PC_INT_VAL>::x1;
304
+
305
+ /// Constructor for cloning \a p
306
+ Nq(Space* home, bool share, Nq<View>& p);
307
+ /// Constructor for posting
308
+ Nq(Space* home, View x0, View x1);
309
+ public:
310
+ /// Copy propagator during cloning
311
+ virtual Actor* copy(Space* home, bool share);
312
+ /// Cost function (defined as PC_UNARY_LO)
313
+ virtual PropCost cost(void) const;
314
+ /// Perform propagation
315
+ virtual ExecStatus propagate(Space* home);
316
+ /// Post propagator \f$x_0\neq x_1\f$
317
+ static ExecStatus post(Space* home, View x0, View x1);
318
+ };
319
+
320
+ /*
321
+ * Order propagators
322
+ *
323
+ */
324
+
325
+ /**
326
+ * \brief Less or equal propagator
327
+ *
328
+ * Requires \code #include "gecode/int/rel.hh" \endcode
329
+ * \ingroup FuncIntProp
330
+ */
331
+
332
+ template <class View>
333
+ class Lq : public BinaryPropagator<View,PC_INT_BND> {
334
+ protected:
335
+ using BinaryPropagator<View,PC_INT_BND>::x0;
336
+ using BinaryPropagator<View,PC_INT_BND>::x1;
337
+
338
+ /// Constructor for cloning \a p
339
+ Lq(Space* home, bool share, Lq& p);
340
+ /// Constructor for posting
341
+ Lq(Space* home, View x0, View x1);
342
+ public:
343
+ /// Copy propagator during cloning
344
+ virtual Actor* copy(Space* home, bool share);
345
+ /// Perform propagation
346
+ virtual ExecStatus propagate(Space* home);
347
+ /// Post propagator \f$x_0 \leq x_1\f$
348
+ static ExecStatus post(Space* home, View x0, View x1);
349
+ };
350
+
351
+ /**
352
+ * \brief Less propagator
353
+ *
354
+ * Requires \code #include "gecode/int/rel.hh" \endcode
355
+ * \ingroup FuncIntProp
356
+ */
357
+
358
+ template <class View>
359
+ class Le : public BinaryPropagator<View,PC_INT_BND> {
360
+ protected:
361
+ using BinaryPropagator<View,PC_INT_BND>::x0;
362
+ using BinaryPropagator<View,PC_INT_BND>::x1;
363
+
364
+ /// Constructor for cloning \a p
365
+ Le(Space* home, bool share, Le& p);
366
+ /// Constructor for posting
367
+ Le(Space* home, View x0, View x1);
368
+ public:
369
+ /// Copy propagator during cloning
370
+ virtual Actor* copy(Space* home, bool share);
371
+ /// Perform propagation
372
+ virtual ExecStatus propagate(Space* home);
373
+ /// Post propagator \f$x_0 \le x_1\f$
374
+ static ExecStatus post(Space* home, View x0, View x1);
375
+ };
376
+
377
+
378
+
379
+ /*
380
+ * Reified order propagators
381
+ *
382
+ */
383
+
384
+ /**
385
+ * \brief Reified less or equal propagator
386
+ *
387
+ * Requires \code #include "gecode/int/rel.hh" \endcode
388
+ * \ingroup FuncIntProp
389
+ */
390
+
391
+ template <class View, class CtrlView>
392
+ class ReLq : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
393
+ protected:
394
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
395
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
396
+ using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
397
+
398
+ /// Constructor for cloning \a p
399
+ ReLq(Space* home, bool share, ReLq& p);
400
+ /// Constructor for posting
401
+ ReLq(Space* home, View x0, View x1, CtrlView b);
402
+ public:
403
+ /// Copy propagator during cloning
404
+ virtual Actor* copy(Space* home, bool share);
405
+ /// Perform propagation
406
+ virtual ExecStatus propagate(Space* home);
407
+ /// Post propagator for \f$ (x_0 \leq x_1)\Leftrightarrow b\f$
408
+ static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
409
+ };
410
+
411
+ /**
412
+ * \brief Reified less or equal with integer propagator
413
+ *
414
+ * Requires \code #include "gecode/int/rel.hh" \endcode
415
+ * \ingroup FuncIntProp
416
+ */
417
+
418
+ template <class View, class CtrlView>
419
+ class ReLqInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
420
+ protected:
421
+ using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
422
+ using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
423
+
424
+ /// Integer constant to check
425
+ int c;
426
+ /// Constructor for cloning \a p
427
+ ReLqInt(Space* home, bool share, ReLqInt& p);
428
+ /// Constructor for posting
429
+ ReLqInt(Space* home, View x, int c, CtrlView b);
430
+ public:
431
+ /// Copy propagator during cloning
432
+ virtual Actor* copy(Space* home, bool share);
433
+ /// Perform propagation
434
+ virtual ExecStatus propagate(Space* home);
435
+ /// Post propagator for \f$ (x \leq c)\Leftrightarrow b\f$
436
+ static ExecStatus post(Space* home, View x, int c, CtrlView b);
437
+ };
438
+
439
+
440
+
441
+
442
+
443
+ /**
444
+ * \brief Lexical ordering propagator
445
+ *
446
+ * The propagator uses the algorithm (and also the automaton)
447
+ * from:
448
+ * Mats Carlsson, Nicolas Beldiceanu, Revisiting the
449
+ * Lexicographic Ordering Constraint. SICS Technical
450
+ * Report T2002:17, SICS, Sweden, 2002.
451
+ *
452
+ * It deviates in the following two main aspects:
453
+ * - Assigned variables are eagerly eliminated
454
+ * This yields the same incremental behaviour with
455
+ * respect to states 1 and 2 of the automaton.
456
+ * With respect to the values of \a q and \a r in the report:
457
+ * - \a q is always 0 after elimination
458
+ * - \a r is always 1 after elimination
459
+ *
460
+ * - It is not incremental with respect to states 3 and 4
461
+ * as no propagation event information is available
462
+ *
463
+ * Requires \code #include "gecode/int/rel.hh" \endcode
464
+ * \ingroup FuncIntProp
465
+ */
466
+ template <class View>
467
+ class Lex : public NaryPropagator<ViewTuple<View,2>,PC_INT_BND> {
468
+ protected:
469
+ using NaryPropagator<ViewTuple<View,2>,PC_INT_BND>::x;
470
+
471
+ /// Determines whether propagator is strict or not
472
+ bool strict;
473
+ /// Constructor for cloning \a p
474
+ Lex(Space* home, bool share, Lex& p);
475
+ /// Constructor for posting
476
+ Lex(Space* home, ViewArray<ViewTuple<View,2> >& xy, bool strict);
477
+ public:
478
+ /// Copy propagator during cloning
479
+ virtual Actor* copy(Space* home, bool share);
480
+ /// Perform propagation
481
+ virtual ExecStatus propagate(Space* home);
482
+ /// Post propagator for lexical order on \a xy
483
+ static ExecStatus post(Space* home,
484
+ ViewArray<ViewTuple<View,2> >& xy, bool strict);
485
+ };
486
+
487
+
488
+ /**
489
+ * \brief %Propagator for n-ary disequlaity
490
+ *
491
+ * Requires \code #include "gecode/int/rel.hh" \endcode
492
+ * \ingroup FuncIntProp
493
+ */
494
+ template<class View>
495
+ class NaryNq : public BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM> {
496
+ protected:
497
+ using BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM>::x0;
498
+ using BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM>::x1;
499
+ /// Views not yet subscribed to
500
+ ViewArray<ViewTuple<View,2> > x;
501
+ /// Constructor for posting
502
+ NaryNq(Space* home, ViewArray<ViewTuple<View,2> >& x);
503
+ /// Constructor for cloning \a p
504
+ NaryNq(Space* home, bool share, NaryNq& p);
505
+ public:
506
+ /// Copy propagator during cloning
507
+ virtual Actor* copy(Space* home, bool share);
508
+ /// Perform propagation
509
+ virtual ExecStatus propagate(Space* home);
510
+ /// Post propagator for \f$\exists i\in\{0,\ldots,|x|-1\}:\;x_i\neq y_i\f$
511
+ static ExecStatus post(Space* home, ViewArray<ViewTuple<View,2> >& x);
512
+ };
513
+
514
+
515
+ }}}
516
+
517
+ #include "gecode/int/rel/eq.icc"
518
+ #include "gecode/int/rel/nq.icc"
519
+ #include "gecode/int/rel/lq-le.icc"
520
+ #include "gecode/int/rel/lex.icc"
521
+
522
+ #endif
523
+
524
+
525
+ // STATISTICS: int-prop
526
+