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,2 @@
1
+ map variable
2
+ graph matching
@@ -0,0 +1,346 @@
1
+ /*
2
+ * Main authors:
3
+ * Zampelli St�phane <sz@info.ucl.ac.be>
4
+ *
5
+ * Copyright:
6
+ * Universit� catholique de Louvain, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date$
10
+ * $Revision$
11
+ *
12
+ * This file is part of CP(Map)
13
+ *
14
+ * See the file "LICENSE" for information on usage and
15
+ * redistribution of this file, and for a
16
+ * DISCLAIMER OF ALL WARRANTIES.
17
+ *
18
+ */
19
+
20
+ #include "int/count.hh" //for the count constraint
21
+ #include <iostream>
22
+ #include <map>
23
+ #include <vector>
24
+
25
+ /**
26
+ * \namespace Gecode::Map
27
+ * \brief Contains the MapVar declarations with propagator classes
28
+ *
29
+ */
30
+ //@{
31
+
32
+ //#include "constraints.hh" //Declaration of FRIEND propagator functions in Gecode namespace
33
+
34
+
35
+ namespace Gecode { namespace Map {
36
+
37
+ /**
38
+ * \defgroup TaskActorMapMEPC Map modification events and propagation conditions
39
+ * \ingroup TaskActorMap
40
+ */
41
+
42
+ //@{
43
+
44
+ /// Domain operation has resulted in failure
45
+ const ModEvent ME_MAP_FAILED = ME_GEN_FAILED;
46
+ /// Domain operation has not changed domain
47
+ const ModEvent ME_MAP_NONE = ME_GEN_NONE;
48
+ /// Domain operation has resulted in a value (assigned variable)
49
+ const ModEvent ME_MAP_VAL = ME_GEN_ASSIGNED;
50
+
51
+
52
+ /*ModEvents declaration*/
53
+
54
+ /**
55
+ * \brief Domain operation has changed the domain
56
+ *
57
+ * Note that this implies that the domain has not resulted in a value.
58
+ */
59
+ const ModEvent ME_MAP_DOM = ME_MAP_VAL + 1;
60
+ /**
61
+ * \brief Domain operation has changed the codomain
62
+ *
63
+ * Note that this implies that the domain has not resulted in a value.
64
+ */
65
+ const ModEvent ME_MAP_CODOM = ME_MAP_DOM + 1;
66
+ /**
67
+ * \brief Domain operation has changed both greatest domain and
68
+ * codomain
69
+ *
70
+ * Note that this implies that the domain has not resulted in a value.
71
+ */
72
+ const ModEvent ME_MAP_ANY = ME_MAP_CODOM + 1;
73
+
74
+ /*Propagation conditions declaration*/
75
+
76
+ /**
77
+ * \brief Propagate when a view becomes assigned (single value)
78
+ *
79
+ * If a propagator \a p depends on a view \a x with propagation
80
+ * condition PC_MAP_VAL, then \a p is propagated when a domain
81
+ * update operation on \a x returns the modification event ME_MAP_VAL.
82
+ */
83
+ const PropCond PC_MAP_VAL = PC_GEN_ASSIGNED;
84
+ /**
85
+ * \brief Propagate when the codomain changes
86
+ *
87
+ * If a propagator \a p depends on a view \a x with propagation
88
+ * condition PC_MAP_DOM, then \a p is propagated when a domain
89
+ * update operation on \a x returns the modification event ME_MAP_VAL,
90
+ * ME_MAP_DOM, ME_MAP_ANY
91
+ */
92
+ const PropCond PC_MAP_DOM = PC_MAP_VAL + 1;
93
+ /**
94
+ * \brief Propagate when the codom changes
95
+ *
96
+ * If a propagator \a p depends on a view \a x with propagation
97
+ * condition PC_MAP_CODOM, then \a p is propagated when a domain
98
+ * update operation on \a x returns the modification event ME_MAP_VAL,
99
+ * ME_MAP_CODOM, ME_MAP_ANY
100
+ */
101
+ const PropCond PC_MAP_CODOM = PC_MAP_DOM + 1;
102
+ /**
103
+ * \brief Propagate when the domain or/and the codomain changes
104
+ *
105
+ * If a propagator \a p depends on a view \a x with propagation
106
+ * condition PC_MAP_ANY, then \a p is propagated when a domain
107
+ * update operation on \a x returns any modification event but ME_MAP_FAILED
108
+ * and ME_MAP_NONE.
109
+ */
110
+ const PropCond PC_MAP_ANY = PC_MAP_CODOM + 1;
111
+ //@}
112
+ }}
113
+
114
+ namespace Gecode { namespace Map {
115
+ class MapVar;
116
+ }}
117
+
118
+ namespace Gecode {void injective(Space *home, Gecode::Map::MapVar M);}
119
+
120
+ namespace Gecode { namespace Map {
121
+
122
+ /**
123
+ * \defgroup FIMV Finite Integer Map Variable
124
+ *
125
+ * This implementation uses an Array of IntView to represent the matching, together
126
+ * with one SetView for the domain and one SetView for the codomain.
127
+ *
128
+ * Reified propagators are posted to ensure coherence between the array and the Set variables.
129
+ *
130
+ */
131
+ //@{
132
+ /**
133
+ * \brief Implementation of Finite Integer Map Variable
134
+ *
135
+ * This implementation uses an Array of IntView to represent the matching, together
136
+ * with one SetView for the domain and one SetView for the codomain.
137
+ *
138
+ * Reified propagators are posted to ensure coherence between the array and the Set variables.
139
+ *
140
+ */
141
+
142
+ class MapVar
143
+ //: public Variable<VTI_MAP,PC_MAP_ANY>
144
+ {
145
+ public:
146
+ ///Repesents the domain
147
+ Gecode::SetVar Domain;
148
+ ///Represents the codomain
149
+ Gecode::SetVar Codomain;
150
+ ///Represents the map
151
+ ViewArray<Gecode::Int::IntView> array;
152
+ ///Size of the initial domain
153
+ int maxDomSize;
154
+ ///Size of the initial codomain
155
+ int maxCodomSize;
156
+ ///Stores the empty symbol for each IntVar (alldiff)
157
+ map < int, int > *e;
158
+ ///Maps real domain values to technical \f$\{0,\ldots,n-1\}\f$ indexes
159
+ map < int,int > *index;
160
+ ///Maps indexes to real domain values
161
+ map < int,int > *indexInv;
162
+
163
+
164
+ // /// Map variable processor for modified variables
165
+ // class Processor : public VarTypeProcessor<VTI_MAP,PC_MAP_ANY> {
166
+ // public:
167
+ // /// Initialize and register
168
+ // Processor(void);
169
+ // };
170
+ // /// The processor
171
+ // GECODE_MAP_EXPORT static Processor svp;
172
+
173
+ protected:
174
+ /// Constructor for cloning \a x
175
+ MapVar(Space* home, bool share, MapVar& x);
176
+ /// Destructor
177
+ //~MapVar();
178
+ public:
179
+
180
+ /// \name Constructors and initialization
181
+ //@{
182
+ MapVar(void);
183
+
184
+ // Initialize with empty lower and full upper bound
185
+ // MapVar(Space* home);
186
+ /// Initialize with a SetView Dom representing the domain and a SetView Codom representing the codomain.
187
+ MapVar(Space* home, SetVar Dom, SetVar Codom);
188
+ //@}
189
+
190
+ /// \name Value access
191
+ //@{
192
+ /// Return current domain cardinality minimum
193
+ unsigned int cardDomainMin(void) const;
194
+ /// Return current domain cardinality maximum
195
+ unsigned int cardDomainMax(void) const;
196
+ /// Return current codomain cardinality minimum
197
+ unsigned int cardCodomainMin(void) const;
198
+ /// Return current codomain cardinality maximum
199
+ unsigned int cardCodomainMax(void) const;
200
+ /// Return the \a n -th smallest element in the domain least upper bound
201
+ int domLubMinN(int n) const;
202
+ /// Return the \a n -th largest element in the domain least upper bound
203
+ int domLubMaxN(int n) const;
204
+ /// Return the smallest element in the domain greatest lower bound
205
+ int domGlbMin() const;
206
+ /// Return the largest element in the domain least upper bound
207
+ int domGlbMax() const;
208
+ /// Return the size of the domain least upper bound
209
+ unsigned int domLubSize(void) const;
210
+ /// Return the size of the domain greatest lower bound
211
+ unsigned int domGlbSize(void) const;
212
+ /// Return the \a n -th smallest element in the codomain least upper bound
213
+ int codomLubMinN(int n) const;
214
+ /// Return the \a n -th largest element in the codomain least upper bound
215
+ int codomLubMaxN(int n) const;
216
+ /// Return the smallest element in the codomain greatest lower bound
217
+ int codomGlbMin() const;
218
+ /// Return the largest element in the codomain greatest lower bound
219
+ int codomGlbMax() const;
220
+ /// Return the smallest element in the codomain least upper bound
221
+ int codomLubMin() const;
222
+ /// Return the largest element in the codomain least upper bound
223
+ int codomLubMax() const;
224
+ /// Return the size of the codomain least upper bound
225
+ unsigned int codomLubSize(void) const;
226
+ /// Return the size of the codomain greatest lower bound
227
+ unsigned int codomGlbSize(void) const;
228
+ /// Return the number of potential images of \f$f(i)\f$
229
+ unsigned int size(int i);
230
+ /// Return \f$f(i)\f$ (only if f(i) is mapped)
231
+ int MapVar::imageAssigned(int i);
232
+ /// Return the size of the initial upper bound of dom(f)
233
+ unsigned int maxInitDomSize(void) const;
234
+ //@}
235
+
236
+ /// \name Domain tests
237
+ //@{
238
+ ///Test wether f(i) is mapped
239
+ bool mapped(int i) ;
240
+ /// Test whether variable is assigned
241
+ bool assigned(void) ;
242
+ /// Test whether \f$f(a)=b\f$
243
+ bool map(int a, int b);
244
+ ///Test wether \f$ b \in f(a)\g$
245
+ bool imageIn(int a, int b);
246
+ ///Test wether \f$b \notin f(a)\f$
247
+ bool imageOut(int a, int b);
248
+ ///Test wether \a a has no image i.e. \f$ a \notin Dom(f)\f$
249
+ bool noImage(int a);
250
+ //
251
+ ///Test wether \a f is in least upper bound
252
+ //bool knownOut(map<int,int> f);
253
+ ///Test wether\a f is in grestest lower bound
254
+ //bool knownIn(map<int,int> f);
255
+ //@}
256
+
257
+
258
+ private:
259
+ /// Test whether glb is a subset of lub
260
+ //bool boundsConsistent(void) const;
261
+ public:
262
+
263
+ /// \name Domain update by value
264
+ //@{
265
+
266
+ /// Include \a n in domain
267
+ ModEvent includeDom(Space *home, int n);
268
+ /// Exclude \a n from domain
269
+ ModEvent excludeDom(Space *home, int n);
270
+ /// Include \a n in codomain
271
+ ModEvent includeCodom(Space *home, int n);
272
+ /// Exclude \a n from codomain
273
+ ModEvent excludeCodom(Space *home, int n);
274
+
275
+ /// Restrict domain cardinality to be at least n
276
+ ModEvent cardDomMin(Space *home, unsigned int n);
277
+ /// Restrict domain cardinality to be at most n
278
+ ModEvent cardDomMax(Space *home, unsigned int n);
279
+ /// Restrict codomain cardinality to be at least n
280
+ ModEvent cardCodomMin(Space *home, unsigned int n);
281
+ /// Restrict codomain cardinality to be at most n
282
+ ModEvent cardCodomMax(Space *home, unsigned int n);
283
+
284
+ /// f(i)=j
285
+ ModEvent map(Space *home, int i, int j);
286
+ /// f(i)\=j
287
+ ModEvent nomap(Space *home, int i, int j);
288
+ ExecStatus nomapB(Space *home, int i, int j);
289
+ //@}
290
+
291
+ /// \name Domain update by range iterator
292
+ //@{
293
+ /// Include set described by \a i in the greatest lower bound
294
+ //template <class I> ModEvent includeI(Space* home,I& i);
295
+ /// Exclude set described by \a i from the least upper bound
296
+ //template <class I> ModEvent excludeI(Space* home,I& i);
297
+ /// Exclude everything but set described by \a i from the least upper bound
298
+ //template <class I> ModEvent intersectI(Space* home,I& i);
299
+ //@}
300
+
301
+ typedef Iter::Ranges::ToValues<LubRanges<SetView> > CodomLubIterator ;
302
+ CodomLubIterator iter_codom_lub();
303
+
304
+ public:
305
+ /// \name Dependencies
306
+ //@{
307
+ /// Subscribe propagator \a p with propagation condition \a pc to variable
308
+ GECODE_MAP_EXPORT void subscribe(Space* home,Propagator* p,PropCond pc);
309
+ //@}
310
+
311
+ private:
312
+ /// Return copy of not-yet copied variable
313
+ GECODE_MAP_EXPORT MapVar* perform_copy(Space* home, bool share);
314
+
315
+ public:
316
+ /// \name Cloning
317
+ //@{
318
+ /// Return copy of this variable
319
+ MapVar* copy(Space* home, bool share);
320
+ /// Update this variable to be a clone of variable \a x
321
+ void update(Space* home, bool share, MapVar& x);
322
+ //@}
323
+
324
+ void print(void);
325
+ void print(int i);
326
+
327
+ //friend void Gecode::branch(Space *home, MapVar M, BvarSel vars, BvalSel vals);
328
+ //friend void Gecode::injective(Gecode::Space *, MapVar);
329
+ };
330
+ //a}
331
+ }
332
+ }
333
+
334
+ #include "var/imp.icc"
335
+ //@}
336
+
337
+ /**
338
+ * \brief Print set variable \a x
339
+ * \relates Gecode::MapVar
340
+ */
341
+ GECODE_MAP_EXPORT std::ostream&
342
+ operator<<(std::ostream&, const Gecode::Map::MapVar& x);
343
+
344
+ //
345
+ // STATISTICS: set-var
346
+ //
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Main authors:
3
+ * Zampelli St�phane <sz@info.ucl.ac.be>
4
+ *
5
+ * Copyright:
6
+ * Universit� catholique de Louvain, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date$
10
+ * $Revision$
11
+ *
12
+ * This file is part of CP(Map)
13
+ *
14
+ * See the file "LICENSE" for information on usage and
15
+ * redistribution of this file, and for a
16
+ * DISCLAIMER OF ALL WARRANTIES.
17
+ *
18
+ */
19
+
20
+
21
+ #include "map.hh"
22
+
23
+ namespace Gecode { namespace Map {
24
+
25
+ /// Return copy of not-yet copied variable
26
+ GECODE_MAP_EXPORT MapVar* MapVar::perform_copy(Space* home, bool share)
27
+ {
28
+ return new (home) MapVar(home,share,*this);
29
+ }
30
+ }}
31
+
32
+ GECODE_MAP_EXPORT std::ostream&
33
+ operator<<(std::ostream& os, const Gecode::Map::MapVar& x)
34
+ {
35
+ for (int i=0; i<x.array.size(); i++) {
36
+ os << (x.array[i]) << endl;
37
+ };
38
+
39
+ return os;
40
+ }
41
+
42
+
@@ -0,0 +1,436 @@
1
+ /*
2
+ * Main authors:
3
+ * Zampelli St�phane <sz@info.ucl.ac.be>
4
+ *
5
+ * Copyright:
6
+ * Universit� catholique de Louvain, 2005
7
+ *
8
+ * Last modified:
9
+ * $Date$
10
+ * $Revision$
11
+ *
12
+ * This file is part of CP(Map)
13
+ *
14
+ * See the file "LICENSE" for information on usage and
15
+ * redistribution of this file, and for a
16
+ * DISCLAIMER OF ALL WARRANTIES.
17
+ *
18
+ */
19
+
20
+
21
+ #define CREATE(VY,VZ,C) \
22
+ if (C<IntView,VY,VZ,Count::RelEqDom<IntView>,true>::post(home,newarray,y,T,c) \
23
+ == ES_FAILED) \
24
+ home->fail(); \
25
+
26
+ namespace Gecode { namespace Map {
27
+
28
+ forceinline MapVar::MapVar(){};//: Variable<VTI_MAP,PC_MAP_ANY>(NULL) {};
29
+
30
+ forceinline MapVar::MapVar(Space* home, bool share, MapVar& x) :
31
+ //Variable<VTI_MAP,PC_MAP_ANY>(home,share,x),
32
+ Domain(x.Domain), Codomain(x.Codomain),
33
+ array(x.array), maxDomSize(x.maxDomSize), maxCodomSize(x.maxCodomSize),
34
+ e(x.e), index(x.index), indexInv(x.indexInv)
35
+ {};
36
+
37
+ forceinline MapVar::MapVar(Space* home, SetVar Dom, SetVar Codom)
38
+ : //Variable<VTI_MAP,PC_MAP_ANY>(home),
39
+ Domain(Dom), Codomain(Codom),
40
+ //This call array(...) only allocates space, does not create Views. ViewArrays are containers.
41
+ array(home, Dom.cardMax()),
42
+ maxDomSize(Dom.cardMax()), maxCodomSize(Codom.cardMax()), e(NULL),
43
+ index(NULL), indexInv(NULL)
44
+ {
45
+ //external pointers for private members
46
+ //they never change during search
47
+ e=new std::map<int,int>;
48
+ index=new std::map<int,int>;
49
+ indexInv=new std::map<int,int>;
50
+
51
+ //Create index and indexInv maps
52
+ LubRanges<SetView> DomUB(Dom);
53
+ Iter::Ranges::ToValues<LubRanges<SetView> > DomV(DomUB);
54
+ int i=0;
55
+ while (DomV()) {
56
+ (*index)[DomV.val()]=i;
57
+ (*indexInv)[i]=DomV.val();
58
+ ++i;
59
+ ++DomV;
60
+ }
61
+
62
+ //Fill r structure with Codomain UB
63
+ int *r=NULL;
64
+ r = new int[maxCodomSize+1]; //represent the domain of Codom plus empty symbol
65
+ LubRanges<SetView> CodomUB(Codom);
66
+ Iter::Ranges::ToValues<LubRanges<SetView> > CodomV(CodomUB);
67
+ i=0;
68
+ while (CodomV()) {
69
+ r[i]=CodomV.val();
70
+ ++i;
71
+ ++CodomV;
72
+ }
73
+
74
+ //Create suitable Views and insert them into array
75
+ for (int i=0; i<maxDomSize; i++)
76
+ {
77
+ (*e)[i]=Codom.lubMax()+i+1; //The empty symbol is stored
78
+ r[maxCodomSize]=(*e)[i];
79
+ IntSet is(r,maxCodomSize+1);
80
+ IntVar myvar(home, is);
81
+ IntView myview(myvar);
82
+ array[i]=myview;
83
+ };
84
+
85
+ delete [] r;
86
+
87
+ /*Post coherence constraints between array, S and T*/
88
+ for (int i=0; i<maxDomSize; i++)
89
+ {
90
+ BoolVar b1_; b1_.init(home,0,1);
91
+ BoolVar b1; b1.init(home,0,1);
92
+
93
+ eq(home, array[i], (*e)[i], b1_);
94
+
95
+ bool_not(home, b1, b1_);
96
+ //Image_i == e <-> i \notin S
97
+ dom(home, Dom, SRT_SUP, (*indexInv)[i], b1);
98
+
99
+ //Image_i == e <-> Image_i \notin T
100
+ rel(home, Codom, SRT_SUP, array[i], b1);
101
+ }
102
+
103
+ //Post 'Occurs' constraint to propagate upon UB(T)
104
+
105
+ //for all i in UB(Codom) : Occurs(array,i)=0 -> i \notin Codom
106
+ LubRanges<SetView> CodomUB2(Codom);
107
+ Iter::Ranges::ToValues<LubRanges<SetView> > CodomV2(CodomUB2);
108
+ while (CodomV2()) {
109
+ //IntVar T; T.init(home,0,maxDomSize);
110
+ IntVar T;T.init(home,0,maxDomSize);
111
+ BoolVar b1_; b1_.init(home,0,1);
112
+ BoolVar b2_; b2_.init(home,0,1);
113
+
114
+ ConstIntView y(CodomV2.val());
115
+ int c=0;
116
+ //Copy before posting, because Eq modify its own ViewArray
117
+ ViewArray<IntView> newarray(home,array);
118
+ //count(home, array, CodomV2.val(), IRT_EQ, T);
119
+ CREATE(ConstIntView,IntView,Count::Eq);
120
+
121
+ //b2_ <-> not(b1_) <-> T \= 0
122
+ eq(home, T, 0, b1_);
123
+ bool_not(home,b2_,b1_);
124
+
125
+ //T==0 <-> y \notin Codom
126
+ IntVar tmp(home,CodomV2.val(), CodomV2.val());
127
+ IntView tmp2(tmp);
128
+ rel(home, Codom, SRT_SUP, tmp2, b2_ );
129
+
130
+ ++CodomV2;
131
+ }
132
+
133
+ };
134
+
135
+ // forceinline MapVar::Processor::Processor(void) {
136
+ //
137
+ // // Combination of modification events
138
+ // mec(ME_MAP_DOM, ME_MAP_CODOM, ME_MAP_ANY);
139
+ //
140
+ // // Mapping between modification events and propagation conditions
141
+ // mepc(ME_MAP_VAL, PC_MAP_VAL);
142
+ // mepc(ME_MAP_DOM, PC_MAP_DOM);
143
+ // mepc(ME_MAP_CODOM, PC_MAP_CODOM);
144
+ // mepc(ME_MAP_ANY, PC_MAP_ANY);
145
+ //
146
+ // // Transfer to kernel
147
+ // enter();
148
+ // }
149
+
150
+ /// Return current domain cardinality minimum
151
+ forceinline unsigned int MapVar::cardDomainMin(void) const {return Domain.cardMin();}
152
+ /// Return current domain cardinality maximum
153
+ forceinline unsigned int MapVar::cardDomainMax(void) const {return Domain.cardMax();}
154
+ /// Return current codomain cardinality minimum
155
+ forceinline unsigned int MapVar::cardCodomainMin(void) const {return Codomain.cardMin();}
156
+ /// Return current codomain cardinality maximum
157
+ forceinline unsigned int MapVar::cardCodomainMax(void) const {return Codomain.cardMax();}
158
+ /// Return the \a n -th smallest element in the domain least upper bound
159
+ forceinline int MapVar::domLubMinN(int n) const {
160
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
161
+ return DomainView.lubMinN(n);
162
+ }
163
+ /// Return the \a n -th largest element in the domain least upper bound
164
+ forceinline int MapVar::domLubMaxN(int n) const {
165
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
166
+ return DomainView.lubMaxN(n);
167
+ }
168
+ /// Return the size of the domain least upper bound
169
+ forceinline unsigned int MapVar::domLubSize(void) const {return Domain.lubSize();}
170
+ /// Return the size of the domain greatest lower bound
171
+ forceinline unsigned int MapVar::domGlbSize(void) const {return Domain.glbSize();}
172
+
173
+ forceinline int MapVar::domGlbMin(void) const {return Domain.glbMin();}
174
+ forceinline int MapVar::domGlbMax(void) const {return Domain.glbMax();}
175
+
176
+
177
+ /// Return the \a n -th smallest element in the codomain least upper bound
178
+ forceinline int MapVar::codomLubMinN(int n) const {
179
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
180
+ return CodomainView.lubMinN(n);
181
+ }
182
+
183
+ /// Return the \a n -th largest element in the codomain least upper bound
184
+ forceinline int MapVar::codomLubMaxN(int n) const {
185
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
186
+ return CodomainView.lubMaxN(n);};
187
+
188
+ forceinline int MapVar::codomGlbMin(void) const {return Codomain.glbMin();}
189
+ forceinline int MapVar::codomGlbMax(void) const {return Codomain.glbMax();}
190
+ forceinline int MapVar::codomLubMin(void) const {return Codomain.lubMin();}
191
+ forceinline int MapVar::codomLubMax(void) const {return Codomain.lubMax();}
192
+
193
+ /// Return the size of the codomain least upper bound
194
+ forceinline unsigned int MapVar::codomLubSize(void) const {return Codomain.lubSize();}
195
+ /// Return the size of the codomain greatest lower bound
196
+ forceinline unsigned int MapVar::codomGlbSize(void) const {return Codomain.glbSize();}
197
+ ///Return the initial size of UB of dom(f)
198
+ forceinline unsigned int MapVar::maxInitDomSize(void) const {return array.size();}
199
+ ///Returns the size of f(i)
200
+ forceinline unsigned int MapVar::size(int i) {return array[(*index)[i]].size();}
201
+ /// Test whether variable is assigned
202
+ forceinline bool MapVar::assigned(void)
203
+ {
204
+ bool assigned=(Domain.assigned() && Codomain.assigned());
205
+ if (assigned) {
206
+ for (int i=array.size(); i--; ) {
207
+ if ((array[i].assigned()) && (array[i].in((*e)[i]))) { assigned=false; break; }
208
+ }
209
+ }
210
+ return assigned;
211
+ }
212
+
213
+ /// Test whether f(a)=b
214
+ forceinline bool MapVar::map(int a, int b) {
215
+ if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) ) {
216
+ return ( array[(*index)[a]].assigned() && array[(*index)[a]].in(b) ); };
217
+ return false;
218
+ }
219
+ ///Test wether b in f(a)
220
+ forceinline bool MapVar::imageIn(int a, int b) {
221
+ if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) && (*e)[(*index)[a]]!=b) {
222
+ return array[(*index)[a]].in(b); };
223
+ return false;
224
+ }
225
+ ///Test wether b not in f(a)
226
+ forceinline bool MapVar::imageOut(int a, int b) {
227
+ if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) ) {
228
+ return !array[(*index)[a]].in(b) && (*e)[(*index)[a]]!=b; };
229
+ return false;
230
+ }
231
+ ///Test wether \a a has no image i.e. \a a \notin Dom(f)
232
+ forceinline bool MapVar::noImage(int a) {
233
+ return array[(*index)[a]].assigned() && array[(*index)[a]].in((*e)[(*index)[a]]);
234
+ }
235
+
236
+
237
+ /// Test whether \a f is contained in greatest lower bound
238
+ //forceinline bool MapVar::knownIn(map<int,int> f);
239
+ /// Test whether \a f is contained in least upper bound
240
+ //forceinline bool MapVar::knownOut(map<int,int> f);
241
+ //@}
242
+
243
+ /// Include \a n in domain
244
+ forceinline ModEvent MapVar::includeDom(Space *home, int n)
245
+ {
246
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
247
+ ModEvent me = DomainView.include(home, n);
248
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
249
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
250
+ return ME_MAP_DOM;
251
+ }
252
+ /// Exclude \a n from domain
253
+ forceinline ModEvent MapVar::excludeDom(Space *home, int n)
254
+ {
255
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
256
+ ModEvent me = DomainView.exclude(home, n);
257
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
258
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
259
+ return ME_MAP_DOM;
260
+ }
261
+ /// Include \a n in codomain
262
+ forceinline ModEvent MapVar::includeCodom(Space *home, int n)
263
+ {
264
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
265
+ ModEvent me = CodomainView.include(home, n);
266
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
267
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
268
+ return ME_MAP_CODOM;
269
+ }
270
+
271
+ /// Exclude \a n from codomain
272
+ forceinline ModEvent MapVar::excludeCodom(Space *home, int n)
273
+ {
274
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
275
+ ModEvent me = CodomainView.exclude(home, n);
276
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
277
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
278
+ return ME_MAP_CODOM;
279
+ }
280
+
281
+ /// Restrict domain cardinality to be at least n
282
+ forceinline ModEvent MapVar::cardDomMin(Space *home, unsigned int n)
283
+ {
284
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
285
+ ModEvent me = DomainView.cardMin(home, n);
286
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
287
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
288
+ return ME_MAP_DOM;
289
+ }
290
+ /// Restrict domain cardinality to be at most n
291
+ forceinline ModEvent MapVar::cardDomMax(Space *home, unsigned int n)
292
+ {
293
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
294
+ ModEvent me = DomainView.cardMax(home, n);
295
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
296
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
297
+ return ME_MAP_DOM;
298
+ }
299
+ /// Restrict codomain cardinality to be at least n
300
+ forceinline ModEvent MapVar::cardCodomMin(Space *home, unsigned int n)
301
+ {
302
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
303
+ ModEvent me = CodomainView.cardMin(home, n);
304
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
305
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
306
+ return ME_MAP_CODOM;
307
+ }
308
+
309
+ /// Restrict codomain cardinality to be at most n
310
+ forceinline ModEvent MapVar::cardCodomMax(Space *home, unsigned int n)
311
+ {
312
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
313
+ ModEvent me = CodomainView.cardMax(home, n);
314
+ if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
315
+ if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
316
+ return ME_MAP_CODOM;
317
+ }
318
+
319
+ /// f(i)=j
320
+ forceinline ModEvent MapVar::map(Space *home, int i, int j)
321
+ {
322
+ if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
323
+ ModEvent me = array[(*index)[i]].eq(home, j);
324
+ if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
325
+ if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
326
+ return ME_MAP_ANY;
327
+ }
328
+ return ME_MAP_NONE;
329
+ }
330
+
331
+ /// f(i)\=j
332
+ forceinline ModEvent MapVar::nomap(Space *home, int i, int j)
333
+ {
334
+ if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
335
+ ModEvent me = array[(*index)[i]].nq(home, j);
336
+ if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
337
+ if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
338
+ return ME_MAP_ANY;
339
+ }
340
+ return ME_MAP_NONE;
341
+
342
+ }
343
+
344
+ /// f(i)\=j
345
+ forceinline ExecStatus MapVar::nomapB(Space *home, int i, int j)
346
+ {
347
+ if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
348
+ return me_failed(array[(*index)[i]].nq(home,j)) ? ES_FAILED : ES_OK;
349
+ //if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
350
+ //if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
351
+ //return ME_MAP_ANY;
352
+ }
353
+ return ES_OK;
354
+ }
355
+
356
+
357
+ /// Subscribe propagator \a p with propagation condition \a pc to variable
358
+ forceinline
359
+ GECODE_MAP_EXPORT void MapVar::subscribe(Space* home,Propagator* p,PropCond pc)
360
+ {
361
+ //translate pc to pc of SetView and IntViewArray
362
+ if (pc == PC_MAP_DOM) {
363
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
364
+ DomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
365
+ }
366
+
367
+ if (pc == PC_MAP_CODOM) {
368
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
369
+ CodomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
370
+ }
371
+
372
+ if (pc == PC_MAP_ANY) {
373
+
374
+ SetView DomainView(Domain); //no cost thanks to compiler optimization
375
+ DomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
376
+ SetView CodomainView(Codomain); //no cost thanks to compiler optimization
377
+ CodomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
378
+ array.subscribe(home, p, Gecode::Int::PC_INT_DOM);
379
+ }
380
+
381
+ }
382
+
383
+ // forceinline
384
+ // MapVar* MapVar::copy(Space* home, bool share)
385
+ // {
386
+ // if (copied()) {
387
+ // return static_cast<MapVar*>(forward());
388
+ // }
389
+ // perform_copy(home,share);
390
+ // }
391
+
392
+ forceinline
393
+ void MapVar::update(Space* home, bool share, MapVar& x)
394
+ {
395
+ Domain.update(home, share, x.Domain);
396
+ Codomain.update(home, share, x.Codomain);
397
+ array.update(home, share, x.array);
398
+ e = x.e;
399
+ index = x.index;
400
+ indexInv = x.indexInv;
401
+ maxDomSize = x.maxDomSize;
402
+ maxCodomSize = x.maxCodomSize;
403
+ }
404
+
405
+ /// Returns f(i) (only if f(i) is mapped)
406
+ forceinline int MapVar::imageAssigned(int i) {return array[(*index)[i]].val();};
407
+
408
+ ///Test wether f(i) is mapped
409
+ forceinline bool MapVar::mapped(int i) {
410
+ return ((array[(*index)[i]].assigned()) && (array[(*index)[i]].in((*e)[(*index)[i]])==false));};
411
+
412
+ forceinline
413
+ void MapVar::print()
414
+ {
415
+ for (int s=0; s<array.size(); s++)
416
+ {
417
+ cout << "array[" << s << "] = " << array[s] << endl;
418
+ }
419
+ }
420
+
421
+ forceinline void MapVar::print(int i)
422
+ {
423
+ cout << "array[" << i << "] = " << array[i] << endl;
424
+ }
425
+
426
+ forceinline MapVar::CodomLubIterator MapVar::iter_codom_lub(void) {
427
+ LubRanges<SetView> CodomUB(Codomain);
428
+ Iter::Ranges::ToValues<LubRanges<SetView> > CodomV(CodomUB);
429
+ return CodomV;
430
+ }
431
+
432
+
433
+
434
+ }
435
+ }
436
+