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,126 +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, 2002
8
- *
9
- * Last modified:
10
- * $Date: 2008-02-22 07:19:02 +0100 (Fri, 22 Feb 2008) $ by $Author: schulte $
11
- * $Revision: 6276 $
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
- forceinline void
41
- BoolVar::_init(Space* home, int min, int max) {
42
- assert((min >= 0) && (max <= 1) && (min <= max));
43
- if (min > 0)
44
- varimp = &Int::BoolVarImp::s_one;
45
- else if (max == 0)
46
- varimp = &Int::BoolVarImp::s_zero;
47
- else
48
- varimp = new (home) Int::BoolVarImp(home,0,1);
49
- }
50
-
51
- forceinline
52
- BoolVar::BoolVar(void) {}
53
- forceinline
54
- BoolVar::BoolVar(const BoolVar& x)
55
- : VarBase<Int::BoolVarImp>(x.varimp) {}
56
- forceinline
57
- BoolVar::BoolVar(const Int::BoolView& x)
58
- : VarBase<Int::BoolVarImp>(x.var()) {}
59
- forceinline
60
- BoolVar::BoolVar(const Reflection::Var& x)
61
- : VarBase<Int::BoolVarImp>(x) {}
62
-
63
- forceinline int
64
- BoolVar::val(void) const {
65
- return varimp->val();
66
- }
67
- forceinline int
68
- BoolVar::min(void) const {
69
- return varimp->min();
70
- }
71
- forceinline int
72
- BoolVar::med(void) const {
73
- return varimp->med();
74
- }
75
- forceinline int
76
- BoolVar::max(void) const {
77
- return varimp->max();
78
- }
79
-
80
-
81
- forceinline unsigned int
82
- BoolVar::width(void) const {
83
- return varimp->width();
84
- }
85
- forceinline unsigned int
86
- BoolVar::size(void) const {
87
- return varimp->size();
88
- }
89
-
90
-
91
-
92
- forceinline bool
93
- BoolVar::assigned(void) const {
94
- return varimp->assigned();
95
- }
96
- forceinline bool
97
- BoolVar::range(void) const {
98
- return varimp->range();
99
- }
100
- forceinline bool
101
- BoolVar::in(int n) const {
102
- return varimp->in(n);
103
- }
104
-
105
-
106
- forceinline void
107
- BoolVar::update(Space* home, bool share, BoolVar& x) {
108
- varimp = x.varimp->copy(home,share);
109
- }
110
-
111
- forceinline bool
112
- BoolVar::zero(void) const {
113
- return varimp->zero();
114
- }
115
- forceinline bool
116
- BoolVar::one(void) const {
117
- return varimp->one();
118
- }
119
- forceinline bool
120
- BoolVar::none(void) const {
121
- return varimp->none();
122
- }
123
-
124
- }
125
-
126
- // STATISTICS: int-var
@@ -1,151 +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, 2002
8
- *
9
- * Last modified:
10
- * $Date: 2008-02-22 07:19:02 +0100 (Fri, 22 Feb 2008) $ by $Author: schulte $
11
- * $Revision: 6276 $
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
- forceinline void
41
- IntVar::_init(Space* home, int min, int max) {
42
- varimp = new (home) Int::IntVarImp(home,min,max);
43
- }
44
-
45
- forceinline void
46
- IntVar::_init(Space* home, const IntSet& ds) {
47
- varimp = new (home) Int::IntVarImp(home,ds);
48
- }
49
-
50
- forceinline
51
- IntVar::IntVar(void) {}
52
- forceinline
53
- IntVar::IntVar(const IntVar& x)
54
- : VarBase<Int::IntVarImp>(x.varimp) {}
55
- forceinline
56
- IntVar::IntVar(const Int::IntView& x)
57
- : VarBase<Int::IntVarImp>(x.var()) {}
58
- forceinline
59
- IntVar::IntVar(const Reflection::Var& x)
60
- : VarBase<Int::IntVarImp>(x) {}
61
-
62
-
63
- forceinline int
64
- IntVar::val(void) const {
65
- return varimp->val();
66
- }
67
- forceinline int
68
- IntVar::min(void) const {
69
- return varimp->min();
70
- }
71
- forceinline int
72
- IntVar::med(void) const {
73
- return varimp->med();
74
- }
75
- forceinline int
76
- IntVar::max(void) const {
77
- return varimp->max();
78
- }
79
-
80
-
81
- forceinline unsigned int
82
- IntVar::width(void) const {
83
- return varimp->width();
84
- }
85
- forceinline unsigned int
86
- IntVar::size(void) const {
87
- return varimp->size();
88
- }
89
-
90
-
91
-
92
- forceinline bool
93
- IntVar::assigned(void) const {
94
- return varimp->assigned();
95
- }
96
- forceinline bool
97
- IntVar::range(void) const {
98
- return varimp->range();
99
- }
100
- forceinline bool
101
- IntVar::in(int n) const {
102
- return varimp->in(n);
103
- }
104
-
105
-
106
- forceinline void
107
- IntVar::update(Space* home, bool share, IntVar& x) {
108
- varimp = x.varimp->copy(home,share);
109
- }
110
-
111
- /*
112
- * Range iterator
113
- *
114
- */
115
- forceinline
116
- IntVarRanges::IntVarRanges(void) {}
117
-
118
- forceinline
119
- IntVarRanges::IntVarRanges(const IntVar& x)
120
- : Int::IntVarImpFwd(x.var()) {}
121
-
122
- forceinline void
123
- IntVarRanges::init(const IntVar& x) {
124
- Int::IntVarImpFwd::init(x.var());
125
- }
126
-
127
-
128
- /*
129
- * Value iterator
130
- *
131
- */
132
-
133
- forceinline
134
- IntVarValues::IntVarValues(void) {}
135
-
136
- forceinline
137
- IntVarValues::IntVarValues(const IntVar& x) {
138
- IntVarRanges r(x);
139
- Iter::Ranges::ToValues<IntVarRanges>::init(r);
140
- }
141
-
142
- forceinline void
143
- IntVarValues::init(const IntVar& x) {
144
- IntVarRanges r(x);
145
- Iter::Ranges::ToValues<IntVarRanges>::init(r);
146
- }
147
-
148
- }
149
-
150
- // STATISTICS: int-var
151
-
@@ -1,1894 +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-01-24 13:05:13 +0100 (Thu, 24 Jan 2008) $ by $Author: tack $
11
- * $Revision: 5974 $
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 <iostream>
39
-
40
- #if (-17 / 7) == -2
41
- #define GECODE_INT_RND_TWDS_ZERO 1
42
- #else
43
- #define GECODE_INT_RND_TWDS_ZERO 0
44
- #endif
45
-
46
- namespace Gecode { namespace Int {
47
-
48
- /**
49
- * \brief Range iterator for integer views
50
- *
51
- * This class provides (by specialization) a range iterator
52
- * for all integer views.
53
- *
54
- * Note that this template class serves only as a specification
55
- * of the interface of the various specializations.
56
- *
57
- * \ingroup TaskActorInt
58
- */
59
- template <class View>
60
- class ViewRanges {
61
- public:
62
- /// \name Constructors and initialization
63
- //@{
64
- /// Default constructor
65
- ViewRanges(void);
66
- /// Initialize with ranges for view \a x
67
- ViewRanges(const View& x);
68
- /// Initialize with ranges for view \a x
69
- void init(const View& x);
70
- //@}
71
-
72
- /// \name Iteration control
73
- //@{
74
- /// Test whether iterator is still at a range or done
75
- bool operator()(void) const;
76
- /// Move iterator to next range (if possible)
77
- void operator++(void);
78
- //@}
79
-
80
- /// \name Range access
81
- //@{
82
- /// Return smallest value of range
83
- int min(void) const;
84
- /// Return largest value of range
85
- int max(void) const;
86
- /// Return width of range (distance between minimum and maximum)
87
- unsigned int width(void) const;
88
- //@}
89
- };
90
-
91
- /**
92
- * \brief Value iterator for integer views
93
- *
94
- * This class provides a value iterator for all
95
- * integer views.
96
- *
97
- * \ingroup TaskActorInt
98
- */
99
- template <class View>
100
- class ViewValues : public Iter::Ranges::ToValues<ViewRanges<View> > {
101
- public:
102
- /// \name Constructors and initialization
103
- //@{
104
- /// Default constructor
105
- ViewValues(void);
106
- /// Initialize with values for \a x
107
- ViewValues(const View& x);
108
- /// Initialize with values \a x
109
- void init(const View& x);
110
- //@}
111
- };
112
-
113
- }}
114
-
115
- #include "gecode/int/view/iter.icc"
116
-
117
- namespace Gecode {
118
-
119
- namespace Int {
120
-
121
- /**
122
- * \defgroup TaskActorIntView Integer views
123
- *
124
- * Integer propagators and branchings compute with integer views.
125
- * Integer views provide views on integer variable implementations,
126
- * integer constants, and also allow to scale, translate, and negate
127
- * variables. Additionally, a special Boolean view is provided that
128
- * offers convenient and efficient operations for Boolean (0/1)
129
- * views.
130
- * \ingroup TaskActorInt
131
- */
132
-
133
- /**
134
- * \brief Integer view for integer variables
135
- * \ingroup TaskActorIntView
136
- */
137
- class IntView : public VarViewBase<IntVarImp> {
138
- protected:
139
- using VarViewBase<IntVarImp>::varimp;
140
- public:
141
- /// \name Constructors and initialization
142
- //@{
143
- /// Default constructor
144
- IntView(void);
145
- /// Initialize from integer variable \a x
146
- IntView(const IntVar& x);
147
- /// Initialize from integer variable \a x
148
- IntView(IntVarImp* x);
149
- /// Initialize from specification
150
- IntView(Space* home, const Reflection::VarMap& vars,
151
- Reflection::Arg* arg);
152
- //@}
153
-
154
- /// \name Value access
155
- //@{
156
- /// Return minimum of domain
157
- int min(void) const;
158
- /// Return maximum of domain
159
- int max(void) const;
160
- /// Return median of domain
161
- int med(void) const;
162
- /// Return assigned value (only if assigned)
163
- int val(void) const;
164
-
165
- /// Return size (cardinality) of domain
166
- unsigned int size(void) const;
167
- /// Return width of domain (distance between maximum and minimum)
168
- unsigned int width(void) const;
169
- /// Return regret of domain minimum (distance to next larger value)
170
- unsigned int regret_min(void) const;
171
- /// Return regret of domain maximum (distance to next smaller value)
172
- unsigned int regret_max(void) const;
173
- //@}
174
-
175
- /// \name Domain tests
176
- //@{
177
- /// Test whether domain is a range
178
- bool range(void) const;
179
- /// Test whether view is assigned
180
- bool assigned(void) const;
181
-
182
- /// Test whether \a n is contained in domain
183
- bool in(int n) const;
184
- /// Test whether \a n is contained in domain
185
- bool in(double n) const;
186
- //@}
187
-
188
- /// \name Domain update by value
189
- //@{
190
- /// Restrict domain values to be less or equal than \a n
191
- ModEvent lq(Space* home, int n);
192
- /// Restrict domain values to be less or equal than \a n
193
- ModEvent lq(Space* home, double n);
194
-
195
- /// Restrict domain values to be less than \a n
196
- ModEvent le(Space* home, int n);
197
- /// Restrict domain values to be less than \a n
198
- ModEvent le(Space* home, double n);
199
-
200
- /// Restrict domain values to be greater or equal than \a n
201
- ModEvent gq(Space* home, int n);
202
- /// Restrict domain values to be greater or equal than \a n
203
- ModEvent gq(Space* home, double n);
204
-
205
- /// Restrict domain values to be greater than \a n
206
- ModEvent gr(Space* home, int n);
207
- /// Restrict domain values to be greater than \a n
208
- ModEvent gr(Space* home, double n);
209
- /// Restrict domain values to be different from \a n
210
- ModEvent nq(Space* home, int n);
211
- /// Restrict domain values to be different from \a n
212
- ModEvent nq(Space* home, double n);
213
-
214
- /// Restrict domain values to be equal to \a n
215
- ModEvent eq(Space* home, int n);
216
- /// Restrict domain values to be equal to \a n
217
- ModEvent eq(Space* home, double n);
218
- //@}
219
-
220
- /**
221
- * \name Domain update by iterator
222
- *
223
- * Views can be both updated by range and value iterators.
224
- * Value iterators do not need to be strict in that the same value
225
- * is allowed to occur more than once in the iterated sequence.
226
- *
227
- * The argument \a depends must be true, if the iterator
228
- * passed as argument depends on the view on which the operation
229
- * is invoked. In this case, the view is only updated after the
230
- * iterator has been consumed. Otherwise, the domain might be updated
231
- * concurrently while following the iterator.
232
- *
233
- */
234
- //@{
235
- /// Replace domain by ranges described by \a i
236
- template <class I>
237
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
238
- /// Intersect domain with ranges described by \a i
239
- template <class I>
240
- ModEvent inter_r(Space* home, I& i, bool depends=true);
241
- /// Remove from domain the ranges described by \a i
242
- template <class I>
243
- ModEvent minus_r(Space* home, I& i, bool depends=true);
244
- /// Replace domain by values described by \a i
245
- template <class I>
246
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
247
- /// Intersect domain with values described by \a i
248
- template <class I>
249
- ModEvent inter_v(Space* home, I& i, bool depends=true);
250
- /// Remove from domain the values described by \a i
251
- template <class I>
252
- ModEvent minus_v(Space* home, I& i, bool depends=true);
253
- //@}
254
-
255
- /// \name Delta information for advisors
256
- //@{
257
- /// Return modification event
258
- static ModEvent modevent(const Delta* d);
259
- /// Return minimum value just pruned
260
- int min(const Delta* d) const;
261
- /// Return maximum value just pruned
262
- int max(const Delta* d) const;
263
- /// Test whether arbitrary values got pruned
264
- bool any(const Delta* d) const;
265
- //@}
266
-
267
- /// \name View-dependent propagator support
268
- //@{
269
- /// Translate modification event \a me to modification event delta for view
270
- static ModEventDelta med(ModEvent me);
271
- //@}
272
-
273
- /// \name Cloning
274
- //@{
275
- /// Update this view to be a clone of view \a x
276
- void update(Space* home, bool share, IntView& x);
277
- //@}
278
-
279
- /// \name Reflection
280
- //@{
281
- /// Return specification for this view, using variable map \a m
282
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
283
- static Support::Symbol type(void);
284
- //@}
285
-
286
- };
287
-
288
- }
289
-
290
- /**
291
- * \brief Traits class for views and variable implementations
292
- *
293
- * This class specializes the ViewVarImpTraits for IntView
294
- * \ingroup TaskActorIntView
295
- */
296
- template<>
297
- class ViewVarImpTraits<Int::IntView> {
298
- public:
299
- /// The variable type of an IntView
300
- typedef Int::IntVarImp VarImp;
301
- };
302
-
303
- /**
304
- * \brief Traits class mapping variables to views
305
- *
306
- * This class specializes the VarViewTraits for integer variables.
307
- */
308
- template<>
309
- class VarViewTraits<IntVar> {
310
- public:
311
- /// The variable type of an IntView
312
- typedef Int::IntView View;
313
- };
314
-
315
- namespace Int {
316
-
317
- /**
318
- * \brief Minus integer view
319
- *
320
- * A minus integer view \f$m\f$ for an integer view \f$x\f$ provides
321
- * operations such that \f$m\f$ behaves as \f$-x\f$.
322
- * \ingroup TaskActorIntView
323
- */
324
- class MinusView : public DerivedViewBase<IntView> {
325
- protected:
326
- using DerivedViewBase<IntView>::view;
327
- public:
328
- /// \name Constructors and initialization
329
- //@{
330
- /// Default constructor
331
- MinusView(void);
332
- /// Initialize with integer view \a x
333
- MinusView(const IntView& x);
334
- /// Initialize from specification
335
- MinusView(Space* home, const Reflection::VarMap& vars,
336
- Reflection::Arg* arg);
337
- /// Initialize with integer view \a x
338
- void init(const IntView& x);
339
- //@}
340
-
341
- /// \name Value access
342
- //@{
343
- /// Return minimum of domain
344
- int min(void) const;
345
- /// Return maximum of domain
346
- int max(void) const;
347
- /// Return median of domain
348
- int med(void) const;
349
- /// Return assigned value (only if assigned)
350
- int val(void) const;
351
-
352
- /// Return size (cardinality) of domain
353
- unsigned int size(void) const;
354
- /// Return width of domain (distance between maximum and minimum)
355
- unsigned int width(void) const;
356
- /// Return regret of domain minimum (distance to next larger value)
357
- unsigned int regret_min(void) const;
358
- /// Return regret of domain maximum (distance to next smaller value)
359
- unsigned int regret_max(void) const;
360
- //@}
361
-
362
- /// \name Domain tests
363
- //@{
364
- /// Test whether domain is a range
365
- bool range(void) const;
366
- /// Test whether view is assigned
367
- bool assigned(void) const;
368
-
369
- /// Test whether \a n is contained in domain
370
- bool in(int n) const;
371
- /// Test whether \a n is contained in domain
372
- bool in(double n) const;
373
- //@}
374
-
375
- /// \name Domain update by value
376
- //@{
377
- /// Restrict domain values to be less or equal than \a n
378
- ModEvent lq(Space* home, int n);
379
- /// Restrict domain values to be less or equal than \a n
380
- ModEvent lq(Space* home, double n);
381
- /// Restrict domain values to be less than \a n
382
- ModEvent le(Space* home, int n);
383
- /// Restrict domain values to be less than \a n
384
- ModEvent le(Space* home, double n);
385
- /// Restrict domain values to be greater or equal than \a n
386
- ModEvent gq(Space* home, int n);
387
- /// Restrict domain values to be greater or equal than \a n
388
- ModEvent gq(Space* home, double n);
389
- /// Restrict domain values to be greater than \a n
390
- ModEvent gr(Space* home, int n);
391
- /// Restrict domain values to be greater than \a n
392
- ModEvent gr(Space* home, double n);
393
- /// Restrict domain values to be different from \a n
394
- ModEvent nq(Space* home, int n);
395
- /// Restrict domain values to be different from \a n
396
- ModEvent nq(Space* home, double n);
397
- /// Restrict domain values to be equal to \a n
398
- ModEvent eq(Space* home, int n);
399
- /// Restrict domain values to be equal to \a n
400
- ModEvent eq(Space* home, double n);
401
- //@}
402
-
403
- /**
404
- * \name Domain update by iterator
405
- *
406
- * Views can be both updated by range and value iterators.
407
- * Value iterators do not need to be strict in that the same value
408
- * is allowed to occur more than once in the iterated sequence.
409
- *
410
- * The argument \a depends must be true, if the iterator
411
- * passed as argument depends on the view on which the operation
412
- * is invoked. In this case, the view is only updated after the
413
- * iterator has been consumed. Otherwise, the domain might be updated
414
- * concurrently while following the iterator.
415
- *
416
- */
417
- //@{
418
- /// Replace domain by ranges described by \a i
419
- template <class I>
420
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
421
- /// Intersect domain with ranges described by \a i
422
- template <class I>
423
- ModEvent inter_r(Space* home, I& i, bool depends=true);
424
- /// Remove from domain the ranges described by \a i
425
- template <class I>
426
- ModEvent minus_r(Space* home, I& i, bool depends=true);
427
- /// Replace domain by values described by \a i
428
- template <class I>
429
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
430
- /// Intersect domain with values described by \a i
431
- template <class I>
432
- ModEvent inter_v(Space* home, I& i, bool depends=true);
433
- /// Remove from domain the values described by \a i
434
- template <class I>
435
- ModEvent minus_v(Space* home, I& i, bool depends=true);
436
- //@}
437
-
438
- /// \name View-dependent propagator support
439
- //@{
440
- /// Schedule propagator \a p with modification event \a me
441
- static void schedule(Space* home, Propagator* p, ModEvent me);
442
- /// Return modification event for view type in \a med
443
- static ModEvent me(ModEventDelta med);
444
- /// Translate modification event \a me to modification event delta for view
445
- static ModEventDelta med(ModEvent me);
446
- //@}
447
-
448
- /// \name Dependencies
449
- //@{
450
- /**
451
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
452
- *
453
- * In case \a process is false, the propagator is just subscribed but
454
- * not processed for execution (this must be used when creating
455
- * subscriptions during propagation).
456
- */
457
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
458
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
459
- void cancel(Space* home, Propagator* p, PropCond pc);
460
- /// Subscribe advisor \a a to view
461
- void subscribe(Space* home, Advisor* a);
462
- /// Cancel subscription of advisor \a a
463
- void cancel(Space* home, Advisor* a);
464
- //@}
465
-
466
- /// \name Delta information for advisors
467
- //@{
468
- /// Return modification event
469
- static ModEvent modevent(const Delta* d);
470
- /// Return minimum value just pruned
471
- int min(const Delta* d) const;
472
- /// Return maximum value just pruned
473
- int max(const Delta* d) const;
474
- /// Test whether arbitrary values got pruned
475
- bool any(const Delta* d) const;
476
- //@}
477
-
478
- /// \name Cloning
479
- //@{
480
- /// Update this view to be a clone of view \a x
481
- void update(Space* home, bool share, MinusView& x);
482
- //@}
483
-
484
- /// \name Reflection
485
- //@{
486
- /// Return specification for this view, using variable map \a m
487
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
488
- static Support::Symbol type(void);
489
- //@}
490
- };
491
-
492
- }
493
-
494
- /** \name View comparison
495
- * \relates Gecode::Int::MinusView
496
- */
497
- //@{
498
- /// Test whether views \a x and \a y are the same
499
- bool same(const Int::MinusView& x, const Int::MinusView& y);
500
- /// Test whether view \a x comes before \a y (arbitrary order)
501
- bool before(const Int::MinusView& x, const Int::MinusView& y);
502
- //@}
503
-
504
- /**
505
- * \brief Traits class for views and variable implementations
506
- *
507
- * This class specializes the ViewVarImpTraits for MinusView.
508
- * \ingroup TaskActorIntView
509
- */
510
- template<>
511
- class ViewVarImpTraits<Int::MinusView> {
512
- public:
513
- /// The variable type of a MinusView
514
- typedef Int::IntVarImp VarImp;
515
- };
516
-
517
-
518
- namespace Int {
519
-
520
- /**
521
- * \brief Offset integer view
522
- *
523
- * An offset integer view \f$o\f$ for an integer view \f$x\f$ and
524
- * an integer \f$c\f$ provides operations such that \f$o\f$
525
- * behaves as \f$x+c\f$.
526
- * \ingroup TaskActorIntView
527
- */
528
- class OffsetView : public DerivedViewBase<IntView> {
529
- protected:
530
- /// Offset
531
- int c;
532
- using DerivedViewBase<IntView>::view;
533
- public:
534
- /// \name Constructors and initialization
535
- //@{
536
- /// Default constructor
537
- OffsetView(void);
538
- /// Initialize with integer view \a x and offset \a c
539
- OffsetView(const IntView& x, int c);
540
- /// Initialize from specification
541
- OffsetView(Space* home, const Reflection::VarMap& vars,
542
- Reflection::Arg* arg);
543
- /// Initialize with integer view \a x and offset \a c
544
- void init(const IntView& x, int c);
545
- /// Return offset
546
- int offset(void) const;
547
- //@}
548
-
549
- /// \name Value access
550
- //@{
551
- /// Return minimum of domain
552
- int min(void) const;
553
- /// Return maximum of domain
554
- int max(void) const;
555
- /// Return median of domain
556
- int med(void) const;
557
- /// Return assigned value (only if assigned)
558
- int val(void) const;
559
-
560
- /// Return size (cardinality) of domain
561
- unsigned int size(void) const;
562
- /// Return width of domain (distance between maximum and minimum)
563
- unsigned int width(void) const;
564
- /// Return regret of domain minimum (distance to next larger value)
565
- unsigned int regret_min(void) const;
566
- /// Return regret of domain maximum (distance to next smaller value)
567
- unsigned int regret_max(void) const;
568
- //@}
569
-
570
- /// \name Domain tests
571
- //@{
572
- /// Test whether domain is a range
573
- bool range(void) const;
574
- /// Test whether view is assigned
575
- bool assigned(void) const;
576
-
577
- /// Test whether \a n is contained in domain
578
- bool in(int n) const;
579
- /// Test whether \a n is contained in domain
580
- bool in(double n) const;
581
- //@}
582
-
583
- /// \name Domain update by value
584
- //@{
585
- /// Restrict domain values to be less or equal than \a n
586
- ModEvent lq(Space* home, int n);
587
- /// Restrict domain values to be less or equal than \a n
588
- ModEvent lq(Space* home, double n);
589
- /// Restrict domain values to be less than \a n
590
- ModEvent le(Space* home, int n);
591
- /// Restrict domain values to be less than \a n
592
- ModEvent le(Space* home, double n);
593
- /// Restrict domain values to be greater or equal than \a n
594
- ModEvent gq(Space* home, int n);
595
- /// Restrict domain values to be greater or equal than \a n
596
- ModEvent gq(Space* home, double n);
597
- /// Restrict domain values to be greater than \a n
598
- ModEvent gr(Space* home, int n);
599
- /// Restrict domain values to be greater than \a n
600
- ModEvent gr(Space* home, double n);
601
- /// Restrict domain values to be different from \a n
602
- ModEvent nq(Space* home, int n);
603
- /// Restrict domain values to be different from \a n
604
- ModEvent nq(Space* home, double n);
605
- /// Restrict domain values to be equal to \a n
606
- ModEvent eq(Space* home, int n);
607
- /// Restrict domain values to be equal to \a n
608
- ModEvent eq(Space* home, double n);
609
- //@}
610
-
611
- /**
612
- * \name Domain update by iterator
613
- *
614
- * Views can be both updated by range and value iterators.
615
- * Value iterators do not need to be strict in that the same value
616
- * is allowed to occur more than once in the iterated sequence.
617
- *
618
- * The argument \a depends must be true, if the iterator
619
- * passed as argument depends on the view on which the operation
620
- * is invoked. In this case, the view is only updated after the
621
- * iterator has been consumed. Otherwise, the domain might be updated
622
- * concurrently while following the iterator.
623
- *
624
- */
625
- //@{
626
- /// Replace domain by ranges described by \a i
627
- template <class I>
628
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
629
- /// Intersect domain with ranges described by \a i
630
- template <class I>
631
- ModEvent inter_r(Space* home, I& i, bool depends=true);
632
- /// Remove from domain the ranges described by \a i
633
- template <class I>
634
- ModEvent minus_r(Space* home, I& i, bool depends=true);
635
- /// Replace domain by values described by \a i
636
- template <class I>
637
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
638
- /// Intersect domain with values described by \a i
639
- template <class I>
640
- ModEvent inter_v(Space* home, I& i, bool depends=true);
641
- /// Remove from domain the values described by \a i
642
- template <class I>
643
- ModEvent minus_v(Space* home, I& i, bool depends=true);
644
- //@}
645
-
646
- /// \name View-dependent propagator support
647
- //@{
648
- /// Schedule propagator \a p with modification event \a me
649
- static void schedule(Space* home, Propagator* p, ModEvent me);
650
- /// Return modification event for view type in \a med
651
- static ModEvent me(ModEventDelta med);
652
- /// Translate modification event \a me to modification event delta for view
653
- static ModEventDelta med(ModEvent me);
654
- //@}
655
-
656
- /// \name Dependencies
657
- //@{
658
- /**
659
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
660
- *
661
- * In case \a process is false, the propagator is just subscribed but
662
- * not processed for execution (this must be used when creating
663
- * subscriptions during propagation).
664
- */
665
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
666
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
667
- void cancel(Space* home, Propagator* p, PropCond pc);
668
- /// Subscribe advisor \a a to view
669
- void subscribe(Space* home, Advisor* a);
670
- /// Cancel subscription of advisor \a a
671
- void cancel(Space* home, Advisor* a);
672
- //@}
673
-
674
- /// \name Delta information for advisors
675
- //@{
676
- /// Return modification event
677
- static ModEvent modevent(const Delta* d);
678
- /// Return minimum value just pruned
679
- int min(const Delta* d) const;
680
- /// Return maximum value just pruned
681
- int max(const Delta* d) const;
682
- /// Test whether arbitrary values got pruned
683
- bool any(const Delta* d) const;
684
- //@}
685
-
686
- /// \name Cloning
687
- //@{
688
- /// Update this view to be a clone of view \a x
689
- void update(Space* home, bool share, OffsetView& x);
690
- //@}
691
-
692
- /// \name Reflection
693
- //@{
694
- /// Return specification for this view, using variable map \a m
695
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
696
- static Support::Symbol type(void);
697
- //@}
698
- };
699
-
700
- }
701
-
702
- /** \name View comparison
703
- * \relates Gecode::Int::OffsetView
704
- */
705
- //@{
706
- /// Test whether views \a x and \a y are the same
707
- bool same(const Int::OffsetView& x, const Int::OffsetView& y);
708
- /// Test whether view \a x comes before \a y (arbitrary order)
709
- bool before(const Int::OffsetView& x, const Int::OffsetView& y);
710
- //@}
711
-
712
- /**
713
- * \brief Traits class for views and variable implementations
714
- *
715
- * This class specializes the ViewVarImpTraits for OffsetView.
716
- * \ingroup TaskActorIntView
717
- */
718
- template<>
719
- class ViewVarImpTraits<Int::OffsetView> {
720
- public:
721
- /// The variable type of an OffsetView
722
- typedef Int::IntVarImp VarImp;
723
- };
724
-
725
-
726
-
727
- namespace Int {
728
-
729
- /**
730
- * \brief Scale integer view (template)
731
- *
732
- * A scale integer view \f$s\f$ for an integer view \f$x\f$ and
733
- * a non-negative integer \f$a\f$ provides operations such that \f$s\f$
734
- * behaves as \f$a\cdot x\f$.
735
- *
736
- * The precision of a scale integer view is defined by the value types
737
- * \a Val and \a UnsVal. \a Val can be either \c int or \c double where
738
- * \a UnsVal must be the unsigned variant of \a Val (that is, if \a Val
739
- * is \c int, then \a UnsVal must be \c unsigned \c int; if \a Val is
740
- * \c double, then \a UnsVal must be \c double as well). The range which is
741
- * allowed for the two types is defined by the values in
742
- * Gecode::Limits.
743
- *
744
- * Note that scale integer views currently do not provide operations
745
- * for updating domains by range iterators.
746
- *
747
- * The template is not to be used directly (as it is very clumsy). Use
748
- * the following instead:
749
- * - IntScaleView for scale views with integer precision
750
- * - DoubleScaleView for scale views with double precision
751
- *
752
- * \ingroup TaskActorIntView
753
- */
754
- template <class Val, class UnsVal>
755
- class ScaleView : public DerivedViewBase<IntView> {
756
- protected:
757
- /// Scale factor
758
- int a;
759
- using DerivedViewBase<IntView>::view;
760
-
761
- /// \name Support functions for division
762
- //@{
763
- /// Return \f$\lfloor x/a\rfloor\f$
764
- int floor_div(double x) const;
765
- /// Return \f$\lceil x/a\rceil\f$
766
- int ceil_div(double x) const;
767
- /// Return \f$x/a\f$ and set \a exact to true if \a x is multiple of \a a
768
- int exact_div(double x, bool& exact) const;
769
- #if GECODE_INT_RND_TWDS_ZERO
770
- /// Return \f$\lfloor x/a\rfloor\f$
771
- int floor_div(int) const;
772
- /// Return \f$\lceil x/a\rceil\f$
773
- int ceil_div(int) const;
774
- /// Return \f$x/a\f$ and set \a exact to true if \a x is multiple of \a a
775
- int exact_div(int, bool&) const;
776
- #endif
777
- //@}
778
-
779
- public:
780
- /// \name Constructors and initialization
781
- //@{
782
- /// Default constructor
783
- ScaleView(void);
784
- /// Initialize as \f$b\cdot y\f$
785
- ScaleView(int b, const IntView& y);
786
- /// Initialize from specification
787
- ScaleView(Space* home, const Reflection::VarMap& vars,
788
- Reflection::Arg* arg);
789
- /// Initialize as \f$b\cdot y\f$
790
- void init(int b, const IntView& y);
791
- /// Return scale factor of scale view
792
- int scale(void) const;
793
- //@}
794
-
795
-
796
- /// \name Value access
797
- //@{
798
- /// Return minimum of domain
799
- Val min(void) const;
800
- /// Return maximum of domain
801
- Val max(void) const;
802
- /// Return median of domain
803
- Val med(void) const;
804
- /// Return assigned value (only if assigned)
805
- Val val(void) const;
806
-
807
- /// Return size (cardinality) of domain
808
- UnsVal size(void) const;
809
- /// Return width of domain (distance between maximum and minimum)
810
- UnsVal width(void) const;
811
- /// Return regret of domain minimum (distance to next larger value)
812
- UnsVal regret_min(void) const;
813
- /// Return regret of domain maximum (distance to next smaller value)
814
- UnsVal regret_max(void) const;
815
- //@}
816
-
817
- /// \name Domain tests
818
- //@{
819
- /// Test whether domain is a range
820
- bool range(void) const;
821
- /// Test whether view is assigned
822
- bool assigned(void) const;
823
- /// Test whether \a n is contained in domain
824
- bool in(Val n) const;
825
- //@}
826
-
827
- /// \name Domain update by value
828
- //@{
829
- /// Restrict domain values to be less or equal than \a n
830
- ModEvent lq(Space* home, Val n);
831
- /// Restrict domain values to be less than \a n
832
- ModEvent le(Space* home, Val n);
833
- /// Restrict domain values to be greater or equal than \a n
834
- ModEvent gq(Space* home, Val n);
835
- /// Restrict domain values to be greater than \a n
836
- ModEvent gr(Space* home, Val n);
837
- /// Restrict domain values to be different from \a n
838
- ModEvent nq(Space* home, Val n);
839
- /// Restrict domain values to be equal to \a n
840
- ModEvent eq(Space* home, Val n);
841
- //@}
842
-
843
- /// \name View-dependent propagator support
844
- //@{
845
- /// Schedule propagator \a p with modification event \a me
846
- static void schedule(Space* home, Propagator* p, ModEvent me);
847
- /// Return modification event for view type in \a med
848
- static ModEvent me(ModEventDelta med);
849
- /// Translate modification event \a me to modification event delta for view
850
- static ModEventDelta med(ModEvent me);
851
- //@}
852
-
853
- /// \name Dependencies
854
- //@{
855
- /**
856
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
857
- *
858
- * In case \a process is false, the propagator is just subscribed but
859
- * not processed for execution (this must be used when creating
860
- * subscriptions during propagation).
861
- */
862
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
863
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
864
- void cancel(Space* home, Propagator* p, PropCond pc);
865
- /// Subscribe advisor \a a to view
866
- void subscribe(Space* home, Advisor* a);
867
- /// Cancel subscription of advisor \a a
868
- void cancel(Space* home, Advisor* a);
869
- //@}
870
-
871
- /// \name Delta information for advisors
872
- //@{
873
- /// Return modification event
874
- static ModEvent modevent(const Delta* d);
875
- /// Return minimum value just pruned
876
- Val min(const Delta* d) const;
877
- /// Return maximum value just pruned
878
- Val max(const Delta* d) const;
879
- /// Test whether arbitrary values got pruned
880
- bool any(const Delta* d) const;
881
- //@}
882
-
883
- /// \name Cloning
884
- //@{
885
- /// Update this view to be a clone of view \a x
886
- void update(Space* home, bool share, ScaleView<Val,UnsVal>& x);
887
- //@}
888
-
889
- /// \name Reflection
890
- //@{
891
- /// Return specification for this view, using variable map \a m
892
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
893
- static Support::Symbol type(void);
894
- //@}
895
- };
896
-
897
- /**
898
- * \brief Integer-precision integer scale view
899
- * \ingroup TaskActorIntView
900
- */
901
- typedef ScaleView<int,unsigned int> IntScaleView;
902
-
903
- /**
904
- * \brief Double-precision integer scale view
905
- * \ingroup TaskActorIntView
906
- */
907
- typedef ScaleView<double,double> DoubleScaleView;
908
-
909
- }
910
-
911
- /** \name View comparison
912
- * \relates Gecode::Int::ScaleView
913
- */
914
- //@{
915
- /// Test whether views \a x and \a y are the same
916
- template <class Val, class UnsVal>
917
- bool same(const Int::ScaleView<Val,UnsVal>& x,
918
- const Int::ScaleView<Val,UnsVal>& y);
919
- /// Test whether view \a x comes before \a y (arbitrary order)
920
- template <class Val, class UnsVal>
921
- bool before(const Int::ScaleView<Val,UnsVal>& x,
922
- const Int::ScaleView<Val,UnsVal>& y);
923
- //@}
924
-
925
-
926
- /**
927
- * \brief Traits class for views and variable implementations
928
- *
929
- * This class specializes the ViewVarImpTraits for ScaleView.
930
- * \ingroup TaskActorIntView
931
- */
932
- template <class Val, class UnsVal>
933
- class ViewVarImpTraits<Int::ScaleView<Val,UnsVal> > {
934
- public:
935
- /// The variable type of a ScaleView
936
- typedef Int::IntVarImp VarImp;
937
- };
938
-
939
-
940
-
941
- namespace Int {
942
-
943
- /**
944
- * \brief Constant integer view
945
- *
946
- * A constant integer view \f$x\f$ for an integer \f$c\f$ provides
947
- * operations such that \f$x\f$ behaves as a view assigned to \f$c\f$.
948
- * \ingroup TaskActorIntView
949
- */
950
- class ConstIntView : public ConstViewBase {
951
- protected:
952
- int x;
953
- public:
954
- /// \name Constructors and initialization
955
- //@{
956
- /// Default constructor
957
- ConstIntView(void);
958
- /// Initialize with integer value \a n
959
- ConstIntView(int n);
960
- /// Initialize with integer value \a n
961
- void init(int n);
962
- /// Initialize from specification
963
- ConstIntView(Space* home, const Reflection::VarMap& vars,
964
- Reflection::Arg* arg);
965
- //@}
966
-
967
- /// \name Value access
968
- //@{
969
- /// Return minimum of domain
970
- int min(void) const;
971
- /// Return maximum of domain
972
- int max(void) const;
973
- /// Return median of domain
974
- int med(void) const;
975
- /// Return assigned value (only if assigned)
976
- int val(void) const;
977
-
978
- /// Return size (cardinality) of domain
979
- unsigned int size(void) const;
980
- /// Return width of domain (distance between maximum and minimum)
981
- unsigned int width(void) const;
982
- /// Return regret of domain minimum (distance to next larger value)
983
- unsigned int regret_min(void) const;
984
- /// Return regret of domain maximum (distance to next smaller value)
985
- unsigned int regret_max(void) const;
986
- //@}
987
-
988
- /// \name Domain tests
989
- //@{
990
- /// Test whether domain is a range
991
- bool range(void) const;
992
- /// Test whether view is assigned
993
- bool assigned(void) const;
994
-
995
- /// Test whether \a n is contained in domain
996
- bool in(int n) const;
997
- /// Test whether \a n is contained in domain
998
- bool in(double n) const;
999
- //@}
1000
-
1001
- /// \name Domain update by value
1002
- //@{
1003
- /// Restrict domain values to be less or equal than \a n
1004
- ModEvent lq(Space* home, int n);
1005
- /// Restrict domain values to be less or equal than \a n
1006
- ModEvent lq(Space* home, double n);
1007
- /// Restrict domain values to be less than \a n
1008
- ModEvent le(Space* home, int n);
1009
- /// Restrict domain values to be less than \a n
1010
- ModEvent le(Space* home, double n);
1011
- /// Restrict domain values to be greater or equal than \a n
1012
- ModEvent gq(Space* home, int n);
1013
- /// Restrict domain values to be greater or equal than \a n
1014
- ModEvent gq(Space* home, double n);
1015
- /// Restrict domain values to be greater than \a n
1016
- ModEvent gr(Space* home, int n);
1017
- /// Restrict domain values to be greater than \a n
1018
- ModEvent gr(Space* home, double n);
1019
- /// Restrict domain values to be different from \a n
1020
- ModEvent nq(Space* home, int n);
1021
- /// Restrict domain values to be different from \a n
1022
- ModEvent nq(Space* home, double n);
1023
- /// Restrict domain values to be equal to \a n
1024
- ModEvent eq(Space* home, int n);
1025
- /// Restrict domain values to be equal to \a n
1026
- ModEvent eq(Space* home, double n);
1027
- //@}
1028
-
1029
- /**
1030
- * \name Domain update by iterator
1031
- *
1032
- * Views can be both updated by range and value iterators.
1033
- * Value iterators do not need to be strict in that the same value
1034
- * is allowed to occur more than once in the iterated sequence.
1035
- *
1036
- * The argument \a depends must be true, if the iterator
1037
- * passed as argument depends on the view on which the operation
1038
- * is invoked. In this case, the view is only updated after the
1039
- * iterator has been consumed. Otherwise, the domain might be updated
1040
- * concurrently while following the iterator.
1041
- *
1042
- */
1043
- //@{
1044
- /// Replace domain by ranges described by \a i
1045
- template <class I>
1046
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
1047
- /// Intersect domain with ranges described by \a i
1048
- template <class I>
1049
- ModEvent inter_r(Space* home, I& i, bool depends=true);
1050
- /// Remove from domain the ranges described by \a i
1051
- template <class I>
1052
- ModEvent minus_r(Space* home, I& i, bool depends=true);
1053
- /// Replace domain by values described by \a i
1054
- template <class I>
1055
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
1056
- /// Intersect domain with values described by \a i
1057
- template <class I>
1058
- ModEvent inter_v(Space* home, I& i, bool depends=true);
1059
- /// Remove from domain the values described by \a i
1060
- template <class I>
1061
- ModEvent minus_v(Space* home, I& i, bool depends=true);
1062
- //@}
1063
-
1064
- /// \name View-dependent propagator support
1065
- //@{
1066
- /// Schedule propagator \a p with modification event \a me
1067
- static void schedule(Space* home, Propagator* p, ModEvent me);
1068
- /// Return modification event for view type in \a med
1069
- static ModEvent me(ModEventDelta med);
1070
- /// Translate modification event \a me to modification event delta for view
1071
- static ModEventDelta med(ModEvent me);
1072
- //@}
1073
-
1074
- /// \name Dependencies
1075
- //@{
1076
- /**
1077
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
1078
- *
1079
- * In case \a process is false, the propagator is just subscribed but
1080
- * not processed for execution (this must be used when creating
1081
- * subscriptions during propagation).
1082
- */
1083
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
1084
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
1085
- void cancel(Space* home, Propagator* p, PropCond pc);
1086
- /// Subscribe advisor \a a to view
1087
- void subscribe(Space* home, Advisor* a);
1088
- /// Cancel subscription of advisor \a a
1089
- void cancel(Space* home, Advisor* a);
1090
- //@}
1091
-
1092
- /// \name Delta information for advisors
1093
- //@{
1094
- /// Return modification event
1095
- static ModEvent modevent(const Delta* d);
1096
- /// Return minimum value just pruned
1097
- int min(const Delta* d) const;
1098
- /// Return maximum value just pruned
1099
- int max(const Delta* d) const;
1100
- /// Test whether arbitrary values got pruned
1101
- bool any(const Delta* d) const;
1102
- //@}
1103
-
1104
- /// \name Cloning
1105
- //@{
1106
- /// Update this view to be a clone of view \a x
1107
- void update(Space* home, bool share, ConstIntView& x);
1108
- //@}
1109
-
1110
- /// \name Reflection
1111
- //@{
1112
- /// Return specification for this view, using variable map \a m
1113
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
1114
- static Support::Symbol type(void);
1115
- //@}
1116
- };
1117
-
1118
- }
1119
-
1120
- /**
1121
- * \name View comparison
1122
- * \relates Gecode::Int::ConstIntView
1123
- */
1124
- //@{
1125
- /// Test whether views \a x and \a y are the same
1126
- bool same(const Int::ConstIntView& x, const Int::ConstIntView& y);
1127
- /// Test whether view \a x is before \a y (arbitrary order)
1128
- bool before(const Int::ConstIntView& x, const Int::ConstIntView& y);
1129
- //@}
1130
-
1131
- /**
1132
- * \brief Traits class for views and variable implementations
1133
- *
1134
- * This class specializes the ViewVarImpTraits for ConstIntView.
1135
- * \ingroup TaskActorIntView
1136
- */
1137
- template<>
1138
- class ViewVarImpTraits<Int::ConstIntView> {
1139
- public:
1140
- /// The variable type of a ConstIntView
1141
- typedef VarImpBase VarImp;
1142
- };
1143
-
1144
- namespace Int {
1145
-
1146
- /**
1147
- * \brief Zero integer view
1148
- *
1149
- * A zero integer view \f$x\f$ for provides
1150
- * operations such that \f$x\f$ behaves as a view assigned to \f$0\f$.
1151
- * \ingroup TaskActorIntView
1152
- */
1153
- class ZeroIntView : public ConstViewBase {
1154
- public:
1155
- /// \name Constructors and initialization
1156
- //@{
1157
- /// Default constructor
1158
- ZeroIntView(void);
1159
- /// Initialize
1160
- void init(void);
1161
- /// Initialize from specification
1162
- ZeroIntView(Space* home, const Reflection::VarMap& vars,
1163
- Reflection::Arg* arg);
1164
- //@}
1165
-
1166
- /// \name Value access
1167
- //@{
1168
- /// Return minimum of domain
1169
- int min(void) const;
1170
- /// Return maximum of domain
1171
- int max(void) const;
1172
- /// Return median of domain
1173
- int med(void) const;
1174
- /// Return assigned value (only if assigned)
1175
- int val(void) const;
1176
-
1177
- /// Return size (cardinality) of domain
1178
- unsigned int size(void) const;
1179
- /// Return width of domain (distance between maximum and minimum)
1180
- unsigned int width(void) const;
1181
- /// Return regret of domain minimum (distance to next larger value)
1182
- unsigned int regret_min(void) const;
1183
- /// Return regret of domain maximum (distance to next smaller value)
1184
- unsigned int regret_max(void) const;
1185
- //@}
1186
-
1187
- /// \name Domain tests
1188
- //@{
1189
- /// Test whether domain is a range
1190
- bool range(void) const;
1191
- /// Test whether view is assigned
1192
- bool assigned(void) const;
1193
-
1194
- /// Test whether \a n is contained in domain
1195
- bool in(int n) const;
1196
- /// Test whether \a n is contained in domain
1197
- bool in(double n) const;
1198
- //@}
1199
-
1200
- /// \name Domain update by value
1201
- //@{
1202
- /// Restrict domain values to be less or equal than \a n
1203
- ModEvent lq(Space* home, int n);
1204
- /// Restrict domain values to be less or equal than \a n
1205
- ModEvent lq(Space* home, double n);
1206
- /// Restrict domain values to be less than \a n
1207
- ModEvent le(Space* home, int n);
1208
- /// Restrict domain values to be less than \a n
1209
- ModEvent le(Space* home, double n);
1210
- /// Restrict domain values to be greater or equal than \a n
1211
- ModEvent gq(Space* home, int n);
1212
- /// Restrict domain values to be greater or equal than \a n
1213
- ModEvent gq(Space* home, double n);
1214
- /// Restrict domain values to be greater than \a n
1215
- ModEvent gr(Space* home, int n);
1216
- /// Restrict domain values to be greater than \a n
1217
- ModEvent gr(Space* home, double n);
1218
- /// Restrict domain values to be different from \a n
1219
- ModEvent nq(Space* home, int n);
1220
- /// Restrict domain values to be different from \a n
1221
- ModEvent nq(Space* home, double n);
1222
- /// Restrict domain values to be equal to \a n
1223
- ModEvent eq(Space* home, int n);
1224
- /// Restrict domain values to be equal to \a n
1225
- ModEvent eq(Space* home, double n);
1226
- //@}
1227
-
1228
- /**
1229
- * \name Domain update by iterator
1230
- *
1231
- * Views can be both updated by range and value iterators.
1232
- * Value iterators do not need to be strict in that the same value
1233
- * is allowed to occur more than once in the iterated sequence.
1234
- *
1235
- * The argument \a depends must be true, if the iterator
1236
- * passed as argument depends on the view on which the operation
1237
- * is invoked. In this case, the view is only updated after the
1238
- * iterator has been consumed. Otherwise, the domain might be updated
1239
- * concurrently while following the iterator.
1240
- *
1241
- */
1242
- //@{
1243
- /// Replace domain by ranges described by \a i
1244
- template <class I>
1245
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
1246
- /// Intersect domain with ranges described by \a i
1247
- template <class I>
1248
- ModEvent inter_r(Space* home, I& i, bool depends=true);
1249
- /// Remove from domain the ranges described by \a i
1250
- template <class I>
1251
- ModEvent minus_r(Space* home, I& i, bool depends=true);
1252
- /// Replace domain by values described by \a i
1253
- template <class I>
1254
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
1255
- /// Intersect domain with values described by \a i
1256
- template <class I>
1257
- ModEvent inter_v(Space* home, I& i, bool depends=true);
1258
- /// Remove from domain the values described by \a i
1259
- template <class I>
1260
- ModEvent minus_v(Space* home, I& i, bool depends=true);
1261
- //@}
1262
-
1263
- /// \name View-dependent propagator support
1264
- //@{
1265
- /// Schedule propagator \a p with modification event \a me
1266
- static void schedule(Space* home, Propagator* p, ModEvent me);
1267
- /// Return modification event for view type in \a med
1268
- static ModEvent me(ModEventDelta med);
1269
- /// Translate modification event \a me to modification event delta for view
1270
- static ModEventDelta med(ModEvent me);
1271
- //@}
1272
-
1273
- /// \name Dependencies
1274
- //@{
1275
- /**
1276
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
1277
- *
1278
- * In case \a process is false, the propagator is just subscribed but
1279
- * not processed for execution (this must be used when creating
1280
- * subscriptions during propagation).
1281
- */
1282
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
1283
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
1284
- void cancel(Space* home, Propagator* p, PropCond pc);
1285
- /// Subscribe advisor \a a to view
1286
- void subscribe(Space* home, Advisor* a);
1287
- /// Cancel subscription of advisor \a a
1288
- void cancel(Space* home, Advisor* a);
1289
- //@}
1290
-
1291
- /// \name Delta information for advisors
1292
- //@{
1293
- /// Return modification event
1294
- static ModEvent modevent(const Delta* d);
1295
- /// Return minimum value just pruned
1296
- int min(const Delta* d) const;
1297
- /// Return maximum value just pruned
1298
- int max(const Delta* d) const;
1299
- /// Test whether arbitrary values got pruned
1300
- bool any(const Delta* d) const;
1301
- //@}
1302
-
1303
- /// \name Cloning
1304
- //@{
1305
- /// Update this view to be a clone of view \a x
1306
- void update(Space* home, bool share, ZeroIntView& x);
1307
- //@}
1308
-
1309
- /// \name Reflection
1310
- //@{
1311
- /// Return specification for this view, using variable map \a m
1312
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
1313
- static Support::Symbol type(void);
1314
- //@}
1315
- };
1316
-
1317
- }
1318
-
1319
- /**
1320
- * \name View comparison
1321
- * \relates Gecode::Int::ZeroIntView
1322
- */
1323
- //@{
1324
- /// Test whether views \a x and \a y are the same
1325
- bool same(const Int::ZeroIntView& x, const Int::ZeroIntView& y);
1326
- /// Test whether view \a x is before \a y (arbitrary order)
1327
- bool before(const Int::ZeroIntView& x, const Int::ZeroIntView& y);
1328
- //@}
1329
-
1330
- /**
1331
- * \brief Traits class for views and variable implementations
1332
- *
1333
- * This class specializes the ViewVarImpTraits for ZeroIntView.
1334
- * \ingroup TaskActorIntView
1335
- */
1336
- template<>
1337
- class ViewVarImpTraits<Int::ZeroIntView> {
1338
- public:
1339
- /// The variable type of a ZeroIntView
1340
- typedef VarImpBase VarImp;
1341
- };
1342
-
1343
- namespace Int {
1344
-
1345
- /**
1346
- * \brief Boolean view for Boolean variables
1347
- *
1348
- * Provides convenient and efficient operations for Boolean views.
1349
- * \ingroup TaskActorIntView
1350
- */
1351
- class BoolView : public VarViewBase<BoolVarImp> {
1352
- protected:
1353
- using VarViewBase<BoolVarImp>::varimp;
1354
- public:
1355
- /// \name Constructors and initialization
1356
- //@{
1357
- /// Default constructor
1358
- BoolView(void);
1359
- /// Initialize from Boolean variable \a x
1360
- BoolView(const BoolVar& x);
1361
- /// Initialize from Boolean variable \a x
1362
- BoolView(BoolVarImp* x);
1363
- /// Initialize from specification
1364
- BoolView(Space* home, const Reflection::VarMap& vars,
1365
- Reflection::Arg* arg);
1366
- //@}
1367
-
1368
- /// \name Domain status access
1369
- //@{
1370
- /// How many bits does the status have
1371
- static const int BITS = BoolVarImp::BITS;
1372
- /// Status of domain assigned to zero
1373
- static const BoolStatus ZERO = BoolVarImp::ZERO;
1374
- /// Status of domain assigned to one
1375
- static const BoolStatus ONE = BoolVarImp::ONE;
1376
- /// Status of domain not yet assigned
1377
- static const BoolStatus NONE = BoolVarImp::NONE;
1378
- /// Return current domain status
1379
- BoolStatus status(void) const;
1380
- //@}
1381
-
1382
- /// \name Value access
1383
- //@{
1384
- /// Return minimum of domain
1385
- int min(void) const;
1386
- /// Return maximum of domain
1387
- int max(void) const;
1388
- /// Return median of domain
1389
- int med(void) const;
1390
- /// Return assigned value (only if assigned)
1391
- int val(void) const;
1392
-
1393
- /// Return size (cardinality) of domain
1394
- unsigned int size(void) const;
1395
- /// Return width of domain (distance between maximum and minimum)
1396
- unsigned int width(void) const;
1397
- /// Return regret of domain minimum (distance to next larger value)
1398
- unsigned int regret_min(void) const;
1399
- /// Return regret of domain maximum (distance to next smaller value)
1400
- unsigned int regret_max(void) const;
1401
- //@}
1402
-
1403
- /// \name Domain tests
1404
- //@{
1405
- /// Test whether domain is a range
1406
- bool range(void) const;
1407
- /// Test whether view is assigned
1408
- bool assigned(void) const;
1409
-
1410
- /// Test whether \a n is contained in domain
1411
- bool in(int n) const;
1412
- /// Test whether \a n is contained in domain
1413
- bool in(double n) const;
1414
- //@}
1415
-
1416
- /// \name Boolean domain tests
1417
- //@{
1418
- /// Test whether view is assigned to be zero
1419
- bool zero(void) const;
1420
- /// Test whether view is assigned to be one
1421
- bool one(void) const;
1422
- /// Test whether view is not yet assigned
1423
- bool none(void) const;
1424
- //@}
1425
-
1426
- /// \name Boolean assignment operations
1427
- //@{
1428
- /// Try to assign view to one
1429
- ModEvent one(Space* home);
1430
- /// Try to assign view to zero
1431
- ModEvent zero(Space* home);
1432
- /// Assign not yet assigned view to one
1433
- ModEvent one_none(Space* home);
1434
- /// Assign not yet assigned view to zero
1435
- ModEvent zero_none(Space* home);
1436
- //@}
1437
-
1438
- /// \name Domain update by value
1439
- //@{
1440
- /// Restrict domain values to be less or equal than \a n
1441
- ModEvent lq(Space* home, int n);
1442
- /// Restrict domain values to be less or equal than \a n
1443
- ModEvent lq(Space* home, double n);
1444
-
1445
- /// Restrict domain values to be less than \a n
1446
- ModEvent le(Space* home, int n);
1447
- /// Restrict domain values to be less than \a n
1448
- ModEvent le(Space* home, double n);
1449
-
1450
- /// Restrict domain values to be greater or equal than \a n
1451
- ModEvent gq(Space* home, int n);
1452
- /// Restrict domain values to be greater or equal than \a n
1453
- ModEvent gq(Space* home, double n);
1454
-
1455
- /// Restrict domain values to be greater than \a n
1456
- ModEvent gr(Space* home, int n);
1457
- /// Restrict domain values to be greater than \a n
1458
- ModEvent gr(Space* home, double n);
1459
-
1460
- /// Restrict domain values to be different from \a n
1461
- ModEvent nq(Space* home, int n);
1462
- /// Restrict domain values to be different from \a n
1463
- ModEvent nq(Space* home, double n);
1464
-
1465
- /// Restrict domain values to be equal to \a n
1466
- ModEvent eq(Space* home, int n);
1467
- /// Restrict domain values to be equal to \a n
1468
- ModEvent eq(Space* home, double n);
1469
- //@}
1470
-
1471
- /**
1472
- * \name Domain update by iterator
1473
- *
1474
- * Views can be both updated by range and value iterators.
1475
- * Value iterators do not need to be strict in that the same value
1476
- * is allowed to occur more than once in the iterated sequence.
1477
- *
1478
- * The argument \a depends must be true, if the iterator
1479
- * passed as argument depends on the view on which the operation
1480
- * is invoked. In this case, the view is only updated after the
1481
- * iterator has been consumed. Otherwise, the domain might be updated
1482
- * concurrently while following the iterator.
1483
- *
1484
- */
1485
- //@{
1486
- /// Replace domain by ranges described by \a i
1487
- template <class I>
1488
- ModEvent narrow_r(Space* home, I& i, bool depends=true);
1489
- /// Intersect domain with ranges described by \a i
1490
- template <class I>
1491
- ModEvent inter_r(Space* home, I& i, bool depends=true);
1492
- /// Remove from domain the ranges described by \a i
1493
- template <class I>
1494
- ModEvent minus_r(Space* home, I& i, bool depends=true);
1495
- /// Replace domain by values described by \a i
1496
- template <class I>
1497
- ModEvent narrow_v(Space* home, I& i, bool depends=true);
1498
- /// Intersect domain with values described by \a i
1499
- template <class I>
1500
- ModEvent inter_v(Space* home, I& i, bool depends=true);
1501
- /// Remove from domain the values described by \a i
1502
- template <class I>
1503
- ModEvent minus_v(Space* home, I& i, bool depends=true);
1504
- //@}
1505
-
1506
- /// \name Delta information for advisors
1507
- //@{
1508
- /// Return modification event
1509
- static ModEvent modevent(const Delta* d);
1510
- /// Return minimum value just pruned
1511
- int min(const Delta* d) const;
1512
- /// Return maximum value just pruned
1513
- int max(const Delta* d) const;
1514
- /// Test whether arbitrary values got pruned
1515
- bool any(const Delta* d) const;
1516
- //@}
1517
-
1518
- /// \name View-dependent propagator support
1519
- //@{
1520
- /// Translate modification event \a me to modification event delta for view
1521
- static ModEventDelta med(ModEvent me);
1522
- //@}
1523
-
1524
- /// \name Cloning
1525
- //@{
1526
- /// Update this view to be a clone of view \a x
1527
- void update(Space* home, bool share, BoolView& x);
1528
- //@}
1529
-
1530
- /// \name Reflection
1531
- //@{
1532
- /// Return specification for this view, using variable map \a m
1533
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
1534
- static Support::Symbol type(void);
1535
- //@}
1536
- };
1537
-
1538
- }
1539
-
1540
- /**
1541
- * \brief Traits class for views and variable implementations
1542
- *
1543
- * This class specializes the ViewVarImpTraits for BoolView
1544
- * \ingroup TaskActorIntView
1545
- */
1546
- template<>
1547
- class ViewVarImpTraits<Int::BoolView> {
1548
- public:
1549
- /// The variable type of a BoolView
1550
- typedef Int::BoolVarImp VarImp;
1551
- };
1552
-
1553
- /**
1554
- * \brief Traits class mapping variables to views
1555
- *
1556
- * This class specializes the VarViewTraits for Boolean variables.
1557
- */
1558
- template<>
1559
- class VarViewTraits<BoolVar> {
1560
- public:
1561
- /// The variable type of an IntView
1562
- typedef Int::BoolView View;
1563
- };
1564
-
1565
- namespace Int {
1566
-
1567
- /**
1568
- * \brief Negated Boolean view
1569
- *
1570
- * A negated Boolean view \f$n\f$ for a Boolean view \f$b\f$
1571
- * provides operations such that \f$n\f$
1572
- * behaves as \f$\neg b\f$.
1573
- * \ingroup TaskActorIntView
1574
- */
1575
- class NegBoolView : public DerivedViewBase<BoolView> {
1576
- protected:
1577
- using DerivedViewBase<BoolView>::view;
1578
- public:
1579
- /// \name Constructors and initialization
1580
- //@{
1581
- /// Default constructor
1582
- NegBoolView(void);
1583
- /// Initialize with Boolean view \a b
1584
- NegBoolView(const BoolView& b);
1585
- /// Initialize with Boolean view \a b
1586
- void init(const BoolView& b);
1587
- /// Initialize from specification
1588
- NegBoolView(Space* home, const Reflection::VarMap& vars,
1589
- Reflection::Arg* arg);
1590
- //@}
1591
-
1592
- /// \name Domain status access
1593
- //@{
1594
- /// How many bits does the status have
1595
- static const int BITS = BoolView::BITS;
1596
- /// Status of domain assigned to zero
1597
- static const BoolStatus ZERO = BoolView::ONE;
1598
- /// Status of domain assigned to one
1599
- static const BoolStatus ONE = BoolView::ZERO;
1600
- /// Status of domain not yet assigned
1601
- static const BoolStatus NONE = BoolView::NONE;
1602
- /// Return current domain status
1603
- BoolStatus status(void) const;
1604
- //@}
1605
-
1606
- /// \name Boolean domain tests
1607
- //@{
1608
- /// Test whether view is assigned to be zero
1609
- bool zero(void) const;
1610
- /// Test whether view is assigned to be one
1611
- bool one(void) const;
1612
- /// Test whether view is not yet assigned
1613
- bool none(void) const;
1614
- //@}
1615
-
1616
- /// \name Boolean assignment operations
1617
- //@{
1618
- /// Try to assign view to one
1619
- ModEvent one(Space* home);
1620
- /// Try to assign view to zero
1621
- ModEvent zero(Space* home);
1622
- /// Assign not yet assigned view to one
1623
- ModEvent one_none(Space* home);
1624
- /// Assign not yet assigned view to zero
1625
- ModEvent zero_none(Space* home);
1626
- //@}
1627
-
1628
- /// \name Value access
1629
- //@{
1630
- /// Return minimum of domain
1631
- int min(void) const;
1632
- /// Return maximum of domain
1633
- int max(void) const;
1634
- /// Return assigned value (only if assigned)
1635
- int val(void) const;
1636
- //@}
1637
-
1638
- /// \name Domain tests
1639
- //@{
1640
- /// Test whether view is assigned
1641
- bool assigned(void) const;
1642
- //@}
1643
-
1644
- /// \name View-dependent propagator support
1645
- //@{
1646
- /// Schedule propagator \a p with modification event \a me
1647
- static void schedule(Space* home, Propagator* p, ModEvent me);
1648
- /// Return modification event for view type in \a med
1649
- static ModEvent me(ModEventDelta med);
1650
- /// Translate modification event \a me to modification event delta for view
1651
- static ModEventDelta med(ModEvent me);
1652
- //@}
1653
-
1654
- /// \name Dependencies
1655
- //@{
1656
- /**
1657
- * \brief Subscribe propagator \a p with propagation condition \a pc to view
1658
- *
1659
- * In case \a process is false, the propagator is just subscribed but
1660
- * not processed for execution (this must be used when creating
1661
- * subscriptions during propagation).
1662
- */
1663
- void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
1664
- /// Cancel subscription of propagator \a p with propagation condition \a pc to view
1665
- void cancel(Space* home, Propagator* p, PropCond pc);
1666
- /// Subscribe advisor \a a to view
1667
- void subscribe(Space* home, Advisor* a);
1668
- /// Cancel subscription of advisor \a a
1669
- void cancel(Space* home, Advisor* a);
1670
- //@}
1671
-
1672
- /// \name Delta information for advisors
1673
- //@{
1674
- /// Return modification event
1675
- static ModEvent modevent(const Delta* d);
1676
- /// Return minimum value just pruned
1677
- int min(const Delta* d) const;
1678
- /// Return maximum value just pruned
1679
- int max(const Delta* d) const;
1680
- /// Test whether arbitrary values got pruned
1681
- bool any(const Delta* d) const;
1682
- //@}
1683
-
1684
- /// \name Cloning
1685
- //@{
1686
- /// Update this view to be a clone of view \a x
1687
- void update(Space* home, bool share, NegBoolView& x);
1688
- //@}
1689
-
1690
- /// \name Reflection
1691
- //@{
1692
- /// Return specification for this view, using variable map \a m
1693
- Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
1694
- static Support::Symbol type(void);
1695
- //@}
1696
- };
1697
-
1698
- /**
1699
- * \brief Boolean tests
1700
- *
1701
- */
1702
- enum BoolTest {
1703
- BT_NONE, ///< No sharing
1704
- BT_SAME, ///< Same variable
1705
- BT_COMP ///< Same variable but complement
1706
- };
1707
-
1708
- /**
1709
- * \name Test sharing between Boolean and negated Boolean views
1710
- * \relates BoolView NegBoolView
1711
- */
1712
- //@{
1713
- /// Test whether views \a b0 and \a b1 are the same
1714
- BoolTest bool_test(const BoolView& b0, const BoolView& b1);
1715
- /// Test whether views \a b0 and \a b1 are complementary
1716
- BoolTest bool_test(const BoolView& b0, const NegBoolView& b1);
1717
- /// Test whether views \a b0 and \a b1 are complementary
1718
- BoolTest bool_test(const NegBoolView& b0, const BoolView& b1);
1719
- /// Test whether views \a b0 and \a b1 are the same
1720
- BoolTest bool_test(const NegBoolView& b0, const NegBoolView& b1);
1721
- //@}
1722
-
1723
- }
1724
-
1725
- /** \name View comparison
1726
- * \relates Gecode::Int::NegBoolView
1727
- */
1728
- //@{
1729
- /// Test whether views \a x and \a y are the same
1730
- bool same(const Int::NegBoolView& x, const Int::NegBoolView& y);
1731
- /// Test whether view \a x comes before \a y (arbitrary order)
1732
- bool before(const Int::NegBoolView& x, const Int::NegBoolView& y);
1733
- //@}
1734
-
1735
- /**
1736
- * \brief Traits class for views and variable implementations
1737
- *
1738
- * This class specializes the ViewVarImpTraits for NegBoolView.
1739
- * \ingroup TaskActorIntView
1740
- */
1741
- template<>
1742
- class ViewVarImpTraits<Int::NegBoolView> {
1743
- public:
1744
- /// The variable type of a NegBoolView
1745
- typedef Int::BoolVarImp VarImp;
1746
- };
1747
-
1748
- }
1749
-
1750
- #include "gecode/int/var/int.icc"
1751
- #include "gecode/int/var/bool.icc"
1752
-
1753
- #include "gecode/int/view/int.icc"
1754
- #include "gecode/int/view/bool.icc"
1755
-
1756
- #include "gecode/int/view/constint.icc"
1757
- #include "gecode/int/view/zero.icc"
1758
-
1759
- #include "gecode/int/view/minus.icc"
1760
- #include "gecode/int/view/offset.icc"
1761
- #include "gecode/int/view/scale.icc"
1762
-
1763
- /**
1764
- * \brief Print integer variable view
1765
- * \relates Gecode::Int::IntView
1766
- */
1767
- GECODE_INT_EXPORT std::ostream&
1768
- operator<<(std::ostream&, const Gecode::Int::IntView&);
1769
- /**
1770
- * \brief Print minus integer view
1771
- * \relates Gecode::Int::MinusView
1772
- */
1773
- GECODE_INT_EXPORT std::ostream&
1774
- operator<<(std::ostream&, const Gecode::Int::MinusView&);
1775
- /**
1776
- * \brief Print offset integer view
1777
- * \relates Gecode::Int::OffsetView
1778
- */
1779
- GECODE_INT_EXPORT std::ostream&
1780
- operator<<(std::ostream&, const Gecode::Int::OffsetView&);
1781
- /**
1782
- * \brief Print constant integer view
1783
- * \relates Gecode::Int::ConstIntView
1784
- */
1785
- GECODE_INT_EXPORT std::ostream&
1786
- operator<<(std::ostream&, const Gecode::Int::ConstIntView&);
1787
- /**
1788
- * \brief Print zero integer view
1789
- * \relates Gecode::Int::ZeroIntView
1790
- */
1791
- GECODE_INT_EXPORT std::ostream&
1792
- operator<<(std::ostream&, const Gecode::Int::ZeroIntView&);
1793
- /**
1794
- * \brief Print integer-precision scale integer view
1795
- * \relates Gecode::Int::ScaleView
1796
- */
1797
- GECODE_INT_EXPORT std::ostream&
1798
- operator<<(std::ostream&, const Gecode::Int::IntScaleView&);
1799
- /**
1800
- * \brief Print double-precision scale integer view
1801
- * \relates Gecode::Int::ScaleView
1802
- */
1803
- GECODE_INT_EXPORT std::ostream&
1804
- operator<<(std::ostream&, const Gecode::Int::DoubleScaleView&);
1805
-
1806
- /**
1807
- * \brief Print Boolean variable view
1808
- * \relates Gecode::Int::BoolView
1809
- */
1810
- GECODE_INT_EXPORT std::ostream&
1811
- operator<<(std::ostream&, const Gecode::Int::BoolView&);
1812
- /**
1813
- * \brief Print negated Boolean view
1814
- * \relates Gecode::Int::NegBoolView
1815
- */
1816
- GECODE_INT_EXPORT std::ostream&
1817
- operator<<(std::ostream&, const Gecode::Int::NegBoolView&);
1818
-
1819
-
1820
- inline std::ostream&
1821
- operator<<(std::ostream& os, const Gecode::IntVar& x) {
1822
- Gecode::Int::IntView vx(x);
1823
- return os << vx;
1824
- }
1825
-
1826
- inline std::ostream&
1827
- operator<<(std::ostream& os, const Gecode::BoolVar& x) {
1828
- Gecode::Int::BoolView vx(x);
1829
- return os << vx;
1830
- }
1831
-
1832
- namespace Gecode {
1833
-
1834
- namespace Int {
1835
-
1836
- /**
1837
- * \defgroup TaskActorIntTest Testing relations between integer views
1838
- * \ingroup TaskActorInt
1839
- */
1840
-
1841
- //@{
1842
- /// Result of testing relation
1843
- enum RelTest {
1844
- RT_FALSE = 0, ///< Relation does not hold
1845
- RT_MAYBE = 1, ///< Relation may hold or not
1846
- RT_TRUE = 2 ///< Relation does hold
1847
- };
1848
-
1849
- /// Test whether views \a x and \a y are equal (use bounds information)
1850
- template <class View> RelTest rtest_eq_bnd(View x, View y);
1851
- /// Test whether views \a x and \a y are equal (use full domain information)
1852
- template <class View> RelTest rtest_eq_dom(View x, View y);
1853
- /// Test whether view \a x and integer \a n are equal (use bounds information)
1854
- template <class View> RelTest rtest_eq_bnd(View x, int n);
1855
- /// Test whether view \a x and integer \a n are equal (use full domain information)
1856
- template <class View> RelTest rtest_eq_dom(View x, int n);
1857
-
1858
- /// Test whether views \a x and \a y are different (use bounds information)
1859
- template <class View> RelTest rtest_nq_bnd(View x, View y);
1860
- /// Test whether views \a x and \a y are different (use full domain information)
1861
- template <class View> RelTest rtest_nq_dom(View x, View y);
1862
- /// Test whether view \a x and integer \a n are different (use bounds information)
1863
- template <class View> RelTest rtest_nq_bnd(View x, int n);
1864
- /// Test whether view \a x and integer \a n are different (use full domain information)
1865
- template <class View> RelTest rtest_nq_dom(View x, int n);
1866
-
1867
- /// Test whether view \a x is less or equal than view \a y
1868
- template <class View> RelTest rtest_lq(View x, View y);
1869
- /// Test whether view \a x is less or equal than integer \a n
1870
- template <class View> RelTest rtest_lq(View x, int n);
1871
-
1872
- /// Test whether view \a x is less than view \a y
1873
- template <class View> RelTest rtest_le(View x, View y);
1874
- /// Test whether view \a x is less than integer \a n
1875
- template <class View> RelTest rtest_le(View x, int n);
1876
-
1877
- /// Test whether view \a x is greater or equal than view \a y
1878
- template <class View> RelTest rtest_gq(View x, View y);
1879
- /// Test whether view \a x is greater or equal than integer \a n
1880
- template <class View> RelTest rtest_gq(View x, int n);
1881
-
1882
- /// Test whether view \a x is greater than view \a y
1883
- template <class View> RelTest rtest_gr(View x, View y);
1884
- /// Test whether view \a x is greater than integer \a n
1885
- template <class View> RelTest rtest_gr(View x, int n);
1886
- //@}
1887
-
1888
- }
1889
-
1890
- }
1891
-
1892
- #include "gecode/int/view/rtest.icc"
1893
-
1894
- // STATISTICS: int-var