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,264 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2002
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-24 11:25:05 +0200 (Thu, 24 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3559 $
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
+ namespace Gecode {
23
+
24
+ namespace Int { namespace Linear {
25
+
26
+ /**
27
+ * \brief No view serves as filler for empty view arrays
28
+ *
29
+ */
30
+ class NoView : public ConstantViewBase {
31
+ public:
32
+ /// \name Constructors and initialization
33
+ //@{
34
+ /// Default constructor
35
+ NoView(void) {}
36
+ /// Initialize
37
+ void init(void) {}
38
+ //@}
39
+
40
+ /// \name Value access
41
+ //@{
42
+ /// Return minimum of domain
43
+ int min(void) const { return 0; }
44
+ /// Return maximum of domain
45
+ int max(void) const { return 0; }
46
+ /// Return median of domain
47
+ int med(void) const { return 0; }
48
+ /// Return assigned value (only if assigned)
49
+ int val(void) const { return 0; }
50
+
51
+ /// Return size (cardinality) of domain
52
+ unsigned int size(void) const { return 1; }
53
+ /// Return width of domain (distance between maximum and minimum)
54
+ unsigned int width(void) const { return 1; }
55
+ /// Return regret of domain minimum (distance to next larger value)
56
+ unsigned int regret_min(void) const { return 0; }
57
+ /// Return regret of domain maximum (distance to next smaller value)
58
+ unsigned int regret_max(void) const { return 0; }
59
+ //@}
60
+
61
+ /// \name Domain tests
62
+ //@{
63
+ /// Test whether domain is a range
64
+ bool range(void) const { return true; }
65
+ /// Test whether view is assigned
66
+ bool assigned(void) const { return true; }
67
+
68
+ /// Test whether \a n is contained in domain
69
+ bool in(int n) const { return false; }
70
+ /// Test whether \a n is contained in domain
71
+ bool in(double n) const { return false; }
72
+ //@}
73
+
74
+ /// \name Domain update by value
75
+ //@{
76
+ /// Restrict domain values to be less or equal than \a n
77
+ ModEvent lq(Space* home, int n) { return ME_INT_NONE; }
78
+ /// Restrict domain values to be less or equal than \a n
79
+ ModEvent lq(Space* home, double n) { return ME_INT_NONE; }
80
+ /// Restrict domain values to be less than \a n
81
+ ModEvent le(Space* home, int n) { return ME_INT_NONE; }
82
+ /// Restrict domain values to be less than \a n
83
+ ModEvent le(Space* home, double n) { return ME_INT_NONE; }
84
+ /// Restrict domain values to be greater or equal than \a n
85
+ ModEvent gq(Space* home, int n) { return ME_INT_NONE; }
86
+ /// Restrict domain values to be greater or equal than \a n
87
+ ModEvent gq(Space* home, double n) { return ME_INT_NONE; }
88
+ /// Restrict domain values to be greater than \a n
89
+ ModEvent gr(Space* home, int n) { return ME_INT_NONE; }
90
+ /// Restrict domain values to be greater than \a n
91
+ ModEvent gr(Space* home, double n) { return ME_INT_NONE; }
92
+ /// Restrict domain values to be different from \a n
93
+ ModEvent nq(Space* home, int n) { return ME_INT_NONE; }
94
+ /// Restrict domain values to be different from \a n
95
+ ModEvent nq(Space* home, double n) { return ME_INT_NONE; }
96
+ /// Restrict domain values to be equal to \a n
97
+ ModEvent eq(Space* home, int n) { return ME_INT_NONE; }
98
+ /// Restrict domain values to be equal to \a n
99
+ ModEvent eq(Space* home, double n) { return ME_INT_NONE; }
100
+ //@}
101
+
102
+ /// \name Propagator modification events
103
+ //@{
104
+ /// Return modification event of propagator \a p for view
105
+ static ModEvent pme(const Propagator* p) { return ME_INT_NONE; }
106
+ /// Translate modification event \a me to propagator modification event for view
107
+ static PropModEvent pme(ModEvent me) { return ME_INT_NONE; }
108
+ //@}
109
+
110
+ /// \name Dependencies
111
+ //@{
112
+ /// Subscribe propagator \a p with propagation condition \a pc to view
113
+ void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true) {}
114
+ /// Cancel subscription of propagator \a p with propagation condition \a pc to view
115
+ void cancel(Space* home, Propagator* p, PropCond pc) {}
116
+ //@}
117
+
118
+ /// \name Cloning
119
+ //@{
120
+ /// Update this view to be a clone of view \a x
121
+ void update(Space* home, bool share, NoView& x) {}
122
+ //@}
123
+
124
+ /// \name View comparison
125
+ //@{
126
+ /// Test whether this view is the same as \a x
127
+ bool operator ==(const NoView& x) const { return true; }
128
+ /// Test whether this view is not the same as \a x
129
+ bool operator !=(const NoView& x) const { return false; }
130
+ /// Test whether this view is smaller than \a x (arbitrary order)
131
+ bool operator < (const NoView& x) const { return false; }
132
+ /// Test whether this view is larger than \a x (arbitrary order)
133
+ bool operator > (const NoView& x) const { return false; }
134
+ //@}
135
+ };
136
+
137
+ }}
138
+
139
+
140
+ /**
141
+ * \brief View array for no view (empty)
142
+ *
143
+ */
144
+ template <>
145
+ class ViewArray<Int::Linear::NoView> {
146
+ public:
147
+ /// \name Constructors and initialization
148
+ //@{
149
+ /// Default constructor (array of size 0)
150
+ ViewArray(void) {}
151
+ /// Allocate array with \a m variables
152
+ ViewArray(Space* home, int m) {}
153
+ /// Initialize
154
+ ViewArray(const ViewArray<Int::Linear::NoView>&) {}
155
+ /// Initialize
156
+ ViewArray(Space*, const ViewArray<Int::Linear::NoView>&) {}
157
+ /// Initialize
158
+ const ViewArray<Int::Linear::NoView>& operator=(const ViewArray<Int::Linear::NoView>&) { return *this; }
159
+ //@}
160
+
161
+ /// \name Array size
162
+ //@{
163
+ /// Return size of array (number of elements)
164
+ int size(void) const { return 0; }
165
+ /// Decrease size of array (number of elements)
166
+ void size(int n) {}
167
+ //@}
168
+
169
+ /// \name Array elements
170
+ //@{
171
+ /// Return view at position \a i
172
+ Int::Linear::NoView operator[](int i) { Int::Linear::NoView n; return n; }
173
+ //@}
174
+
175
+ /// \name Dependencies
176
+ //@{
177
+ /// Subscribe propagator \a p with propagation condition \a pc to all views
178
+ void subscribe(Space*, Propagator* p, PropCond pc, bool process=true) {}
179
+ /// Cancel subscription of propagator \a p with propagation condition \a pc to all views
180
+ void cancel(Space* home, Propagator* p, PropCond pc) {}
181
+ //@}
182
+
183
+ /// \name Cloning
184
+ //@{
185
+ /**
186
+ * \brief Update array to be a clone of array \a a
187
+ *
188
+ * If \a share is true, sharing is retained for all shared
189
+ * data structures. Otherwise, for each of them an independent
190
+ * copy is created.
191
+ */
192
+ void update(Space*, bool share, ViewArray<Int::Linear::NoView>& a) {}
193
+ //@}
194
+
195
+
196
+ /// \name Moving elements
197
+ //@{
198
+ /// Move assigned view from position 0 to position \a i (shift elements to the left)
199
+ void move_fst(int i) {}
200
+ /// Move assigned view from position \c size()-1 to position \a i (truncate array by one)
201
+ void move_lst(int i) {}
202
+ /** \brief Move view from position 0 to position \a i (shift elements to the left)
203
+ *
204
+ * Before moving, cancel subscription of propagator \a p with
205
+ * propagation condition \a pc to view at position \a i.
206
+ */
207
+ void move_fst(int i, Propagator* p, PropCond pc) {}
208
+ /** \brief Move view from position \c size()-1 to position \a i (truncate array by one)
209
+ *
210
+ * Before moving, cancel subscription of propagator \a p with
211
+ * propagation condition \a pc to view at position \a i.
212
+ */
213
+ void move_lst(int i, Propagator* p, PropCond pc) {}
214
+ //@}
215
+
216
+ /// \name Dropping elements
217
+ //@{
218
+ /// Drop assigned views from positions 0 to \a i-1 from array
219
+ void drop_fst(int i);
220
+ /// Drop assigned views from positions \a i+1 to \c size()-1 from array
221
+ void drop_lst(int i);
222
+ /** \brief Drop views from positions 0 to \a i-1 from array
223
+ *
224
+ * Before moving, cancel subscription of propagator \a p with
225
+ * propagation condition \a pc to views at positions 0 to \a i-1.
226
+ */
227
+ void drop_fst(int i, Propagator* p, PropCond pc) {}
228
+ /** \brief Drop assigned views from positions \a i+1 to \c size()-1 from array
229
+ *
230
+ * Before moving, cancel subscription of propagator \a p with
231
+ * propagation condition \a pc to views at positions \a i+1 to
232
+ * \c size()-1.
233
+ */
234
+ void drop_lst(int i, Propagator* p, PropCond pc) {}
235
+ //@}
236
+
237
+ /// \name View equality
238
+ //@{
239
+ /// Test whether array has equal views
240
+ bool equal(void) const { return false; }
241
+ /// Test whether array contains view equal to \a y
242
+ bool equal(const Int::Linear::NoView& y) const {return false; }
243
+ /// Remove all duplicate views from array (changes element order)
244
+ void unique(void) {}
245
+ //@}
246
+
247
+ /// \name View sharing
248
+ //@{
249
+ /// Test whether array has shared views
250
+ bool shared(void) const { return false; }
251
+ /// Test whether array contains view shared with \a y
252
+ bool shared(const Int::Linear::NoView& y) const { return false; }
253
+ //@}
254
+
255
+ private:
256
+ static void* operator new(size_t);
257
+ static void operator delete(void*,size_t);
258
+ };
259
+
260
+ }
261
+
262
+
263
+ // STATISTICS: int-prop
264
+
@@ -0,0 +1,542 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2002
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3512 $
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
+ #include "gecode/int/rel.hh"
23
+ #include "gecode/int/linear.hh"
24
+
25
+ #include "gecode/support/sort.hh"
26
+
27
+ #include <climits>
28
+ #include <algorithm>
29
+
30
+ namespace Gecode { namespace Int { namespace Linear {
31
+
32
+ /// Sort linear terms by view
33
+ class TermLess {
34
+ public:
35
+ forceinline bool
36
+ operator()(const Term& a, const Term& b) {
37
+ return before(a.x,b.x);
38
+ }
39
+ };
40
+
41
+ bool
42
+ preprocess(Term e[], int& n, IntRelType& r, int& c, int& n_p, int& n_n) {
43
+ if ((c < Limits::Int::int_min) || (c > Limits::Int::int_max))
44
+ throw NumericalOverflow("Int::linear");
45
+ /*
46
+ * Join coefficients for aliased variables:
47
+ */
48
+ {
49
+ // Group same variables
50
+ TermLess el;
51
+ Support::quicksort<Term,TermLess>(e,n,el);
52
+
53
+ // Join adjacent variables
54
+ int i = 0;
55
+ int j = 0;
56
+ while (i < n) {
57
+ int a = e[i].a;
58
+ if ((a < Limits::Int::int_min) || (a > Limits::Int::int_max))
59
+ throw NumericalOverflow("Int::linear");
60
+ IntView x = e[i].x;
61
+ while ((++i < n) && same(e[i].x,x)) {
62
+ a += e[i].a;
63
+ if ((a < Limits::Int::int_min) || (a > Limits::Int::int_max))
64
+ throw NumericalOverflow("Int::linear");
65
+ }
66
+ if (a != 0) {
67
+ e[j].a = a; e[j].x = x; j++;
68
+ }
69
+ }
70
+ n = j;
71
+ }
72
+ /*
73
+ * All inequations in terms of <=
74
+ */
75
+ switch (r) {
76
+ case IRT_EQ: case IRT_NQ: case IRT_LQ:
77
+ break;
78
+ case IRT_LE:
79
+ c--; r = IRT_LQ; break;
80
+ case IRT_GR:
81
+ c++; /* fall through */
82
+ case IRT_GQ:
83
+ r = IRT_LQ;
84
+ for (int i = n; i--; )
85
+ e[i].a = -e[i].a;
86
+ c = -c;
87
+ break;
88
+ default:
89
+ throw UnknownRelation("Int::linear");
90
+ }
91
+ /*
92
+ * Partition into positive/negative coefficents
93
+ */
94
+ {
95
+ int i = 0;
96
+ int j = n-1;
97
+ while (true) {
98
+ while ((e[j].a < 0) && (--j >= 0)) ;
99
+ while ((e[i].a > 0) && (++i < n)) ;
100
+ if (j <= i) break;
101
+ std::swap(e[i],e[j]);
102
+ }
103
+ n_p = i;
104
+ n_n = n-n_p;
105
+ }
106
+ for (int i = n; i--; )
107
+ if ((e[i].a != 1) && (e[i].a != -1))
108
+ return false;
109
+ return true;
110
+ }
111
+
112
+ bool
113
+ int_precision(Term e[], int n, int c) {
114
+ // Decide the required precision
115
+ double sn = 0.0; double sp = 0.0;
116
+
117
+ for (int i = n; i--; ) {
118
+ const double l = e[i].a * static_cast<double>(e[i].x.min());
119
+ if (l < 0.0) sn += l; else sp += l;
120
+ const double u = e[i].a * static_cast<double>(e[i].x.max());
121
+ if (u < 0.0) sn += u; else sp += u;
122
+ }
123
+ double cp = (c<0) ? -c : c;
124
+ if ((sn-cp < Limits::Int::double_min) ||
125
+ (sp+cp > Limits::Int::double_max))
126
+ throw NumericalOverflow("Int::linear");
127
+
128
+ return ((sn >= Limits::Int::int_min) && (sn <= Limits::Int::int_max) &&
129
+ (sp >= Limits::Int::int_min) && (sp <= Limits::Int::int_max) &&
130
+ (sn-c >= Limits::Int::int_min) && (sn-c <= Limits::Int::int_max) &&
131
+ (sp-c >= Limits::Int::int_min) && (sp-c <= Limits::Int::int_max));
132
+ }
133
+
134
+ /*
135
+ * Posting plain propagators
136
+ *
137
+ */
138
+
139
+ template <class Val, class View>
140
+ forceinline void
141
+ post_nary(Space* home,
142
+ ViewArray<View>& x, ViewArray<View>& y, IntRelType r, Val c) {
143
+ switch (r) {
144
+ case IRT_LQ:
145
+ if (Lq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
146
+ home->fail();
147
+ break;
148
+ case IRT_EQ:
149
+ if (Eq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
150
+ home->fail();
151
+ break;
152
+ case IRT_NQ:
153
+ if (Nq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
154
+ home->fail();
155
+ break;
156
+ default: GECODE_NEVER;
157
+ }
158
+ }
159
+
160
+ void
161
+ post(Space* home, Term e[], int n, IntRelType r, int c,
162
+ IntConLevel icl) {
163
+ int n_p, n_n;
164
+ bool is_unit = preprocess(e,n,r,c,n_p,n_n);
165
+ if (n == 0) {
166
+ switch (r) {
167
+ case IRT_EQ: if (c != 0) home->fail(); break;
168
+ case IRT_NQ: if (c == 0) home->fail(); break;
169
+ case IRT_LQ: if (0 > c) home->fail(); break;
170
+ default: GECODE_NEVER;
171
+ }
172
+ return;
173
+ }
174
+ if (n == 1) {
175
+ if (e[0].a > 0) {
176
+ DoubleScaleView y(e[0].a,e[0].x);
177
+ switch (r) {
178
+ case IRT_EQ: GECODE_ME_FAIL(home,y.eq(home,c)); break;
179
+ case IRT_NQ: GECODE_ME_FAIL(home,y.nq(home,c)); break;
180
+ case IRT_LQ: GECODE_ME_FAIL(home,y.lq(home,c)); break;
181
+ default: GECODE_NEVER;
182
+ }
183
+ } else {
184
+ DoubleScaleView y(-e[0].a,e[0].x);
185
+ switch (r) {
186
+ case IRT_EQ: GECODE_ME_FAIL(home,y.eq(home,-c)); break;
187
+ case IRT_NQ: GECODE_ME_FAIL(home,y.nq(home,-c)); break;
188
+ case IRT_LQ: GECODE_ME_FAIL(home,y.gq(home,-c)); break;
189
+ default: GECODE_NEVER;
190
+ }
191
+ }
192
+ return;
193
+ }
194
+ bool is_ip = int_precision(e,n,c);
195
+ if (is_unit && is_ip && (icl != ICL_DOM)) {
196
+ if (n == 2) {
197
+ switch (r) {
198
+ case IRT_LQ:
199
+ switch (n_p) {
200
+ case 2:
201
+ if (LqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
202
+ == ES_FAILED) home->fail();
203
+ break;
204
+ case 1:
205
+ if (LqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
206
+ == ES_FAILED) home->fail();
207
+ break;
208
+ case 0:
209
+ if (LqBin<int,MinusView,MinusView>::post(home,e[0].x,e[1].x,c)
210
+ == ES_FAILED) home->fail();
211
+ break;
212
+ default: GECODE_NEVER;
213
+ }
214
+ break;
215
+ case IRT_EQ:
216
+ switch (n_p) {
217
+ case 2:
218
+ if (EqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
219
+ == ES_FAILED) home->fail();
220
+ break;
221
+ case 1:
222
+ if (EqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
223
+ == ES_FAILED) home->fail();
224
+ break;
225
+ case 0:
226
+ if (EqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,-c)
227
+ == ES_FAILED) home->fail();
228
+ break;
229
+ default: GECODE_NEVER;
230
+ }
231
+ break;
232
+ case IRT_NQ:
233
+ switch (n_p) {
234
+ case 2:
235
+ if (NqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
236
+ == ES_FAILED) home->fail();
237
+ break;
238
+ case 1:
239
+ if (NqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
240
+ == ES_FAILED) home->fail();
241
+ break;
242
+ case 0:
243
+ if (NqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,-c)
244
+ == ES_FAILED) home->fail();
245
+ break;
246
+ default: GECODE_NEVER;
247
+ }
248
+ break;
249
+ default: GECODE_NEVER;
250
+ }
251
+ } else if (n == 3) {
252
+ switch (r) {
253
+ case IRT_LQ:
254
+ switch (n_p) {
255
+ case 3:
256
+ if (LqTer<int,IntView,IntView,IntView>::post
257
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
258
+ break;
259
+ case 2:
260
+ if (LqTer<int,IntView,IntView,MinusView>::post
261
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
262
+ break;
263
+ case 1:
264
+ if (LqTer<int,IntView,MinusView,MinusView>::post
265
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
266
+ break;
267
+ case 0:
268
+ if (LqTer<int,MinusView,MinusView,MinusView>::post
269
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
270
+ break;
271
+ default: GECODE_NEVER;
272
+ }
273
+ break;
274
+ case IRT_EQ:
275
+ switch (n_p) {
276
+ case 3:
277
+ if (EqTer<int,IntView,IntView,IntView>::post
278
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
279
+ break;
280
+ case 2:
281
+ if (EqTer<int,IntView,IntView,MinusView>::post
282
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
283
+ break;
284
+ case 1:
285
+ if (EqTer<int,IntView,IntView,MinusView>::post
286
+ (home,e[1].x,e[2].x,e[0].x,-c) == ES_FAILED) home->fail();
287
+ break;
288
+ case 0:
289
+ if (EqTer<int,IntView,IntView,IntView>::post
290
+ (home,e[0].x,e[1].x,e[2].x,-c) == ES_FAILED) home->fail();
291
+ break;
292
+ default: GECODE_NEVER;
293
+ }
294
+ break;
295
+ case IRT_NQ:
296
+ switch (n_p) {
297
+ case 3:
298
+ if (NqTer<int,IntView,IntView,IntView>::post
299
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
300
+ break;
301
+ case 2:
302
+ if (NqTer<int,IntView,IntView,MinusView>::post
303
+ (home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
304
+ break;
305
+ case 1:
306
+ if (NqTer<int,IntView,IntView,MinusView>::post
307
+ (home,e[1].x,e[2].x,e[0].x,-c) == ES_FAILED) home->fail();
308
+ break;
309
+ case 0:
310
+ if (NqTer<int,IntView,IntView,IntView>::post
311
+ (home,e[0].x,e[1].x,e[2].x,-c) == ES_FAILED) home->fail();
312
+ break;
313
+ default: GECODE_NEVER;
314
+ }
315
+ break;
316
+ default: GECODE_NEVER;
317
+ }
318
+ } else {
319
+ ViewArray<IntView> x(home,n_p);
320
+ for (int i = n_p; i--; ) x[i] = e[i].x;
321
+ ViewArray<IntView> y(home,n_n);
322
+ for (int i = n_n; i--; ) y[i] = e[i+n_p].x;
323
+ post_nary<int,IntView>(home,x,y,r,c);
324
+ }
325
+ } else {
326
+ if (is_ip) {
327
+ ViewArray<IntScaleView> x(home,n_p);
328
+ for (int i = n_p; i--; )
329
+ x[i].init(e[i].a,e[i].x);
330
+ ViewArray<IntScaleView> y(home,n_n);
331
+ for (int i = n_n; i--; )
332
+ y[i].init(-e[i+n_p].a,e[i+n_p].x);
333
+ if ((icl == ICL_DOM) && (r == IRT_EQ)) {
334
+ if (DomEq<int,IntScaleView>::post(home,x,y,c) == ES_FAILED)
335
+ home->fail();
336
+ } else {
337
+ post_nary<int,IntScaleView>(home,x,y,r,c);
338
+ }
339
+ } else {
340
+ ViewArray<DoubleScaleView> x(home,n_p);
341
+ for (int i = n_p; i--; )
342
+ x[i].init(e[i].a,e[i].x);
343
+ ViewArray<DoubleScaleView> y(home,n_n);
344
+ for (int i = n_n; i--; )
345
+ y[i].init(-e[i+n_p].a,e[i+n_p].x);
346
+ if ((icl == ICL_DOM) && (r == IRT_EQ)) {
347
+ if (DomEq<double,DoubleScaleView>::post(home,x,y,c) == ES_FAILED)
348
+ home->fail();
349
+ } else {
350
+ post_nary<double,DoubleScaleView>(home,x,y,r,c);
351
+ }
352
+ }
353
+ }
354
+ }
355
+
356
+
357
+
358
+ /*
359
+ * Posting reified propagators
360
+ *
361
+ */
362
+
363
+ template <class Val, class View>
364
+ forceinline void
365
+ post_nary(Space* home,
366
+ ViewArray<View>& x, ViewArray<View>& y, IntRelType r, Val c, BoolView b) {
367
+ switch (r) {
368
+ case IRT_LQ:
369
+ if (ReLq<Val,View,View>::post(home,x,y,c,b) == ES_FAILED)
370
+ home->fail();
371
+ break;
372
+ case IRT_EQ:
373
+ if (ReEq<Val,View,View,BoolView>::post(home,x,y,c,b) == ES_FAILED)
374
+ home->fail();
375
+ break;
376
+ case IRT_NQ:
377
+ {
378
+ NegBoolView n(b);
379
+ if (ReEq<Val,View,View,NegBoolView>::post(home,x,y,c,n) == ES_FAILED)
380
+ home->fail();
381
+ }
382
+ break;
383
+ default: GECODE_NEVER;
384
+ }
385
+ }
386
+
387
+ void
388
+ post(Space* home,
389
+ Term e[], int n, IntRelType r, int c, BoolView b) {
390
+ int n_p, n_n;
391
+ bool is_unit = preprocess(e,n,r,c,n_p,n_n);
392
+ if (n == 0) {
393
+ bool fail = false;
394
+ switch (r) {
395
+ case IRT_EQ: fail = (c != 0); break;
396
+ case IRT_NQ: fail = (c == 0); break;
397
+ case IRT_LQ: fail = (0 > c); break;
398
+ default: GECODE_NEVER;
399
+ }
400
+ if ((fail ? b.t_zero(home) : b.t_one(home)) == ME_INT_FAILED)
401
+ home->fail();
402
+ return;
403
+ }
404
+ bool is_ip = int_precision(e,n,c);
405
+ if (is_unit && is_ip) {
406
+ if (n == 1) {
407
+ switch (r) {
408
+ case IRT_EQ:
409
+ if (e[0].a == 1) {
410
+ if (Rel::ReEqBndInt<IntView,BoolView>::post(home,e[0].x,c,b)
411
+ == ES_FAILED)
412
+ home->fail();
413
+ } else {
414
+ if (Rel::ReEqBndInt<IntView,BoolView>::post(home,e[0].x,-c,b)
415
+ == ES_FAILED)
416
+ home->fail();
417
+ }
418
+ break;
419
+ case IRT_NQ:
420
+ {
421
+ NegBoolView n(b);
422
+ if (e[0].a == 1) {
423
+ if (Rel::ReEqBndInt<IntView,NegBoolView>::post(home,e[0].x,c,n)
424
+ == ES_FAILED)
425
+ home->fail();
426
+ } else {
427
+ if (Rel::ReEqBndInt<IntView,NegBoolView>::post(home,e[0].x,-c,n)
428
+ == ES_FAILED)
429
+ home->fail();
430
+ }
431
+ }
432
+ break;
433
+ case IRT_LQ:
434
+ if (e[0].a == 1) {
435
+ if (Rel::ReLqInt<IntView,BoolView>::post(home,e[0].x,c,b)
436
+ == ES_FAILED)
437
+ home->fail();
438
+ } else {
439
+ NegBoolView n(b);
440
+ if (Rel::ReLqInt<IntView,NegBoolView>::post(home,e[0].x,-c-1,n)
441
+ == ES_FAILED)
442
+ home->fail();
443
+ }
444
+ break;
445
+ default: GECODE_NEVER;
446
+ }
447
+ } else if (n == 2) {
448
+ switch (r) {
449
+ case IRT_LQ:
450
+ switch (n_p) {
451
+ case 2:
452
+ if (ReLqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c,b)
453
+ == ES_FAILED) home->fail();
454
+ break;
455
+ case 1:
456
+ if (ReLqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c,b)
457
+ == ES_FAILED) home->fail();
458
+ break;
459
+ case 0:
460
+ if (ReLqBin<int,MinusView,MinusView>::post(home,e[0].x,e[1].x,c,b)
461
+ == ES_FAILED) home->fail();
462
+ break;
463
+ default: GECODE_NEVER;
464
+ }
465
+ break;
466
+ case IRT_EQ:
467
+ switch (n_p) {
468
+ case 2:
469
+ if (ReEqBin<int,IntView,IntView,BoolView>::post
470
+ (home,e[0].x,e[1].x,c,b)
471
+ == ES_FAILED) home->fail();
472
+ break;
473
+ case 1:
474
+ if (ReEqBin<int,IntView,MinusView,BoolView>::post
475
+ (home,e[0].x,e[1].x,c,b)
476
+ == ES_FAILED) home->fail();
477
+ break;
478
+ case 0:
479
+ if (ReEqBin<int,IntView,IntView,BoolView>::post
480
+ (home,e[0].x,e[1].x,-c,b)
481
+ == ES_FAILED) home->fail();
482
+ break;
483
+ default: GECODE_NEVER;
484
+ }
485
+ break;
486
+ case IRT_NQ:
487
+ {
488
+ NegBoolView n(b);
489
+ switch (n_p) {
490
+ case 2:
491
+ if (ReEqBin<int,IntView,IntView,NegBoolView>::post
492
+ (home,e[0].x,e[1].x,c,n)
493
+ == ES_FAILED) home->fail();
494
+ break;
495
+ case 1:
496
+ if (ReEqBin<int,IntView,MinusView,NegBoolView>::post
497
+ (home,e[0].x,e[1].x,c,b)
498
+ == ES_FAILED) home->fail();
499
+ break;
500
+ case 0:
501
+ if (ReEqBin<int,IntView,IntView,NegBoolView>::post
502
+ (home,e[0].x,e[1].x,-c,b)
503
+ == ES_FAILED) home->fail();
504
+ break;
505
+ default: GECODE_NEVER;
506
+ }
507
+ }
508
+ break;
509
+ default: GECODE_NEVER;
510
+ }
511
+ } else {
512
+ ViewArray<IntView> x(home,n_p);
513
+ for (int i = n_p; i--; ) x[i] = e[i].x;
514
+ ViewArray<IntView> y(home,n_n);
515
+ for (int i = n_n; i--; ) y[i] = e[i+n_p].x;
516
+ post_nary<int,IntView>(home,x,y,r,c,b);
517
+ }
518
+ } else {
519
+ if (is_ip) {
520
+ ViewArray<IntScaleView> x(home,n_p);
521
+ for (int i = n_p; i--; )
522
+ x[i].init(e[i].a,e[i].x);
523
+ ViewArray<IntScaleView> y(home,n_n);
524
+ for (int i = n_n; i--; )
525
+ y[i].init(-e[i+n_p].a,e[i+n_p].x);
526
+ post_nary<int,IntScaleView>(home,x,y,r,c,b);
527
+ } else {
528
+ ViewArray<DoubleScaleView> x(home,n_p);
529
+ for (int i = n_p; i--; )
530
+ x[i].init(e[i].a,e[i].x);
531
+ ViewArray<DoubleScaleView> y(home,n_n);
532
+ for (int i = n_n; i--; )
533
+ y[i].init(-e[i+n_p].a,e[i+n_p].x);
534
+ post_nary<double,DoubleScaleView>(home,x,y,r,c,b);
535
+ }
536
+ }
537
+ }
538
+
539
+ }}}
540
+
541
+ // STATISTICS: int-post
542
+