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,69 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:07:12 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3518 $
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 "test/int.hh"
23
+
24
+ static const int d1r[4][2] = {
25
+ {-4,-3},{-1,-1},{1,1},{3,5}
26
+ };
27
+ static IntSet d1(d1r,4);
28
+
29
+ static IntSet ds_66(-6,6);
30
+
31
+ class DomRange : public IntTest {
32
+ public:
33
+ DomRange(const char* t)
34
+ : IntTest(t,1,ds_66,true) {}
35
+ virtual bool solution(const Assignment& x) const {
36
+ return (x[0] >= -2) && (x[0] <= 2);
37
+ }
38
+ virtual void post(Space* home, IntVarArray& x) {
39
+ Gecode::dom(home, x[0], -2, 2);
40
+ }
41
+ virtual void post(Space* home, IntVarArray& x, BoolVar b) {
42
+ Gecode::dom(home, x[0], -2, 2, b);
43
+ }
44
+ };
45
+ DomRange _domrange("Dom::Range");
46
+
47
+
48
+ class DomDom : public IntTest {
49
+ public:
50
+ DomDom(const char* t)
51
+ : IntTest(t,1,ds_66,true) {}
52
+ virtual bool solution(const Assignment& x) const {
53
+ return
54
+ (((x[0] >= -4) && (x[0] <= -3)) ||
55
+ ((x[0] >= -1) && (x[0] <= -1)) ||
56
+ ((x[0] >= 1) && (x[0] <= 1)) ||
57
+ ((x[0] >= 3) && (x[0] <= 5)));
58
+ }
59
+ virtual void post(Space* home, IntVarArray& x) {
60
+ Gecode::dom(home, x[0], d1);
61
+ }
62
+ virtual void post(Space* home, IntVarArray& x, BoolVar b) {
63
+ Gecode::dom(home, x[0], d1, b);
64
+ }
65
+ };
66
+ DomDom _domdom("Dom::Dom");
67
+
68
+ // STATISTICS: test-int
69
+
@@ -0,0 +1,132 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:07:12 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3518 $
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 "test/int.hh"
23
+ #include "test/log.hh"
24
+
25
+ class ElementInt : public IntTest {
26
+ private:
27
+ const int* c;
28
+ const int n;
29
+ public:
30
+ ElementInt(const char* t, const IntSet& is, const int* c0, int n0)
31
+ : IntTest(t,2,is), c(c0), n(n0) {}
32
+ virtual bool solution(const Assignment& x) const {
33
+ return (x[0]>= 0) && (x[0]<n) && c[x[0]]==x[1];
34
+ }
35
+ virtual void post(Space* home, IntVarArray& x) {
36
+ IntArgs ia(n,c);
37
+ element(home, ia, x[0], x[1]);
38
+ }
39
+ };
40
+ static IntSet is1(-4,8);
41
+ static const int c1[5] = {-1,1,-3,3,-4};
42
+ static ElementInt _elinta("Element::Int::A",is1,&c1[0],5);
43
+ static IntSet is2(-4,8);
44
+ static const int c2[8] = {-1,1,-1,1,-1,1,0,0};
45
+ static ElementInt _elintb("Element::Int::B",is2,&c2[0],8);
46
+ static IntSet is3(-4,8);
47
+ static const int c3[1] = {-1};
48
+ static ElementInt _elintc("Element::Int::C",is3,&c3[0],1);
49
+
50
+ class ElementShareInt : public IntTest {
51
+ private:
52
+ const int* c;
53
+ const int n;
54
+ public:
55
+ ElementShareInt(const char* t, const IntSet& is, const int* c0, int n0)
56
+ : IntTest(t,1,is), c(c0), n(n0) {}
57
+ virtual bool solution(const Assignment& x) const {
58
+ return (x[0]>= 0) && (x[0]<n) && c[x[0]]==x[0];
59
+ }
60
+ virtual void post(Space* home, IntVarArray& x) {
61
+ IntArgs ia(n,c);
62
+ element(home, ia, x[0], x[0]);
63
+ }
64
+ };
65
+
66
+ static IntSet is4(-4,8);
67
+ static const int c4[7] = {0,-1,2,-2,4,-3,6};
68
+ static ElementShareInt _elintd("Element::Int::D",is3,&c4[0],7);
69
+
70
+ class ElementVar : public IntTest {
71
+ private:
72
+ const int n;
73
+ public:
74
+ ElementVar(const char* t, const IntSet& is, int n0, IntConLevel icl)
75
+ : IntTest(t,n0+2,is,false,icl), n(n0) {}
76
+ virtual bool solution(const Assignment& x) const {
77
+ return (x[0]>= 0) && (x[0]<n) && x[2+x[0]]==x[1];
78
+ }
79
+ virtual void post(Space* home, IntVarArray& x) {
80
+ Log::log("", icl == ICL_BND
81
+ ? "\tIntConLevel icl = ICL_BND;"
82
+ : "\tIntConLevel icl = ICL_DOM;");
83
+ Log::log("post element",
84
+ "\tint n = x.size()-2;\n"
85
+ "\tIntVarArgs ia(n);\n"
86
+ "\tfor (int i=0;i<n;i++)\n"
87
+ "\t ia[i]=x[2+i];\n"
88
+ "\telement(this, ia, x[0], x[1], icl);");
89
+ IntVarArgs ia(n);
90
+ for (int i=0;i<n;i++)
91
+ ia[i]=x[2+i];
92
+ element(home, ia, x[0], x[1], icl);
93
+ }
94
+ };
95
+
96
+ class ElementShareVar : public IntTest {
97
+ private:
98
+ const int n;
99
+ IntConLevel icl;
100
+ public:
101
+ // This is actually not domain consistent!
102
+ ElementShareVar(const char* t, const IntSet& is, int n0, IntConLevel icl0)
103
+ : IntTest(t,n0+1,is,false), n(n0), icl(icl0) {}
104
+ virtual bool solution(const Assignment& x) const {
105
+ return (x[0]>= 0) && (x[0]<n) && x[1+x[0]]==x[0];
106
+ }
107
+ virtual void post(Space* home, IntVarArray& x) {
108
+ Log::log("", icl == ICL_BND
109
+ ? "\tIntConLevel icl = ICL_BND;"
110
+ : "\tIntConLevel icl = ICL_DOM;");
111
+ Log::log("post element",
112
+ "\tint n = x.size()-1;\n"
113
+ "\tIntVarArgs ia(n);\n"
114
+ "\tfor (int i=0;i<n;i++)\n"
115
+ "\t ia[i]=x[1+i];\n"
116
+ "\telement(this, ia, x[0], x[0], icl);");
117
+ IntVarArgs ia(n);
118
+ for (int i=0;i<n;i++)
119
+ ia[i]=x[1+i];
120
+ element(home, ia, x[0], x[0], icl);
121
+ }
122
+ };
123
+ static IntSet iv1(-1,3);
124
+ static ElementVar _elvarbnda("Element::Var::Bnd::A",iv1,3,ICL_BND);
125
+ static ElementVar _elvardoma("Element::Var::Dom::A",iv1,3,ICL_DOM);
126
+ static ElementShareVar _elsvarbnda("Element::Var::Bnd::B",iv1,3,ICL_BND);
127
+ static ElementShareVar _elsvardoma("Element::Var::Dom::B",iv1,3,ICL_DOM);
128
+
129
+
130
+
131
+ // STATISTICS: test-int
132
+
@@ -0,0 +1,592 @@
1
+ /*
2
+ * Main authors:
3
+ * Patrick Pekczynski <pekczynski@ps.uni-sb.de>
4
+ *
5
+ * Copyright:
6
+ * Patrick Pekczynski, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:07:12 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3518 $
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 "test/int.hh"
23
+ #include "test/log.hh"
24
+ #include "gecode/int/gcc.hh"
25
+
26
+ static IntSet ds_02(0,2);
27
+ static IntSet ds_03(0,3);
28
+ static IntSet ds_04(0,4);
29
+ static IntSet ds_12(1,2);
30
+ static IntSet ds_14(1,4);
31
+ static IntSet ds_18(1,8);
32
+
33
+ class GCCAssignment : public Assignment {
34
+ int problow;
35
+ int probup;
36
+ int cardlow;
37
+ int cardup;
38
+ int xsize;
39
+ public:
40
+ GCCAssignment(int xlow, int xup,
41
+ int clow, int cup,
42
+ int xs,
43
+ int n0, const IntSet& d0)
44
+ : Assignment(n0, d0),
45
+ problow(xlow), probup(xup),
46
+ cardlow(clow), cardup(cup),
47
+ xsize(xs) {
48
+ reset();
49
+ }
50
+
51
+ void reset(void) {
52
+ done = false;
53
+ IntSet card_dom(cardlow, cardup);
54
+ IntSet var_dom(problow, probup);
55
+ for (int i = xsize; i < n; i++) {
56
+ dsv[i].init(card_dom);
57
+ }
58
+ for (int i = 0; i < xsize; i++ )
59
+ dsv[i].init(var_dom);
60
+ }
61
+ void operator++(void) {
62
+ IntSet card_dom(cardlow, cardup);
63
+ IntSet var_dom(problow, probup);
64
+ int i = n-1;
65
+ while (true) {
66
+ ++dsv[i];
67
+ if (dsv[i]())
68
+ return;
69
+ if (i >= xsize && i < n) {
70
+ dsv[i].init(card_dom);
71
+ } else {
72
+ dsv[i].init(var_dom);
73
+ }
74
+ --i;
75
+ if (i<0) {
76
+ done = true;
77
+ return;
78
+ }
79
+ }
80
+ }
81
+ };
82
+
83
+
84
+ class GCC_FC_AllLbUb : public IntTest {
85
+ public:
86
+ GCC_FC_AllLbUb(const char* t, IntConLevel icl)
87
+ : IntTest(t, 4, ds_14, false, icl) {}
88
+ virtual bool solution(const Assignment& x) const {
89
+ int n[4];
90
+ for (int i=4; i--; )
91
+ n[i] = 0;
92
+ for (int i=x.size(); i--; )
93
+ n[x[i] - 1]++;
94
+ for (int i=4; i--;)
95
+ if (n[i] > 2)
96
+ return false;
97
+ return true;
98
+ }
99
+ virtual void post(Space* home, IntVarArray& x) {
100
+ gcc(home, x, 0, 2, icl);
101
+ }
102
+ };
103
+
104
+ class GCC_FC_AllTriple : public IntTest {
105
+ public:
106
+ GCC_FC_AllTriple(const char* t, IntConLevel icl)
107
+ : IntTest(t, 4, ds_14, false, icl) {}
108
+ virtual bool solution(const Assignment& x) const {
109
+ int n[4];
110
+ for (int i=4; i--; )
111
+ n[i] = 0;
112
+ for (int i=x.size(); i--; )
113
+ n[x[i] - 1]++;
114
+ for (int i=4; i--;)
115
+ if (n[i] > 2)
116
+ return false;
117
+ return true;
118
+ }
119
+ virtual void post(Space* home, IntVarArray& x) {
120
+ IntArgs card(12, 1,0,2, 2,0,2, 3,0,2, 4,0,2);
121
+ gcc(home, x, card, 12, 2, true, 1, 4, icl);
122
+ }
123
+ };
124
+
125
+ class GCC_FC_SomeTriple : public IntTest {
126
+ public:
127
+ GCC_FC_SomeTriple(const char* t, IntConLevel icl)
128
+ : IntTest(t, 4, ds_14, false, icl) {}
129
+ virtual bool solution(const Assignment& x) const {
130
+ int n[4];
131
+ for (int i=4; i--; )
132
+ n[i] = 0;
133
+ for (int i=x.size(); i--; )
134
+ n[x[i] - 1]++;
135
+ if (n[0] < 2 || n[1] < 2 ||
136
+ n[2] > 0 || n[3] > 0)
137
+ return false;
138
+ return true;
139
+ }
140
+ virtual void post(Space* home, IntVarArray& x) {
141
+ IntArgs card(6, 1,0,2, 2,0,2);
142
+ gcc(home, x, card, 6, 0, false, 1, 4, icl);
143
+ }
144
+ };
145
+
146
+ class GCC_FC_AllEqUb : public IntTest {
147
+ public:
148
+ GCC_FC_AllEqUb(const char* t, IntConLevel icl)
149
+ : IntTest(t, 4, ds_12, false, icl) {}
150
+ virtual bool solution(const Assignment& x) const {
151
+ int n[2];
152
+ for (int i=2; i--; )
153
+ n[i] = 0;
154
+ for (int i=x.size(); i--; )
155
+ n[x[i] - 1]++;
156
+ if (n[0] != 2 || n[1] != 2)
157
+ return false;
158
+ return true;
159
+ }
160
+ virtual void post(Space* home, IntVarArray& x) {
161
+ gcc(home, x, 2, icl);
162
+ }
163
+ };
164
+
165
+
166
+ class GCC_FC_Shared_AllLbUb : public IntTest {
167
+ public:
168
+ GCC_FC_Shared_AllLbUb(const char* t, IntConLevel icl)
169
+ : IntTest(t,2,ds_14,false, icl) {}
170
+ virtual bool solution(const Assignment& x) const {
171
+ if (x[0] != x[1]) {
172
+ return true;
173
+ } else {
174
+ return false;
175
+ }
176
+ }
177
+ virtual void post(Space* home, IntVarArray& x) {
178
+ IntVarArgs y(6);
179
+ for (int i = 0; i < 6; i++) {
180
+ if (i < 3) {
181
+ y[i] = x[0];
182
+ } else {
183
+ y[i] = x[1];
184
+ }
185
+ }
186
+ gcc(home, y, 0, 3, icl);
187
+ }
188
+ };
189
+
190
+ class GCC_FC_Shared_SomeTrip : public IntTest {
191
+ public:
192
+ GCC_FC_Shared_SomeTrip(const char* t, IntConLevel icl)
193
+ : IntTest(t,1,ds_14,false,icl) {}
194
+ virtual bool solution(const Assignment& x) const {
195
+ if (x[0] == 1) {
196
+ return true;
197
+ } else {
198
+ return false;
199
+ }
200
+ }
201
+ virtual void post(Space* home, IntVarArray& x) {
202
+ IntArgs c(3, 1,4,4);
203
+
204
+ IntVarArgs y(4);
205
+ for (int i = 0; i < 4; i++) {
206
+ y[i] = x[0];
207
+ }
208
+ gcc(home, y, c, 3, 0, false, 1, 4, icl);
209
+ }
210
+ };
211
+
212
+
213
+ class GCC_VC_AllLbUb : public IntTest {
214
+ private:
215
+ static const int lb = 0;
216
+ static const int rb = 2;
217
+
218
+ static const int xs = 7;
219
+ static const int ve = 4;
220
+
221
+ static const int minocc = 0;
222
+ static const int maxocc = 2;
223
+
224
+
225
+ Assignment* make_assignment() {
226
+ return new GCCAssignment(lb, rb, minocc, maxocc, ve, xs, dom);
227
+ }
228
+
229
+
230
+ public:
231
+ GCC_VC_AllLbUb(const char* t, IntConLevel icl)
232
+ : IntTest(t, xs, ds_02, false,icl) {}
233
+ virtual bool solution(const Assignment& x) const {
234
+ // std::cout << "GCC-Sol: ";
235
+ // for (int i = 0; i < xs; i++) {
236
+ // if (i == ve) std::cout << "||";
237
+ // std::cout << x[i] << " ";
238
+ // }
239
+ // std::cout << "...";
240
+
241
+ for (int i = 0; i < ve; i++) {
242
+ if ( x[i] < lb || x[i] > rb) {
243
+ // std::cout << "wrong bounds\n";
244
+ return false;
245
+ }
246
+ }
247
+
248
+ GECODE_AUTOARRAY(int, count, xs - ve);
249
+ for (int i = ve; i < xs; i++) {
250
+ count[i - ve] = 0;
251
+ if (x[i] < minocc || x[i] > maxocc) {
252
+ // std::cout << "min-max-occ\n";
253
+ return false;
254
+ }
255
+ }
256
+
257
+ for (int i = 0; i < ve; i++) {
258
+ count[x[i]]++;
259
+ }
260
+
261
+ for (int i = 0; i < xs - ve; i++) {
262
+ if (count[i] != x[i + ve]) {
263
+ // std::cout << "counting failed\n";
264
+ return false;
265
+ }
266
+ }
267
+
268
+ // std::cout << "valid\n";
269
+ return true;
270
+ }
271
+
272
+ virtual void post(Space* home, IntVarArray& x) {
273
+ // std::cout << "test_post\n";
274
+
275
+ // get the number of used values
276
+ GECODE_AUTOARRAY(bool, done, xs - ve);
277
+ for (int i = 0; i < xs - ve; i++) {
278
+ done[i] = false;
279
+ }
280
+
281
+ // int nov = 0;
282
+ // for (int i = 0; i < xs - ve; i++) {
283
+ // for (int j = 0; j < ve; j++) {
284
+ // if (x[j].in(i) && !done[i]) {
285
+ // nov++;
286
+ // done[i] = true;
287
+ // }
288
+ // }
289
+ // }
290
+
291
+ // std::cout << "nov = "<<nov<<"\n";
292
+ // for (int i = ve; i < ve + nov; i++) {
293
+ IntVarArgs y(xs - ve);
294
+ for (int i = ve; i < xs; i++) {
295
+ y[i - ve] = x[i];
296
+ // rel(home, y[i - ve], IRT_LQ, maxocc);
297
+ // rel(home, y[i - ve], IRT_GQ, minocc);
298
+ }
299
+
300
+ IntVarArgs z(ve);
301
+ for (int i = 0; i < ve; i++) {
302
+ // std::cout << x[i] << " ";
303
+ z[i] = x[i];
304
+ }
305
+ // std::cout <<"\n";
306
+ // gcc(home, z, c, 12, 2, icl);
307
+ gcc(home, z, y, 0, 2, icl);
308
+ }
309
+ };
310
+
311
+
312
+ class GCC_VC_AllTriple : public IntTest {
313
+ private:
314
+ static const int lb = 0;
315
+ static const int rb = 2;
316
+
317
+ static const int xs = 7;
318
+ static const int ve = 4;
319
+
320
+ static const int minocc = 0;
321
+ static const int maxocc = 2;
322
+
323
+ Assignment* make_assignment() {
324
+ return new GCCAssignment(lb, rb, minocc, maxocc, ve, xs, dom);
325
+ }
326
+
327
+
328
+ public:
329
+ GCC_VC_AllTriple(const char* t, IntConLevel icl)
330
+ : IntTest(t, xs, ds_02, false,icl) {}
331
+ virtual bool solution(const Assignment& x) const {
332
+ // std::cout << "GCC-Sol: ";
333
+ // for (int i = 0; i < xs; i++) {
334
+ // if (i == ve) std::cout << "||";
335
+ // std::cout << x[i] << " ";
336
+ // }
337
+ // std::cout << "\n";
338
+
339
+ for (int i = 0; i < ve; i++) {
340
+ if ( x[i] < lb || x[i] > rb) {
341
+ // std::cout << "wrong bounds\n";
342
+ return false;
343
+ }
344
+ }
345
+
346
+ GECODE_AUTOARRAY(int, count, xs - ve);
347
+ for (int i = ve; i < xs; i++) {
348
+ count[i - ve] = 0;
349
+ if (x[i] < minocc || x[i] > maxocc) {
350
+ // std::cout << "min-max-occ\n";
351
+ return false;
352
+ }
353
+ }
354
+
355
+ for (int i = 0; i < ve; i++) {
356
+ count[x[i]]++;
357
+ }
358
+
359
+ // std::cout << "count: ";
360
+ for (int i = 0; i < xs - ve; i++) {
361
+ // std::cout << count[i] << " ";
362
+ }
363
+ // std::cout << "\n";
364
+
365
+ for (int i = 0; i < xs - ve; i++) {
366
+ // std::cout << "comp: "<< count[i] <<" & "<<x[i + ve] << "\n";
367
+ if (count[i] != x[i + ve]) {
368
+ // std::cout << "count not met\n";
369
+ return false;
370
+ }
371
+ }
372
+
373
+ // std::cout << "valid\n";
374
+ return true;
375
+ }
376
+
377
+ virtual void post(Space* home, IntVarArray& x) {
378
+ // std::cout << "test_post\n";
379
+
380
+ // get the number of used values
381
+ GECODE_AUTOARRAY(bool, done, xs - ve);
382
+ for (int i = 0; i < xs - ve; i++) {
383
+ done[i] = false;
384
+ }
385
+
386
+ IntVarArgs y(xs - ve);
387
+ for (int i = ve; i < xs; i++) {
388
+ y[i - ve] = x[i];
389
+ rel(home, y[i - ve], IRT_LQ, maxocc);
390
+ rel(home, y[i - ve], IRT_GQ, minocc);
391
+ }
392
+
393
+ IntVarArgs z(ve);
394
+ for (int i = 0; i < ve; i++) {
395
+ z[i] = x[i];
396
+ }
397
+
398
+ IntArgs value(3, 0, 1, 2);
399
+ // std::cout <<"\n";
400
+ // gcc(home, z, c, 12, 2, icl);
401
+ gcc(home, z, value, y, 3, 2, true, 0,2, icl);
402
+ }
403
+ };
404
+
405
+
406
+ class GCC_VC_SomeTriple : public IntTest {
407
+ private:
408
+ static const int lb = 0;
409
+ static const int rb = 2;
410
+
411
+ static const int xs = 6;
412
+ static const int ve = 4;
413
+
414
+ static const int minocc = 0;
415
+ static const int maxocc = 2;
416
+
417
+ Assignment* make_assignment() {
418
+ return new GCCAssignment(lb, rb, minocc, maxocc, ve, xs, dom);
419
+ }
420
+
421
+ public:
422
+ GCC_VC_SomeTriple(const char* t, IntConLevel icl)
423
+ : IntTest(t, xs, ds_02, false,icl) {}
424
+ virtual bool solution(const Assignment& x) const {
425
+ // std::cout << "GCC-Sol: ";
426
+ // for (int i = 0; i < xs; i++) {
427
+ // if (i == ve) std::cout << "||";
428
+ // std::cout << x[i] << " ";
429
+ // }
430
+ // std::cout << "\n";
431
+
432
+ for (int i = 0; i < ve; i++) {
433
+ if ( x[i] < lb || x[i] > rb) {
434
+ // std::cout << "wrong bounds\n";
435
+ return false;
436
+ }
437
+ }
438
+
439
+ GECODE_AUTOARRAY(int, count, xs - ve);
440
+ for (int i = ve; i < xs; i++) {
441
+ count[i - ve] = 0;
442
+ if (x[i] < minocc || x[i] > maxocc) {
443
+ // std::cout << "min-max-occ\n";
444
+ return false;
445
+ }
446
+ }
447
+
448
+ for (int i = 0; i < ve; i++) {
449
+ if (x[i] == 0) {
450
+ count[0]++;
451
+ }
452
+ if (x[i] == 1) {
453
+ count[1]++;
454
+ }
455
+ }
456
+
457
+ for (int i = 0; i < ve; i++) {
458
+ if (x[i] == 2) {
459
+ // std::cout << "2 not allowed!\n";
460
+ return false;
461
+ }
462
+ }
463
+ // std::cout << "\n";
464
+
465
+ for (int i = 0; i < xs - ve; i++) {
466
+ // std::cout << "comp: "<< count[i] <<" & "<<x[i + ve] << "\n";
467
+ if (count[i] != x[i + ve]) {
468
+ // std::cout << "count not met\n";
469
+ return false;
470
+ }
471
+ }
472
+
473
+ // std::cout << "valid\n";
474
+ return true;
475
+ }
476
+
477
+ virtual void post(Space* home, IntVarArray& x) {
478
+
479
+ IntVarArgs y(xs - ve);
480
+ for (int i = ve; i < xs; i++) {
481
+ y[i - ve] = x[i];
482
+ rel(home, y[i - ve], IRT_LQ, maxocc);
483
+ rel(home, y[i - ve], IRT_GQ, minocc);
484
+ }
485
+
486
+ IntVarArgs z(ve);
487
+ for (int i = 0; i < ve; i++) {
488
+ z[i] = x[i];
489
+ }
490
+
491
+ IntArgs value(2, 0, 1);
492
+ gcc(home, z, value, y, 2, 0, false, 0,2, icl);
493
+ }
494
+ };
495
+
496
+
497
+ class GCC_VC_Shared_SomeTriple : public IntTest {
498
+ public:
499
+ GCC_VC_Shared_SomeTriple(const char* t, IntConLevel icl)
500
+ : IntTest(t,3,ds_04,false,icl) {}
501
+ virtual bool solution(const Assignment& x) const {
502
+ if ( (x[0] != 1 && x[0] != 3) ||
503
+ (x[1] != 1 && x[1] != 3)) {
504
+ return false;
505
+ }
506
+ if (x[0] == x[1]) {
507
+ return false;
508
+ }
509
+ if (x[0] < 1 || x[1] < 1) {
510
+ return false;
511
+ }
512
+ if (x[2] != 3) {
513
+ return false;
514
+ }
515
+ return true;
516
+ }
517
+ virtual void post(Space* home, IntVarArray& x) {
518
+ IntVarArgs y(6);
519
+ for (int i = 0; i < 6; i++) {
520
+ if (i < 3) {
521
+ y[i] = x[0];
522
+ } else {
523
+ y[i] = x[1];
524
+ }
525
+ rel(home, y[i], IRT_GQ, 1);
526
+ }
527
+ IntArgs value(2, 1, 3);
528
+ IntVarArgs z(2);
529
+ z[0] = x[2];
530
+ z[1] = x[2];
531
+ rel(home, z[0], IRT_EQ, 3);
532
+ rel(home, z[1], IRT_EQ, 3);
533
+
534
+ gcc(home, y, value, z, 2, 0, false, 1, 4, icl);
535
+ }
536
+ };
537
+
538
+
539
+
540
+
541
+
542
+ // Testing with Fixed Cardinalities
543
+ // FixCard::\(\(Shared::\)*\(All\|Some\)::\([lubv,()]+\)\)::\(Bnd\|Dom\|Val\)
544
+ // VarCard::\(\(Shared::\)*\(All\|Some\)::\([lubv,()]+\)\)::\(Bnd\|Dom\|Val\)
545
+
546
+ GCC_FC_AllLbUb _gccbnd_all("GCC::FixCard::Bnd::All::(lb,ub)",ICL_BND);
547
+ GCC_FC_AllLbUb _gccdom_all("GCC::FixCard::Dom::All::(lb,ub)",ICL_DOM);
548
+ GCC_FC_AllLbUb _gccval_all("GCC::FixCard::Val::All::(lb,ub)",ICL_VAL);
549
+
550
+ GCC_FC_AllEqUb _gccbnd_alleq("GCC::FixCard::Bnd::All::ub",ICL_BND);
551
+ GCC_FC_AllEqUb _gccdom_alleq("GCC::FixCard::Dom::All::ub",ICL_DOM);
552
+ GCC_FC_AllEqUb _gccval_alleq("GCC::FixCard::Val::All::ub",ICL_VAL);
553
+
554
+ GCC_FC_AllTriple _gccbnd_alltrip("GCC::FixCard::Bnd::All::(v,lb,ub)",ICL_BND);
555
+ GCC_FC_AllTriple _gccdom_alltrip("GCC::FixCard::Dom::All::(v,lb,ub)",ICL_DOM);
556
+ GCC_FC_AllTriple _gccval_alltrip("GCC::FixCard::Val::All::(v,lb,ub)",ICL_VAL);
557
+
558
+ GCC_FC_SomeTriple _gccbnd_sometrip("GCC::FixCard::Bnd::Some::(v,lb,ub)",ICL_BND);
559
+ GCC_FC_SomeTriple _gccdom_sometrip("GCC::FixCard::Dom::Some::(v,lb,ub)",ICL_DOM);
560
+ GCC_FC_SomeTriple _gccval_sometrip("GCC::FixCard::Val::Some::(v,lb,ub)",ICL_VAL);
561
+
562
+
563
+ // GCC_FC_Shared_AllLbUb _gccbnd_shared_all("GCC::FixCard::Bnd::Shared::All::(lb,ub)",ICL_BND);
564
+ // GCC_FC_Shared_AllLbUb _gccdom_shared_all("GCC::FixCard::Dom::Shared::All::(lb,ub)",ICL_DOM);
565
+ // GCC_FC_Shared_AllLbUb _gccval_shared_all("GCC::FixCard::Val::Shared::All::(lb,ub)",ICL_VAL);
566
+
567
+ // GCC_FC_Shared_SomeTrip _gccbnd_shared_tripsome("GCC::FixCard::Bnd::Shared::Some::(v,lb,ub)",ICL_BND);
568
+ // GCC_FC_Shared_SomeTrip _gccdom_shared_tripsome("GCC::FixCard::Dom::Shared::Some::(v,lb,ub)",ICL_DOM);
569
+ // GCC_FC_Shared_SomeTrip _gccval_shared_tripsome("GCC::FixCard::Val::Shared::Some::(v,lb,ub)",ICL_VAL);
570
+
571
+ // Testing with Cardinality Variables
572
+
573
+ GCC_VC_AllLbUb _gccbnd_all_var("GCC::VarCard::Bnd::All::(lb,ub)",ICL_BND);
574
+ GCC_VC_AllLbUb _gccdom_all_var("GCC::VarCard::Dom::All::(lb,ub)",ICL_DOM);
575
+ GCC_VC_AllLbUb _gccval_all_var("GCC::VarCard::Val::All::(lb,ub)",ICL_VAL);
576
+
577
+ GCC_VC_AllTriple _gccbnd_alltrip_var("GCC::VarCard::Bnd::All::(v,lb,ub)",ICL_BND);
578
+ GCC_VC_AllTriple _gccdom_alltrip_var("GCC::VarCard::Dom::All::(v,lb,ub)",ICL_DOM);
579
+ GCC_VC_AllTriple _gccval_alltrip_var("GCC::VarCard::Val::All::(v,lb,ub)",ICL_VAL);
580
+
581
+ GCC_VC_SomeTriple _gccbnd_sometrip__var("GCC::VarCard::Bnd::Some::(v,lb,ub)",ICL_BND);
582
+ GCC_VC_SomeTriple _gccdom_sometrip__var("GCC::VarCard::Dom::Some::(v,lb,ub)",ICL_DOM);
583
+ GCC_VC_SomeTriple _gccval_sometrip__var("GCC::VarCard::Val::Some::(v,lb,ub)",ICL_VAL);
584
+
585
+ GCC_VC_Shared_SomeTriple _gccbnd_shared_sometrip_var("GCC::VarCard::Bnd::Shared::Some::(lb,ub)",ICL_BND);
586
+ GCC_VC_Shared_SomeTriple _gccdom_shared_sometrip_var("GCC::VarCard::Dom::Shared::Some::(lb,ub)", ICL_DOM);
587
+ GCC_VC_Shared_SomeTriple _gccval_shared_sometrip_var("GCC::VarCard::Val::Shared::Some::(lb,ub)", ICL_VAL);
588
+
589
+
590
+
591
+ // STATISTICS: test-int
592
+