gecoder-with-gecode 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,68 @@
1
+ /*****************************************************************[myspace.hh]
2
+ Copyright (c) 2007, Universite d'Orleans - Jeremie Vautard, Marco Benedetti,
3
+ Arnaud Lallouet.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
22
+ *****************************************************************************/
23
+ #ifndef __QECODE_MYSPACE__
24
+ #define __QECODE_MYSPACE__
25
+
26
+ #include "qecode.hh"
27
+ #include <vector>
28
+ #include "gecode/minimodel.hh"
29
+ #include "vartype.hh"
30
+
31
+ using namespace Gecode;
32
+ using namespace Gecode::Int;
33
+
34
+ /** \brief A simple extension of Gecode::Space class
35
+ *
36
+ * A simple extension of the Space class from Gecode, in order to have access to the variables it contains.
37
+ */
38
+
39
+ class QECODE_VTABLE_EXPORT MySpace : public Space {
40
+
41
+ protected :
42
+ unsigned int n;
43
+
44
+ public:
45
+ /** \brief This array contains all the variables this space contains.
46
+ */
47
+ void** v;
48
+
49
+
50
+ /** \brief This array indicates the type of each variable
51
+ */
52
+ VarType* type_of_v;
53
+
54
+ /** \brief Constructor of a space with a fixed number of variables
55
+ *
56
+ * Builds a space which will contain nv variables (the variables themselves are however not declared).
57
+ * @param nv the number of variable the space must contain.
58
+ */
59
+ QECODE_EXPORT MySpace(unsigned int nv);
60
+ QECODE_EXPORT int nbVars() {return n;}
61
+ QECODE_EXPORT MySpace(bool share,MySpace& ms);
62
+ QECODE_EXPORT virtual MySpace* copy(bool share);
63
+ QECODE_EXPORT virtual ~MySpace();
64
+ };
65
+
66
+
67
+
68
+ #endif
@@ -0,0 +1,268 @@
1
+ /**** , [ QSolver.cc ],
2
+ Copyright (c) 2008 Universite d'Orleans - Jeremie Vautard
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+ *************************************************************************/
22
+
23
+ #include "qsolver.hh"
24
+ #include <climits>
25
+
26
+ QSolver::QSolver(Implicative* sp) {
27
+ this->sp = sp;
28
+ nbRanges=new int;
29
+ }
30
+
31
+ Strategy QSolver::solve(unsigned long int& nodes) {
32
+ vector<int> plop;
33
+ plop.clear();
34
+ return rSolve(sp,0,plop,nodes);
35
+ }
36
+
37
+ Strategy QSolver::rSolve(Implicative* qs,int scope, vector<int> assignments, unsigned long int& nodes) {
38
+ nodes++;
39
+ // cout<<"rSolve for scope "<<scope<<" with assignments ";
40
+ // for (int i=0;i<assignments.size();i++) cout<<assignments[i]<<" ";
41
+ // cout<<endl;
42
+ //////////////////////////////////////////////////////////////////////////////////////////
43
+ // First case : we reached the goal, we just have to check it //
44
+ //////////////////////////////////////////////////////////////////////////////////////////
45
+ if (scope == qs->spaces()) {
46
+ // cout<<"First case"<<endl;
47
+ MySpace* g = qs->getGoal();
48
+ if (g == NULL) {/*cout<<"the goal was null"<<endl;*/return Strategy(StrategyNode::SFalse());}
49
+ for (int i=0;i<g->nbVars();i++) {
50
+ switch (g->type_of_v[i]) {
51
+ case VTYPE_INT :
52
+ post(g,*(static_cast<IntVar*>(g->v[i])) == assignments[i]);
53
+ break;
54
+ case VTYPE_BOOL :
55
+ post(g,*(static_cast<BoolVar*>(g->v[i])) == assignments[i]);
56
+ break;
57
+ default :
58
+ cout<<"1Unknown variable type"<<endl;
59
+ abort();
60
+ }
61
+ }
62
+ if (g->status() == SS_FAILED) {
63
+ // cout<<"goal failed after assignments"<<endl;
64
+ delete g;
65
+ return Strategy(StrategyNode::SFalse());
66
+ }
67
+ // cout<<"goal OK"<<endl;
68
+ delete g;
69
+ return Strategy(StrategyNode::STrue());
70
+ }
71
+
72
+ /////////////////////////////////////////////////////////////////////////////////////////
73
+ // Second case : we are in the middle of the problem... //
74
+ /////////////////////////////////////////////////////////////////////////////////////////
75
+ else {
76
+ // cout<<"second case "<<endl;
77
+ MySpace* espace = qs->getSpace(scope);
78
+ if (espace == NULL) cout<<"I caught a NULL for scope "<<scope<<". I will crash..."<<endl;
79
+ // cout<<"size of assignments "<<assignments.size()<<endl;
80
+ for (int i=0;i<assignments.size();i++) {
81
+ // cout<<"I assign variable "<<i<<" with value "<<assignments[i]<<endl; cout.flush();
82
+ switch (espace->type_of_v[i]) {
83
+ case VTYPE_INT :
84
+ post(espace,*(static_cast<IntVar*>(espace->v[i])) == assignments[i]);
85
+ break;
86
+ case VTYPE_BOOL :
87
+ post(espace,*(static_cast<BoolVar*>(espace->v[i])) == assignments[i]);
88
+ break;
89
+ default :
90
+ cout<<"2Unknown variable type"<<endl;
91
+ abort();
92
+ }
93
+ }
94
+
95
+ // Second case, first subcase : current scope is universal
96
+ /////////////////////////////////////////////////////////
97
+ if (qs->quantification(scope)) {
98
+ // cout<<"universal"<<endl;
99
+
100
+ if (espace->status() == SS_FAILED) {
101
+ // cout<<"the scope is failed"<<endl;
102
+ delete espace;
103
+ return Strategy(StrategyNode::STrue());
104
+ }
105
+
106
+ DFS<MySpace> solutions(espace);
107
+ MySpace* sol = solutions.next();
108
+ if (sol == NULL) {
109
+ // cout<<"first sol is null"<<endl;
110
+ delete espace;
111
+ return Strategy(StrategyNode::STrue());
112
+ }
113
+
114
+ Strategy retour = StrategyNode::Dummy();
115
+ while (sol != NULL) {
116
+ // cout<<"a solution"<<endl;
117
+ vector<int> assign;
118
+ for (int i = 0; i<sol->nbVars();i++) {
119
+ switch (sol->type_of_v[i]) {
120
+ case VTYPE_INT :
121
+ assign.push_back( (static_cast<IntVar*>(sol->v[i]))->val() );
122
+ break;
123
+ case VTYPE_BOOL :
124
+ assign.push_back( (static_cast<BoolVar*>(sol->v[i]))->val() );
125
+ break;
126
+ default :
127
+ cout<<"3Unknown variable type"<<endl;
128
+ abort();
129
+ }
130
+ }
131
+
132
+ int vmin = ( (scope==0)? 0 : (qs->nbVarInScope(scope-1)) );
133
+ int vmax = (qs->nbVarInScope(scope))-1;
134
+ vector<int> zevalues;
135
+ for (int i = vmin; i<=vmax;i++) {
136
+ switch (sol->type_of_v[i]) {
137
+ case VTYPE_INT :
138
+ zevalues.push_back( (static_cast<IntVar*>(sol->v[i]))->val() );
139
+ break;
140
+ case VTYPE_BOOL :
141
+ zevalues.push_back( (static_cast<BoolVar*>(sol->v[i]))->val() );
142
+ break;
143
+ default :
144
+ cout<<"4Unknown variable type"<<endl;
145
+ abort();
146
+ }
147
+ }
148
+ Strategy toAttach(true,vmin,vmax,scope,zevalues);
149
+
150
+ Strategy son = rSolve(qs,scope+1,assign,nodes);
151
+ if (son.isFalse()) {
152
+ // cout<<"the son is false"<<endl;
153
+ delete sol;
154
+ delete espace;
155
+ return Strategy(StrategyNode::SFalse());
156
+ }
157
+ // cout<<"the son is true"<<endl;
158
+ toAttach.attach(son);
159
+ retour.attach(toAttach);
160
+ delete sol;
161
+ sol = solutions.next();
162
+ } // end of while
163
+ delete espace;
164
+ return retour;
165
+ } // end of if(universal)
166
+
167
+ // Second case, second subcase : current scope is existential
168
+ ////////////////////////////////////////////////////////////
169
+ else {
170
+ // cout<<"existential"<<endl;
171
+ if ((espace->status()) == SS_FAILED) {
172
+ // cout<<"the Espace is failed"<<endl;
173
+ delete espace;
174
+ return Strategy(StrategyNode::SFalse());
175
+ }
176
+
177
+ DFS<MySpace> solutions(espace);
178
+ MySpace* sol =solutions.next();
179
+ if (sol == NULL) {
180
+ // cout<<"the first sol is null"<<endl;
181
+ delete espace;
182
+ return Strategy(StrategyNode::SFalse());
183
+ }
184
+
185
+ OptVar* opt = qs->getOptVar(scope);
186
+ int opttype = qs->getOptType(scope);
187
+ Strategy retour(StrategyNode::SFalse());
188
+ int score= ( (opttype == 1) ? INT_MAX : INT_MIN );
189
+ while (sol != NULL) {
190
+ // cout<<"une solution"<<endl;
191
+ vector<int> assign;
192
+ for (int i = 0; i<sol->nbVars();i++) {
193
+ switch (sol->type_of_v[i]) {
194
+ case VTYPE_INT :
195
+ assign.push_back( (static_cast<IntVar*>(sol->v[i]))->val() );
196
+ break;
197
+ case VTYPE_BOOL :
198
+ assign.push_back( (static_cast<BoolVar*>(sol->v[i]))->val() );
199
+ break;
200
+ default :
201
+ cout<<"5Unknown variable type"<<endl;
202
+ abort();
203
+ }
204
+ } // end for
205
+
206
+ int vmin = ( (scope==0)?0 : qs->nbVarInScope(scope-1) );
207
+ int vmax = qs->nbVarInScope(scope)-1;
208
+ vector<int> zevalues;
209
+ for (int i = vmin; i<=vmax;i++) {
210
+ switch (sol->type_of_v[i]) {
211
+ case VTYPE_INT :
212
+ zevalues.push_back( (static_cast<IntVar*>(sol->v[i]))->val() );
213
+ break;
214
+ case VTYPE_BOOL :
215
+ zevalues.push_back( (static_cast<BoolVar*>(sol->v[i]))->val() );
216
+ break;
217
+ default :
218
+ cout<<"6unknown Variable type"<<endl;
219
+ abort();
220
+ }
221
+ }
222
+ Strategy candidate(false,vmin,vmax,scope,zevalues);
223
+
224
+ Strategy son_of_candidate = rSolve(qs,scope+1,assign,nodes);
225
+ if (son_of_candidate.isFalse()) candidate = Strategy::SFalse();
226
+ else candidate.attach(son_of_candidate);
227
+
228
+ int score_of_candidate;
229
+ if (candidate.isFalse()) score_of_candidate = ( (opttype == 1) ? INT_MAX : INT_MIN );
230
+ else score_of_candidate = opt->getVal(candidate);
231
+ // cout<<"score of candidate is "<<score_of_candidate<<endl;
232
+ // cout<<"Opt type is";
233
+ switch (opttype) {
234
+ case 0 : // ANY
235
+ // cout<<"ANY"<<endl;
236
+ if (!candidate.isFalse()) {
237
+ delete sol;
238
+ delete espace;
239
+ return candidate;
240
+ }
241
+ break;
242
+ case 1 : // MIN
243
+ // cout<<"MIN"<<endl;
244
+ if (score_of_candidate < score) {
245
+ retour=candidate;
246
+ score=score_of_candidate;
247
+ }
248
+ break;
249
+ case 2 : // MAX
250
+ // cout<<"MAX"<<endl;
251
+ if (score_of_candidate > score) {
252
+ retour=candidate;
253
+ score=score_of_candidate;
254
+ }
255
+ break;
256
+ default :
257
+ cout<<"Unknown opt type : "<<opttype<<endl;
258
+ abort();
259
+ break;
260
+ } // end switch
261
+ delete sol;
262
+ sol=solutions.next();
263
+ } // end while
264
+ delete espace;
265
+ return retour;
266
+ } // end if..else (existential)
267
+ }// end "Second case"
268
+ }
@@ -0,0 +1,46 @@
1
+ /**** , [ qsolver.hh ],
2
+ Copyright (c) 2008 Universite d'Orleans - Jeremie Vautard
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
21
+ *************************************************************************/
22
+ #ifndef __QECODE_QSOLVER_OPT__
23
+ #define __QECODE_QSOLVER_OPT__
24
+
25
+ #include "Implicative.hh"
26
+ #include <iostream>
27
+ #include <cstdlib>
28
+ #include "gecode/minimodel.hh"
29
+ #include "gecode/search.hh"
30
+ #include "Strategy.hh"
31
+ #include "qecode.hh"
32
+
33
+ using namespace Gecode;
34
+ class QECODE_VTABLE_EXPORT QSolver {
35
+
36
+ private:
37
+ int n;
38
+ Implicative* sp;
39
+ int* nbRanges;
40
+ Strategy rSolve(Implicative* qs,int scope,vector<int> assignments,unsigned long int& nodes);
41
+ public:
42
+ QECODE_EXPORT QSolver(Implicative* sp);
43
+ QECODE_EXPORT Strategy solve(unsigned long int& nodes);
44
+ };
45
+
46
+ #endif
@@ -0,0 +1,1112 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2005
8
+ * Guido Tack, 2005
9
+ *
10
+ * Last modified:
11
+ * $Date: 2008-07-11 10:17:28 +0200 (Fri, 11 Jul 2008) $ by $Author: tack $
12
+ * $Revision: 7320 $
13
+ *
14
+ * This file is part of Gecode, the generic constraint
15
+ * development environment:
16
+ * http://www.gecode.org
17
+ *
18
+ * Permission is hereby granted, free of charge, to any person obtaining
19
+ * a copy of this software and associated documentation files (the
20
+ * "Software"), to deal in the Software without restriction, including
21
+ * without limitation the rights to use, copy, modify, merge, publish,
22
+ * distribute, sublicense, and/or sell copies of the Software, and to
23
+ * permit persons to whom the Software is furnished to do so, subject to
24
+ * the following conditions:
25
+ *
26
+ * The above copyright notice and this permission notice shall be
27
+ * included in all copies or substantial portions of the Software.
28
+ *
29
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
30
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
31
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
32
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
33
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
34
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
35
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
36
+ *
37
+ */
38
+
39
+ /*
40
+ * No code, just contains the group definitions of the
41
+ * Doxygen-generated documentation
42
+ */
43
+
44
+
45
+ /**
46
+ * \defgroup Task Functionality by programming task
47
+ */
48
+
49
+ /**
50
+ * \defgroup TaskModel Programming models
51
+ * \ingroup Task
52
+ */
53
+
54
+ /**
55
+ * \defgroup TaskModelScript Setting up scripts
56
+ *
57
+ * Scripts (or models) are programmed by inheriting from the class
58
+ * Gecode::Space. For many examples see \ref Example.
59
+ *
60
+ * \ingroup TaskModel
61
+ */
62
+
63
+ /**
64
+ * \defgroup TaskModelInt Using finite domain integers
65
+ * \ingroup TaskModel
66
+ */
67
+
68
+ /**
69
+ * \defgroup TaskModelIntVars Integer variables
70
+ * \ingroup TaskModelInt
71
+ */
72
+
73
+ /**
74
+ * \defgroup TaskModelSearch Search engines
75
+ *
76
+ * Defines search engines. All search engines (but Gecode::LDS, where
77
+ * it is not needed) support recomputation. The behaviour of recomputation
78
+ * is controlled by a passing a search option object (see the class
79
+ * Gecode::Search::Options).
80
+ *
81
+ * Requires \code #include "gecode/search.hh" \endcode
82
+ * \ingroup TaskModel
83
+ */
84
+
85
+ /**
86
+ * \defgroup TaskModelSet Using finite integer sets
87
+ * \ingroup TaskModel
88
+ */
89
+
90
+ /**
91
+ * \defgroup TaskModelSetVars Set variables
92
+ * \ingroup TaskModelSet
93
+ */
94
+
95
+ /**
96
+ * \defgroup TaskModelCpltSet Using finite integer sets with complete domain representation
97
+ * \ingroup TaskModel
98
+ */
99
+
100
+ /**
101
+ * \defgroup TaskModelCpltSetVars Set variables with complete domain representation
102
+ * \ingroup TaskModelCpltSet
103
+ */
104
+
105
+ /**
106
+ * \defgroup TaskModelMiniModel Direct modelling
107
+ * \ingroup TaskModel
108
+ */
109
+
110
+ /**
111
+ * \defgroup TaskSearch Programming search engines
112
+ * \ingroup Task
113
+ */
114
+
115
+ /**
116
+ * \defgroup TaskActor Programming actors
117
+ * \ingroup Task
118
+ */
119
+
120
+ /**
121
+ * \defgroup TaskActorInt Programming integer actors
122
+ * \ingroup TaskActor
123
+ */
124
+
125
+ /**
126
+ * \defgroup TaskActorSet Programming set actors
127
+ * \ingroup TaskActor
128
+ */
129
+
130
+ /**
131
+ * \defgroup TaskActorCpltSet Programming CpltSet actors
132
+ * \ingroup TaskActor
133
+ */
134
+
135
+ /**
136
+ * \defgroup TaskVar Programming variables
137
+ * \ingroup Task
138
+ */
139
+
140
+ /**
141
+ * \defgroup TaskVarView Programming views for variables
142
+ * \ingroup TaskVar
143
+ */
144
+
145
+ /**
146
+ * \defgroup TaskTest Testing
147
+ * \ingroup Task
148
+ */
149
+
150
+ /**
151
+ * \defgroup TaskReflSer Reflection and serialization
152
+ * \ingroup Task
153
+ *
154
+ * Reflection allows you to query a Space object for the propagators,
155
+ * branchings, and variables that it contains.
156
+ *
157
+ * Serialization provides methods for producing a text or binary
158
+ * representation of a space that can be used to recreate a copy of the space.
159
+ */
160
+
161
+ /**
162
+ * \defgroup TaskReflection Reflection API
163
+ *
164
+ * The reflection API provides information about the propagators, branchings,
165
+ * and variables in a space. More detailed, step-by-step information can be
166
+ * found in the \ref PageReflection "reflection tutorial".
167
+ *
168
+ * Requires \code #include "gecode/kernel.hh" \endcode
169
+ *
170
+ * \ingroup TaskReflSer
171
+ */
172
+
173
+ #include "doxygen/reflection.hh"
174
+
175
+ /**
176
+ * \defgroup TaskSerialization Serialization
177
+ *
178
+ * The serialization API lets you produce text or binary representations of a
179
+ * space, and recreate a copy of the original space from that representation.
180
+ * It provides funcionality for creating variables and posting propagators in
181
+ * a space using the specifications obtained through reflection.
182
+ *
183
+ * Requires \code #include "gecode/serialization.hh" \endcode
184
+ *
185
+ * \ingroup TaskReflSer
186
+ */
187
+
188
+ /**
189
+ * \defgroup Func Common functionality
190
+ */
191
+
192
+ /**
193
+ * \defgroup FuncMem Memory management
194
+ * \ingroup Func
195
+ */
196
+
197
+ /**
198
+ * \defgroup FuncThrow Gecode exceptions
199
+ * \ingroup Func
200
+ */
201
+
202
+ /**
203
+ * \defgroup FuncSupport Support algorithms and datastructures
204
+ *
205
+ * These are some common datastructures used in the implementation of
206
+ * %Gecode. Maybe they can be also useful to others.
207
+ *
208
+ * In order to use them, one needs to include the appropriate header-file
209
+ * as described in the class and function documentation.
210
+ * \ingroup Func
211
+ */
212
+
213
+ /**
214
+ * \defgroup FuncIter Range and value iterators
215
+ *
216
+ * Both range and value iterators have a rather simple interface
217
+ * for controlling iteration (which deviates from what you might be
218
+ * used to from other iterators).
219
+ *
220
+ * The application operator (if \c i is an iterator, it is invoked by \c i() )
221
+ * tests whether an iterator has not yet reached
222
+ * its end (in this case, \c true is returned). The prefix
223
+ * increment operator (if \c i is an iterator, this is invoked as \c ++i)
224
+ * moves the iterator to the next element (either next value or next range).
225
+ *
226
+ * Value iterators provide access to the value by the member function
227
+ * \c val(). Range iterators provide access to the smallest, largest, and
228
+ * width of the current range by \c min(), \c max(), and \c width()
229
+ * respectively.
230
+ *
231
+ * Requires \code #include "gecode/iter.hh" \endcode
232
+ * \ingroup Func
233
+ */
234
+
235
+ /**
236
+ * \defgroup FuncIterRanges Range iterators
237
+ *
238
+ * A range iterator provides incremental access to a sequence of increasing
239
+ * ranges.
240
+ *
241
+ * Requires \code #include "gecode/iter.hh" \endcode
242
+ * \ingroup FuncIter
243
+ */
244
+
245
+ /**
246
+ * \defgroup FuncIterRangesVirt Range iterators with virtual member functions
247
+ *
248
+ * A range iterator provides incremental access to a sequence of increasing
249
+ * ranges. Iterators with virtual member functions have to be used when
250
+ * they are combined dynamically, and the actual types hence cannot be
251
+ * specified as template arguments.
252
+ *
253
+ * Requires \code #include "gecode/iter.hh" \endcode
254
+ * \ingroup FuncIterRanges
255
+ */
256
+
257
+ /**
258
+ * \defgroup FuncIterValues Value iterators
259
+ *
260
+ * A value iterator provides incremental access to a sequence of increasing
261
+ * values.
262
+ *
263
+ * Requires \code #include "gecode/iter.hh" \endcode
264
+ * \ingroup FuncIter
265
+ */
266
+
267
+ /**
268
+ * \defgroup FuncIterValuesVirt Value iterators with virtual member functions
269
+ *
270
+ * A value iterator provides incremental access to a sequence of increasing
271
+ * values. Iterators with virtual member functions have to be used when
272
+ * they are combined dynamically, and the actual types hence cannot be
273
+ * specified as template arguments.
274
+ *
275
+ * Requires \code #include "gecode/iter.hh" \endcode
276
+ * \ingroup FuncIterValues
277
+ */
278
+
279
+ /**
280
+ * \defgroup Other Other available functionality
281
+ *
282
+ */
283
+
284
+ /**
285
+ * \defgroup FuncIntProp Integer propagators
286
+ *
287
+ * This module contains a description of all predefined integer
288
+ * propagators. They can be reused, for example, for rewriting
289
+ * newly defined integer propagators into already available
290
+ * propagators.
291
+ * \ingroup Other
292
+ */
293
+
294
+ /**
295
+ * \defgroup FuncIntSelView Integer view selection for branching
296
+ *
297
+ * Contains a description of view selection strategies on integer
298
+ * views that can be used together with the generic view/value
299
+ * branching class Gecode::ViewValBranching (argument \a ViewSel).
300
+ *
301
+ * All view selection classes require
302
+ * \code #include "gecode/int/branch.hh" \endcode
303
+ * \ingroup Other
304
+ */
305
+
306
+ /**
307
+ * \defgroup FuncIntSelVal Integer value selection for branching
308
+ *
309
+ * Contains a description of value selection strategies on integer
310
+ * views that can be used together with the generic view/value
311
+ * branching class Gecode::ViewValBranching (argument \a ValSel).
312
+ *
313
+ * All value selection classes require
314
+ * \code #include "gecode/int/branch.hh" \endcode
315
+ * \ingroup Other
316
+ */
317
+
318
+ /**
319
+ * \defgroup FuncSetProp Set propagators
320
+ *
321
+ * This module contains a description of all predefined finite set
322
+ * propagators. They can be reused, for example, for rewriting
323
+ * newly defined finite set propagators into already available
324
+ * propagators.
325
+ * \ingroup Other
326
+ */
327
+
328
+ /**
329
+ * \defgroup FuncSetSelView Set view selection for branching
330
+ *
331
+ * Contains a description of view selection strategies on set
332
+ * views that can be used together with the generic view/value
333
+ * branching class Gecode::ViewValBranching (argument \a ViewSel).
334
+ *
335
+ * All view selection classes require
336
+ * \code #include "gecode/set/branch.hh" \endcode
337
+ * \ingroup Other
338
+ */
339
+
340
+ /**
341
+ * \defgroup FuncSetSelVal Set value selection for branching
342
+ *
343
+ * Contains a description of value selection strategies on set
344
+ * views that can be used together with the generic view/value
345
+ * branching class Gecode::ViewValBranching (argument \a ValSel).
346
+ *
347
+ * All value selection classes require
348
+ * \code #include "gecode/set/branch.hh" \endcode
349
+ * \ingroup Other
350
+ */
351
+
352
+ /**
353
+ * \defgroup FuncCpltSetProp CpltSet propagators
354
+ *
355
+ * This module contains a description of all predefined
356
+ * propagators for CpltSet variables. They can be reused, for example, for
357
+ * rewriting newly defined CpltSet propagators into already available
358
+ * propagators.
359
+ * \ingroup Other
360
+ */
361
+
362
+ /**
363
+ * \defgroup FuncCpltSetSelView CpltSet view selection for branching
364
+ *
365
+ * Contains a description of view selection strategies on CpltSet
366
+ * views that can be used together with the generic view/value
367
+ * branching class Gecode::ViewValBranching (argument \a ViewSel).
368
+ *
369
+ * All view selection classes require
370
+ * \code #include "gecode/cpltset/branch.hh" \endcode
371
+ * \ingroup Other
372
+ */
373
+
374
+ /**
375
+ * \defgroup FuncCpltSetSelVal CpltSet value selection for branching
376
+ *
377
+ * Contains a description of value selection strategies on CpltSet
378
+ * views that can be used together with the generic view/value
379
+ * branching class Gecode::ViewValBranching (argument \a ValSel).
380
+ *
381
+ * All value selection classes require
382
+ * \code #include "gecode/cpltset/branch.hh" \endcode
383
+ * \ingroup Other
384
+ */
385
+
386
+ /**
387
+ * \defgroup Example Example scripts (models)
388
+ *
389
+ * All scripts are compiled into simple standalone programs. All
390
+ * programs understand the several generic and problem-specific
391
+ * commandline options. An overview of the options is available
392
+ * by invoking the standalone programs with the <code>-help</code>
393
+ * commandline option.
394
+ *
395
+ */
396
+
397
+ /**
398
+ * \defgroup ExProblem Scripts for problems
399
+ * \ingroup Example
400
+ *
401
+ * These scripts are for small problems that exemplify how to model
402
+ * with %Gecode.
403
+ *
404
+ */
405
+
406
+ /**
407
+ * \defgroup ExStress Scripts for stress tests
408
+ * \ingroup Example
409
+ *
410
+ * These scripts are for stressing certain system features, typically
411
+ * the implementation of a particular constraint.
412
+ *
413
+ */
414
+
415
+ /*
416
+ * Collect some definitions for which no reasonable place exists
417
+ *
418
+ */
419
+
420
+ /**
421
+ * \namespace Gecode::Support
422
+ * \brief %Support algorithms and datastructures
423
+ */
424
+
425
+ /**
426
+ * \mainpage Gecode Reference Documentation
427
+ *
428
+ * This document provides reference information about
429
+ * <A HREF="http://www.gecode.org">%Gecode</A>.
430
+ * The documentation is structured into three major groups:
431
+ * getting started, common programming tasks, and
432
+ * available functionality.
433
+ *
434
+ * This document corresponds to %Gecode version @VERSION@, please consult
435
+ * the changelog for \ref SectionChangeList "recent changes".
436
+ *
437
+ * \section SecStart Getting started
438
+ *
439
+ * For your first steps with %Gecode, the following pages may be of interest:
440
+ * - \ref PageComp
441
+ * - \ref PageUsage
442
+ * - \ref PageNotation
443
+ * - \ref PageGlossary
444
+ *
445
+ * To get started with modelling in %Gecode, you may also want to have a look
446
+ * at our \ref Example.
447
+ *
448
+ * \section SecByTask Programming tasks
449
+ *
450
+ * Documentation is available for the following tasks:
451
+ * - \ref TaskModel
452
+ * - \ref TaskSearch
453
+ * - \ref TaskActor "Programming propagators and branchings"
454
+ * - \ref TaskVar
455
+ * - \ref TaskTest
456
+ * - \ref TaskReflSer
457
+ *
458
+ * \section SecByFunc Available functionality
459
+ *
460
+ * The most important functionality is:
461
+ * - \ref FuncMem
462
+ * - \ref FuncThrow
463
+ *
464
+ * The complete functionality can be found \ref Func "here".
465
+ *
466
+ * The part \ref Other documents existing propagators, variable
467
+ * implementations, and so on which serves as documentation of examples.
468
+ *
469
+ * \section SecIndex List and index content
470
+ *
471
+ * Additionally, the documentation also features the following parts:
472
+ * - \ref PageLic
473
+ * - \ref PageChange
474
+ *
475
+ * The following lists and indices are available
476
+ * - \ref PageCodeStat
477
+ * - <a class="el" href="modules.html">List of all modules</a>
478
+ * - <a class="el" href="annotated.html">List of all classes including brief documentation</a>
479
+ * - <a class="el" href="namespaces.html">List of all namespaces including brief documentation</a>
480
+ * - <a class="el" href="files.html">List of all files</a>
481
+ * - <a class="el" href="hierarchy.html">Class hierarchy</a>
482
+ * - <a class="el" href="classes.html">Alphabetical class index</a>
483
+ * - <a class="el" href="namespacemembers.html">Namespace members</a>
484
+ * - <a class="el" href="functions.html">Class members</a>
485
+ * - <a class="el" href="globals.html">File members</a>
486
+ */
487
+
488
+ /**
489
+ * \page PageNotation Notational conventions
490
+ *
491
+ * Throughout this reference documentation we use some notational conventions
492
+ * designed to keep the documentation concise yet understandable. Please
493
+ * read the following carefully.
494
+ *
495
+ * \section NotationArray Array notation
496
+ *
497
+ * We allow ourselves to refer to the \f$i\f$-th element of an array \f$x\f$
498
+ * by \f$x_i\f$. The size of an array \f$x\f$ (either provided by a member
499
+ * function \c %size() or clear from context) is denoted \f$|x|\f$.
500
+ *
501
+ * \section NotationHome The home space
502
+ *
503
+ * Many functions and member functions take an argument \a home of
504
+ * type \c Space*. The home space serves as manager to many
505
+ * operations used by variables, views, propagators, spaces, and so
506
+ * on. It provides
507
+ * services such as failure management, propagation control,
508
+ * memory management, and so on. To keep the documentation concise
509
+ * the home space is not documented for functions
510
+ * and member functions.
511
+ *
512
+ * \section NotationShare Sharing in update and copy
513
+ *
514
+ * In member functions that either copy or update an object during
515
+ * cloning, an argument \a share of type \c bool is available. This
516
+ * Boolean value controls whether during cloning the data structure at
517
+ * hand will be shared among the newly created cloned space and the original
518
+ * or whether two independent copies are created. Some functions (such
519
+ * as \c copy for spaces (Gecode::Space) or \c copy for propagators
520
+ * (Gecode::Propagator) also feature this argument. Here it is used
521
+ * to pass on the Boolean value to other datastructures used inside spaces
522
+ * or propagators.
523
+ *
524
+ * The actual value the \a share argument has is defined by the search
525
+ * engine: when a search engine uses the \a clone member function of
526
+ * a space it decides whether sharing is to be used in the cloning of
527
+ * the space or not. If the search engine is single-threaded, it will
528
+ * use full sharing (\a share will be true). Only if the search engine
529
+ * uses concurrency or parallelism with more than a single thread,
530
+ * it will pass false as value. This means that by not sharing data structures
531
+ * among spaces which are to be used in different threads, all parts of
532
+ * %Gecode but the actual search engine do not need to provide concurrency
533
+ * control.
534
+ *
535
+ * As examples for data structures which are sensitive to sharing, consider
536
+ * Gecode::SharedArray, Gecode::IntSet, and Gecode::DFA.
537
+ */
538
+
539
+ /**
540
+ \page PageGlossary Brief glossary
541
+
542
+ This page gives brief explanations about some of the most
543
+ frequently occurring terms (currently limited to important
544
+ entities manifest in the implementation) used in the %Gecode
545
+ reference documentation.
546
+
547
+ \section GlossaryActor Actor
548
+
549
+ An actor is a branching (\ref GlossaryBranching), a propagator
550
+ (\ref GlossaryPropagator), or an advisor (\ref
551
+ GlossaryAdvisor). Actors provide common functionality such as
552
+ member functions for copying during cloning, memory allocation,
553
+ and so on. Actors are implemented by the class
554
+ Gecode::Actor. More on programming actors can be found in the
555
+ module \ref TaskActor.
556
+
557
+ \section GlossaryBranching Branching
558
+
559
+ A branching defines the shape of the search tree. Branchings are
560
+ also known as labelings or distributors, and a branching creates
561
+ a series of choice points. Branchings are implemented by the
562
+ class Gecode::Branching. A common abstraction for defining
563
+ branchings based on view and value selection is provided by the
564
+ class Gecode::ViewValBranching.
565
+
566
+ \section GlossaryBranchingDesc Branching description
567
+
568
+ A branching description speeds up recomputation by providing
569
+ batch recomputation. It is created by a branching (\ref
570
+ GlossaryBranching) and allows to replay the effect of that
571
+ branching without the need to first perform constraint
572
+ propagation. The base-class for branching descriptions is
573
+ Gecode::BranchingDesc. An example for a branching description
574
+ that works together with branchings based on view and value
575
+ selection is Gecode::PosValDesc.
576
+
577
+ \section GlossarySpace Computation space
578
+
579
+ A computation space (space for short) comprises all entities for
580
+ a constraint problem to be solved, including all actors (\ref
581
+ GlossaryActor) and variables (\ref GlossaryVariable). A space can
582
+ be seen as corresponding to a node in the search tree. It
583
+ organizes constraint propagation, the branching process,
584
+ exploration, and memory management. Spaces are implemented by the
585
+ class Gecode::Space. They provide functionality for \ref
586
+ TaskModelScript, \ref TaskSearch, and \ref FuncMemSpace.
587
+
588
+ \section GlossaryME Modification event
589
+
590
+ A modification event describes how a view (\ref GlossaryView) or
591
+ variable implementation (\ref GlossaryVarImp) is changed by an
592
+ update operation performed on the view or variable. Each variable
593
+ domain defines its own modification events (see \ref
594
+ TaskActorIntMEPC and \ref TaskActorSetMEPC). However modification
595
+ events that describe generic events such as failure, no
596
+ modification, or assignment to a single value are predefined (see
597
+ \ref TaskVarMEPC).
598
+
599
+ \section GlossaryPropCond Propagation condition
600
+
601
+ A propagation condition defines when a propagator requires to be
602
+ re-executed. Re-execution is controlled by the modification events
603
+ that occur on the variables the propagator depends on (see \ref
604
+ GlossaryPropagator). Propagation conditions and the relation
605
+ between propagation conditions and modification events depends on
606
+ the variable domain (see \ref TaskActorIntMEPC and \ref
607
+ TaskActorSetMEPC). However, the propagation conditions that
608
+ states re-execution when a variable becomes assigned is generic
609
+ (see \ref TaskVarMEPC).
610
+
611
+ \section GlossaryPropagator Propagator
612
+
613
+ A propagator implements a constraint (actually, a constraint can
614
+ be implemented by a collection of propagators). Execution by a
615
+ propagator is defined by its dependencies: the views (referring to
616
+ some variables) together with their propagation conditions. A
617
+ propagator is implemented by inheriting from the class
618
+ Gecode::Propagator. Common abstractions for propagators are also
619
+ available (see \ref TaskPropPat, \ref TaskPropRePat, and \ref
620
+ TaskPropSetPat).
621
+
622
+ \section GlossaryAdvisor Advisor
623
+
624
+ An advisor supports a single propagator. An advisor is executed
625
+ whenever the view it has subscribed to is modified. Execution of
626
+ an advisor amounts to executing the advise member function of the
627
+ advisor's propagator where the advisor and delta information
628
+ (\ref GlossaryDelta) are passed as arguments. An advisor is
629
+ implemented by inheriting from the class Gecode::Advisor.
630
+
631
+ \section GlossaryDelta Delta information
632
+
633
+ Delta information is implemented as an object which is a subclass
634
+ of Gecode::Delta. A Delta object describes how the domain of a
635
+ variable has been changed by an operation on the variable. Delta
636
+ objects are passed together with advisors to the advise member
637
+ function of a propagator.
638
+
639
+ \section GlossaryMED Modification event delta
640
+
641
+ A propagator maintains a delta of modification events for all
642
+ variable types. A modification event delta is available to the
643
+ propagate and cost member functions of a propagator and describes
644
+ the modification events that have occurred since the last execution of a
645
+ propagator. A modification event delta is highly abstract: it
646
+ does not reveal for which variable a particular modification
647
+ event occurred, it only reveals that a certain modification event
648
+ has occurred for any variable of a given variable
649
+ type. Modification events for a particular variable type can be
650
+ extracted from a modification event delta through the respective
651
+ view or variable implementation (see for example \ref
652
+ TaskActorIntView or \ref TaskActorSetView).
653
+
654
+ \section GlossaryVariable Variable
655
+
656
+ A variable is used for modeling problems, be it for direct
657
+ modeling or for modeling through some interface. A variable
658
+ provides only those operations useful for modeling and excludes
659
+ in particular operations that can modify the variable domain
660
+ directly. A variable is implemented by a variable implementation
661
+ (see below).
662
+
663
+ \section GlossaryVarImp Variable implementation
664
+
665
+ A variable implementation is implemented by inheriting from
666
+ Gecode::Variable. It implements the variable domain and provides
667
+ operations to access and modify the domain. Examples of variable
668
+ implementations are Gecode::Int::IntVarImp and
669
+ Gecode::Set::SetVarImp.
670
+
671
+ \section GlossaryView View
672
+
673
+ A view offers essentially the same interface as a variable
674
+ implementation and allows both domain access and
675
+ modification. Typically, several views exist for the same
676
+ variable implementation to obtain several constraints from the
677
+ same propagator. Examples of views are \ref TaskActorIntView and
678
+ \ref TaskActorSetView.
679
+
680
+ */
681
+
682
+ /**
683
+ * \page PageUsage Compiling and linking against Gecode
684
+ *
685
+ * \section SecUsageInclude Including header files
686
+ *
687
+ * Deciding which header files must be included when using %Gecode is
688
+ * quite straightforward. There are the following header files for inclusion:
689
+ * - gecode/support.hh must always included (support.hh header is
690
+ * included from kernel.hh)
691
+ * - gecode/kernel.hh must always be included (the header files below
692
+ * also always include kernel.hh).
693
+ * - gecode/search.hh must be included, if search engines are used
694
+ * (see for example \ref TaskModelSearch).
695
+ * - gecode/int.hh must be included, if any integer functionality is used
696
+ * (see for example \ref TaskModelInt and \ref TaskActorInt).
697
+ * - gecode/set.hh must be included, if any finite set functionality is used
698
+ * (see for example \ref TaskModelSet and \ref TaskActorSet).
699
+ * - gecode/cpltset.hh must be included, if any complete finite set
700
+ * functionality is used
701
+ * (see for example \ref TaskModelCpltSet and \ref TaskActorCpltSet).
702
+ * - gecode/minimodel.hh must be included, if direct modelling support
703
+ * is used (see for example \ref TaskModelMiniModel).
704
+ * - gecode/serialization.hh must be included, if support for serialization
705
+ * is used.
706
+ *
707
+ * Other functionality is available through a set of header files. For example
708
+ * to access the implementation of particular propagators, a particular header
709
+ * file must be included. The header file to be included is always mentioned
710
+ * in the documentation of the class or function.
711
+ *
712
+ * \section SecUsageLink Linking libraries
713
+ *
714
+ * Setting the exact name for a library on a particular platform aside,
715
+ * inclusion of header files basically coincides with against which
716
+ * library must be linked. That is:
717
+ * - If gecode/support.hh is included, linking againg the support library is
718
+ * required.
719
+ * - If gecode/kernel.hh is included, linking against the kernel library is
720
+ * required.
721
+ * - If gecode/search.hh is included, linking against the search library is
722
+ * required.
723
+ * - If gecode/int.hh is included, linking against the integer library is
724
+ * required.
725
+ * - If gecode/set.hh is included, linking against the set library is
726
+ * required.
727
+ * - If gecode/cpltset.hh is included, linking against the cpltset library is
728
+ * required.
729
+ * - If gecode/minimodel.hh is included, linking against the minimodel
730
+ * library is required.
731
+ * - If gecode/serialization.hh is included, linking against the
732
+ * serialization library is required.
733
+ *
734
+ * The functionality in \ref FuncIter requires no
735
+ * library for linking. Reusing integer or set propagators of course
736
+ * require the integer or set library.
737
+ *
738
+ * If there is a difference between library and DLL (such as on Windows)
739
+ * linking must be done against the appropriate library and the
740
+ * corresponding DLL must be available for execution (such as in the
741
+ * PATH environment variable).
742
+ *
743
+ * The libraries contain code that is executed at link time (for registering
744
+ * part of the reflection functionality). If you create static libraries,
745
+ * this code will not be linked into your executable as it is not directly
746
+ * referenced. You will have to tell your linker to include all symbols from
747
+ * the library (e.g. using -Wl,--whole-archive on Linux). Please refer to your
748
+ * linker documentation.
749
+ *
750
+ * \section SecUsageLibraries Library names
751
+ *
752
+ * \subsection SULA Windows with Visual Studio
753
+ *
754
+ * - Support library and DLL: GecodeSupport.lib and GecodeSupport.dll
755
+ * - Kernel library and DLL: GecodeKernel.lib and GecodeKernel.dll
756
+ * - Search library and DLL: GecodeSearch.lib and GecodeSearch.dll
757
+ * - Integer library and DLL: GecodeInt.lib and GecodeInt.dll
758
+ * - Set library and DLL: GecodeSet.lib and GecodeSet.dll
759
+ * - CpltSet library and DLL: GecodeCpltSet.lib and GecodeCpltSet.dll
760
+ * - Minimodel library and DLL: GecodeMiniModel.lib and GecodeMiniModel.dll
761
+ * - Serialization library and DLL: GecodeSerialization.lib and
762
+ * GecodeSerialization.dll
763
+ *
764
+ * \subsection SULB Unix (Linux, MacOS X)
765
+ *
766
+ * Depending on whether %Gecode was compiled as a static or as a dynamic
767
+ * library, different filename suffixes are used on different Unix platforms.
768
+ * All library names follow the following scheme:
769
+ *
770
+ * - Support library: libgecodesupport.&lt;EXT&gt;
771
+ * - Kernel library: libgecodekernel.&lt;EXT&gt;
772
+ * - Search library: libgecodesearch.&lt;EXT&gt;
773
+ * - Integer library: libgecodeint.&lt;EXT&gt;
774
+ * - Set library: libgecodeset.&lt;EXT&gt;
775
+ * - CpltSet library: libgecodecpltset.&lt;EXT&gt;
776
+ * - Minimodel library: libgecodeminimodel.&lt;EXT&gt;
777
+ * - Serialization library: libgecodeserialization.&lt;EXT&gt;
778
+ *
779
+ * where &lt;EXT&gt; depends on the library type and platform:
780
+ *
781
+ * - libgecode[...].a for static libaries on all Unix flavors
782
+ * - libgecode[...].so for shared libraries on Linux
783
+ * - libgecode[...].dylib for shared libraries on MacOS X
784
+ *
785
+ * You can use for example
786
+ *
787
+ * <code>gcc -L$GPREFIX/lib -lgecodekernel</code>
788
+ *
789
+ * to link the kernel library, if the libraries are found in
790
+ * <code>$GPREFIX/lib</code>.
791
+ */
792
+
793
+ /**
794
+ * \page PageComp Compiling and installing Gecode
795
+ *
796
+ * The %Gecode library, including examples and documentation, can be built
797
+ * on all recent versions of Windows, Linux, and MacOS X. Porting to other
798
+ * Unix flavors should be easy, if any change is necessary at all.
799
+ *
800
+ * \section Prerequisites
801
+ *
802
+ * In order to compile %Gecode, you need a standard Unix toolchain including
803
+ * the following programs:
804
+ *
805
+ * - a bash-compatible shell
806
+ * - GNU make
807
+ * - sed
808
+ * - cp
809
+ * - diff
810
+ * - tar
811
+ * - perl
812
+ *
813
+ * These are available in all standard installations of Linux. On MacOS X,
814
+ * you need to install the Apple developer tools. For
815
+ * Windows, we require the
816
+ * <a href="http://www.cygwin.com/">Cygwin environment</a> that provides
817
+ * all necessary tools.
818
+ *
819
+ * We currently support
820
+ * - the Microsoft Visual C++ compilers for Windows. The Microsoft
821
+ * Visual C++ 2005 Express Edition is available free of charge from
822
+ * <a href="http://msdn.microsoft.com/vstudio/express/visualc/">the MSDN
823
+ * web pages</a>.
824
+ * - the GNU Compiler Collection (gcc) for Windows and Unix flavors such as
825
+ * Linux and MacOS X. The GNU gcc is open source software and available
826
+ * from <a href="http://gcc.gnu.org/">the GCC home page</a>. It is included
827
+ * in all Linux distributions and the Apple MacOS X developer tools.
828
+ * %Gecode requires at least version 3.4 of gcc. We recommend using version
829
+ * 4.2 or higher. Very unfortunately, the parser used in versions of gcc
830
+ * before 3.4 is broken and hence cannot compile %Gecode.
831
+ *
832
+ * The Intel C++ compiler is currently not supported.
833
+ *
834
+ * \section CompConf Configuring the sources
835
+ *
836
+ * %Gecode uses GNU autoconf to acquire information about the system it is
837
+ * compiled on. Typically, you need to run the <code>configure</code>
838
+ * script in the toplevel directory.
839
+ *
840
+ * To setup %Gecode for your particular system, you may need to add one or
841
+ * more of the following options to <code>configure</code>:
842
+ *
843
+ * - When using the GNU compiler gcc on Windows instead of the Microsoft
844
+ * compiler, add
845
+ * <code>CC=gcc CXX=g++</code> to your
846
+ * invocation of <code>configure</code>
847
+ * - To install %Gecode somewhere else than the default
848
+ * <code>/usr/local</code>, use the <code>--prefix=[...]</code> switch
849
+ * - You can enable and disable the individual modules %Gecode consists of
850
+ * using <code>--enable-[MODULE]</code> and <code>--disable-[MODULE]</code>
851
+ *
852
+ * You can get a list of all supported configuration options by calling
853
+ * <code>configure</code> with the <code>--help</code> switch.
854
+ *
855
+ * \subsection CompConfExamples Example configurations
856
+ *
857
+ * To compile %Gecode on a <b>Windows machine using the GNU compiler</b>, use
858
+ *
859
+ * <code>./configure CC=gcc CXX=g++</code>
860
+ *
861
+ * To compile only the %Gecode library <b>without examples</b> on a Unix machine, use
862
+ *
863
+ * <code>./configure --disable-examples</code>
864
+ *
865
+ * To compile on a <b>Unix machine</b> using a different than the default
866
+ * <code>gcc</code> compiler, and install under <code>/opt/gecode</code>, use
867
+ *
868
+ * <code>./configure --prefix=/opt/gecode CC=gcc-4.0 CXX=g++-4.0</code>
869
+ *
870
+ * To compile a <b>debug build</b> on Unix, turning on all assertions and not
871
+ * inlining anything, use
872
+ *
873
+ * <code>./configure --enable-debug</code>
874
+ *
875
+ * To compile on <b>Cygwin</b>, but linking against the <b>Windows libraries</b> instead
876
+ * of the Cygwin libraries, use
877
+ *
878
+ * <code>./configure CC="gcc -mno-cygwin" CXX="g++ -mno-cygwin"</code>
879
+ * Note that we only support building static libraries on Cygwin.
880
+ *
881
+ * To compile on a system using a different than the default compiler,
882
+ * and a <code>/bin/sh</code> that is not bash compatible (e.g. a
883
+ * <b>Solaris machine</b>), use
884
+ *
885
+ * <code>./configure --with-host-os=linux \ </code><br>
886
+ * <code>&nbsp;&nbsp;&nbsp;CC="gcc-4.0" CXX="g++-4.0" \ </code><br>
887
+ * <code>&nbsp;&nbsp;&nbsp;SHELL="/bin/bash"</code><br>
888
+ * <code>make SHELL="/bin/bash"</code>
889
+ *
890
+ * You can compile as <b>"universal binary" on a Mac OS
891
+ * machine</b>. Configure with
892
+ *
893
+ * <code>./configure --with-architectures=i386,ppc</code>
894
+ *
895
+ * For building universal binaries on a PowerPC machine, you have to supply
896
+ * the path to the universal SDK (which is the default on Intel based Macs):
897
+ *
898
+ * <code>./configure --with-architectures=i386,ppc</code>
899
+ * <code>&nbsp;&nbsp;&nbsp;--with-sdk=/Developer/SDKs/MacOSX10.4u.sdk</code>
900
+ *
901
+ * \subsection CompConfUsr Passing options for compilation
902
+ *
903
+ * Additional options for compilation can be passed to the compiler
904
+ * from the make commandline via the variable <code>CXXUSR</code>. For
905
+ * example, to pass to gcc the additional option "-mtune=i686" the following
906
+ * can be used:
907
+ *
908
+ * <code>make CXXUSR="-mtune=i686"</code>
909
+ *
910
+ * \subsection CompConfSepDir Compiling in a separate directory
911
+ *
912
+ * The %Gecode library can be built in a separate directory. This is useful
913
+ * if you do not want to clutter the source tree with all the object files
914
+ * and libraries.
915
+ *
916
+ * Configuring %Gecode in a separate directory is easy. Assume that the
917
+ * sources can be found in directory <code>$GSOURCEDIR</code>, change to
918
+ * the directory where you want to compile %Gecode and call
919
+ *
920
+ * <code>$GSOURCEDIR/configure [options]</code>
921
+ *
922
+ * This will generate all necessary files in the new build directory.
923
+ *
924
+ * \section CompComp Compiling the sources
925
+ *
926
+ * After successful configuration, simply invoking
927
+ *
928
+ * <code>make</code>
929
+ *
930
+ * in the toplevel %Gecode directory will compile the whole library.
931
+ *
932
+ * \section CompExamples Running the examples
933
+ *
934
+ * After compiling the examples, they can be run directly from the command
935
+ * line. For instance, try the %Golomb Rulers Problem:
936
+ *
937
+ * <code>./examples/golomb</code>
938
+ *
939
+ * or (when running Windows):
940
+ *
941
+ * <code>./examples/golomb.exe</code>
942
+ *
943
+ * On some platforms, you may need to set environment variables like
944
+ * <code>LD_LIBRARY_PATH</code> (Linux) or <code>DYLD_LIBRARY_PATH</code>
945
+ * (Mac OS) to the toplevel compile directory (where the dynamic libraries
946
+ * are placed after compilation).
947
+ *
948
+ * For more information on example scripts see \ref Example.
949
+ *
950
+ * \section Installation Installation
951
+ *
952
+ * After a successful compilation, you can install the %Gecode library
953
+ * and all header files necessary for compiling against it by invoking
954
+ *
955
+ * <code>make install</code>
956
+ *
957
+ * in the build directory.
958
+ *
959
+ * \section DepMngmt Dependency management
960
+ *
961
+ * The dependencies between source files are not handled automatically. If you
962
+ * are using a Gecode version from our subversion repository or if you
963
+ * modified any of the source files, you will have to call
964
+ * <code>make depend</code> before compilation in order to determine the
965
+ * source dependencies.
966
+ *
967
+ * Dependency management is only needed for recompiling Gecode after changing
968
+ * something. In an unmodified version (or after a <code>make clean</code>)
969
+ * all files are compiled anyway.
970
+ *
971
+ * \section UnsupPlatfrms Compiling for unsupported platforms
972
+ *
973
+ * If you want to try compiling Gecode on a platform that we do not
974
+ * mention, you can override the platform tests during
975
+ * <code>configure</code>. There are two options to specify the type of
976
+ * platform:
977
+ *
978
+ * - <code>--with-host-os=[linux|darwin|windows]</code>
979
+ * - <code>--with-compiler-vendor=[gnu|microsoft]</code>
980
+ *
981
+ * Using the first option, you can state that your platform should behave like
982
+ * Linux, Darwin (which is actually BSD), or Windows. This affects mainly
983
+ * the filenames and the tools used to generate shared and static libraries.
984
+ *
985
+ * The second option says
986
+ * that your compiler can be used very much like the gnu compiler
987
+ * <code>gcc</code>, or the Microsoft compiler <code>cl</code>.
988
+ * Please let us know of any successfull attempt at
989
+ * compiling Gecode on other platforms.
990
+ *
991
+ * \section MakeTargets Useful Makefile targets
992
+ *
993
+ * The main %Gecode Makefile supports the following useful targets:
994
+ *
995
+ * - <code>all</code> compiles all parts of the library that were enabled
996
+ * during <code>configure</code>, and the examples if
997
+ * enabled
998
+ * - <code>install</code> installs library, headers and examples (if enabled)
999
+ * into the <code>prefix</code> given at
1000
+ * <code>configure</code>
1001
+ * - <code>clean</code> removes object files
1002
+ * - <code>veryclean</code> removes object files, libraries, and all files
1003
+ + generated during <code>make</code>
1004
+ * - <code>distclean</code> removes object files, libraries, and all
1005
+ * generated files
1006
+ * - <code>depend</code> generates dependencies between source files
1007
+ * - <code>test</code> compiles the test suite
1008
+ * - <code>doc</code> generates this reference documentation using doxygen
1009
+ * - <code>installdoc</code> installs the documentation
1010
+ * - <code>dist</code> creates a source distribution as a tgz archive, not
1011
+ * including the contributions found in the <code>contribs</code> directory
1012
+ * - <code>distdir</code> creates a source distribution in a directory, not
1013
+ * including the contributions found in the <code>contribs</code> directory
1014
+ * - <code>distdoc</code> creates tgz and zip archives of the documentation
1015
+ * - <code>distzip</code> creates a binary distribution as a zip archive
1016
+ * - <code>disttgz</code> creates a binary distribution as a tgz archive
1017
+ *
1018
+ * \section CompileGist Compilation with Gist
1019
+ *
1020
+ * The %Gecode Interactive Search Tool (Gist) is a graphical search engine for
1021
+ * %Gecode, built on top of the
1022
+ * <a href="http://trolltech.com/products/qt">Qt GUI toolkit</a>.
1023
+ *
1024
+ * In order to compile %Gecode with Gist, you need an installation of the Qt
1025
+ * library including the development header files. The source code for Qt is
1026
+ * <a href="http://trolltech.com/downloads/opensource">available from
1027
+ * Trolltech under the GPL license.</a>
1028
+ *
1029
+ * <b>
1030
+ * Please note that if you want to develop closed-source software with %Gecode
1031
+ * and Gist, you will need to get a commercial license for Qt from Trolltech!
1032
+ * </b>
1033
+ *
1034
+ * If you are developing on Windows using the Microsoft Visual C++ compiler,
1035
+ * make sure to compile the Qt library with the same compiler (this is
1036
+ * possible with Qt version 4.3.2, even if the download page does not say so).
1037
+ *
1038
+ * If the <code>qmake</code> tool is in your shell path, all you need to do to
1039
+ * enable Gist is to configure %Gecode with the switch
1040
+ * <code>--enable-gist</code>.
1041
+ */
1042
+
1043
+
1044
+ /**
1045
+ * \page PageHowToChange_2 How to Change from Gecode 1.3.1 to Gecode 2.0.x
1046
+ *
1047
+
1048
+ As Gecode 2.0.0 is a major revision of Gecode, your programs that are written
1049
+ for Gecode 1.3.1 are likely to require some modifications before they work
1050
+ again. All modifications are straightforward, though.
1051
+
1052
+ This short summary shows how to adapt your models and linker invocation, for
1053
+ changes to propagator implementations, etc, please consult the changelog.
1054
+
1055
+ \section SecChange2IntBool IntVar and BoolVar
1056
+
1057
+ Boolean variables (BoolVar) are not any longer integer variables
1058
+ (IntVar). The same holds for variable arrays (BoolVarArray,
1059
+ IntVarArray). So, you can not mix Boolean and integer variables
1060
+ in the same array (use two different arrays) and you can not cast
1061
+ between them. If you want to link the value of a BoolVar to the
1062
+ value of an IntVar you have to use a \ref TaskModelIntChannel
1063
+ "channel constraint". Posting constraints remains unchanged, as
1064
+ all constraints offer two overloaded versions (one for IntVar,
1065
+ one for BoolVar).
1066
+
1067
+ \section SecChange2Regular Regular constraint
1068
+
1069
+ The regular constraint has been renamed to extensional (after
1070
+ all, it is an extensionally specified constraint). The old name
1071
+ is still available in the MiniModel module.
1072
+
1073
+ If you want to use regular expressions, you have to add
1074
+ \code #include "gecode/int/minimodel.hh" \endcode
1075
+ to your file as they moved to the MiniModel module.
1076
+
1077
+ \section SecChange2Bool Boolean constraints
1078
+
1079
+ In order to make the interface to Boolean constraints more
1080
+ regular and similar to set constraints, Boolean constraints are
1081
+ available as rel constraints. That is, instead of
1082
+ \code bool_and(home, x, y, z); \endcode
1083
+ you have to write
1084
+ \code rel(home, x, BOT_AND, y, z); \endcode
1085
+ Likewise, for arrays you have to write
1086
+ \code rel(home, BOT_AND, x, y); \endcode
1087
+ instead of
1088
+ \code bool_and(home, x, y); \endcode
1089
+ More information is available \ref TaskModelIntRelBool "here".
1090
+
1091
+ \section SecChange2Branching Branching
1092
+
1093
+ Values and types for selecting how to branch have been made uniform.
1094
+ Replace BVAL_* by INT_VAL_*, BVAR_* by INT_VAR_*, and so on.
1095
+
1096
+ \section SecChange2GCC Global cardinality constraint
1097
+
1098
+ The interface for the global cardinality constraint has been
1099
+ simplified. The constraint is now called count. Please check the
1100
+ documentation for \ref TaskModelIntCard "details".
1101
+
1102
+ \section SecChange2Sorted Sortedness constraint
1103
+
1104
+ The sortedness constraint has been renamed to sorted.
1105
+
1106
+ \section Linking
1107
+
1108
+ Some generic functionality has been put into its own library (\code
1109
+ libgecodesupport \endcode on Unix systems, \code GecodeSupport.dll \endcode on
1110
+ Windows). You have to link against this library now.
1111
+
1112
+ */