gecoder-with-gecode 0.9.0 → 0.9.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 (919) hide show
  1. data/CHANGES +6 -0
  2. data/README +1 -1
  3. data/THANKS +18 -0
  4. data/example/equation_system.rb +3 -1
  5. data/example/magic_sequence.rb +3 -1
  6. data/example/queens.rb +3 -1
  7. data/example/send_more_money.rb +24 -30
  8. data/example/send_most_money.rb +15 -26
  9. data/example/square_tiling.rb +3 -1
  10. data/example/sudoku-set.rb +3 -1
  11. data/ext/{gecode-2.1.1 → gecode-2.2.0}/LICENSE +0 -0
  12. data/ext/{gecode-2.1.1 → gecode-2.2.0}/Makefile.contribs +0 -0
  13. data/ext/gecode-2.2.0/Makefile.dep +8056 -0
  14. data/ext/gecode-2.2.0/Makefile.in +1590 -0
  15. data/ext/gecode-2.2.0/changelog.in +2698 -0
  16. data/ext/gecode-2.2.0/configure +13112 -0
  17. data/ext/gecode-2.2.0/configure.ac +273 -0
  18. data/ext/gecode-2.2.0/configure.ac.in +269 -0
  19. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/README +0 -0
  20. data/ext/gecode-2.2.0/contribs/qecode/Doxyfile +263 -0
  21. data/ext/gecode-2.2.0/contribs/qecode/Implicative.cc +267 -0
  22. data/ext/gecode-2.2.0/contribs/qecode/Implicative.hh +164 -0
  23. data/ext/gecode-2.2.0/contribs/qecode/Makefile.in.in +163 -0
  24. data/ext/gecode-2.2.0/contribs/qecode/OptVar.cc +82 -0
  25. data/ext/gecode-2.2.0/contribs/qecode/OptVar.hh +123 -0
  26. data/ext/gecode-2.2.0/contribs/qecode/Strategy.cc +131 -0
  27. data/ext/gecode-2.2.0/contribs/qecode/Strategy.hh +91 -0
  28. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.cc +62 -0
  29. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.hh +47 -0
  30. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/output.0 +2264 -0
  31. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/requests +115 -0
  32. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/traces.0 +57 -0
  33. data/ext/gecode-2.2.0/contribs/qecode/config.log +147 -0
  34. data/ext/gecode-2.2.0/contribs/qecode/config.status +817 -0
  35. data/ext/gecode-2.2.0/contribs/qecode/configure +2264 -0
  36. data/ext/gecode-2.2.0/contribs/qecode/configure.ac +23 -0
  37. data/ext/gecode-2.2.0/contribs/qecode/examples/COMPILING +13 -0
  38. data/ext/gecode-2.2.0/contribs/qecode/examples/MatrixGame.cpp +140 -0
  39. data/ext/gecode-2.2.0/contribs/qecode/examples/NimFibo.cpp +73 -0
  40. data/ext/gecode-2.2.0/contribs/qecode/examples/connect-5-3-3-3.cpp +842 -0
  41. data/ext/gecode-2.2.0/contribs/qecode/examples/network-pricing.cc +146 -0
  42. data/ext/gecode-2.2.0/contribs/qecode/examples/optim2.cc +149 -0
  43. data/ext/gecode-2.2.0/contribs/qecode/examples/stress_test.cpp +240 -0
  44. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/heap.cc +0 -0
  45. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myDom.cc +0 -0
  46. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myspace.cc +0 -0
  47. data/ext/gecode-2.2.0/contribs/qecode/myspace.hh +68 -0
  48. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/qecode.hh +0 -0
  49. data/ext/gecode-2.2.0/contribs/qecode/qsolver.cc +268 -0
  50. data/ext/gecode-2.2.0/contribs/qecode/qsolver.hh +46 -0
  51. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/shortdesc.ac +0 -0
  52. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/vartype.hh +0 -0
  53. data/ext/{gecode-2.1.1 → gecode-2.2.0}/doxygen/doxygen.conf.in +0 -0
  54. data/ext/gecode-2.2.0/doxygen/doxygen.hh.in +1112 -0
  55. data/ext/gecode-2.2.0/doxygen/reflection.hh +417 -0
  56. data/ext/gecode-2.2.0/examples/all-interval.cc +133 -0
  57. data/ext/gecode-2.2.0/examples/alpha.cc +137 -0
  58. data/ext/gecode-2.2.0/examples/bacp.cc +521 -0
  59. data/ext/gecode-2.2.0/examples/baseline.cc +87 -0
  60. data/ext/gecode-2.2.0/examples/bibd.cc +203 -0
  61. data/ext/gecode-2.2.0/examples/black-hole.cc +389 -0
  62. data/ext/gecode-2.2.0/examples/crew.cc +286 -0
  63. data/ext/gecode-2.2.0/examples/crowded-chess.cc +424 -0
  64. data/ext/gecode-2.2.0/examples/domino.cc +297 -0
  65. data/ext/gecode-2.2.0/examples/donald.cc +107 -0
  66. data/ext/gecode-2.2.0/examples/eq20.cc +125 -0
  67. data/ext/gecode-2.2.0/examples/golf.cc +297 -0
  68. data/ext/gecode-2.2.0/examples/golomb-ruler.cc +199 -0
  69. data/ext/gecode-2.2.0/examples/graph-color.cc +407 -0
  70. data/ext/gecode-2.2.0/examples/grocery.cc +113 -0
  71. data/ext/gecode-2.2.0/examples/hamming.cc +129 -0
  72. data/ext/gecode-2.2.0/examples/ind-set.cc +143 -0
  73. data/ext/gecode-2.2.0/examples/javascript.cc +163 -0
  74. data/ext/gecode-2.2.0/examples/kakuro.cc +686 -0
  75. data/ext/gecode-2.2.0/examples/knights.cc +220 -0
  76. data/ext/gecode-2.2.0/examples/langford-number.cc +225 -0
  77. data/ext/gecode-2.2.0/examples/magic-sequence.cc +146 -0
  78. data/ext/gecode-2.2.0/examples/magic-square.cc +138 -0
  79. data/ext/gecode-2.2.0/examples/minesweeper.cc +304 -0
  80. data/ext/gecode-2.2.0/examples/money.cc +105 -0
  81. data/ext/gecode-2.2.0/examples/nonogram.cc +492 -0
  82. data/ext/gecode-2.2.0/examples/ortho-latin.cc +172 -0
  83. data/ext/gecode-2.2.0/examples/partition.cc +141 -0
  84. data/ext/gecode-2.2.0/examples/pentominoes.cc +949 -0
  85. data/ext/gecode-2.2.0/examples/perfect-square.cc +311 -0
  86. data/ext/gecode-2.2.0/examples/photo.cc +170 -0
  87. data/ext/gecode-2.2.0/examples/queen-armies.cc +284 -0
  88. data/ext/gecode-2.2.0/examples/queens.cc +147 -0
  89. data/ext/gecode-2.2.0/examples/queens.js +57 -0
  90. data/ext/gecode-2.2.0/examples/sports-league.cc +342 -0
  91. data/ext/gecode-2.2.0/examples/steiner.cc +192 -0
  92. data/ext/gecode-2.2.0/examples/stress-distinct.cc +90 -0
  93. data/ext/gecode-2.2.0/examples/stress-domain.cc +99 -0
  94. data/ext/gecode-2.2.0/examples/stress-element.cc +112 -0
  95. data/ext/gecode-2.2.0/examples/stress-exec.cc +97 -0
  96. data/ext/gecode-2.2.0/examples/stress-extensional.cc +134 -0
  97. data/ext/gecode-2.2.0/examples/stress-linear-bool.cc +97 -0
  98. data/ext/gecode-2.2.0/examples/stress-min.cc +98 -0
  99. data/ext/gecode-2.2.0/examples/stress-search.cc +88 -0
  100. data/ext/gecode-2.2.0/examples/sudoku.cc +2341 -0
  101. data/ext/gecode-2.2.0/examples/support.hh +338 -0
  102. data/ext/gecode-2.2.0/examples/support/example.cc +64 -0
  103. data/ext/gecode-2.2.0/examples/support/example.icc +321 -0
  104. data/ext/gecode-2.2.0/examples/support/options.cc +226 -0
  105. data/ext/gecode-2.2.0/examples/support/options.icc +276 -0
  106. data/ext/gecode-2.2.0/examples/tsp.cc +317 -0
  107. data/ext/gecode-2.2.0/examples/warehouses.cc +191 -0
  108. data/ext/gecode-2.2.0/gecode.m4 +1046 -0
  109. data/ext/gecode-2.2.0/gecode/cpltset.hh +797 -0
  110. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.cc +0 -0
  111. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.icc +0 -0
  112. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.cc +0 -0
  113. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.icc +0 -0
  114. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.cc +0 -0
  115. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.hh +0 -0
  116. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-val.icc +0 -0
  117. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-view.icc +0 -0
  118. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/atmost.cc +0 -0
  119. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/cardinality.cc +0 -0
  120. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/distinct.cc +0 -0
  121. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/dom.cc +0 -0
  122. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/partition.cc +0 -0
  123. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rangeroots.cc +0 -0
  124. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rel.cc +0 -0
  125. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/select.cc +0 -0
  126. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/singleton.cc +0 -0
  127. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/exception.icc +0 -0
  128. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators.hh +0 -0
  129. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/binary.icc +0 -0
  130. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/nary.icc +0 -0
  131. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/naryone.icc +0 -0
  132. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/narytwo.icc +0 -0
  133. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/singleton.icc +0 -0
  134. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/unary.icc +0 -0
  135. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.cc +0 -0
  136. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.icc +0 -0
  137. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp.icc +0 -0
  138. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.cc +0 -0
  139. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.icc +0 -0
  140. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.vis +0 -0
  141. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.cc +0 -0
  142. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.icc +0 -0
  143. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view.icc +0 -0
  144. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/cpltset.icc +0 -0
  145. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/print.cc +0 -0
  146. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist.hh +0 -0
  147. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.cc +0 -0
  148. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.hh +0 -0
  149. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.cc +0 -0
  150. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.hh +0 -0
  151. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/better.hh +0 -0
  152. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.cc +0 -0
  153. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.hh +0 -0
  154. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.cc +281 -0
  155. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.hh +103 -0
  156. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.icc +70 -0
  157. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.cc +672 -0
  158. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.hh +64 -0
  159. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.cc +0 -0
  160. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.icc +0 -0
  161. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.cc +115 -0
  162. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.hh +75 -0
  163. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.icc +48 -0
  164. data/ext/gecode-2.2.0/gecode/gist/mainwindow.cc +274 -0
  165. data/ext/gecode-2.2.0/gecode/gist/mainwindow.hh +86 -0
  166. data/ext/gecode-2.2.0/gecode/gist/node.cc +148 -0
  167. data/ext/gecode-2.2.0/gecode/gist/node.hh +117 -0
  168. data/ext/gecode-2.2.0/gecode/gist/node.icc +99 -0
  169. data/ext/gecode-2.2.0/gecode/gist/nodecursor.cc +123 -0
  170. data/ext/gecode-2.2.0/gecode/gist/nodecursor.hh +147 -0
  171. data/ext/gecode-2.2.0/gecode/gist/nodecursor.icc +122 -0
  172. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.hh +0 -0
  173. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.icc +0 -0
  174. data/ext/gecode-2.2.0/gecode/gist/preferences.cc +120 -0
  175. data/ext/gecode-2.2.0/gecode/gist/preferences.hh +79 -0
  176. data/ext/gecode-2.2.0/gecode/gist/spacenode.cc +468 -0
  177. data/ext/gecode-2.2.0/gecode/gist/spacenode.hh +227 -0
  178. data/ext/gecode-2.2.0/gecode/gist/spacenode.icc +170 -0
  179. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/test.cc +0 -0
  180. data/ext/gecode-2.2.0/gecode/gist/textoutput.cc +134 -0
  181. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/textoutput.hh +0 -0
  182. data/ext/gecode-2.2.0/gecode/gist/treecanvas.cc +1343 -0
  183. data/ext/gecode-2.2.0/gecode/gist/treecanvas.hh +361 -0
  184. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/ui_addchild.hh +0 -0
  185. data/ext/gecode-2.2.0/gecode/gist/ui_addvisualisationdialog.hh +165 -0
  186. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.cc +192 -0
  187. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.hh +75 -0
  188. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.cc +235 -0
  189. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.hh +77 -0
  190. data/ext/gecode-2.2.0/gecode/gist/visualisation/vararrayitem.hh +125 -0
  191. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.cc +0 -0
  192. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.hh +0 -0
  193. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayviewt.hh +0 -0
  194. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.cc +0 -0
  195. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.hh +0 -0
  196. data/ext/gecode-2.2.0/gecode/gist/visualnode.cc +474 -0
  197. data/ext/gecode-2.2.0/gecode/gist/visualnode.hh +226 -0
  198. data/ext/gecode-2.2.0/gecode/gist/visualnode.icc +198 -0
  199. data/ext/gecode-2.2.0/gecode/gist/zoomToFitIcon.icc +113 -0
  200. data/ext/gecode-2.2.0/gecode/int.hh +2116 -0
  201. data/ext/gecode-2.2.0/gecode/int/arithmetic.cc +237 -0
  202. data/ext/gecode-2.2.0/gecode/int/arithmetic.hh +827 -0
  203. data/ext/gecode-2.2.0/gecode/int/arithmetic/abs.icc +278 -0
  204. data/ext/gecode-2.2.0/gecode/int/arithmetic/divmod.icc +496 -0
  205. data/ext/gecode-2.2.0/gecode/int/arithmetic/max.icc +474 -0
  206. data/ext/gecode-2.2.0/gecode/int/arithmetic/mult.icc +858 -0
  207. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqr.icc +464 -0
  208. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqrt.icc +260 -0
  209. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.cc +0 -0
  210. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.icc +0 -0
  211. data/ext/gecode-2.2.0/gecode/int/bool.cc +734 -0
  212. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool.hh +0 -0
  213. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/base.icc +0 -0
  214. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eq.icc +0 -0
  215. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eqv.icc +0 -0
  216. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/lq.icc +0 -0
  217. data/ext/gecode-2.2.0/gecode/int/bool/or.icc +1000 -0
  218. data/ext/gecode-2.2.0/gecode/int/branch.cc +167 -0
  219. data/ext/gecode-2.2.0/gecode/int/branch.hh +587 -0
  220. data/ext/gecode-2.2.0/gecode/int/branch/create-branch.icc +190 -0
  221. data/ext/gecode-2.2.0/gecode/int/branch/select-val.icc +340 -0
  222. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/branch/select-view.icc +0 -0
  223. data/ext/gecode-2.2.0/gecode/int/channel.cc +165 -0
  224. data/ext/gecode-2.2.0/gecode/int/channel.hh +259 -0
  225. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/base.icc +0 -0
  226. data/ext/gecode-2.2.0/gecode/int/channel/dom.icc +348 -0
  227. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.cc +0 -0
  228. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.icc +0 -0
  229. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.cc +0 -0
  230. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.icc +0 -0
  231. data/ext/gecode-2.2.0/gecode/int/channel/val.icc +278 -0
  232. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit.cc +0 -0
  233. data/ext/gecode-2.2.0/gecode/int/circuit.hh +175 -0
  234. data/ext/gecode-2.2.0/gecode/int/circuit/base.icc +266 -0
  235. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit/dom.icc +0 -0
  236. data/ext/gecode-2.2.0/gecode/int/circuit/val.icc +126 -0
  237. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/count.cc +0 -0
  238. data/ext/gecode-2.2.0/gecode/int/count.hh +487 -0
  239. data/ext/gecode-2.2.0/gecode/int/count/int.icc +620 -0
  240. data/ext/gecode-2.2.0/gecode/int/count/rel.icc +144 -0
  241. data/ext/gecode-2.2.0/gecode/int/count/view.icc +449 -0
  242. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/cumulatives.cc +0 -0
  243. data/ext/gecode-2.2.0/gecode/int/cumulatives.hh +138 -0
  244. data/ext/gecode-2.2.0/gecode/int/cumulatives/val.icc +455 -0
  245. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct.cc +0 -0
  246. data/ext/gecode-2.2.0/gecode/int/distinct.hh +341 -0
  247. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bilink.icc +0 -0
  248. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bnd.icc +0 -0
  249. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/combptr.icc +0 -0
  250. data/ext/gecode-2.2.0/gecode/int/distinct/dom.icc +752 -0
  251. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/edge.icc +0 -0
  252. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/node.icc +0 -0
  253. data/ext/gecode-2.2.0/gecode/int/distinct/ter-dom.icc +136 -0
  254. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/val.icc +0 -0
  255. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.cc +0 -0
  256. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.hh +0 -0
  257. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/range.icc +0 -0
  258. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/spec.icc +0 -0
  259. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/element.cc +0 -0
  260. data/ext/gecode-2.2.0/gecode/int/element.hh +239 -0
  261. data/ext/gecode-2.2.0/gecode/int/element/int.icc +444 -0
  262. data/ext/gecode-2.2.0/gecode/int/element/view.icc +584 -0
  263. data/ext/gecode-2.2.0/gecode/int/exception.icc +174 -0
  264. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional.cc +0 -0
  265. data/ext/gecode-2.2.0/gecode/int/extensional.hh +415 -0
  266. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/base.icc +0 -0
  267. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/basic.icc +0 -0
  268. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/bitset.icc +0 -0
  269. data/ext/gecode-2.2.0/gecode/int/extensional/dfa.cc +565 -0
  270. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/dfa.icc +0 -0
  271. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/incremental.icc +0 -0
  272. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/layered-graph.icc +0 -0
  273. data/ext/gecode-2.2.0/gecode/int/extensional/tuple-set.cc +285 -0
  274. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/tuple-set.icc +0 -0
  275. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc.cc +0 -0
  276. data/ext/gecode-2.2.0/gecode/int/gcc.hh +329 -0
  277. data/ext/gecode-2.2.0/gecode/int/gcc/bnd.icc +660 -0
  278. data/ext/gecode-2.2.0/gecode/int/gcc/dom.icc +531 -0
  279. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/gccbndsup.icc +0 -0
  280. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/graphsup.icc +0 -0
  281. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/lbc.icc +0 -0
  282. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/occur.icc +0 -0
  283. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/ubc.icc +0 -0
  284. data/ext/gecode-2.2.0/gecode/int/gcc/val.icc +400 -0
  285. data/ext/gecode-2.2.0/gecode/int/int-set.cc +157 -0
  286. data/ext/gecode-2.2.0/gecode/int/int-set.icc +195 -0
  287. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/limits.icc +0 -0
  288. data/ext/gecode-2.2.0/gecode/int/linear-bool.cc +235 -0
  289. data/ext/gecode-2.2.0/gecode/int/linear-int.cc +272 -0
  290. data/ext/gecode-2.2.0/gecode/int/linear.hh +1849 -0
  291. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-int.icc +0 -0
  292. data/ext/gecode-2.2.0/gecode/int/linear/bool-post.cc +433 -0
  293. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-scale.icc +0 -0
  294. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-view.icc +0 -0
  295. data/ext/gecode-2.2.0/gecode/int/linear/int-bin.icc +605 -0
  296. data/ext/gecode-2.2.0/gecode/int/linear/int-dom.icc +539 -0
  297. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-nary.icc +0 -0
  298. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-noview.icc +0 -0
  299. data/ext/gecode-2.2.0/gecode/int/linear/int-post.cc +493 -0
  300. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-ter.icc +0 -0
  301. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/post.icc +0 -0
  302. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/propagator.icc +0 -0
  303. data/ext/gecode-2.2.0/gecode/int/rel.cc +420 -0
  304. data/ext/gecode-2.2.0/gecode/int/rel.hh +627 -0
  305. data/ext/gecode-2.2.0/gecode/int/rel/eq.icc +885 -0
  306. data/ext/gecode-2.2.0/gecode/int/rel/lex.icc +275 -0
  307. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/rel/lq-le.icc +0 -0
  308. data/ext/gecode-2.2.0/gecode/int/rel/nq.icc +118 -0
  309. data/ext/gecode-2.2.0/gecode/int/sorted.cc +81 -0
  310. data/ext/gecode-2.2.0/gecode/int/sorted.hh +118 -0
  311. data/ext/gecode-2.2.0/gecode/int/sorted/matching.icc +173 -0
  312. data/ext/gecode-2.2.0/gecode/int/sorted/narrowing.icc +249 -0
  313. data/ext/gecode-2.2.0/gecode/int/sorted/order.icc +212 -0
  314. data/ext/gecode-2.2.0/gecode/int/sorted/propagate.icc +702 -0
  315. data/ext/gecode-2.2.0/gecode/int/sorted/sortsup.icc +563 -0
  316. data/ext/gecode-2.2.0/gecode/int/support-values.hh +158 -0
  317. data/ext/gecode-2.2.0/gecode/int/support-values.icc +203 -0
  318. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/unshare.cc +0 -0
  319. data/ext/gecode-2.2.0/gecode/int/var-imp.icc +745 -0
  320. data/ext/gecode-2.2.0/gecode/int/var-imp/bool.cc +105 -0
  321. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.icc +0 -0
  322. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.vis +0 -0
  323. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/delta.icc +0 -0
  324. data/ext/gecode-2.2.0/gecode/int/var-imp/int.cc +408 -0
  325. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.icc +0 -0
  326. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.vis +0 -0
  327. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/bool.cc +0 -0
  328. data/ext/gecode-2.2.0/gecode/int/var/bool.icc +128 -0
  329. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/int.cc +0 -0
  330. data/ext/gecode-2.2.0/gecode/int/var/int.icc +153 -0
  331. data/ext/gecode-2.2.0/gecode/int/view.icc +1918 -0
  332. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/bool.icc +0 -0
  333. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/constint.icc +0 -0
  334. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/int.icc +0 -0
  335. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/iter.icc +0 -0
  336. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/minus.icc +0 -0
  337. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/offset.icc +0 -0
  338. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/print.cc +0 -0
  339. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/rtest.icc +0 -0
  340. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/scale.icc +0 -0
  341. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/zero.icc +0 -0
  342. data/ext/gecode-2.2.0/gecode/iter.hh +98 -0
  343. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-add.icc +0 -0
  344. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-append.icc +0 -0
  345. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-array.icc +0 -0
  346. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-cache.icc +0 -0
  347. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-compl.icc +0 -0
  348. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-diff.icc +0 -0
  349. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-empty.icc +0 -0
  350. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-inter.icc +0 -0
  351. data/ext/gecode-2.2.0/gecode/iter/ranges-map.icc +260 -0
  352. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minmax.icc +0 -0
  353. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minus.icc +0 -0
  354. data/ext/gecode-2.2.0/gecode/iter/ranges-negative.icc +137 -0
  355. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-offset.icc +0 -0
  356. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-operations.icc +0 -0
  357. data/ext/gecode-2.2.0/gecode/iter/ranges-positive.icc +139 -0
  358. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-scale.icc +0 -0
  359. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton-append.icc +0 -0
  360. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton.icc +0 -0
  361. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-size.icc +0 -0
  362. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-union.icc +0 -0
  363. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-values.icc +0 -0
  364. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-array.icc +0 -0
  365. data/ext/gecode-2.2.0/gecode/iter/values-inter.icc +130 -0
  366. data/ext/gecode-2.2.0/gecode/iter/values-map.icc +136 -0
  367. data/ext/gecode-2.2.0/gecode/iter/values-minus.icc +130 -0
  368. data/ext/gecode-2.2.0/gecode/iter/values-negative.icc +116 -0
  369. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-offset.icc +0 -0
  370. data/ext/gecode-2.2.0/gecode/iter/values-positive.icc +123 -0
  371. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-ranges.icc +0 -0
  372. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-singleton.icc +0 -0
  373. data/ext/gecode-2.2.0/gecode/iter/values-union.icc +137 -0
  374. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-unique.icc +0 -0
  375. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-compl.icc +0 -0
  376. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-inter.icc +0 -0
  377. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-union.icc +0 -0
  378. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges.icc +0 -0
  379. data/ext/gecode-2.2.0/gecode/kernel.hh +188 -0
  380. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/advisor.icc +0 -0
  381. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/array.icc +0 -0
  382. data/ext/gecode-2.2.0/gecode/kernel/branching.icc +433 -0
  383. data/ext/gecode-2.2.0/gecode/kernel/core.cc +474 -0
  384. data/ext/gecode-2.2.0/gecode/kernel/core.icc +2311 -0
  385. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/exception.icc +0 -0
  386. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/macros.icc +0 -0
  387. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/memory-manager.cc +0 -0
  388. data/ext/gecode-2.2.0/gecode/kernel/memory-manager.icc +454 -0
  389. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/modevent.icc +0 -0
  390. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/propagator.icc +0 -0
  391. data/ext/gecode-2.2.0/gecode/kernel/reflection.cc +951 -0
  392. data/ext/gecode-2.2.0/gecode/kernel/reflection.icc +1213 -0
  393. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/shared-array.icc +0 -0
  394. data/ext/gecode-2.2.0/gecode/kernel/var-imp.icc +433 -0
  395. data/ext/gecode-2.2.0/gecode/kernel/var-map.cc +269 -0
  396. data/ext/gecode-2.2.0/gecode/kernel/var-map.icc +230 -0
  397. data/ext/gecode-2.2.0/gecode/kernel/var-traits.icc +79 -0
  398. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/var-type.cc +0 -0
  399. data/ext/gecode-2.2.0/gecode/kernel/var-type.icc +915 -0
  400. data/ext/gecode-2.2.0/gecode/kernel/var.icc +114 -0
  401. data/ext/gecode-2.2.0/gecode/kernel/view.icc +413 -0
  402. data/ext/gecode-2.2.0/gecode/minimodel.hh +1206 -0
  403. data/ext/gecode-2.2.0/gecode/minimodel/arithmetic.icc +118 -0
  404. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.cc +0 -0
  405. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.icc +0 -0
  406. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-rel.icc +0 -0
  407. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/exception.icc +0 -0
  408. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-expr.icc +0 -0
  409. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-rel.icc +0 -0
  410. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/matrix.icc +0 -0
  411. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/reg.cc +0 -0
  412. data/ext/gecode-2.2.0/gecode/search.hh +759 -0
  413. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.cc +0 -0
  414. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.icc +0 -0
  415. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.cc +0 -0
  416. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.icc +0 -0
  417. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/engine-ctrl.icc +0 -0
  418. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.cc +0 -0
  419. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.icc +0 -0
  420. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.cc +0 -0
  421. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.icc +0 -0
  422. data/ext/gecode-2.2.0/gecode/search/reco-stack.icc +277 -0
  423. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/restart.icc +0 -0
  424. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/statistics.icc +0 -0
  425. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.cc +0 -0
  426. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.icc +0 -0
  427. data/ext/gecode-2.2.0/gecode/serialization.hh +149 -0
  428. data/ext/gecode-2.2.0/gecode/serialization/boost.cc +78 -0
  429. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/boost.icc +0 -0
  430. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/flatzinc.cc +0 -0
  431. data/ext/gecode-2.2.0/gecode/serialization/javascript.cc +343 -0
  432. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/javascript.hh +0 -0
  433. data/ext/gecode-2.2.0/gecode/serialization/register.cc +8498 -0
  434. data/ext/gecode-2.2.0/gecode/set.hh +970 -0
  435. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.cc +0 -0
  436. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.icc +0 -0
  437. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.cc +0 -0
  438. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.hh +0 -0
  439. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-val.icc +0 -0
  440. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-view.icc +0 -0
  441. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/cardinality.cc +0 -0
  442. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.cc +0 -0
  443. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.hh +0 -0
  444. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.cc +0 -0
  445. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.icc +0 -0
  446. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.cc +0 -0
  447. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.icc +0 -0
  448. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.cc +0 -0
  449. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.hh +0 -0
  450. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.cc +0 -0
  451. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.icc +0 -0
  452. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/dom.cc +0 -0
  453. data/ext/gecode-2.2.0/gecode/set/element.cc +135 -0
  454. data/ext/gecode-2.2.0/gecode/set/element.hh +233 -0
  455. data/ext/gecode-2.2.0/gecode/set/element/disjoint.cc +308 -0
  456. data/ext/gecode-2.2.0/gecode/set/element/disjoint.icc +75 -0
  457. data/ext/gecode-2.2.0/gecode/set/element/idxarray.hh +113 -0
  458. data/ext/gecode-2.2.0/gecode/set/element/idxarray.icc +155 -0
  459. data/ext/gecode-2.2.0/gecode/set/element/inter.icc +348 -0
  460. data/ext/gecode-2.2.0/gecode/set/element/union.icc +371 -0
  461. data/ext/gecode-2.2.0/gecode/set/element/unionConst.icc +334 -0
  462. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/exception.icc +0 -0
  463. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.cc +0 -0
  464. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.hh +0 -0
  465. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/card.icc +0 -0
  466. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-bool.icc +0 -0
  467. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-int.icc +0 -0
  468. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/match.icc +0 -0
  469. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/minmax.icc +0 -0
  470. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/weights.icc +0 -0
  471. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/limits.icc +0 -0
  472. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors-compiler.hh +0 -0
  473. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors.cc +0 -0
  474. data/ext/gecode-2.2.0/gecode/set/projectors.hh +438 -0
  475. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/compiler.cc +0 -0
  476. data/ext/gecode-2.2.0/gecode/set/projectors/formula.cc +312 -0
  477. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/formula.icc +0 -0
  478. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.cc +0 -0
  479. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.icc +0 -0
  480. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.cc +0 -0
  481. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.icc +0 -0
  482. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator.hh +0 -0
  483. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/card.icc +0 -0
  484. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/nary.icc +0 -0
  485. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.cc +0 -0
  486. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.icc +0 -0
  487. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.cc +0 -0
  488. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.icc +0 -0
  489. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/propagator.icc +0 -0
  490. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op-const.cc +0 -0
  491. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.cc +0 -0
  492. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.hh +0 -0
  493. data/ext/gecode-2.2.0/gecode/set/rel-op/common.icc +613 -0
  494. data/ext/gecode-2.2.0/gecode/set/rel-op/inter.icc +452 -0
  495. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/partition.icc +0 -0
  496. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/post.icc +0 -0
  497. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/subofunion.icc +0 -0
  498. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/superofinter.icc +0 -0
  499. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/union.icc +0 -0
  500. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.cc +0 -0
  501. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.hh +0 -0
  502. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/common.icc +0 -0
  503. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/eq.icc +0 -0
  504. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nosubset.icc +0 -0
  505. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nq.icc +0 -0
  506. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/re-eq.icc +0 -0
  507. data/ext/gecode-2.2.0/gecode/set/rel/re-subset.icc +174 -0
  508. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/subset.icc +0 -0
  509. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.cc +0 -0
  510. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.hh +0 -0
  511. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/common.icc +0 -0
  512. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.cc +0 -0
  513. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.icc +0 -0
  514. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.cc +0 -0
  515. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.icc +0 -0
  516. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp.icc +0 -0
  517. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/delta.icc +0 -0
  518. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.cc +0 -0
  519. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.icc +0 -0
  520. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/iter.icc +0 -0
  521. data/ext/gecode-2.2.0/gecode/set/var-imp/set.cc +215 -0
  522. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.icc +0 -0
  523. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.vis +0 -0
  524. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var/set.cc +0 -0
  525. data/ext/gecode-2.2.0/gecode/set/var/set.icc +303 -0
  526. data/ext/gecode-2.2.0/gecode/set/view.icc +1451 -0
  527. data/ext/gecode-2.2.0/gecode/set/view/complement.icc +614 -0
  528. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/const.icc +0 -0
  529. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/offset.icc +0 -0
  530. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/print.cc +0 -0
  531. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/set.icc +0 -0
  532. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/singleton.icc +0 -0
  533. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support.hh +0 -0
  534. data/ext/gecode-2.2.0/gecode/support/block-allocator.icc +159 -0
  535. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/AUTHORS +0 -0
  536. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/ChangeLog +0 -0
  537. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/NEWS +0 -0
  538. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/README +0 -0
  539. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bdd.h +0 -0
  540. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddio.c +0 -0
  541. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddop.c +0 -0
  542. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddtree.h +0 -0
  543. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.c +0 -0
  544. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.h +0 -0
  545. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.c +0 -0
  546. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.h +0 -0
  547. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/config.h +0 -0
  548. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cppext.cc +0 -0
  549. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.c +0 -0
  550. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.h +0 -0
  551. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.c +0 -0
  552. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.h +0 -0
  553. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.c +0 -0
  554. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.h +0 -0
  555. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/pairs.c +0 -0
  556. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.c +0 -0
  557. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.h +0 -0
  558. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/reorder.c +0 -0
  559. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/tree.c +0 -0
  560. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/cast.icc +0 -0
  561. data/ext/gecode-2.2.0/gecode/support/config.icc.in +83 -0
  562. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-array.icc +0 -0
  563. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-stack.icc +0 -0
  564. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.cc +0 -0
  565. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.icc +0 -0
  566. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/macros.icc +0 -0
  567. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/map.icc +0 -0
  568. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/marked-pointer.icc +0 -0
  569. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/memory.icc +0 -0
  570. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/random.icc +0 -0
  571. data/ext/gecode-2.2.0/gecode/support/sentinel-stack.icc +138 -0
  572. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/sort.icc +0 -0
  573. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-pqueue.icc +0 -0
  574. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-stack.icc +0 -0
  575. data/ext/gecode-2.2.0/gecode/support/symbol.cc +241 -0
  576. data/ext/gecode-2.2.0/gecode/support/symbol.icc +134 -0
  577. data/ext/{gecode-2.1.1 → gecode-2.2.0}/install-sh +0 -0
  578. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/AppleHelpbookInfo.plist +0 -0
  579. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/allexamples.perl +0 -0
  580. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/Makefile.am +0 -0
  581. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/changelog +0 -0
  582. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/control +0 -0
  583. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/copyright +0 -0
  584. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.info +0 -0
  585. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.install +0 -0
  586. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.spec +0 -0
  587. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/rules +0 -0
  588. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/back.png +0 -0
  589. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/footer.html +0 -0
  590. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/gecode-logo-100.png +0 -0
  591. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/header.html +0 -0
  592. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/stylesheet.css +0 -0
  593. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/fixproperties.sh +0 -0
  594. data/ext/gecode-2.2.0/misc/gecode-gist.pc.in +45 -0
  595. data/ext/gecode-2.2.0/misc/gecode-minimodel.pc.in +45 -0
  596. data/ext/gecode-2.2.0/misc/gecode-search.pc.in +45 -0
  597. data/ext/gecode-2.2.0/misc/gecode-serialization.pc.in +45 -0
  598. data/ext/gecode-2.2.0/misc/gecode.pc.in +45 -0
  599. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genchangelog.perl +0 -0
  600. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlcovmakefile.perl +0 -0
  601. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlicense.perl +0 -0
  602. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genregistry.perl +0 -0
  603. data/ext/gecode-2.2.0/misc/genstatistics.perl +179 -0
  604. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/gentxtchangelog.perl +0 -0
  605. data/ext/gecode-2.2.0/misc/genvariables.perl +905 -0
  606. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/getrevision.perl +0 -0
  607. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/makedepend.perl +0 -0
  608. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/svn-ignore.txt +0 -0
  609. data/ext/gecode-2.2.0/test/assign.cc +181 -0
  610. data/ext/gecode-2.2.0/test/assign.hh +93 -0
  611. data/ext/gecode-2.2.0/test/assign/bool.cc +61 -0
  612. data/ext/gecode-2.2.0/test/assign/int.cc +70 -0
  613. data/ext/gecode-2.2.0/test/branch.cc +563 -0
  614. data/ext/gecode-2.2.0/test/branch.hh +144 -0
  615. data/ext/gecode-2.2.0/test/branch/bool.cc +61 -0
  616. data/ext/gecode-2.2.0/test/branch/cpltset.cc +71 -0
  617. data/ext/gecode-2.2.0/test/branch/int.cc +70 -0
  618. data/ext/gecode-2.2.0/test/branch/set.cc +74 -0
  619. data/ext/gecode-2.2.0/test/cpltset.cc +568 -0
  620. data/ext/gecode-2.2.0/test/cpltset.hh +125 -0
  621. data/ext/gecode-2.2.0/test/cpltset/atmost.cc +155 -0
  622. data/ext/gecode-2.2.0/test/cpltset/cardinality.cc +138 -0
  623. data/ext/gecode-2.2.0/test/cpltset/dom.cc +137 -0
  624. data/ext/gecode-2.2.0/test/cpltset/partition.cc +210 -0
  625. data/ext/gecode-2.2.0/test/cpltset/rel.cc +158 -0
  626. data/ext/gecode-2.2.0/test/cpltset/select.cc +216 -0
  627. data/ext/gecode-2.2.0/test/int.cc +688 -0
  628. data/ext/gecode-2.2.0/test/int.hh +267 -0
  629. data/ext/gecode-2.2.0/test/int.icc +266 -0
  630. data/ext/gecode-2.2.0/test/int/arithmetic.cc +766 -0
  631. data/ext/gecode-2.2.0/test/int/basic.cc +77 -0
  632. data/ext/gecode-2.2.0/test/int/bool.cc +340 -0
  633. data/ext/gecode-2.2.0/test/int/channel.cc +238 -0
  634. data/ext/gecode-2.2.0/test/int/circuit.cc +100 -0
  635. data/ext/gecode-2.2.0/test/int/count.cc +357 -0
  636. data/ext/gecode-2.2.0/test/int/distinct.cc +248 -0
  637. data/ext/gecode-2.2.0/test/int/dom.cc +123 -0
  638. data/ext/gecode-2.2.0/test/int/element.cc +333 -0
  639. data/ext/gecode-2.2.0/test/int/extensional.cc +475 -0
  640. data/ext/gecode-2.2.0/test/int/gcc.cc +293 -0
  641. data/ext/gecode-2.2.0/test/int/linear.cc +383 -0
  642. data/ext/gecode-2.2.0/test/int/mm-arithmetic.cc +302 -0
  643. data/ext/gecode-2.2.0/test/int/mm-bool.cc +4342 -0
  644. data/ext/gecode-2.2.0/test/int/mm-count.cc +295 -0
  645. data/ext/gecode-2.2.0/test/int/mm-lin.cc +2035 -0
  646. data/ext/gecode-2.2.0/test/int/mm-rel.cc +136 -0
  647. data/ext/gecode-2.2.0/test/int/rel.cc +416 -0
  648. data/ext/gecode-2.2.0/test/int/scheduling.cc +276 -0
  649. data/ext/gecode-2.2.0/test/int/sorted.cc +165 -0
  650. data/ext/gecode-2.2.0/test/int/unshare.cc +109 -0
  651. data/ext/gecode-2.2.0/test/search.cc +618 -0
  652. data/ext/gecode-2.2.0/test/set.cc +753 -0
  653. data/ext/gecode-2.2.0/test/set.hh +286 -0
  654. data/ext/gecode-2.2.0/test/set.icc +108 -0
  655. data/ext/gecode-2.2.0/test/set/convex.cc +139 -0
  656. data/ext/gecode-2.2.0/test/set/distinct.cc +116 -0
  657. data/ext/gecode-2.2.0/test/set/dom.cc +292 -0
  658. data/ext/gecode-2.2.0/test/set/int.cc +473 -0
  659. data/ext/gecode-2.2.0/test/set/projection.cc +436 -0
  660. data/ext/gecode-2.2.0/test/set/rel-op-const.cc +368 -0
  661. data/ext/gecode-2.2.0/test/set/rel-op.cc +465 -0
  662. data/ext/gecode-2.2.0/test/set/rel.cc +125 -0
  663. data/ext/gecode-2.2.0/test/set/select.cc +299 -0
  664. data/ext/gecode-2.2.0/test/set/sequence.cc +125 -0
  665. data/ext/gecode-2.2.0/test/test.cc +287 -0
  666. data/ext/gecode-2.2.0/test/test.hh +175 -0
  667. data/ext/gecode-2.2.0/test/test.icc +93 -0
  668. data/ext/{gecode-2.1.1 → gecode-2.2.0}/variables.vsl +0 -0
  669. data/lib/gecoder/bindings.rb +7 -5
  670. data/lib/gecoder/bindings/bindings.rb +8 -8
  671. data/lib/gecoder/interface.rb +4 -2
  672. data/lib/gecoder/interface/binding_changes.rb +1 -1
  673. data/lib/gecoder/interface/branch.rb +1 -1
  674. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +4 -4
  675. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +2 -2
  676. data/lib/gecoder/interface/constraints/extensional_regexp.rb +1 -1
  677. data/lib/gecoder/interface/constraints/fixnum_enum_constraints.rb +2 -2
  678. data/lib/gecoder/interface/constraints/int_enum/extensional.rb +5 -5
  679. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +4 -4
  680. data/lib/gecoder/interface/constraints/int_var_constraints.rb +2 -2
  681. data/lib/gecoder/interface/constraints/selected_set/select.rb +8 -8
  682. data/lib/gecoder/interface/constraints/set_enum/element.rb +79 -0
  683. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +5 -5
  684. data/lib/gecoder/interface/constraints/set_var_constraints.rb +2 -2
  685. data/lib/gecoder/interface/convenience.rb +99 -0
  686. data/lib/gecoder/interface/enum_wrapper.rb +1 -1
  687. data/lib/gecoder/interface/mixin.rb +486 -0
  688. data/lib/gecoder/interface/search.rb +23 -22
  689. data/lib/gecoder/version.rb +1 -1
  690. data/specs/branch.rb +5 -3
  691. data/specs/constraints/bool/boolean.rb +3 -1
  692. data/specs/constraints/bool/linear.rb +3 -1
  693. data/specs/constraints/bool_enum/bool_enum_relation.rb +3 -1
  694. data/specs/constraints/bool_enum/channel.rb +3 -1
  695. data/specs/constraints/fixnum_enum/element.rb +3 -1
  696. data/specs/constraints/int/arithmetic.rb +3 -1
  697. data/specs/constraints/int/channel.rb +3 -1
  698. data/specs/constraints/int/linear.rb +3 -1
  699. data/specs/constraints/int/linear_properties.rb +3 -1
  700. data/specs/constraints/int_enum/arithmetic.rb +3 -1
  701. data/specs/constraints/int_enum/channel.rb +3 -1
  702. data/specs/constraints/int_enum/count.rb +3 -1
  703. data/specs/constraints/int_enum/distinct.rb +3 -1
  704. data/specs/constraints/int_enum/element.rb +3 -1
  705. data/specs/constraints/int_enum/sort.rb +3 -1
  706. data/specs/constraints/property_helper.rb +10 -10
  707. data/specs/constraints/reification_sugar.rb +3 -1
  708. data/specs/constraints/selected_set/select.rb +6 -5
  709. data/specs/constraints/selected_set/select_properties.rb +12 -10
  710. data/specs/constraints/set/channel.rb +3 -1
  711. data/specs/constraints/set/domain.rb +4 -4
  712. data/specs/constraints/set/relation.rb +4 -4
  713. data/specs/constraints/set_enum/channel.rb +3 -1
  714. data/specs/constraints/set_enum/distinct.rb +3 -1
  715. data/specs/constraints/set_enum/element.rb +77 -0
  716. data/specs/enum_wrapper.rb +1 -1
  717. data/specs/mixin.rb +78 -0
  718. data/specs/model.rb +5 -5
  719. data/specs/search.rb +20 -14
  720. data/specs/selected_set.rb +3 -3
  721. data/specs/set_elements.rb +2 -2
  722. data/tasks/distribution.rake +25 -4
  723. metadata +739 -602
  724. data/example/money.rb +0 -36
  725. data/ext/gecode-2.1.1/Makefile.dep +0 -7622
  726. data/ext/gecode-2.1.1/Makefile.in +0 -1568
  727. data/ext/gecode-2.1.1/changelog.in +0 -2459
  728. data/ext/gecode-2.1.1/configure +0 -11631
  729. data/ext/gecode-2.1.1/configure.ac +0 -249
  730. data/ext/gecode-2.1.1/configure.ac.in +0 -245
  731. data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +0 -263
  732. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +0 -82
  733. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +0 -37
  734. data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +0 -162
  735. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +0 -172
  736. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +0 -63
  737. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +0 -37
  738. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +0 -35
  739. data/ext/gecode-2.1.1/contribs/qecode/configure +0 -2264
  740. data/ext/gecode-2.1.1/contribs/qecode/configure.ac +0 -23
  741. data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +0 -13
  742. data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +0 -144
  743. data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +0 -73
  744. data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +0 -179
  745. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +0 -34
  746. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +0 -46
  747. data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +0 -595
  748. data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +0 -184
  749. data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +0 -69
  750. data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +0 -145
  751. data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +0 -247
  752. data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +0 -168
  753. data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +0 -73
  754. data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +0 -91
  755. data/ext/gecode-2.1.1/contribs/qecode/warner.cc +0 -101
  756. data/ext/gecode-2.1.1/contribs/qecode/warner.hh +0 -83
  757. data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +0 -1111
  758. data/ext/gecode-2.1.1/doxygen/reflection.hh +0 -417
  759. data/ext/gecode-2.1.1/gecode.m4 +0 -956
  760. data/ext/gecode-2.1.1/gecode/cpltset.hh +0 -797
  761. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +0 -115
  762. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +0 -77
  763. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +0 -245
  764. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +0 -101
  765. data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +0 -522
  766. data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +0 -254
  767. data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +0 -86
  768. data/ext/gecode-2.1.1/gecode/gist/node.cc +0 -100
  769. data/ext/gecode-2.1.1/gecode/gist/node.hh +0 -89
  770. data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +0 -124
  771. data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +0 -122
  772. data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +0 -79
  773. data/ext/gecode-2.1.1/gecode/gist/postscript.cc +0 -543
  774. data/ext/gecode-2.1.1/gecode/gist/postscript.hh +0 -56
  775. data/ext/gecode-2.1.1/gecode/gist/preferences.cc +0 -110
  776. data/ext/gecode-2.1.1/gecode/gist/preferences.hh +0 -76
  777. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +0 -55
  778. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +0 -58
  779. data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +0 -331
  780. data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +0 -140
  781. data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +0 -531
  782. data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +0 -224
  783. data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +0 -114
  784. data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +0 -1140
  785. data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +0 -324
  786. data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +0 -163
  787. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +0 -175
  788. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +0 -71
  789. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +0 -219
  790. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +0 -73
  791. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +0 -123
  792. data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +0 -303
  793. data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +0 -166
  794. data/ext/gecode-2.1.1/gecode/int.hh +0 -2035
  795. data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +0 -136
  796. data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +0 -440
  797. data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +0 -279
  798. data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +0 -253
  799. data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +0 -522
  800. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +0 -218
  801. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +0 -138
  802. data/ext/gecode-2.1.1/gecode/int/bool.cc +0 -642
  803. data/ext/gecode-2.1.1/gecode/int/bool/or.icc +0 -1000
  804. data/ext/gecode-2.1.1/gecode/int/branch.cc +0 -301
  805. data/ext/gecode-2.1.1/gecode/int/branch.hh +0 -576
  806. data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +0 -338
  807. data/ext/gecode-2.1.1/gecode/int/channel.cc +0 -114
  808. data/ext/gecode-2.1.1/gecode/int/channel.hh +0 -259
  809. data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +0 -347
  810. data/ext/gecode-2.1.1/gecode/int/channel/val.icc +0 -276
  811. data/ext/gecode-2.1.1/gecode/int/circuit.hh +0 -175
  812. data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +0 -271
  813. data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +0 -122
  814. data/ext/gecode-2.1.1/gecode/int/count.hh +0 -487
  815. data/ext/gecode-2.1.1/gecode/int/count/int.icc +0 -619
  816. data/ext/gecode-2.1.1/gecode/int/count/rel.icc +0 -144
  817. data/ext/gecode-2.1.1/gecode/int/count/view.icc +0 -449
  818. data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +0 -141
  819. data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +0 -429
  820. data/ext/gecode-2.1.1/gecode/int/distinct.hh +0 -341
  821. data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +0 -750
  822. data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +0 -136
  823. data/ext/gecode-2.1.1/gecode/int/element.hh +0 -239
  824. data/ext/gecode-2.1.1/gecode/int/element/int.icc +0 -441
  825. data/ext/gecode-2.1.1/gecode/int/element/view.icc +0 -584
  826. data/ext/gecode-2.1.1/gecode/int/exception.icc +0 -163
  827. data/ext/gecode-2.1.1/gecode/int/extensional.hh +0 -415
  828. data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +0 -565
  829. data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +0 -311
  830. data/ext/gecode-2.1.1/gecode/int/gcc.hh +0 -329
  831. data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +0 -660
  832. data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +0 -531
  833. data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +0 -400
  834. data/ext/gecode-2.1.1/gecode/int/int-set.cc +0 -153
  835. data/ext/gecode-2.1.1/gecode/int/int-set.icc +0 -191
  836. data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +0 -220
  837. data/ext/gecode-2.1.1/gecode/int/linear-int.cc +0 -240
  838. data/ext/gecode-2.1.1/gecode/int/linear.hh +0 -1849
  839. data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +0 -433
  840. data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +0 -605
  841. data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +0 -539
  842. data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +0 -493
  843. data/ext/gecode-2.1.1/gecode/int/rel.cc +0 -431
  844. data/ext/gecode-2.1.1/gecode/int/rel.hh +0 -657
  845. data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +0 -848
  846. data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +0 -248
  847. data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +0 -269
  848. data/ext/gecode-2.1.1/gecode/int/sorted.cc +0 -91
  849. data/ext/gecode-2.1.1/gecode/int/sorted.hh +0 -117
  850. data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +0 -182
  851. data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +0 -257
  852. data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +0 -208
  853. data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +0 -669
  854. data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +0 -596
  855. data/ext/gecode-2.1.1/gecode/int/var-imp.icc +0 -745
  856. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +0 -104
  857. data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +0 -407
  858. data/ext/gecode-2.1.1/gecode/int/var/bool.icc +0 -126
  859. data/ext/gecode-2.1.1/gecode/int/var/int.icc +0 -151
  860. data/ext/gecode-2.1.1/gecode/int/view.icc +0 -1894
  861. data/ext/gecode-2.1.1/gecode/iter.hh +0 -90
  862. data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +0 -130
  863. data/ext/gecode-2.1.1/gecode/kernel.hh +0 -182
  864. data/ext/gecode-2.1.1/gecode/kernel/branching.icc +0 -447
  865. data/ext/gecode-2.1.1/gecode/kernel/core.cc +0 -473
  866. data/ext/gecode-2.1.1/gecode/kernel/core.icc +0 -2295
  867. data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +0 -458
  868. data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +0 -921
  869. data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +0 -1012
  870. data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +0 -433
  871. data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +0 -269
  872. data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +0 -227
  873. data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +0 -72
  874. data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +0 -915
  875. data/ext/gecode-2.1.1/gecode/kernel/var.icc +0 -120
  876. data/ext/gecode-2.1.1/gecode/kernel/view.icc +0 -611
  877. data/ext/gecode-2.1.1/gecode/minimodel.hh +0 -1165
  878. data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +0 -179
  879. data/ext/gecode-2.1.1/gecode/search.hh +0 -752
  880. data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +0 -237
  881. data/ext/gecode-2.1.1/gecode/serialization.hh +0 -149
  882. data/ext/gecode-2.1.1/gecode/serialization/boost.cc +0 -78
  883. data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +0 -340
  884. data/ext/gecode-2.1.1/gecode/serialization/register.cc +0 -8142
  885. data/ext/gecode-2.1.1/gecode/set.hh +0 -970
  886. data/ext/gecode-2.1.1/gecode/set/projectors.hh +0 -438
  887. data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +0 -312
  888. data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +0 -557
  889. data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +0 -409
  890. data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +0 -172
  891. data/ext/gecode-2.1.1/gecode/set/select.cc +0 -135
  892. data/ext/gecode-2.1.1/gecode/set/select.hh +0 -233
  893. data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +0 -308
  894. data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +0 -75
  895. data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +0 -113
  896. data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +0 -155
  897. data/ext/gecode-2.1.1/gecode/set/select/inter.icc +0 -349
  898. data/ext/gecode-2.1.1/gecode/set/select/union.icc +0 -371
  899. data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +0 -334
  900. data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +0 -214
  901. data/ext/gecode-2.1.1/gecode/set/var/set.icc +0 -303
  902. data/ext/gecode-2.1.1/gecode/set/view.icc +0 -1503
  903. data/ext/gecode-2.1.1/gecode/set/view/complement.icc +0 -629
  904. data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +0 -158
  905. data/ext/gecode-2.1.1/gecode/support/config.icc.in +0 -80
  906. data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +0 -122
  907. data/ext/gecode-2.1.1/gecode/support/symbol.cc +0 -226
  908. data/ext/gecode-2.1.1/gecode/support/symbol.icc +0 -130
  909. data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +0 -45
  910. data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +0 -45
  911. data/ext/gecode-2.1.1/misc/gecode-search.pc.in +0 -45
  912. data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +0 -45
  913. data/ext/gecode-2.1.1/misc/gecode.pc.in +0 -45
  914. data/ext/gecode-2.1.1/misc/genstatistics.perl +0 -178
  915. data/ext/gecode-2.1.1/misc/genvariables.perl +0 -905
  916. data/lib/gecoder/interface/constraints/set_enum/select.rb +0 -79
  917. data/lib/gecoder/interface/model.rb +0 -453
  918. data/lib/gecoder/interface/model_sugar.rb +0 -84
  919. data/specs/constraints/set_enum/select.rb +0 -73
@@ -1,227 +0,0 @@
1
- /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
- /*
3
- * Main authors:
4
- * Guido Tack <tack@gecode.org>
5
- *
6
- * Copyright:
7
- * Guido Tack, 2007
8
- *
9
- * Last modified:
10
- * $Date: 2008-01-28 12:40:59 +0100 (Mon, 28 Jan 2008) $ by $Author: tack $
11
- * $Revision: 5988 $
12
- *
13
- * This file is part of Gecode, the generic constraint
14
- * development environment:
15
- * http://www.gecode.org
16
- *
17
- * Permission is hereby granted, free of charge, to any person obtaining
18
- * a copy of this software and associated documentation files (the
19
- * "Software"), to deal in the Software without restriction, including
20
- * without limitation the rights to use, copy, modify, merge, publish,
21
- * distribute, sublicense, and/or sell copies of the Software, and to
22
- * permit persons to whom the Software is furnished to do so, subject to
23
- * the following conditions:
24
- *
25
- * The above copyright notice and this permission notice shall be
26
- * included in all copies or substantial portions of the Software.
27
- *
28
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
- *
36
- */
37
-
38
- #include <sstream>
39
-
40
- namespace Gecode { namespace Reflection {
41
-
42
- class VarMapIter;
43
-
44
- /**
45
- * \brief Mapping %Gecode variable implementations to variable specifications
46
- *
47
- * The reflection API always references variables by indices into a VarMap.
48
- * The VarMap is filled with information when you access the specification
49
- * of a propagator. If, for instance, a propagator references some
50
- * IntVarImp, and that particular variable implementation is already
51
- * contained in the VarMap, the ActorSpec for the propagator will contain a
52
- * reference to the index of the variable implementation. If it is not
53
- * already in the VarMap, its VarSpec is extracted, and the variable
54
- * implementation is put in the map. The ActorSpec then of course
55
- * references the newly created index.
56
- *
57
- * A VarMap also maps variable implementations to names. The names can be
58
- * assigned in the script, using the virtual function Space::getVars (see
59
- * Queens as an example). That way, the variables mentioned in an ActorSpec
60
- * can be identified with variables from the model.
61
- *
62
- * \ingroup TaskReflection
63
- */
64
- class GECODE_KERNEL_EXPORT VarMap {
65
- friend class VarMapIter;
66
- private:
67
- class VarMapObj;
68
- VarMapObj* vo;
69
-
70
- public:
71
- /// Default constructor
72
- VarMap(void);
73
- /// Copy constructor
74
- VarMap(const VarMap&);
75
- /// Assignment operator
76
- VarMap& operator=(const VarMap&);
77
- /// Destructor
78
- GECODE_MSC_VIRTUAL ~VarMap(void);
79
-
80
- /// Return number of entries
81
- int size(void) const;
82
-
83
- /// Return index for variable implementation \a x
84
- int index(const VarImpBase* x) const;
85
- /// Return index for variable implementation with name \a n
86
- int index(const Support::Symbol& n) const;
87
-
88
- /// Return if variable implementation with name \a n is known
89
- bool nameIsKnown(const Support::Symbol& n) const;
90
-
91
- /// Return if variable implementation \a x has a name
92
- bool hasName(const VarImpBase* x) const;
93
- /// Return if variable implementation at index \a i has a name
94
- bool hasName(int i) const;
95
-
96
- /// Return name for variable implementation \a x
97
- Support::Symbol name(const VarImpBase* x) const;
98
- /// Return name for variable implementation at index \a i
99
- Support::Symbol name(int i) const;
100
-
101
- /// Return variable implementation with name \a n
102
- VarImpBase* varImpBase(const Support::Symbol& n) const;
103
- /// Return variable implementation at index \a i
104
- VarImpBase* varImpBase(int i) const;
105
- /// Return variable with name \a n
106
- Var var(const Support::Symbol& n) const;
107
- /// Return variable at index \a i
108
- Var var(int i) const;
109
-
110
- /// Return specification for variable implementation \a x
111
- VarSpec& spec(const VarImpBase* x) const;
112
- /// Return specification for variable implementation at index \a i
113
- VarSpec& spec(int i) const;
114
- /// Return specification for variable implementation with name \a n
115
- VarSpec& spec(const Support::Symbol& n) const;
116
-
117
- /// Register name \a n for variable implementation \a x
118
- void name(VarImpBase* x, const Support::Symbol& n);
119
-
120
- /// Insert specification \a vs for variable implementation \a x, return index
121
- int put(const VarImpBase* x, VarSpec* vs);
122
-
123
- /// Insert a shared object into the table
124
- void putMasterObject(void* obj);
125
- /// Get the index of a shared object from the table
126
- int getSharedIndex(void* obj) const;
127
- /// Get the shared object stored at index \a i
128
- void* getSharedObject(int i) const;
129
-
130
- /// \name Interface for modeling
131
- //@{
132
- /// Insert specification for variable \a v with name \a n
133
- template <class Var> void
134
- put(Space* home, const Var& v, const Support::Symbol& n,
135
- bool registerOnly = false);
136
- /// Insert specifications for variables in \a x with name \a n
137
- template <class Var> void
138
- putArray(Space* home, const VarArgArray<Var>& v,
139
- const Support::Symbol& n, bool registerOnly = false);
140
- /// Insert specifications for variables in \a x with name \a n
141
- template <class Var> void
142
- putArray(Space* home, const VarArray<Var>& v, const Support::Symbol& n,
143
- bool registerOnly = false);
144
-
145
- //@}
146
-
147
- };
148
-
149
- /**
150
- * \brief Iterating a variable map
151
- *
152
- * The variable map is filled dynamically while iterating over the
153
- * actors of a space. The iterator will signal that it is done when all
154
- * currently known variables have been iterated, but it will later become
155
- * available again once new variables are encountered.
156
- *
157
- * \ingroup TaskReflection
158
- */
159
- class GECODE_KERNEL_EXPORT VarMapIter {
160
- private:
161
- /// The variable map to iterate
162
- VarMap* m;
163
- /// The current index
164
- int i;
165
- public:
166
- /// Construct iterator for variable map \a m
167
- VarMapIter(VarMap& m);
168
- /// Test whether iterator still has variables or is done
169
- bool operator()(void) const;
170
- /// Return variable specification for current iterator position
171
- VarSpec& spec(void) const;
172
- /// Return variable implementation for current iterator position
173
- VarImpBase* varImpBase(void) const;
174
- /// Return variable for current iterator position
175
- Var var(void) const;
176
- /// Move iterator to next variable
177
- void operator++(void);
178
- };
179
-
180
- template <> void
181
- inline
182
- VarMap::put(Space* home, const Reflection::Var& x,
183
- const Support::Symbol& n, bool registerOnly) {
184
- name(x.var<VarImpBase>(), n);
185
- if (!registerOnly) {
186
- Reflection::Arg* a = x.spec(home, *this);
187
- delete a;
188
- }
189
- }
190
-
191
- template <class V> void
192
- VarMap::put(Space* home, const V& x, const Support::Symbol& n,
193
- bool registerOnly) {
194
- typename VarViewTraits<V>::View v(x);
195
- name(v.var(), n);
196
- if (!registerOnly) {
197
- Reflection::Arg* a = v.spec(home, *this);
198
- delete a;
199
- }
200
- }
201
-
202
- template <class Var> void
203
- VarMap::putArray(Space* home, const VarArgArray<Var>& x,
204
- const Support::Symbol& n, bool registerOnly) {
205
- for (int i=0; i<x.size(); i++) {
206
- std::stringstream s;
207
- s << i;
208
- Support::Symbol nn = n.copy();
209
- nn += Support::Symbol(s.str().c_str(), true);
210
- put(home, x[i], nn, registerOnly);
211
- }
212
- }
213
- template <class Var> void
214
- VarMap::putArray(Space* home, const VarArray<Var>& x,
215
- const Support::Symbol& n, bool registerOnly) {
216
- for (int i=0; i<x.size(); i++) {
217
- std::stringstream s;
218
- s << i;
219
- Support::Symbol nn = n.copy();
220
- nn += Support::Symbol(s.str().c_str(), true);
221
- put(home, x[i], nn, registerOnly);
222
- }
223
- }
224
-
225
- }}
226
-
227
- // STATISTICS: kernel-other
@@ -1,72 +0,0 @@
1
- /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
- /*
3
- * Main authors:
4
- * Christian Schulte <schulte@gecode.org>
5
- *
6
- * Copyright:
7
- * Christian Schulte, 2005
8
- *
9
- * Last modified:
10
- * $Date: 2008-02-22 06:55:38 +0100 (Fri, 22 Feb 2008) $ by $Author: schulte $
11
- * $Revision: 6274 $
12
- *
13
- * This file is part of Gecode, the generic constraint
14
- * development environment:
15
- * http://www.gecode.org
16
- *
17
- * Permission is hereby granted, free of charge, to any person obtaining
18
- * a copy of this software and associated documentation files (the
19
- * "Software"), to deal in the Software without restriction, including
20
- * without limitation the rights to use, copy, modify, merge, publish,
21
- * distribute, sublicense, and/or sell copies of the Software, and to
22
- * permit persons to whom the Software is furnished to do so, subject to
23
- * the following conditions:
24
- *
25
- * The above copyright notice and this permission notice shall be
26
- * included in all copies or substantial portions of the Software.
27
- *
28
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
- *
36
- */
37
-
38
- namespace Gecode {
39
-
40
- /**
41
- * \brief Traits class for mapping variables to views
42
- *
43
- * Each variable must specialize this traits class and add a \code
44
- * typedef \endcode for the view corresponding to this variable.
45
- */
46
- template <class Var>
47
- class VarViewTraits {};
48
-
49
- /**
50
- * \brief Traits class for mapping variable implementations to variables
51
- *
52
- * Each variable implementation must specialize this traits class and add
53
- * a \code typedef \endcode for the corresponding variable.
54
- */
55
- template <class VarImp>
56
- class VarImpVarTraits {};
57
-
58
- /**
59
- * \brief Traits class for views and variable implementations
60
- *
61
- * Each view must specialize this traits class and add a \code
62
- * typedef \endcode for the variable implementation belonging to
63
- * this view.
64
- *
65
- * \ingroup TaskVarView
66
- */
67
- template <class View>
68
- class ViewVarImpTraits {};
69
-
70
- }
71
-
72
- // STATISTICS: kernel-other
@@ -1,915 +0,0 @@
1
- /*
2
- * CAUTION:
3
- * This file has been automatically generated. Do not edit,
4
- * edit the specification file "variable.vsl" and the following
5
- * files instead:
6
- * - gecode/int/var-imp/int.vis
7
- * - gecode/int/var-imp/bool.vis
8
- * - gecode/set/var-imp/set.vis
9
- * - gecode/cpltset/var-imp/cpltset.vis
10
- *
11
- * This file contains generated code fragments which are
12
- * copyrighted as follows:
13
- *
14
- * Main author:
15
- * Christian Schulte <schulte@gecode.org>
16
- *
17
- * Copyright:
18
- * Christian Schulte, 2007
19
- *
20
- * The generated code fragments are part of Gecode, the generic
21
- * constraint development environment:
22
- * http://www.gecode.org
23
- *
24
- * Permission is hereby granted, free of charge, to any person obtaining
25
- * a copy of this software and associated documentation files (the
26
- * "Software"), to deal in the Software without restriction, including
27
- * without limitation the rights to use, copy, modify, merge, publish,
28
- * distribute, sublicense, and/or sell copies of the Software, and to
29
- * permit persons to whom the Software is furnished to do so, subject to
30
- * the following conditions:
31
- *
32
- * The above copyright notice and this permission notice shall be
33
- * included in all copies or substantial portions of the Software.
34
- *
35
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
37
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
39
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
40
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
41
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
42
- *
43
- */
44
-
45
- #ifdef GECODE_HAS_INT_VARS
46
- namespace Gecode { namespace Int {
47
- /**
48
- * \defgroup TaskActorIntMEPC Integer modification events and propagation conditions
49
- * \ingroup TaskActorInt
50
- */
51
- //@{
52
- /// Domain operation has resulted in failure
53
- const Gecode::ModEvent ME_INT_FAILED = Gecode::ME_GEN_FAILED;
54
- /// Domain operation has not changed domain
55
- const Gecode::ModEvent ME_INT_NONE = Gecode::ME_GEN_NONE;
56
- /// Domain operation has resulted in a value (assigned variable)
57
- const Gecode::ModEvent ME_INT_VAL = Gecode::ME_GEN_ASSIGNED;
58
- /**
59
- * \brief Domain operation has changed the minimum or maximum of the domain
60
- *
61
- * Note that this implies that the domain has not resulted in a value.
62
- *
63
- * If a propagator subscribes to this variable, it will be processed
64
- * assuming a ME_INT_BND modification event.
65
- */
66
- const Gecode::ModEvent ME_INT_BND = Gecode::ME_GEN_ASSIGNED + 1;
67
- /**
68
- * \brief Domain operation has changed the domain
69
- *
70
- * Note that this implies that the domain has not resulted in a value
71
- * and that also the minimum and maximum of the domain have not changed.
72
- */
73
- const Gecode::ModEvent ME_INT_DOM = Gecode::ME_GEN_ASSIGNED + 2;
74
- /// Propagation condition to be ignored (convenience)
75
- const Gecode::PropCond PC_INT_NONE = Gecode::PC_GEN_NONE;
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_INT_VAL, then \a p is propagated when a domain
81
- * update operation on \a x returns the modification event ME_INT_VAL.
82
- */
83
- const Gecode::PropCond PC_INT_VAL = Gecode::PC_GEN_ASSIGNED;
84
- /**
85
- * \brief Propagate when minimum or maximum of a view changes
86
- *
87
- * If a propagator \a p depends on a view \a x with propagation
88
- * condition PC_INT_BND, then \a p is propagated when a domain
89
- * update operation on \a x returns the modification events ME_INT_VAL
90
- * or ME_INT_BND.
91
- */
92
- const Gecode::PropCond PC_INT_BND = Gecode::PC_GEN_ASSIGNED + 1;
93
- /**
94
- * \brief Propagate when domain changes
95
- *
96
- * If a propagator \a p depends on a view \a x with propagation
97
- * condition PC_INT_DOM, then \a p is propagated when a domain
98
- * update operation on \a x returns the modification event ME_INT_VAL,
99
- * ME_INT_BND, or ME_INT_DOM.
100
- */
101
- const Gecode::PropCond PC_INT_DOM = Gecode::PC_GEN_ASSIGNED + 2;
102
- //@}
103
- }}
104
- #endif
105
- #ifdef GECODE_HAS_INT_VARS
106
- namespace Gecode { namespace Int {
107
- /**
108
- * \defgroup TaskActorIntMEPC Integer modification events and propagation conditions
109
- * \ingroup TaskActorInt
110
- */
111
- //@{
112
- /// Domain operation has resulted in failure
113
- const Gecode::ModEvent ME_BOOL_FAILED = Gecode::ME_GEN_FAILED;
114
- /// Domain operation has not changed domain
115
- const Gecode::ModEvent ME_BOOL_NONE = Gecode::ME_GEN_NONE;
116
- /// Domain operation has resulted in a value (assigned variable)
117
- const Gecode::ModEvent ME_BOOL_VAL = Gecode::ME_GEN_ASSIGNED;
118
- /// Propagation condition to be ignored (convenience)
119
- const Gecode::PropCond PC_BOOL_NONE = Gecode::PC_GEN_NONE;
120
- /**
121
- * \brief Propagate when a view becomes assigned (single value)
122
- *
123
- * If a propagator \a p depends on a view \a x with propagation
124
- * condition PC_BOOL_VAL, then \a p is propagated when a domain
125
- * update operation on \a x returns the modification event ME_BOOL_VAL.
126
- */
127
- const Gecode::PropCond PC_BOOL_VAL = Gecode::PC_GEN_ASSIGNED;
128
- //@}
129
- }}
130
- #endif
131
- #ifdef GECODE_HAS_SET_VARS
132
- namespace Gecode { namespace Set {
133
- /**
134
- * \defgroup TaskActorSetMEPC Set modification events and propagation conditions
135
- * \ingroup TaskActorSet
136
- */
137
- //@{
138
- /// Domain operation has resulted in failure
139
- const Gecode::ModEvent ME_SET_FAILED = Gecode::ME_GEN_FAILED;
140
- /// Domain operation has not changed domain
141
- const Gecode::ModEvent ME_SET_NONE = Gecode::ME_GEN_NONE;
142
- /// Domain operation has resulted in a value (assigned variable)
143
- const Gecode::ModEvent ME_SET_VAL = Gecode::ME_GEN_ASSIGNED;
144
- /**
145
- * \brief Domain operation has changed the variable cardinality
146
- *
147
- * Note that this implies that the domain has not resulted in a value.
148
- */
149
- const Gecode::ModEvent ME_SET_CARD = Gecode::ME_GEN_ASSIGNED + 1;
150
- /**
151
- * \brief Domain operation has changed the least upper bound
152
- *
153
- * Note that this implies that the domain has not resulted in a value
154
- * and that also neither cardinality nor the greatest lower bound
155
- * have changed.
156
- */
157
- const Gecode::ModEvent ME_SET_LUB = Gecode::ME_GEN_ASSIGNED + 2;
158
- /**
159
- * \brief Domain operation has changed the greatest lower bound
160
- *
161
- * Note that this implies that the domain has not resulted in a value
162
- * and that also neither cardinality nor the least upper bound
163
- * have changed.
164
- */
165
- const Gecode::ModEvent ME_SET_GLB = Gecode::ME_GEN_ASSIGNED + 3;
166
- /**
167
- * \brief Domain operation has changed both greatest lower and least
168
- * upper bound
169
- *
170
- * Note that this implies that the domain has not resulted in a value
171
- * and that also the cardinality has not changed.
172
- */
173
- const Gecode::ModEvent ME_SET_BB = Gecode::ME_GEN_ASSIGNED + 4;
174
- /**
175
- * \brief Domain operation has changed the least upper bound and the cardinality
176
- *
177
- * Note that this implies that the domain has not resulted in a value
178
- * and that also the greatest lower bound has not changed.
179
- */
180
- const Gecode::ModEvent ME_SET_CLUB = Gecode::ME_GEN_ASSIGNED + 5;
181
- /**
182
- * \brief Domain operation has changed the greatest lower bound and the cardinality
183
- *
184
- * Note that this implies that the domain has not resulted in a value
185
- * and that also the least upper bound has not changed.
186
- */
187
- const Gecode::ModEvent ME_SET_CGLB = Gecode::ME_GEN_ASSIGNED + 6;
188
- /**
189
- * \brief Domain operation has changed both the greatest lower bound and
190
- * the least upper bound, as well as the cardinality
191
- *
192
- * Note that this implies that the domain has not resulted in a value.
193
- *
194
- * If a propagator subscribes to this variable, it will be processed
195
- * assuming a ME_SET_CBB modification event.
196
- *
197
- */
198
- const Gecode::ModEvent ME_SET_CBB = Gecode::ME_GEN_ASSIGNED + 7;
199
- /// Propagation condition to be ignored (convenience)
200
- const Gecode::PropCond PC_SET_NONE = Gecode::PC_GEN_NONE;
201
- /**
202
- * \brief Propagate when a view becomes assigned (single value)
203
- *
204
- * If a propagator \a p depends on a view \a x with propagation
205
- * condition PC_SET_VAL, then \a p is propagated when a domain
206
- * update operation on \a x returns the modification event ME_SET_VAL.
207
- */
208
- const Gecode::PropCond PC_SET_VAL = Gecode::PC_GEN_ASSIGNED;
209
- /**
210
- * \brief Propagate when the cardinality of a view changes
211
- *
212
- * If a propagator \a p depends on a view \a x with propagation
213
- * condition PC_SET_CARD, then \a p is propagated when a domain
214
- * update operation on \a x returns the modification event ME_SET_VAL,
215
- * ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB, or ME_SET_CBB.
216
- */
217
- const Gecode::PropCond PC_SET_CARD = Gecode::PC_GEN_ASSIGNED + 1;
218
- /**
219
- * \brief Propagate when the cardinality or the least upper bound
220
- * of a view changes
221
- *
222
- * If a propagator \a p depends on a view \a x with propagation
223
- * condition PC_SET_CLUB, then \a p is propagated when a domain
224
- * update operation on \a x returns the modification event ME_SET_VAL,
225
- * ME_SET_LUB, ME_SET_BB, ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB,
226
- * or ME_SET_CBB.
227
- */
228
- const Gecode::PropCond PC_SET_CLUB = Gecode::PC_GEN_ASSIGNED + 2;
229
- /**
230
- * \brief Propagate when the cardinality or the greatest lower bound
231
- * of a view changes
232
- *
233
- * If a propagator \a p depends on a view \a x with propagation
234
- * condition PC_SET_CGLB, then \a p is propagated when a domain
235
- * update operation on \a x returns the modification event ME_SET_VAL,
236
- * ME_SET_GLB, ME_SET_BB, ME_SET_CARD, ME_SET_CGLB, ME_SET_CLUB,
237
- * or ME_SET_CBB.
238
- */
239
- const Gecode::PropCond PC_SET_CGLB = Gecode::PC_GEN_ASSIGNED + 3;
240
- /**
241
- * \brief Propagate when any bound or the cardinality
242
- * of a view changes
243
- *
244
- * If a propagator \a p depends on a view \a x with propagation
245
- * condition PC_SET_ANY, then \a p is propagated when a domain
246
- * update operation on \a x returns any modification event but ME_SET_FAILED
247
- * and ME_SET_NONE.
248
- */
249
- const Gecode::PropCond PC_SET_ANY = Gecode::PC_GEN_ASSIGNED + 4;
250
- //@}
251
- }}
252
- #endif
253
- #ifdef GECODE_HAS_CPLTSET_VARS
254
- namespace Gecode { namespace CpltSet {
255
- /**
256
- * \defgroup TaskActorCpltSetMEPC CpltSet modification events and propagation conditions
257
- * \ingroup TaskActorCpltSet
258
- */
259
- //@{
260
- /// Domain operation has resulted in failure
261
- const Gecode::ModEvent ME_CPLTSET_FAILED = Gecode::ME_GEN_FAILED;
262
- /// Domain operation has not changed domain
263
- const Gecode::ModEvent ME_CPLTSET_NONE = Gecode::ME_GEN_NONE;
264
- /// Domain operation has resulted in a value (assigned variable)
265
- const Gecode::ModEvent ME_CPLTSET_VAL = Gecode::ME_GEN_ASSIGNED;
266
- /**
267
- * \brief Domain operation has modified set
268
- */
269
- const Gecode::ModEvent ME_CPLTSET_DOM = Gecode::ME_GEN_ASSIGNED + 1;
270
- /// Propagation condition to be ignored (convenience)
271
- const Gecode::PropCond PC_CPLTSET_NONE = Gecode::PC_GEN_NONE;
272
- /**
273
- * \brief Propagate when a view becomes assigned (single value)
274
- *
275
- * If a propagator \a p depends on a view \a x with propagation
276
- * condition PC_CPLTSET_VAL, then \a p is propagated when a domain
277
- * update operation on \a x returns the modification event ME_CPLTSET_VAL.
278
- */
279
- const Gecode::PropCond PC_CPLTSET_VAL = Gecode::PC_GEN_ASSIGNED;
280
- /**
281
- * \brief Propagate when the domain of a view changes
282
- *
283
- * If a propagator \a p depends on a view \a x with propagation
284
- * condition PC_CPLTSET_DOM, then \a p is propagated when a domain
285
- * update operation on \a x returns the modification event ME_CPLTSET_VAL or
286
- * ME_CPLTSET_DOM.
287
- */
288
- const Gecode::PropCond PC_CPLTSET_DOM = Gecode::PC_GEN_ASSIGNED + 1;
289
- //@}
290
- }}
291
- #endif
292
- #ifdef GECODE_HAS_INT_VARS
293
- namespace Gecode { namespace Int {
294
- /// Configuration for Int-variable implementations
295
- class IntVarImpConf {
296
- public:
297
- /// Index for cloning
298
- static const int idx_c = 0;
299
- /// Index for disposal
300
- static const int idx_d = -1;
301
- /// Maximal propagation condition
302
- static const Gecode::PropCond pc_max = PC_INT_DOM;
303
- /// Freely available bits
304
- static const int free_bits = 0;
305
- /// Start of bits for modification event delta
306
- static const int med_fst = 0;
307
- /// End of bits for modification event delta
308
- static const int med_lst = med_fst + 2;
309
- /// Bitmask for modification event delta
310
- static const int med_mask = ((1 << 2) - 1) << med_fst;
311
- /// Combine modification events \a me1 and \a me2
312
- static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2);
313
- /// Update modification even delta \a med by \a me, return true on change
314
- static bool med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me);
315
- /// Variable type identifier for reflection
316
- static GECODE_KERNEL_EXPORT const Gecode::Support::Symbol vti;
317
- };
318
- }}
319
- #else
320
- namespace Gecode { namespace Int {
321
- /// Dummy configuration for Int-variable implementations
322
- class IntVarImpConf {
323
- public:
324
- /// Index for cloning
325
- static const int idx_c = -1;
326
- /// Index for disposal
327
- static const int idx_d = -1;
328
- /// End of bits for modification event delta
329
- static const int med_lst = 0;
330
- };
331
- }}
332
- #endif
333
- #ifdef GECODE_HAS_INT_VARS
334
- namespace Gecode { namespace Int {
335
- /// Configuration for Bool-variable implementations
336
- class BoolVarImpConf {
337
- public:
338
- /// Index for cloning
339
- static const int idx_c = Gecode::Int::IntVarImpConf::idx_c+1;
340
- /// Index for disposal
341
- static const int idx_d = Gecode::Int::IntVarImpConf::idx_d;
342
- /// Maximal propagation condition
343
- static const Gecode::PropCond pc_max = PC_BOOL_VAL;
344
- /// Freely available bits
345
- static const int free_bits = 2;
346
- /// Start of bits for modification event delta
347
- static const int med_fst = Gecode::Int::IntVarImpConf::med_lst;
348
- /// End of bits for modification event delta
349
- static const int med_lst = med_fst + 1;
350
- /// Bitmask for modification event delta
351
- static const int med_mask = ((1 << 1) - 1) << med_fst;
352
- /// Combine modification events \a me1 and \a me2
353
- static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2);
354
- /// Update modification even delta \a med by \a me, return true on change
355
- static bool med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me);
356
- /// Variable type identifier for reflection
357
- static GECODE_KERNEL_EXPORT const Gecode::Support::Symbol vti;
358
- };
359
- }}
360
- #else
361
- namespace Gecode { namespace Int {
362
- /// Dummy configuration for Bool-variable implementations
363
- class BoolVarImpConf {
364
- public:
365
- /// Index for cloning
366
- static const int idx_c = Gecode::Int::IntVarImpConf::idx_c;
367
- /// Index for disposal
368
- static const int idx_d = Gecode::Int::IntVarImpConf::idx_d;
369
- /// End of bits for modification event delta
370
- static const int med_lst = Gecode::Int::IntVarImpConf::med_lst;
371
- };
372
- }}
373
- #endif
374
- #ifdef GECODE_HAS_SET_VARS
375
- namespace Gecode { namespace Set {
376
- /// Configuration for Set-variable implementations
377
- class SetVarImpConf {
378
- public:
379
- /// Index for cloning
380
- static const int idx_c = Gecode::Int::BoolVarImpConf::idx_c+1;
381
- /// Index for disposal
382
- static const int idx_d = Gecode::Int::BoolVarImpConf::idx_d;
383
- /// Maximal propagation condition
384
- static const Gecode::PropCond pc_max = PC_SET_ANY;
385
- /// Freely available bits
386
- static const int free_bits = 0;
387
- /// Start of bits for modification event delta
388
- static const int med_fst = Gecode::Int::BoolVarImpConf::med_lst;
389
- /// End of bits for modification event delta
390
- static const int med_lst = med_fst + 4;
391
- /// Bitmask for modification event delta
392
- static const int med_mask = ((1 << 4) - 1) << med_fst;
393
- /// Combine modification events \a me1 and \a me2
394
- static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2);
395
- /// Update modification even delta \a med by \a me, return true on change
396
- static bool med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me);
397
- /// Variable type identifier for reflection
398
- static GECODE_KERNEL_EXPORT const Gecode::Support::Symbol vti;
399
- };
400
- }}
401
- #else
402
- namespace Gecode { namespace Set {
403
- /// Dummy configuration for Set-variable implementations
404
- class SetVarImpConf {
405
- public:
406
- /// Index for cloning
407
- static const int idx_c = Gecode::Int::BoolVarImpConf::idx_c;
408
- /// Index for disposal
409
- static const int idx_d = Gecode::Int::BoolVarImpConf::idx_d;
410
- /// End of bits for modification event delta
411
- static const int med_lst = Gecode::Int::BoolVarImpConf::med_lst;
412
- };
413
- }}
414
- #endif
415
- #ifdef GECODE_HAS_CPLTSET_VARS
416
-
417
- #ifndef GECODE_HAS_VAR_DISPOSE
418
- #define GECODE_HAS_VAR_DISPOSE 1
419
- #endif
420
-
421
- namespace Gecode { namespace CpltSet {
422
- /// Configuration for CpltSet-variable implementations
423
- class CpltSetVarImpConf {
424
- public:
425
- /// Index for cloning
426
- static const int idx_c = Gecode::Set::SetVarImpConf::idx_c+1;
427
- /// Index for disposal
428
- static const int idx_d = Gecode::Set::SetVarImpConf::idx_d+1;
429
- /// Maximal propagation condition
430
- static const Gecode::PropCond pc_max = PC_CPLTSET_DOM;
431
- /// Freely available bits
432
- static const int free_bits = 0;
433
- /// Start of bits for modification event delta
434
- static const int med_fst = Gecode::Set::SetVarImpConf::med_lst;
435
- /// End of bits for modification event delta
436
- static const int med_lst = med_fst + 2;
437
- /// Bitmask for modification event delta
438
- static const int med_mask = ((1 << 2) - 1) << med_fst;
439
- /// Combine modification events \a me1 and \a me2
440
- static Gecode::ModEvent me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2);
441
- /// Update modification even delta \a med by \a me, return true on change
442
- static bool med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me);
443
- /// Variable type identifier for reflection
444
- static GECODE_KERNEL_EXPORT const Gecode::Support::Symbol vti;
445
- };
446
- }}
447
- #else
448
- namespace Gecode { namespace CpltSet {
449
- /// Dummy configuration for CpltSet-variable implementations
450
- class CpltSetVarImpConf {
451
- public:
452
- /// Index for cloning
453
- static const int idx_c = Gecode::Set::SetVarImpConf::idx_c;
454
- /// Index for disposal
455
- static const int idx_d = Gecode::Set::SetVarImpConf::idx_d;
456
- /// End of bits for modification event delta
457
- static const int med_lst = Gecode::Set::SetVarImpConf::med_lst;
458
- };
459
- }}
460
- #endif
461
-
462
- namespace Gecode {
463
-
464
- /// Configuration for all variable implementations
465
- class AllVarConf {
466
- public:
467
- /// Index for cloning
468
- static const int idx_c = Gecode::CpltSet::CpltSetVarImpConf::idx_c+1;
469
- /// Index for dispose
470
- static const int idx_d = Gecode::CpltSet::CpltSetVarImpConf::idx_d+1;
471
- /// Combine modification event delta \a med1 with \a med2
472
- static ModEventDelta med_combine(ModEventDelta med1, ModEventDelta med2);
473
- };
474
-
475
- }
476
-
477
- #ifdef GECODE_HAS_INT_VARS
478
- namespace Gecode { namespace Int {
479
- forceinline Gecode::ModEvent
480
- IntVarImpConf::me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2) {
481
- static const Gecode::ModEvent me_c = (
482
- (
483
- (ME_INT_NONE << 0) | // [ME_INT_NONE][ME_INT_NONE]
484
- (ME_INT_VAL << 2) | // [ME_INT_NONE][ME_INT_VAL ]
485
- (ME_INT_BND << 4) | // [ME_INT_NONE][ME_INT_BND ]
486
- (ME_INT_DOM << 6) // [ME_INT_NONE][ME_INT_DOM ]
487
- ) |
488
- (
489
- (ME_INT_VAL << 8) | // [ME_INT_VAL ][ME_INT_NONE]
490
- (ME_INT_VAL << 10) | // [ME_INT_VAL ][ME_INT_VAL ]
491
- (ME_INT_VAL << 12) | // [ME_INT_VAL ][ME_INT_BND ]
492
- (ME_INT_VAL << 14) // [ME_INT_VAL ][ME_INT_DOM ]
493
- ) |
494
- (
495
- (ME_INT_BND << 16) | // [ME_INT_BND ][ME_INT_NONE]
496
- (ME_INT_VAL << 18) | // [ME_INT_BND ][ME_INT_VAL ]
497
- (ME_INT_BND << 20) | // [ME_INT_BND ][ME_INT_BND ]
498
- (ME_INT_BND << 22) // [ME_INT_BND ][ME_INT_DOM ]
499
- ) |
500
- (
501
- (ME_INT_DOM << 24) | // [ME_INT_DOM ][ME_INT_NONE]
502
- (ME_INT_VAL << 26) | // [ME_INT_DOM ][ME_INT_VAL ]
503
- (ME_INT_BND << 28) | // [ME_INT_DOM ][ME_INT_BND ]
504
- (ME_INT_DOM << 30) // [ME_INT_DOM ][ME_INT_DOM ]
505
- )
506
- );
507
- return ((me_c >> (me2 << 3)) >> (me1 << 1)) & 3;
508
- }
509
- forceinline bool
510
- IntVarImpConf::med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me) {
511
- switch (me) {
512
- case ME_INT_NONE:
513
- return false;
514
- case ME_INT_VAL:
515
- {
516
- Gecode::ModEventDelta med_int = med & med_mask;
517
- if (med_int == (ME_INT_VAL << med_fst))
518
- return false;
519
- med ^= med_int;
520
- med ^= ME_INT_VAL << med_fst;
521
- break;
522
- }
523
- case ME_INT_BND:
524
- {
525
- static const Gecode::ModEvent me_c = (
526
- ((ME_INT_NONE ^ ME_INT_BND ) << 0) |
527
- ((ME_INT_VAL ^ ME_INT_VAL ) << 4) |
528
- ((ME_INT_BND ^ ME_INT_BND ) << 8) |
529
- ((ME_INT_DOM ^ ME_INT_BND ) << 12)
530
- );
531
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
532
- Gecode::ModEvent me_n = (me_c >> (me_o << 2)) & med_mask;
533
- if (me_n == 0)
534
- return false;
535
- med ^= me_n << med_fst;
536
- break;
537
- }
538
- case ME_INT_DOM:
539
- {
540
- Gecode::ModEventDelta med_int = med & med_mask;
541
- if (med_int != 0)
542
- return false;
543
- med |= ME_INT_DOM << med_fst;
544
- break;
545
- }
546
- default: GECODE_NEVER;
547
- }
548
- return true;
549
- }
550
-
551
- }}
552
- #endif
553
- #ifdef GECODE_HAS_INT_VARS
554
- namespace Gecode { namespace Int {
555
- forceinline Gecode::ModEvent
556
- BoolVarImpConf::me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2) {
557
- return me1 | me2;
558
- }
559
- forceinline bool
560
- BoolVarImpConf::med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me) {
561
- switch (me) {
562
- case ME_BOOL_NONE:
563
- return false;
564
- case ME_BOOL_VAL:
565
- if ((med & (ME_BOOL_VAL << med_fst)) != 0)
566
- return false;
567
- med |= ME_BOOL_VAL << med_fst;
568
- break;
569
- default: GECODE_NEVER;
570
- }
571
- return true;
572
- }
573
-
574
- }}
575
- #endif
576
- #ifdef GECODE_HAS_SET_VARS
577
- namespace Gecode { namespace Set {
578
- forceinline Gecode::ModEvent
579
- SetVarImpConf::me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2) {
580
- static const Gecode::ModEvent me_c[ME_SET_CBB+1][ME_SET_CBB+1] = {
581
- {
582
- ME_SET_NONE, // [ME_SET_NONE][ME_SET_NONE]
583
- ME_SET_VAL , // [ME_SET_NONE][ME_SET_VAL ]
584
- ME_SET_CARD, // [ME_SET_NONE][ME_SET_CARD]
585
- ME_SET_LUB , // [ME_SET_NONE][ME_SET_LUB ]
586
- ME_SET_GLB , // [ME_SET_NONE][ME_SET_GLB ]
587
- ME_SET_BB , // [ME_SET_NONE][ME_SET_BB ]
588
- ME_SET_CLUB, // [ME_SET_NONE][ME_SET_CLUB]
589
- ME_SET_CGLB, // [ME_SET_NONE][ME_SET_CGLB]
590
- ME_SET_CBB // [ME_SET_NONE][ME_SET_CBB ]
591
- },
592
- {
593
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_NONE]
594
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_VAL ]
595
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CARD]
596
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_LUB ]
597
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_GLB ]
598
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_BB ]
599
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CLUB]
600
- ME_SET_VAL , // [ME_SET_VAL ][ME_SET_CGLB]
601
- ME_SET_VAL // [ME_SET_VAL ][ME_SET_CBB ]
602
- },
603
- {
604
- ME_SET_CARD, // [ME_SET_CARD][ME_SET_NONE]
605
- ME_SET_VAL , // [ME_SET_CARD][ME_SET_VAL ]
606
- ME_SET_CARD, // [ME_SET_CARD][ME_SET_CARD]
607
- ME_SET_CLUB, // [ME_SET_CARD][ME_SET_LUB ]
608
- ME_SET_CGLB, // [ME_SET_CARD][ME_SET_GLB ]
609
- ME_SET_CBB , // [ME_SET_CARD][ME_SET_BB ]
610
- ME_SET_CLUB, // [ME_SET_CARD][ME_SET_CLUB]
611
- ME_SET_CGLB, // [ME_SET_CARD][ME_SET_CGLB]
612
- ME_SET_CBB // [ME_SET_CARD][ME_SET_CBB ]
613
- },
614
- {
615
- ME_SET_LUB , // [ME_SET_LUB ][ME_SET_NONE]
616
- ME_SET_VAL , // [ME_SET_LUB ][ME_SET_VAL ]
617
- ME_SET_CLUB, // [ME_SET_LUB ][ME_SET_CARD]
618
- ME_SET_LUB , // [ME_SET_LUB ][ME_SET_LUB ]
619
- ME_SET_BB , // [ME_SET_LUB ][ME_SET_GLB ]
620
- ME_SET_BB , // [ME_SET_LUB ][ME_SET_BB ]
621
- ME_SET_CLUB, // [ME_SET_LUB ][ME_SET_CLUB]
622
- ME_SET_CBB , // [ME_SET_LUB ][ME_SET_CGLB]
623
- ME_SET_CBB // [ME_SET_LUB ][ME_SET_CBB ]
624
- },
625
- {
626
- ME_SET_GLB , // [ME_SET_GLB ][ME_SET_NONE]
627
- ME_SET_VAL , // [ME_SET_GLB ][ME_SET_VAL ]
628
- ME_SET_CGLB, // [ME_SET_GLB ][ME_SET_CARD]
629
- ME_SET_BB , // [ME_SET_GLB ][ME_SET_LUB ]
630
- ME_SET_GLB , // [ME_SET_GLB ][ME_SET_GLB ]
631
- ME_SET_BB , // [ME_SET_GLB ][ME_SET_BB ]
632
- ME_SET_CBB , // [ME_SET_GLB ][ME_SET_CLUB]
633
- ME_SET_CGLB, // [ME_SET_GLB ][ME_SET_CGLB]
634
- ME_SET_CBB // [ME_SET_GLB ][ME_SET_CBB ]
635
- },
636
- {
637
- ME_SET_BB , // [ME_SET_BB ][ME_SET_NONE]
638
- ME_SET_VAL , // [ME_SET_BB ][ME_SET_VAL ]
639
- ME_SET_CBB , // [ME_SET_BB ][ME_SET_CARD]
640
- ME_SET_BB , // [ME_SET_BB ][ME_SET_LUB ]
641
- ME_SET_BB , // [ME_SET_BB ][ME_SET_GLB ]
642
- ME_SET_BB , // [ME_SET_BB ][ME_SET_BB ]
643
- ME_SET_CBB , // [ME_SET_BB ][ME_SET_CLUB]
644
- ME_SET_CBB , // [ME_SET_BB ][ME_SET_CGLB]
645
- ME_SET_CBB // [ME_SET_BB ][ME_SET_CBB ]
646
- },
647
- {
648
- ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_NONE]
649
- ME_SET_VAL , // [ME_SET_CLUB][ME_SET_VAL ]
650
- ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CARD]
651
- ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_LUB ]
652
- ME_SET_CBB , // [ME_SET_CLUB][ME_SET_GLB ]
653
- ME_SET_CBB , // [ME_SET_CLUB][ME_SET_BB ]
654
- ME_SET_CLUB, // [ME_SET_CLUB][ME_SET_CLUB]
655
- ME_SET_CBB , // [ME_SET_CLUB][ME_SET_CGLB]
656
- ME_SET_CBB // [ME_SET_CLUB][ME_SET_CBB ]
657
- },
658
- {
659
- ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_NONE]
660
- ME_SET_VAL , // [ME_SET_CGLB][ME_SET_VAL ]
661
- ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CARD]
662
- ME_SET_CBB , // [ME_SET_CGLB][ME_SET_LUB ]
663
- ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_GLB ]
664
- ME_SET_CBB , // [ME_SET_CGLB][ME_SET_BB ]
665
- ME_SET_CBB , // [ME_SET_CGLB][ME_SET_CLUB]
666
- ME_SET_CGLB, // [ME_SET_CGLB][ME_SET_CGLB]
667
- ME_SET_CBB // [ME_SET_CGLB][ME_SET_CBB ]
668
- },
669
- {
670
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_NONE]
671
- ME_SET_VAL , // [ME_SET_CBB ][ME_SET_VAL ]
672
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CARD]
673
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_LUB ]
674
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_GLB ]
675
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_BB ]
676
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CLUB]
677
- ME_SET_CBB , // [ME_SET_CBB ][ME_SET_CGLB]
678
- ME_SET_CBB // [ME_SET_CBB ][ME_SET_CBB ]
679
- }
680
- };
681
- return me_c[me1][me2];
682
- }
683
- forceinline bool
684
- SetVarImpConf::med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me) {
685
- switch (me) {
686
- case ME_SET_NONE:
687
- return false;
688
- case ME_SET_VAL:
689
- {
690
- Gecode::ModEventDelta med_set = med & med_mask;
691
- if (med_set == (ME_SET_VAL << med_fst))
692
- return false;
693
- med ^= med_set;
694
- med ^= ME_SET_VAL << med_fst;
695
- break;
696
- }
697
- case ME_SET_CARD:
698
- {
699
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
700
- (ME_SET_NONE ^ ME_SET_CARD) << med_fst,
701
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
702
- (ME_SET_CARD ^ ME_SET_CARD) << med_fst,
703
- (ME_SET_LUB ^ ME_SET_CLUB) << med_fst,
704
- (ME_SET_GLB ^ ME_SET_CGLB) << med_fst,
705
- (ME_SET_BB ^ ME_SET_CBB ) << med_fst,
706
- (ME_SET_CLUB ^ ME_SET_CLUB) << med_fst,
707
- (ME_SET_CGLB ^ ME_SET_CGLB) << med_fst,
708
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
709
- };
710
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
711
- Gecode::ModEventDelta med_n = me_c[me_o];
712
- if (med_n == 0)
713
- return false;
714
- med ^= med_n;
715
- break;
716
- }
717
- case ME_SET_LUB:
718
- {
719
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
720
- (ME_SET_NONE ^ ME_SET_LUB ) << med_fst,
721
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
722
- (ME_SET_CARD ^ ME_SET_CLUB) << med_fst,
723
- (ME_SET_LUB ^ ME_SET_LUB ) << med_fst,
724
- (ME_SET_GLB ^ ME_SET_BB ) << med_fst,
725
- (ME_SET_BB ^ ME_SET_BB ) << med_fst,
726
- (ME_SET_CLUB ^ ME_SET_CLUB) << med_fst,
727
- (ME_SET_CGLB ^ ME_SET_CBB ) << med_fst,
728
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
729
- };
730
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
731
- Gecode::ModEventDelta med_n = me_c[me_o];
732
- if (med_n == 0)
733
- return false;
734
- med ^= med_n;
735
- break;
736
- }
737
- case ME_SET_GLB:
738
- {
739
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
740
- (ME_SET_NONE ^ ME_SET_GLB ) << med_fst,
741
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
742
- (ME_SET_CARD ^ ME_SET_CGLB) << med_fst,
743
- (ME_SET_LUB ^ ME_SET_BB ) << med_fst,
744
- (ME_SET_GLB ^ ME_SET_GLB ) << med_fst,
745
- (ME_SET_BB ^ ME_SET_BB ) << med_fst,
746
- (ME_SET_CLUB ^ ME_SET_CBB ) << med_fst,
747
- (ME_SET_CGLB ^ ME_SET_CGLB) << med_fst,
748
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
749
- };
750
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
751
- Gecode::ModEventDelta med_n = me_c[me_o];
752
- if (med_n == 0)
753
- return false;
754
- med ^= med_n;
755
- break;
756
- }
757
- case ME_SET_BB:
758
- {
759
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
760
- (ME_SET_NONE ^ ME_SET_BB ) << med_fst,
761
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
762
- (ME_SET_CARD ^ ME_SET_CBB ) << med_fst,
763
- (ME_SET_LUB ^ ME_SET_BB ) << med_fst,
764
- (ME_SET_GLB ^ ME_SET_BB ) << med_fst,
765
- (ME_SET_BB ^ ME_SET_BB ) << med_fst,
766
- (ME_SET_CLUB ^ ME_SET_CBB ) << med_fst,
767
- (ME_SET_CGLB ^ ME_SET_CBB ) << med_fst,
768
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
769
- };
770
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
771
- Gecode::ModEventDelta med_n = me_c[me_o];
772
- if (med_n == 0)
773
- return false;
774
- med ^= med_n;
775
- break;
776
- }
777
- case ME_SET_CLUB:
778
- {
779
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
780
- (ME_SET_NONE ^ ME_SET_CLUB) << med_fst,
781
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
782
- (ME_SET_CARD ^ ME_SET_CLUB) << med_fst,
783
- (ME_SET_LUB ^ ME_SET_CLUB) << med_fst,
784
- (ME_SET_GLB ^ ME_SET_CBB ) << med_fst,
785
- (ME_SET_BB ^ ME_SET_CBB ) << med_fst,
786
- (ME_SET_CLUB ^ ME_SET_CLUB) << med_fst,
787
- (ME_SET_CGLB ^ ME_SET_CBB ) << med_fst,
788
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
789
- };
790
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
791
- Gecode::ModEventDelta med_n = me_c[me_o];
792
- if (med_n == 0)
793
- return false;
794
- med ^= med_n;
795
- break;
796
- }
797
- case ME_SET_CGLB:
798
- {
799
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
800
- (ME_SET_NONE ^ ME_SET_CGLB) << med_fst,
801
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
802
- (ME_SET_CARD ^ ME_SET_CGLB) << med_fst,
803
- (ME_SET_LUB ^ ME_SET_CBB ) << med_fst,
804
- (ME_SET_GLB ^ ME_SET_CGLB) << med_fst,
805
- (ME_SET_BB ^ ME_SET_CBB ) << med_fst,
806
- (ME_SET_CLUB ^ ME_SET_CBB ) << med_fst,
807
- (ME_SET_CGLB ^ ME_SET_CGLB) << med_fst,
808
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
809
- };
810
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
811
- Gecode::ModEventDelta med_n = me_c[me_o];
812
- if (med_n == 0)
813
- return false;
814
- med ^= med_n;
815
- break;
816
- }
817
- case ME_SET_CBB:
818
- {
819
- static const Gecode::ModEventDelta me_c[ME_SET_CBB+1] = {
820
- (ME_SET_NONE ^ ME_SET_CBB ) << med_fst,
821
- (ME_SET_VAL ^ ME_SET_VAL ) << med_fst,
822
- (ME_SET_CARD ^ ME_SET_CBB ) << med_fst,
823
- (ME_SET_LUB ^ ME_SET_CBB ) << med_fst,
824
- (ME_SET_GLB ^ ME_SET_CBB ) << med_fst,
825
- (ME_SET_BB ^ ME_SET_CBB ) << med_fst,
826
- (ME_SET_CLUB ^ ME_SET_CBB ) << med_fst,
827
- (ME_SET_CGLB ^ ME_SET_CBB ) << med_fst,
828
- (ME_SET_CBB ^ ME_SET_CBB ) << med_fst
829
- };
830
- Gecode::ModEvent me_o = (med & med_mask) >> med_fst;
831
- Gecode::ModEventDelta med_n = me_c[me_o];
832
- if (med_n == 0)
833
- return false;
834
- med ^= med_n;
835
- break;
836
- }
837
- default: GECODE_NEVER;
838
- }
839
- return true;
840
- }
841
-
842
- }}
843
- #endif
844
- #ifdef GECODE_HAS_CPLTSET_VARS
845
- namespace Gecode { namespace CpltSet {
846
- forceinline Gecode::ModEvent
847
- CpltSetVarImpConf::me_combine(Gecode::ModEvent me1, Gecode::ModEvent me2) {
848
- static const Gecode::ModEvent me_c = (
849
- (
850
- (ME_CPLTSET_NONE << 0) | // [ME_CPLTSET_NONE][ME_CPLTSET_NONE]
851
- (ME_CPLTSET_VAL << 2) | // [ME_CPLTSET_NONE][ME_CPLTSET_VAL ]
852
- (ME_CPLTSET_DOM << 4) // [ME_CPLTSET_NONE][ME_CPLTSET_DOM ]
853
- ) |
854
- (
855
- (ME_CPLTSET_VAL << 8) | // [ME_CPLTSET_VAL ][ME_CPLTSET_NONE]
856
- (ME_CPLTSET_VAL << 10) | // [ME_CPLTSET_VAL ][ME_CPLTSET_VAL ]
857
- (ME_CPLTSET_VAL << 12) // [ME_CPLTSET_VAL ][ME_CPLTSET_DOM ]
858
- ) |
859
- (
860
- (ME_CPLTSET_DOM << 16) | // [ME_CPLTSET_DOM ][ME_CPLTSET_NONE]
861
- (ME_CPLTSET_VAL << 18) | // [ME_CPLTSET_DOM ][ME_CPLTSET_VAL ]
862
- (ME_CPLTSET_DOM << 20) // [ME_CPLTSET_DOM ][ME_CPLTSET_DOM ]
863
- )
864
- );
865
- return ((me_c >> (me2 << 3)) >> (me1 << 1)) & 3;
866
- }
867
- forceinline bool
868
- CpltSetVarImpConf::med_update(Gecode::ModEventDelta& med, Gecode::ModEvent me) {
869
- switch (me) {
870
- case ME_CPLTSET_NONE:
871
- return false;
872
- case ME_CPLTSET_VAL:
873
- {
874
- Gecode::ModEventDelta med_cpltset = med & med_mask;
875
- if (med_cpltset == (ME_CPLTSET_VAL << med_fst))
876
- return false;
877
- med ^= med_cpltset;
878
- med ^= ME_CPLTSET_VAL << med_fst;
879
- break;
880
- }
881
- case ME_CPLTSET_DOM:
882
- {
883
- Gecode::ModEventDelta med_cpltset = med & med_mask;
884
- if (med_cpltset != 0)
885
- return false;
886
- med |= ME_CPLTSET_DOM << med_fst;
887
- break;
888
- }
889
- default: GECODE_NEVER;
890
- }
891
- return true;
892
- }
893
-
894
- }}
895
- #endif
896
- namespace Gecode {
897
- forceinline ModEventDelta
898
- AllVarConf::med_combine(ModEventDelta med1, ModEventDelta med2) {
899
- #ifdef GECODE_HAS_INT_VARS
900
- (void) Gecode::Int::IntVarImpConf::med_update(med1,(med2 & Gecode::Int::IntVarImpConf::med_mask) >> Gecode::Int::IntVarImpConf::med_fst);
901
- #endif
902
- #ifdef GECODE_HAS_INT_VARS
903
- (void) Gecode::Int::BoolVarImpConf::med_update(med1,(med2 & Gecode::Int::BoolVarImpConf::med_mask) >> Gecode::Int::BoolVarImpConf::med_fst);
904
- #endif
905
- #ifdef GECODE_HAS_SET_VARS
906
- (void) Gecode::Set::SetVarImpConf::med_update(med1,(med2 & Gecode::Set::SetVarImpConf::med_mask) >> Gecode::Set::SetVarImpConf::med_fst);
907
- #endif
908
- #ifdef GECODE_HAS_CPLTSET_VARS
909
- (void) Gecode::CpltSet::CpltSetVarImpConf::med_update(med1,(med2 & Gecode::CpltSet::CpltSetVarImpConf::med_mask) >> Gecode::CpltSet::CpltSetVarImpConf::med_fst);
910
- #endif
911
- return med1;
912
- }
913
- }
914
-
915
- // STATISTICS: kernel-var