gecoder-with-gecode 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (919) hide show
  1. data/CHANGES +6 -0
  2. data/README +1 -1
  3. data/THANKS +18 -0
  4. data/example/equation_system.rb +3 -1
  5. data/example/magic_sequence.rb +3 -1
  6. data/example/queens.rb +3 -1
  7. data/example/send_more_money.rb +24 -30
  8. data/example/send_most_money.rb +15 -26
  9. data/example/square_tiling.rb +3 -1
  10. data/example/sudoku-set.rb +3 -1
  11. data/ext/{gecode-2.1.1 → gecode-2.2.0}/LICENSE +0 -0
  12. data/ext/{gecode-2.1.1 → gecode-2.2.0}/Makefile.contribs +0 -0
  13. data/ext/gecode-2.2.0/Makefile.dep +8056 -0
  14. data/ext/gecode-2.2.0/Makefile.in +1590 -0
  15. data/ext/gecode-2.2.0/changelog.in +2698 -0
  16. data/ext/gecode-2.2.0/configure +13112 -0
  17. data/ext/gecode-2.2.0/configure.ac +273 -0
  18. data/ext/gecode-2.2.0/configure.ac.in +269 -0
  19. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/README +0 -0
  20. data/ext/gecode-2.2.0/contribs/qecode/Doxyfile +263 -0
  21. data/ext/gecode-2.2.0/contribs/qecode/Implicative.cc +267 -0
  22. data/ext/gecode-2.2.0/contribs/qecode/Implicative.hh +164 -0
  23. data/ext/gecode-2.2.0/contribs/qecode/Makefile.in.in +163 -0
  24. data/ext/gecode-2.2.0/contribs/qecode/OptVar.cc +82 -0
  25. data/ext/gecode-2.2.0/contribs/qecode/OptVar.hh +123 -0
  26. data/ext/gecode-2.2.0/contribs/qecode/Strategy.cc +131 -0
  27. data/ext/gecode-2.2.0/contribs/qecode/Strategy.hh +91 -0
  28. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.cc +62 -0
  29. data/ext/gecode-2.2.0/contribs/qecode/StrategyNode.hh +47 -0
  30. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/output.0 +2264 -0
  31. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/requests +115 -0
  32. data/ext/gecode-2.2.0/contribs/qecode/autom4te.cache/traces.0 +57 -0
  33. data/ext/gecode-2.2.0/contribs/qecode/config.log +147 -0
  34. data/ext/gecode-2.2.0/contribs/qecode/config.status +817 -0
  35. data/ext/gecode-2.2.0/contribs/qecode/configure +2264 -0
  36. data/ext/gecode-2.2.0/contribs/qecode/configure.ac +23 -0
  37. data/ext/gecode-2.2.0/contribs/qecode/examples/COMPILING +13 -0
  38. data/ext/gecode-2.2.0/contribs/qecode/examples/MatrixGame.cpp +140 -0
  39. data/ext/gecode-2.2.0/contribs/qecode/examples/NimFibo.cpp +73 -0
  40. data/ext/gecode-2.2.0/contribs/qecode/examples/connect-5-3-3-3.cpp +842 -0
  41. data/ext/gecode-2.2.0/contribs/qecode/examples/network-pricing.cc +146 -0
  42. data/ext/gecode-2.2.0/contribs/qecode/examples/optim2.cc +149 -0
  43. data/ext/gecode-2.2.0/contribs/qecode/examples/stress_test.cpp +240 -0
  44. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/heap.cc +0 -0
  45. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myDom.cc +0 -0
  46. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/myspace.cc +0 -0
  47. data/ext/gecode-2.2.0/contribs/qecode/myspace.hh +68 -0
  48. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/qecode.hh +0 -0
  49. data/ext/gecode-2.2.0/contribs/qecode/qsolver.cc +268 -0
  50. data/ext/gecode-2.2.0/contribs/qecode/qsolver.hh +46 -0
  51. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/shortdesc.ac +0 -0
  52. data/ext/{gecode-2.1.1 → gecode-2.2.0}/contribs/qecode/vartype.hh +0 -0
  53. data/ext/{gecode-2.1.1 → gecode-2.2.0}/doxygen/doxygen.conf.in +0 -0
  54. data/ext/gecode-2.2.0/doxygen/doxygen.hh.in +1112 -0
  55. data/ext/gecode-2.2.0/doxygen/reflection.hh +417 -0
  56. data/ext/gecode-2.2.0/examples/all-interval.cc +133 -0
  57. data/ext/gecode-2.2.0/examples/alpha.cc +137 -0
  58. data/ext/gecode-2.2.0/examples/bacp.cc +521 -0
  59. data/ext/gecode-2.2.0/examples/baseline.cc +87 -0
  60. data/ext/gecode-2.2.0/examples/bibd.cc +203 -0
  61. data/ext/gecode-2.2.0/examples/black-hole.cc +389 -0
  62. data/ext/gecode-2.2.0/examples/crew.cc +286 -0
  63. data/ext/gecode-2.2.0/examples/crowded-chess.cc +424 -0
  64. data/ext/gecode-2.2.0/examples/domino.cc +297 -0
  65. data/ext/gecode-2.2.0/examples/donald.cc +107 -0
  66. data/ext/gecode-2.2.0/examples/eq20.cc +125 -0
  67. data/ext/gecode-2.2.0/examples/golf.cc +297 -0
  68. data/ext/gecode-2.2.0/examples/golomb-ruler.cc +199 -0
  69. data/ext/gecode-2.2.0/examples/graph-color.cc +407 -0
  70. data/ext/gecode-2.2.0/examples/grocery.cc +113 -0
  71. data/ext/gecode-2.2.0/examples/hamming.cc +129 -0
  72. data/ext/gecode-2.2.0/examples/ind-set.cc +143 -0
  73. data/ext/gecode-2.2.0/examples/javascript.cc +163 -0
  74. data/ext/gecode-2.2.0/examples/kakuro.cc +686 -0
  75. data/ext/gecode-2.2.0/examples/knights.cc +220 -0
  76. data/ext/gecode-2.2.0/examples/langford-number.cc +225 -0
  77. data/ext/gecode-2.2.0/examples/magic-sequence.cc +146 -0
  78. data/ext/gecode-2.2.0/examples/magic-square.cc +138 -0
  79. data/ext/gecode-2.2.0/examples/minesweeper.cc +304 -0
  80. data/ext/gecode-2.2.0/examples/money.cc +105 -0
  81. data/ext/gecode-2.2.0/examples/nonogram.cc +492 -0
  82. data/ext/gecode-2.2.0/examples/ortho-latin.cc +172 -0
  83. data/ext/gecode-2.2.0/examples/partition.cc +141 -0
  84. data/ext/gecode-2.2.0/examples/pentominoes.cc +949 -0
  85. data/ext/gecode-2.2.0/examples/perfect-square.cc +311 -0
  86. data/ext/gecode-2.2.0/examples/photo.cc +170 -0
  87. data/ext/gecode-2.2.0/examples/queen-armies.cc +284 -0
  88. data/ext/gecode-2.2.0/examples/queens.cc +147 -0
  89. data/ext/gecode-2.2.0/examples/queens.js +57 -0
  90. data/ext/gecode-2.2.0/examples/sports-league.cc +342 -0
  91. data/ext/gecode-2.2.0/examples/steiner.cc +192 -0
  92. data/ext/gecode-2.2.0/examples/stress-distinct.cc +90 -0
  93. data/ext/gecode-2.2.0/examples/stress-domain.cc +99 -0
  94. data/ext/gecode-2.2.0/examples/stress-element.cc +112 -0
  95. data/ext/gecode-2.2.0/examples/stress-exec.cc +97 -0
  96. data/ext/gecode-2.2.0/examples/stress-extensional.cc +134 -0
  97. data/ext/gecode-2.2.0/examples/stress-linear-bool.cc +97 -0
  98. data/ext/gecode-2.2.0/examples/stress-min.cc +98 -0
  99. data/ext/gecode-2.2.0/examples/stress-search.cc +88 -0
  100. data/ext/gecode-2.2.0/examples/sudoku.cc +2341 -0
  101. data/ext/gecode-2.2.0/examples/support.hh +338 -0
  102. data/ext/gecode-2.2.0/examples/support/example.cc +64 -0
  103. data/ext/gecode-2.2.0/examples/support/example.icc +321 -0
  104. data/ext/gecode-2.2.0/examples/support/options.cc +226 -0
  105. data/ext/gecode-2.2.0/examples/support/options.icc +276 -0
  106. data/ext/gecode-2.2.0/examples/tsp.cc +317 -0
  107. data/ext/gecode-2.2.0/examples/warehouses.cc +191 -0
  108. data/ext/gecode-2.2.0/gecode.m4 +1046 -0
  109. data/ext/gecode-2.2.0/gecode/cpltset.hh +797 -0
  110. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.cc +0 -0
  111. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/array.icc +0 -0
  112. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.cc +0 -0
  113. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/bddmanager.icc +0 -0
  114. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.cc +0 -0
  115. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch.hh +0 -0
  116. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-val.icc +0 -0
  117. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/branch/select-view.icc +0 -0
  118. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/atmost.cc +0 -0
  119. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/cardinality.cc +0 -0
  120. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/distinct.cc +0 -0
  121. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/dom.cc +0 -0
  122. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/partition.cc +0 -0
  123. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rangeroots.cc +0 -0
  124. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/rel.cc +0 -0
  125. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/select.cc +0 -0
  126. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/constraints/singleton.cc +0 -0
  127. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/exception.icc +0 -0
  128. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators.hh +0 -0
  129. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/binary.icc +0 -0
  130. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/nary.icc +0 -0
  131. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/naryone.icc +0 -0
  132. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/narytwo.icc +0 -0
  133. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/singleton.icc +0 -0
  134. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/propagators/unary.icc +0 -0
  135. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.cc +0 -0
  136. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/support.icc +0 -0
  137. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp.icc +0 -0
  138. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.cc +0 -0
  139. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.icc +0 -0
  140. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var-imp/cpltset.vis +0 -0
  141. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.cc +0 -0
  142. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/var/cpltset.icc +0 -0
  143. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view.icc +0 -0
  144. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/cpltset.icc +0 -0
  145. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/cpltset/view/print.cc +0 -0
  146. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist.hh +0 -0
  147. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.cc +0 -0
  148. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addchild.hh +0 -0
  149. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.cc +0 -0
  150. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/addvisualisationdialog.hh +0 -0
  151. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/better.hh +0 -0
  152. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.cc +0 -0
  153. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/config.hh +0 -0
  154. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.cc +281 -0
  155. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.hh +103 -0
  156. data/ext/gecode-2.2.0/gecode/gist/drawingcursor.icc +70 -0
  157. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.cc +672 -0
  158. data/ext/gecode-2.2.0/gecode/gist/gecodelogo.hh +64 -0
  159. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.cc +0 -0
  160. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/gist.icc +0 -0
  161. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.cc +115 -0
  162. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.hh +75 -0
  163. data/ext/gecode-2.2.0/gecode/gist/layoutcursor.icc +48 -0
  164. data/ext/gecode-2.2.0/gecode/gist/mainwindow.cc +274 -0
  165. data/ext/gecode-2.2.0/gecode/gist/mainwindow.hh +86 -0
  166. data/ext/gecode-2.2.0/gecode/gist/node.cc +148 -0
  167. data/ext/gecode-2.2.0/gecode/gist/node.hh +117 -0
  168. data/ext/gecode-2.2.0/gecode/gist/node.icc +99 -0
  169. data/ext/gecode-2.2.0/gecode/gist/nodecursor.cc +123 -0
  170. data/ext/gecode-2.2.0/gecode/gist/nodecursor.hh +147 -0
  171. data/ext/gecode-2.2.0/gecode/gist/nodecursor.icc +122 -0
  172. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.hh +0 -0
  173. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/nodevisitor.icc +0 -0
  174. data/ext/gecode-2.2.0/gecode/gist/preferences.cc +120 -0
  175. data/ext/gecode-2.2.0/gecode/gist/preferences.hh +79 -0
  176. data/ext/gecode-2.2.0/gecode/gist/spacenode.cc +468 -0
  177. data/ext/gecode-2.2.0/gecode/gist/spacenode.hh +227 -0
  178. data/ext/gecode-2.2.0/gecode/gist/spacenode.icc +170 -0
  179. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/test.cc +0 -0
  180. data/ext/gecode-2.2.0/gecode/gist/textoutput.cc +134 -0
  181. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/textoutput.hh +0 -0
  182. data/ext/gecode-2.2.0/gecode/gist/treecanvas.cc +1343 -0
  183. data/ext/gecode-2.2.0/gecode/gist/treecanvas.hh +361 -0
  184. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/ui_addchild.hh +0 -0
  185. data/ext/gecode-2.2.0/gecode/gist/ui_addvisualisationdialog.hh +165 -0
  186. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.cc +192 -0
  187. data/ext/gecode-2.2.0/gecode/gist/visualisation/intvaritem.hh +75 -0
  188. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.cc +235 -0
  189. data/ext/gecode-2.2.0/gecode/gist/visualisation/setvaritem.hh +77 -0
  190. data/ext/gecode-2.2.0/gecode/gist/visualisation/vararrayitem.hh +125 -0
  191. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.cc +0 -0
  192. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayview.hh +0 -0
  193. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/vararrayviewt.hh +0 -0
  194. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.cc +0 -0
  195. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/gist/visualisation/varitem.hh +0 -0
  196. data/ext/gecode-2.2.0/gecode/gist/visualnode.cc +474 -0
  197. data/ext/gecode-2.2.0/gecode/gist/visualnode.hh +226 -0
  198. data/ext/gecode-2.2.0/gecode/gist/visualnode.icc +198 -0
  199. data/ext/gecode-2.2.0/gecode/gist/zoomToFitIcon.icc +113 -0
  200. data/ext/gecode-2.2.0/gecode/int.hh +2116 -0
  201. data/ext/gecode-2.2.0/gecode/int/arithmetic.cc +237 -0
  202. data/ext/gecode-2.2.0/gecode/int/arithmetic.hh +827 -0
  203. data/ext/gecode-2.2.0/gecode/int/arithmetic/abs.icc +278 -0
  204. data/ext/gecode-2.2.0/gecode/int/arithmetic/divmod.icc +496 -0
  205. data/ext/gecode-2.2.0/gecode/int/arithmetic/max.icc +474 -0
  206. data/ext/gecode-2.2.0/gecode/int/arithmetic/mult.icc +858 -0
  207. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqr.icc +464 -0
  208. data/ext/gecode-2.2.0/gecode/int/arithmetic/sqrt.icc +260 -0
  209. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.cc +0 -0
  210. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/array.icc +0 -0
  211. data/ext/gecode-2.2.0/gecode/int/bool.cc +734 -0
  212. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool.hh +0 -0
  213. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/base.icc +0 -0
  214. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eq.icc +0 -0
  215. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/eqv.icc +0 -0
  216. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/bool/lq.icc +0 -0
  217. data/ext/gecode-2.2.0/gecode/int/bool/or.icc +1000 -0
  218. data/ext/gecode-2.2.0/gecode/int/branch.cc +167 -0
  219. data/ext/gecode-2.2.0/gecode/int/branch.hh +587 -0
  220. data/ext/gecode-2.2.0/gecode/int/branch/create-branch.icc +190 -0
  221. data/ext/gecode-2.2.0/gecode/int/branch/select-val.icc +340 -0
  222. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/branch/select-view.icc +0 -0
  223. data/ext/gecode-2.2.0/gecode/int/channel.cc +165 -0
  224. data/ext/gecode-2.2.0/gecode/int/channel.hh +259 -0
  225. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/base.icc +0 -0
  226. data/ext/gecode-2.2.0/gecode/int/channel/dom.icc +348 -0
  227. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.cc +0 -0
  228. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-multi.icc +0 -0
  229. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.cc +0 -0
  230. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/channel/link-single.icc +0 -0
  231. data/ext/gecode-2.2.0/gecode/int/channel/val.icc +278 -0
  232. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit.cc +0 -0
  233. data/ext/gecode-2.2.0/gecode/int/circuit.hh +175 -0
  234. data/ext/gecode-2.2.0/gecode/int/circuit/base.icc +266 -0
  235. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/circuit/dom.icc +0 -0
  236. data/ext/gecode-2.2.0/gecode/int/circuit/val.icc +126 -0
  237. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/count.cc +0 -0
  238. data/ext/gecode-2.2.0/gecode/int/count.hh +487 -0
  239. data/ext/gecode-2.2.0/gecode/int/count/int.icc +620 -0
  240. data/ext/gecode-2.2.0/gecode/int/count/rel.icc +144 -0
  241. data/ext/gecode-2.2.0/gecode/int/count/view.icc +449 -0
  242. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/cumulatives.cc +0 -0
  243. data/ext/gecode-2.2.0/gecode/int/cumulatives.hh +138 -0
  244. data/ext/gecode-2.2.0/gecode/int/cumulatives/val.icc +455 -0
  245. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct.cc +0 -0
  246. data/ext/gecode-2.2.0/gecode/int/distinct.hh +341 -0
  247. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bilink.icc +0 -0
  248. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/bnd.icc +0 -0
  249. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/combptr.icc +0 -0
  250. data/ext/gecode-2.2.0/gecode/int/distinct/dom.icc +752 -0
  251. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/edge.icc +0 -0
  252. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/node.icc +0 -0
  253. data/ext/gecode-2.2.0/gecode/int/distinct/ter-dom.icc +136 -0
  254. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/distinct/val.icc +0 -0
  255. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.cc +0 -0
  256. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom.hh +0 -0
  257. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/range.icc +0 -0
  258. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/dom/spec.icc +0 -0
  259. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/element.cc +0 -0
  260. data/ext/gecode-2.2.0/gecode/int/element.hh +239 -0
  261. data/ext/gecode-2.2.0/gecode/int/element/int.icc +444 -0
  262. data/ext/gecode-2.2.0/gecode/int/element/view.icc +584 -0
  263. data/ext/gecode-2.2.0/gecode/int/exception.icc +174 -0
  264. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional.cc +0 -0
  265. data/ext/gecode-2.2.0/gecode/int/extensional.hh +415 -0
  266. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/base.icc +0 -0
  267. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/basic.icc +0 -0
  268. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/bitset.icc +0 -0
  269. data/ext/gecode-2.2.0/gecode/int/extensional/dfa.cc +565 -0
  270. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/dfa.icc +0 -0
  271. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/incremental.icc +0 -0
  272. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/layered-graph.icc +0 -0
  273. data/ext/gecode-2.2.0/gecode/int/extensional/tuple-set.cc +285 -0
  274. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/extensional/tuple-set.icc +0 -0
  275. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc.cc +0 -0
  276. data/ext/gecode-2.2.0/gecode/int/gcc.hh +329 -0
  277. data/ext/gecode-2.2.0/gecode/int/gcc/bnd.icc +660 -0
  278. data/ext/gecode-2.2.0/gecode/int/gcc/dom.icc +531 -0
  279. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/gccbndsup.icc +0 -0
  280. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/graphsup.icc +0 -0
  281. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/lbc.icc +0 -0
  282. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/occur.icc +0 -0
  283. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/gcc/ubc.icc +0 -0
  284. data/ext/gecode-2.2.0/gecode/int/gcc/val.icc +400 -0
  285. data/ext/gecode-2.2.0/gecode/int/int-set.cc +157 -0
  286. data/ext/gecode-2.2.0/gecode/int/int-set.icc +195 -0
  287. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/limits.icc +0 -0
  288. data/ext/gecode-2.2.0/gecode/int/linear-bool.cc +235 -0
  289. data/ext/gecode-2.2.0/gecode/int/linear-int.cc +272 -0
  290. data/ext/gecode-2.2.0/gecode/int/linear.hh +1849 -0
  291. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-int.icc +0 -0
  292. data/ext/gecode-2.2.0/gecode/int/linear/bool-post.cc +433 -0
  293. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-scale.icc +0 -0
  294. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/bool-view.icc +0 -0
  295. data/ext/gecode-2.2.0/gecode/int/linear/int-bin.icc +605 -0
  296. data/ext/gecode-2.2.0/gecode/int/linear/int-dom.icc +539 -0
  297. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-nary.icc +0 -0
  298. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-noview.icc +0 -0
  299. data/ext/gecode-2.2.0/gecode/int/linear/int-post.cc +493 -0
  300. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/int-ter.icc +0 -0
  301. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/linear/post.icc +0 -0
  302. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/propagator.icc +0 -0
  303. data/ext/gecode-2.2.0/gecode/int/rel.cc +420 -0
  304. data/ext/gecode-2.2.0/gecode/int/rel.hh +627 -0
  305. data/ext/gecode-2.2.0/gecode/int/rel/eq.icc +885 -0
  306. data/ext/gecode-2.2.0/gecode/int/rel/lex.icc +275 -0
  307. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/rel/lq-le.icc +0 -0
  308. data/ext/gecode-2.2.0/gecode/int/rel/nq.icc +118 -0
  309. data/ext/gecode-2.2.0/gecode/int/sorted.cc +81 -0
  310. data/ext/gecode-2.2.0/gecode/int/sorted.hh +118 -0
  311. data/ext/gecode-2.2.0/gecode/int/sorted/matching.icc +173 -0
  312. data/ext/gecode-2.2.0/gecode/int/sorted/narrowing.icc +249 -0
  313. data/ext/gecode-2.2.0/gecode/int/sorted/order.icc +212 -0
  314. data/ext/gecode-2.2.0/gecode/int/sorted/propagate.icc +702 -0
  315. data/ext/gecode-2.2.0/gecode/int/sorted/sortsup.icc +563 -0
  316. data/ext/gecode-2.2.0/gecode/int/support-values.hh +158 -0
  317. data/ext/gecode-2.2.0/gecode/int/support-values.icc +203 -0
  318. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/unshare.cc +0 -0
  319. data/ext/gecode-2.2.0/gecode/int/var-imp.icc +745 -0
  320. data/ext/gecode-2.2.0/gecode/int/var-imp/bool.cc +105 -0
  321. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.icc +0 -0
  322. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/bool.vis +0 -0
  323. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/delta.icc +0 -0
  324. data/ext/gecode-2.2.0/gecode/int/var-imp/int.cc +408 -0
  325. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.icc +0 -0
  326. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var-imp/int.vis +0 -0
  327. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/bool.cc +0 -0
  328. data/ext/gecode-2.2.0/gecode/int/var/bool.icc +128 -0
  329. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/var/int.cc +0 -0
  330. data/ext/gecode-2.2.0/gecode/int/var/int.icc +153 -0
  331. data/ext/gecode-2.2.0/gecode/int/view.icc +1918 -0
  332. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/bool.icc +0 -0
  333. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/constint.icc +0 -0
  334. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/int.icc +0 -0
  335. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/iter.icc +0 -0
  336. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/minus.icc +0 -0
  337. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/offset.icc +0 -0
  338. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/print.cc +0 -0
  339. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/rtest.icc +0 -0
  340. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/scale.icc +0 -0
  341. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/int/view/zero.icc +0 -0
  342. data/ext/gecode-2.2.0/gecode/iter.hh +98 -0
  343. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-add.icc +0 -0
  344. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-append.icc +0 -0
  345. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-array.icc +0 -0
  346. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-cache.icc +0 -0
  347. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-compl.icc +0 -0
  348. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-diff.icc +0 -0
  349. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-empty.icc +0 -0
  350. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-inter.icc +0 -0
  351. data/ext/gecode-2.2.0/gecode/iter/ranges-map.icc +260 -0
  352. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minmax.icc +0 -0
  353. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-minus.icc +0 -0
  354. data/ext/gecode-2.2.0/gecode/iter/ranges-negative.icc +137 -0
  355. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-offset.icc +0 -0
  356. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-operations.icc +0 -0
  357. data/ext/gecode-2.2.0/gecode/iter/ranges-positive.icc +139 -0
  358. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-scale.icc +0 -0
  359. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton-append.icc +0 -0
  360. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-singleton.icc +0 -0
  361. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-size.icc +0 -0
  362. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-union.icc +0 -0
  363. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/ranges-values.icc +0 -0
  364. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-array.icc +0 -0
  365. data/ext/gecode-2.2.0/gecode/iter/values-inter.icc +130 -0
  366. data/ext/gecode-2.2.0/gecode/iter/values-map.icc +136 -0
  367. data/ext/gecode-2.2.0/gecode/iter/values-minus.icc +130 -0
  368. data/ext/gecode-2.2.0/gecode/iter/values-negative.icc +116 -0
  369. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-offset.icc +0 -0
  370. data/ext/gecode-2.2.0/gecode/iter/values-positive.icc +123 -0
  371. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-ranges.icc +0 -0
  372. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-singleton.icc +0 -0
  373. data/ext/gecode-2.2.0/gecode/iter/values-union.icc +137 -0
  374. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/values-unique.icc +0 -0
  375. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-compl.icc +0 -0
  376. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-inter.icc +0 -0
  377. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges-union.icc +0 -0
  378. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/iter/virtual-ranges.icc +0 -0
  379. data/ext/gecode-2.2.0/gecode/kernel.hh +188 -0
  380. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/advisor.icc +0 -0
  381. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/array.icc +0 -0
  382. data/ext/gecode-2.2.0/gecode/kernel/branching.icc +433 -0
  383. data/ext/gecode-2.2.0/gecode/kernel/core.cc +474 -0
  384. data/ext/gecode-2.2.0/gecode/kernel/core.icc +2311 -0
  385. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/exception.icc +0 -0
  386. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/macros.icc +0 -0
  387. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/memory-manager.cc +0 -0
  388. data/ext/gecode-2.2.0/gecode/kernel/memory-manager.icc +454 -0
  389. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/modevent.icc +0 -0
  390. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/propagator.icc +0 -0
  391. data/ext/gecode-2.2.0/gecode/kernel/reflection.cc +951 -0
  392. data/ext/gecode-2.2.0/gecode/kernel/reflection.icc +1213 -0
  393. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/shared-array.icc +0 -0
  394. data/ext/gecode-2.2.0/gecode/kernel/var-imp.icc +433 -0
  395. data/ext/gecode-2.2.0/gecode/kernel/var-map.cc +269 -0
  396. data/ext/gecode-2.2.0/gecode/kernel/var-map.icc +230 -0
  397. data/ext/gecode-2.2.0/gecode/kernel/var-traits.icc +79 -0
  398. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/kernel/var-type.cc +0 -0
  399. data/ext/gecode-2.2.0/gecode/kernel/var-type.icc +915 -0
  400. data/ext/gecode-2.2.0/gecode/kernel/var.icc +114 -0
  401. data/ext/gecode-2.2.0/gecode/kernel/view.icc +413 -0
  402. data/ext/gecode-2.2.0/gecode/minimodel.hh +1206 -0
  403. data/ext/gecode-2.2.0/gecode/minimodel/arithmetic.icc +118 -0
  404. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.cc +0 -0
  405. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-expr.icc +0 -0
  406. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/bool-rel.icc +0 -0
  407. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/exception.icc +0 -0
  408. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-expr.icc +0 -0
  409. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/lin-rel.icc +0 -0
  410. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/matrix.icc +0 -0
  411. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/minimodel/reg.cc +0 -0
  412. data/ext/gecode-2.2.0/gecode/search.hh +759 -0
  413. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.cc +0 -0
  414. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/bab.icc +0 -0
  415. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.cc +0 -0
  416. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/dfs.icc +0 -0
  417. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/engine-ctrl.icc +0 -0
  418. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.cc +0 -0
  419. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/lds.icc +0 -0
  420. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.cc +0 -0
  421. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/options.icc +0 -0
  422. data/ext/gecode-2.2.0/gecode/search/reco-stack.icc +277 -0
  423. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/restart.icc +0 -0
  424. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/statistics.icc +0 -0
  425. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.cc +0 -0
  426. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/search/stop.icc +0 -0
  427. data/ext/gecode-2.2.0/gecode/serialization.hh +149 -0
  428. data/ext/gecode-2.2.0/gecode/serialization/boost.cc +78 -0
  429. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/boost.icc +0 -0
  430. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/flatzinc.cc +0 -0
  431. data/ext/gecode-2.2.0/gecode/serialization/javascript.cc +343 -0
  432. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/serialization/javascript.hh +0 -0
  433. data/ext/gecode-2.2.0/gecode/serialization/register.cc +8498 -0
  434. data/ext/gecode-2.2.0/gecode/set.hh +970 -0
  435. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.cc +0 -0
  436. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/array.icc +0 -0
  437. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.cc +0 -0
  438. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch.hh +0 -0
  439. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-val.icc +0 -0
  440. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/branch/select-view.icc +0 -0
  441. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/cardinality.cc +0 -0
  442. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.cc +0 -0
  443. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex.hh +0 -0
  444. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.cc +0 -0
  445. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/conv.icc +0 -0
  446. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.cc +0 -0
  447. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/convex/hull.icc +0 -0
  448. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.cc +0 -0
  449. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct.hh +0 -0
  450. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.cc +0 -0
  451. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/distinct/atmostOne.icc +0 -0
  452. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/dom.cc +0 -0
  453. data/ext/gecode-2.2.0/gecode/set/element.cc +135 -0
  454. data/ext/gecode-2.2.0/gecode/set/element.hh +233 -0
  455. data/ext/gecode-2.2.0/gecode/set/element/disjoint.cc +308 -0
  456. data/ext/gecode-2.2.0/gecode/set/element/disjoint.icc +75 -0
  457. data/ext/gecode-2.2.0/gecode/set/element/idxarray.hh +113 -0
  458. data/ext/gecode-2.2.0/gecode/set/element/idxarray.icc +155 -0
  459. data/ext/gecode-2.2.0/gecode/set/element/inter.icc +348 -0
  460. data/ext/gecode-2.2.0/gecode/set/element/union.icc +371 -0
  461. data/ext/gecode-2.2.0/gecode/set/element/unionConst.icc +334 -0
  462. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/exception.icc +0 -0
  463. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.cc +0 -0
  464. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int.hh +0 -0
  465. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/card.icc +0 -0
  466. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-bool.icc +0 -0
  467. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/channel-int.icc +0 -0
  468. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/match.icc +0 -0
  469. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/minmax.icc +0 -0
  470. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/int/weights.icc +0 -0
  471. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/limits.icc +0 -0
  472. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors-compiler.hh +0 -0
  473. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors.cc +0 -0
  474. data/ext/gecode-2.2.0/gecode/set/projectors.hh +438 -0
  475. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/compiler.cc +0 -0
  476. data/ext/gecode-2.2.0/gecode/set/projectors/formula.cc +312 -0
  477. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/formula.icc +0 -0
  478. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.cc +0 -0
  479. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector-set.icc +0 -0
  480. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.cc +0 -0
  481. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/projector.icc +0 -0
  482. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator.hh +0 -0
  483. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/card.icc +0 -0
  484. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/nary.icc +0 -0
  485. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.cc +0 -0
  486. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/propagator/re-nary.icc +0 -0
  487. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.cc +0 -0
  488. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/projectors/set-expr.icc +0 -0
  489. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/propagator.icc +0 -0
  490. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op-const.cc +0 -0
  491. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.cc +0 -0
  492. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op.hh +0 -0
  493. data/ext/gecode-2.2.0/gecode/set/rel-op/common.icc +613 -0
  494. data/ext/gecode-2.2.0/gecode/set/rel-op/inter.icc +452 -0
  495. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/partition.icc +0 -0
  496. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/post.icc +0 -0
  497. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/subofunion.icc +0 -0
  498. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/superofinter.icc +0 -0
  499. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel-op/union.icc +0 -0
  500. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.cc +0 -0
  501. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel.hh +0 -0
  502. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/common.icc +0 -0
  503. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/eq.icc +0 -0
  504. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nosubset.icc +0 -0
  505. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/nq.icc +0 -0
  506. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/re-eq.icc +0 -0
  507. data/ext/gecode-2.2.0/gecode/set/rel/re-subset.icc +174 -0
  508. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/rel/subset.icc +0 -0
  509. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.cc +0 -0
  510. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence.hh +0 -0
  511. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/common.icc +0 -0
  512. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.cc +0 -0
  513. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq-u.icc +0 -0
  514. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.cc +0 -0
  515. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/sequence/seq.icc +0 -0
  516. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp.icc +0 -0
  517. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/delta.icc +0 -0
  518. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.cc +0 -0
  519. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/integerset.icc +0 -0
  520. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/iter.icc +0 -0
  521. data/ext/gecode-2.2.0/gecode/set/var-imp/set.cc +215 -0
  522. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.icc +0 -0
  523. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var-imp/set.vis +0 -0
  524. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/var/set.cc +0 -0
  525. data/ext/gecode-2.2.0/gecode/set/var/set.icc +303 -0
  526. data/ext/gecode-2.2.0/gecode/set/view.icc +1451 -0
  527. data/ext/gecode-2.2.0/gecode/set/view/complement.icc +614 -0
  528. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/const.icc +0 -0
  529. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/offset.icc +0 -0
  530. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/print.cc +0 -0
  531. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/set.icc +0 -0
  532. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/set/view/singleton.icc +0 -0
  533. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support.hh +0 -0
  534. data/ext/gecode-2.2.0/gecode/support/block-allocator.icc +159 -0
  535. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/AUTHORS +0 -0
  536. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/ChangeLog +0 -0
  537. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/NEWS +0 -0
  538. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/README +0 -0
  539. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bdd.h +0 -0
  540. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddio.c +0 -0
  541. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddop.c +0 -0
  542. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bddtree.h +0 -0
  543. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.c +0 -0
  544. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/bvec.h +0 -0
  545. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.c +0 -0
  546. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cache.h +0 -0
  547. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/config.h +0 -0
  548. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/cppext.cc +0 -0
  549. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.c +0 -0
  550. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/fdd.h +0 -0
  551. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.c +0 -0
  552. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/imatrix.h +0 -0
  553. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.c +0 -0
  554. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/kernel.h +0 -0
  555. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/pairs.c +0 -0
  556. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.c +0 -0
  557. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/prime.h +0 -0
  558. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/reorder.c +0 -0
  559. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/buddy/tree.c +0 -0
  560. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/cast.icc +0 -0
  561. data/ext/gecode-2.2.0/gecode/support/config.icc.in +83 -0
  562. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-array.icc +0 -0
  563. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/dynamic-stack.icc +0 -0
  564. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.cc +0 -0
  565. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/exception.icc +0 -0
  566. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/macros.icc +0 -0
  567. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/map.icc +0 -0
  568. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/marked-pointer.icc +0 -0
  569. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/memory.icc +0 -0
  570. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/random.icc +0 -0
  571. data/ext/gecode-2.2.0/gecode/support/sentinel-stack.icc +138 -0
  572. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/sort.icc +0 -0
  573. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-pqueue.icc +0 -0
  574. data/ext/{gecode-2.1.1 → gecode-2.2.0}/gecode/support/static-stack.icc +0 -0
  575. data/ext/gecode-2.2.0/gecode/support/symbol.cc +241 -0
  576. data/ext/gecode-2.2.0/gecode/support/symbol.icc +134 -0
  577. data/ext/{gecode-2.1.1 → gecode-2.2.0}/install-sh +0 -0
  578. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/AppleHelpbookInfo.plist +0 -0
  579. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/allexamples.perl +0 -0
  580. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/Makefile.am +0 -0
  581. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/changelog +0 -0
  582. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/control +0 -0
  583. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/copyright +0 -0
  584. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.info +0 -0
  585. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.install +0 -0
  586. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/gecode.spec +0 -0
  587. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/debian/rules +0 -0
  588. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/back.png +0 -0
  589. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/footer.html +0 -0
  590. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/gecode-logo-100.png +0 -0
  591. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/header.html +0 -0
  592. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/doxygen/stylesheet.css +0 -0
  593. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/fixproperties.sh +0 -0
  594. data/ext/gecode-2.2.0/misc/gecode-gist.pc.in +45 -0
  595. data/ext/gecode-2.2.0/misc/gecode-minimodel.pc.in +45 -0
  596. data/ext/gecode-2.2.0/misc/gecode-search.pc.in +45 -0
  597. data/ext/gecode-2.2.0/misc/gecode-serialization.pc.in +45 -0
  598. data/ext/gecode-2.2.0/misc/gecode.pc.in +45 -0
  599. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genchangelog.perl +0 -0
  600. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlcovmakefile.perl +0 -0
  601. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genlicense.perl +0 -0
  602. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/genregistry.perl +0 -0
  603. data/ext/gecode-2.2.0/misc/genstatistics.perl +179 -0
  604. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/gentxtchangelog.perl +0 -0
  605. data/ext/gecode-2.2.0/misc/genvariables.perl +905 -0
  606. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/getrevision.perl +0 -0
  607. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/makedepend.perl +0 -0
  608. data/ext/{gecode-2.1.1 → gecode-2.2.0}/misc/svn-ignore.txt +0 -0
  609. data/ext/gecode-2.2.0/test/assign.cc +181 -0
  610. data/ext/gecode-2.2.0/test/assign.hh +93 -0
  611. data/ext/gecode-2.2.0/test/assign/bool.cc +61 -0
  612. data/ext/gecode-2.2.0/test/assign/int.cc +70 -0
  613. data/ext/gecode-2.2.0/test/branch.cc +563 -0
  614. data/ext/gecode-2.2.0/test/branch.hh +144 -0
  615. data/ext/gecode-2.2.0/test/branch/bool.cc +61 -0
  616. data/ext/gecode-2.2.0/test/branch/cpltset.cc +71 -0
  617. data/ext/gecode-2.2.0/test/branch/int.cc +70 -0
  618. data/ext/gecode-2.2.0/test/branch/set.cc +74 -0
  619. data/ext/gecode-2.2.0/test/cpltset.cc +568 -0
  620. data/ext/gecode-2.2.0/test/cpltset.hh +125 -0
  621. data/ext/gecode-2.2.0/test/cpltset/atmost.cc +155 -0
  622. data/ext/gecode-2.2.0/test/cpltset/cardinality.cc +138 -0
  623. data/ext/gecode-2.2.0/test/cpltset/dom.cc +137 -0
  624. data/ext/gecode-2.2.0/test/cpltset/partition.cc +210 -0
  625. data/ext/gecode-2.2.0/test/cpltset/rel.cc +158 -0
  626. data/ext/gecode-2.2.0/test/cpltset/select.cc +216 -0
  627. data/ext/gecode-2.2.0/test/int.cc +688 -0
  628. data/ext/gecode-2.2.0/test/int.hh +267 -0
  629. data/ext/gecode-2.2.0/test/int.icc +266 -0
  630. data/ext/gecode-2.2.0/test/int/arithmetic.cc +766 -0
  631. data/ext/gecode-2.2.0/test/int/basic.cc +77 -0
  632. data/ext/gecode-2.2.0/test/int/bool.cc +340 -0
  633. data/ext/gecode-2.2.0/test/int/channel.cc +238 -0
  634. data/ext/gecode-2.2.0/test/int/circuit.cc +100 -0
  635. data/ext/gecode-2.2.0/test/int/count.cc +357 -0
  636. data/ext/gecode-2.2.0/test/int/distinct.cc +248 -0
  637. data/ext/gecode-2.2.0/test/int/dom.cc +123 -0
  638. data/ext/gecode-2.2.0/test/int/element.cc +333 -0
  639. data/ext/gecode-2.2.0/test/int/extensional.cc +475 -0
  640. data/ext/gecode-2.2.0/test/int/gcc.cc +293 -0
  641. data/ext/gecode-2.2.0/test/int/linear.cc +383 -0
  642. data/ext/gecode-2.2.0/test/int/mm-arithmetic.cc +302 -0
  643. data/ext/gecode-2.2.0/test/int/mm-bool.cc +4342 -0
  644. data/ext/gecode-2.2.0/test/int/mm-count.cc +295 -0
  645. data/ext/gecode-2.2.0/test/int/mm-lin.cc +2035 -0
  646. data/ext/gecode-2.2.0/test/int/mm-rel.cc +136 -0
  647. data/ext/gecode-2.2.0/test/int/rel.cc +416 -0
  648. data/ext/gecode-2.2.0/test/int/scheduling.cc +276 -0
  649. data/ext/gecode-2.2.0/test/int/sorted.cc +165 -0
  650. data/ext/gecode-2.2.0/test/int/unshare.cc +109 -0
  651. data/ext/gecode-2.2.0/test/search.cc +618 -0
  652. data/ext/gecode-2.2.0/test/set.cc +753 -0
  653. data/ext/gecode-2.2.0/test/set.hh +286 -0
  654. data/ext/gecode-2.2.0/test/set.icc +108 -0
  655. data/ext/gecode-2.2.0/test/set/convex.cc +139 -0
  656. data/ext/gecode-2.2.0/test/set/distinct.cc +116 -0
  657. data/ext/gecode-2.2.0/test/set/dom.cc +292 -0
  658. data/ext/gecode-2.2.0/test/set/int.cc +473 -0
  659. data/ext/gecode-2.2.0/test/set/projection.cc +436 -0
  660. data/ext/gecode-2.2.0/test/set/rel-op-const.cc +368 -0
  661. data/ext/gecode-2.2.0/test/set/rel-op.cc +465 -0
  662. data/ext/gecode-2.2.0/test/set/rel.cc +125 -0
  663. data/ext/gecode-2.2.0/test/set/select.cc +299 -0
  664. data/ext/gecode-2.2.0/test/set/sequence.cc +125 -0
  665. data/ext/gecode-2.2.0/test/test.cc +287 -0
  666. data/ext/gecode-2.2.0/test/test.hh +175 -0
  667. data/ext/gecode-2.2.0/test/test.icc +93 -0
  668. data/ext/{gecode-2.1.1 → gecode-2.2.0}/variables.vsl +0 -0
  669. data/lib/gecoder/bindings.rb +7 -5
  670. data/lib/gecoder/bindings/bindings.rb +8 -8
  671. data/lib/gecoder/interface.rb +4 -2
  672. data/lib/gecoder/interface/binding_changes.rb +1 -1
  673. data/lib/gecoder/interface/branch.rb +1 -1
  674. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +4 -4
  675. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +2 -2
  676. data/lib/gecoder/interface/constraints/extensional_regexp.rb +1 -1
  677. data/lib/gecoder/interface/constraints/fixnum_enum_constraints.rb +2 -2
  678. data/lib/gecoder/interface/constraints/int_enum/extensional.rb +5 -5
  679. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +4 -4
  680. data/lib/gecoder/interface/constraints/int_var_constraints.rb +2 -2
  681. data/lib/gecoder/interface/constraints/selected_set/select.rb +8 -8
  682. data/lib/gecoder/interface/constraints/set_enum/element.rb +79 -0
  683. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +5 -5
  684. data/lib/gecoder/interface/constraints/set_var_constraints.rb +2 -2
  685. data/lib/gecoder/interface/convenience.rb +99 -0
  686. data/lib/gecoder/interface/enum_wrapper.rb +1 -1
  687. data/lib/gecoder/interface/mixin.rb +486 -0
  688. data/lib/gecoder/interface/search.rb +23 -22
  689. data/lib/gecoder/version.rb +1 -1
  690. data/specs/branch.rb +5 -3
  691. data/specs/constraints/bool/boolean.rb +3 -1
  692. data/specs/constraints/bool/linear.rb +3 -1
  693. data/specs/constraints/bool_enum/bool_enum_relation.rb +3 -1
  694. data/specs/constraints/bool_enum/channel.rb +3 -1
  695. data/specs/constraints/fixnum_enum/element.rb +3 -1
  696. data/specs/constraints/int/arithmetic.rb +3 -1
  697. data/specs/constraints/int/channel.rb +3 -1
  698. data/specs/constraints/int/linear.rb +3 -1
  699. data/specs/constraints/int/linear_properties.rb +3 -1
  700. data/specs/constraints/int_enum/arithmetic.rb +3 -1
  701. data/specs/constraints/int_enum/channel.rb +3 -1
  702. data/specs/constraints/int_enum/count.rb +3 -1
  703. data/specs/constraints/int_enum/distinct.rb +3 -1
  704. data/specs/constraints/int_enum/element.rb +3 -1
  705. data/specs/constraints/int_enum/sort.rb +3 -1
  706. data/specs/constraints/property_helper.rb +10 -10
  707. data/specs/constraints/reification_sugar.rb +3 -1
  708. data/specs/constraints/selected_set/select.rb +6 -5
  709. data/specs/constraints/selected_set/select_properties.rb +12 -10
  710. data/specs/constraints/set/channel.rb +3 -1
  711. data/specs/constraints/set/domain.rb +4 -4
  712. data/specs/constraints/set/relation.rb +4 -4
  713. data/specs/constraints/set_enum/channel.rb +3 -1
  714. data/specs/constraints/set_enum/distinct.rb +3 -1
  715. data/specs/constraints/set_enum/element.rb +77 -0
  716. data/specs/enum_wrapper.rb +1 -1
  717. data/specs/mixin.rb +78 -0
  718. data/specs/model.rb +5 -5
  719. data/specs/search.rb +20 -14
  720. data/specs/selected_set.rb +3 -3
  721. data/specs/set_elements.rb +2 -2
  722. data/tasks/distribution.rake +25 -4
  723. metadata +739 -602
  724. data/example/money.rb +0 -36
  725. data/ext/gecode-2.1.1/Makefile.dep +0 -7622
  726. data/ext/gecode-2.1.1/Makefile.in +0 -1568
  727. data/ext/gecode-2.1.1/changelog.in +0 -2459
  728. data/ext/gecode-2.1.1/configure +0 -11631
  729. data/ext/gecode-2.1.1/configure.ac +0 -249
  730. data/ext/gecode-2.1.1/configure.ac.in +0 -245
  731. data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +0 -263
  732. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +0 -82
  733. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +0 -37
  734. data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +0 -162
  735. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +0 -172
  736. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +0 -63
  737. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +0 -37
  738. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +0 -35
  739. data/ext/gecode-2.1.1/contribs/qecode/configure +0 -2264
  740. data/ext/gecode-2.1.1/contribs/qecode/configure.ac +0 -23
  741. data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +0 -13
  742. data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +0 -144
  743. data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +0 -73
  744. data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +0 -179
  745. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +0 -34
  746. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +0 -46
  747. data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +0 -595
  748. data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +0 -184
  749. data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +0 -69
  750. data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +0 -145
  751. data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +0 -247
  752. data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +0 -168
  753. data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +0 -73
  754. data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +0 -91
  755. data/ext/gecode-2.1.1/contribs/qecode/warner.cc +0 -101
  756. data/ext/gecode-2.1.1/contribs/qecode/warner.hh +0 -83
  757. data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +0 -1111
  758. data/ext/gecode-2.1.1/doxygen/reflection.hh +0 -417
  759. data/ext/gecode-2.1.1/gecode.m4 +0 -956
  760. data/ext/gecode-2.1.1/gecode/cpltset.hh +0 -797
  761. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +0 -115
  762. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +0 -77
  763. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +0 -245
  764. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +0 -101
  765. data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +0 -522
  766. data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +0 -254
  767. data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +0 -86
  768. data/ext/gecode-2.1.1/gecode/gist/node.cc +0 -100
  769. data/ext/gecode-2.1.1/gecode/gist/node.hh +0 -89
  770. data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +0 -124
  771. data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +0 -122
  772. data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +0 -79
  773. data/ext/gecode-2.1.1/gecode/gist/postscript.cc +0 -543
  774. data/ext/gecode-2.1.1/gecode/gist/postscript.hh +0 -56
  775. data/ext/gecode-2.1.1/gecode/gist/preferences.cc +0 -110
  776. data/ext/gecode-2.1.1/gecode/gist/preferences.hh +0 -76
  777. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +0 -55
  778. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +0 -58
  779. data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +0 -331
  780. data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +0 -140
  781. data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +0 -531
  782. data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +0 -224
  783. data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +0 -114
  784. data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +0 -1140
  785. data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +0 -324
  786. data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +0 -163
  787. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +0 -175
  788. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +0 -71
  789. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +0 -219
  790. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +0 -73
  791. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +0 -123
  792. data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +0 -303
  793. data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +0 -166
  794. data/ext/gecode-2.1.1/gecode/int.hh +0 -2035
  795. data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +0 -136
  796. data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +0 -440
  797. data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +0 -279
  798. data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +0 -253
  799. data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +0 -522
  800. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +0 -218
  801. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +0 -138
  802. data/ext/gecode-2.1.1/gecode/int/bool.cc +0 -642
  803. data/ext/gecode-2.1.1/gecode/int/bool/or.icc +0 -1000
  804. data/ext/gecode-2.1.1/gecode/int/branch.cc +0 -301
  805. data/ext/gecode-2.1.1/gecode/int/branch.hh +0 -576
  806. data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +0 -338
  807. data/ext/gecode-2.1.1/gecode/int/channel.cc +0 -114
  808. data/ext/gecode-2.1.1/gecode/int/channel.hh +0 -259
  809. data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +0 -347
  810. data/ext/gecode-2.1.1/gecode/int/channel/val.icc +0 -276
  811. data/ext/gecode-2.1.1/gecode/int/circuit.hh +0 -175
  812. data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +0 -271
  813. data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +0 -122
  814. data/ext/gecode-2.1.1/gecode/int/count.hh +0 -487
  815. data/ext/gecode-2.1.1/gecode/int/count/int.icc +0 -619
  816. data/ext/gecode-2.1.1/gecode/int/count/rel.icc +0 -144
  817. data/ext/gecode-2.1.1/gecode/int/count/view.icc +0 -449
  818. data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +0 -141
  819. data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +0 -429
  820. data/ext/gecode-2.1.1/gecode/int/distinct.hh +0 -341
  821. data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +0 -750
  822. data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +0 -136
  823. data/ext/gecode-2.1.1/gecode/int/element.hh +0 -239
  824. data/ext/gecode-2.1.1/gecode/int/element/int.icc +0 -441
  825. data/ext/gecode-2.1.1/gecode/int/element/view.icc +0 -584
  826. data/ext/gecode-2.1.1/gecode/int/exception.icc +0 -163
  827. data/ext/gecode-2.1.1/gecode/int/extensional.hh +0 -415
  828. data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +0 -565
  829. data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +0 -311
  830. data/ext/gecode-2.1.1/gecode/int/gcc.hh +0 -329
  831. data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +0 -660
  832. data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +0 -531
  833. data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +0 -400
  834. data/ext/gecode-2.1.1/gecode/int/int-set.cc +0 -153
  835. data/ext/gecode-2.1.1/gecode/int/int-set.icc +0 -191
  836. data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +0 -220
  837. data/ext/gecode-2.1.1/gecode/int/linear-int.cc +0 -240
  838. data/ext/gecode-2.1.1/gecode/int/linear.hh +0 -1849
  839. data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +0 -433
  840. data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +0 -605
  841. data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +0 -539
  842. data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +0 -493
  843. data/ext/gecode-2.1.1/gecode/int/rel.cc +0 -431
  844. data/ext/gecode-2.1.1/gecode/int/rel.hh +0 -657
  845. data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +0 -848
  846. data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +0 -248
  847. data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +0 -269
  848. data/ext/gecode-2.1.1/gecode/int/sorted.cc +0 -91
  849. data/ext/gecode-2.1.1/gecode/int/sorted.hh +0 -117
  850. data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +0 -182
  851. data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +0 -257
  852. data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +0 -208
  853. data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +0 -669
  854. data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +0 -596
  855. data/ext/gecode-2.1.1/gecode/int/var-imp.icc +0 -745
  856. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +0 -104
  857. data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +0 -407
  858. data/ext/gecode-2.1.1/gecode/int/var/bool.icc +0 -126
  859. data/ext/gecode-2.1.1/gecode/int/var/int.icc +0 -151
  860. data/ext/gecode-2.1.1/gecode/int/view.icc +0 -1894
  861. data/ext/gecode-2.1.1/gecode/iter.hh +0 -90
  862. data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +0 -130
  863. data/ext/gecode-2.1.1/gecode/kernel.hh +0 -182
  864. data/ext/gecode-2.1.1/gecode/kernel/branching.icc +0 -447
  865. data/ext/gecode-2.1.1/gecode/kernel/core.cc +0 -473
  866. data/ext/gecode-2.1.1/gecode/kernel/core.icc +0 -2295
  867. data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +0 -458
  868. data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +0 -921
  869. data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +0 -1012
  870. data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +0 -433
  871. data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +0 -269
  872. data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +0 -227
  873. data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +0 -72
  874. data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +0 -915
  875. data/ext/gecode-2.1.1/gecode/kernel/var.icc +0 -120
  876. data/ext/gecode-2.1.1/gecode/kernel/view.icc +0 -611
  877. data/ext/gecode-2.1.1/gecode/minimodel.hh +0 -1165
  878. data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +0 -179
  879. data/ext/gecode-2.1.1/gecode/search.hh +0 -752
  880. data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +0 -237
  881. data/ext/gecode-2.1.1/gecode/serialization.hh +0 -149
  882. data/ext/gecode-2.1.1/gecode/serialization/boost.cc +0 -78
  883. data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +0 -340
  884. data/ext/gecode-2.1.1/gecode/serialization/register.cc +0 -8142
  885. data/ext/gecode-2.1.1/gecode/set.hh +0 -970
  886. data/ext/gecode-2.1.1/gecode/set/projectors.hh +0 -438
  887. data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +0 -312
  888. data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +0 -557
  889. data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +0 -409
  890. data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +0 -172
  891. data/ext/gecode-2.1.1/gecode/set/select.cc +0 -135
  892. data/ext/gecode-2.1.1/gecode/set/select.hh +0 -233
  893. data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +0 -308
  894. data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +0 -75
  895. data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +0 -113
  896. data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +0 -155
  897. data/ext/gecode-2.1.1/gecode/set/select/inter.icc +0 -349
  898. data/ext/gecode-2.1.1/gecode/set/select/union.icc +0 -371
  899. data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +0 -334
  900. data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +0 -214
  901. data/ext/gecode-2.1.1/gecode/set/var/set.icc +0 -303
  902. data/ext/gecode-2.1.1/gecode/set/view.icc +0 -1503
  903. data/ext/gecode-2.1.1/gecode/set/view/complement.icc +0 -629
  904. data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +0 -158
  905. data/ext/gecode-2.1.1/gecode/support/config.icc.in +0 -80
  906. data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +0 -122
  907. data/ext/gecode-2.1.1/gecode/support/symbol.cc +0 -226
  908. data/ext/gecode-2.1.1/gecode/support/symbol.icc +0 -130
  909. data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +0 -45
  910. data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +0 -45
  911. data/ext/gecode-2.1.1/misc/gecode-search.pc.in +0 -45
  912. data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +0 -45
  913. data/ext/gecode-2.1.1/misc/gecode.pc.in +0 -45
  914. data/ext/gecode-2.1.1/misc/genstatistics.perl +0 -178
  915. data/ext/gecode-2.1.1/misc/genvariables.perl +0 -905
  916. data/lib/gecoder/interface/constraints/set_enum/select.rb +0 -79
  917. data/lib/gecoder/interface/model.rb +0 -453
  918. data/lib/gecoder/interface/model_sugar.rb +0 -84
  919. data/specs/constraints/set_enum/select.rb +0 -73
@@ -1,224 +0,0 @@
1
- /*
2
- * Main authors:
3
- * Guido Tack <tack@gecode.org>
4
- *
5
- * Copyright:
6
- * Guido Tack, 2006
7
- *
8
- * Last modified:
9
- * $Date: 2008-02-19 11:05:15 +0100 (Tue, 19 Feb 2008) $ by $Author: tack $
10
- * $Revision: 6231 $
11
- *
12
- * This file is part of Gecode, the generic constraint
13
- * development environment:
14
- * http://www.gecode.org
15
- *
16
- * Permission is hereby granted, free of charge, to any person obtaining
17
- * a copy of this software and associated documentation files (the
18
- * "Software"), to deal in the Software without restriction, including
19
- * without limitation the rights to use, copy, modify, merge, publish,
20
- * distribute, sublicense, and/or sell copies of the Software, and to
21
- * permit persons to whom the Software is furnished to do so, subject to
22
- * the following conditions:
23
- *
24
- * The above copyright notice and this permission notice shall be
25
- * included in all copies or substantial portions of the Software.
26
- *
27
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
- *
35
- */
36
-
37
- #ifndef GECODE_GIST_SPACENODE_HH
38
- #define GECODE_GIST_SPACENODE_HH
39
-
40
- #include "gecode/gist/node.hh"
41
- #include "gecode/gist/better.hh"
42
- #include "gecode/kernel.hh"
43
-
44
- namespace Gecode { namespace Gist {
45
-
46
- /// \brief Status of nodes in the search tree
47
- enum NodeStatus {
48
- SOLVED, ///< Node representing a solution
49
- FAILED, ///< Node representing failure
50
- BRANCH, ///< Node representing a branch
51
- UNDETERMINED, ///< Node that has not been explored yet
52
- SPECIAL, ///< Node representing user controlled exploration
53
- STEP ///< Node representing one propagation step
54
- };
55
-
56
- // TODO nikopp: doxygen comments
57
- class StepDesc {
58
- public:
59
- int noOfSteps;
60
- bool debug;
61
- StepDesc(int steps);
62
- void toggleDebug(void);
63
- };
64
-
65
- // TODO nikopp: doxygen comments
66
- class SpecialDesc {
67
- public:
68
- const std::string vn;
69
- const int v;
70
- const int rel;
71
- SpecialDesc(std::string varName, int rel0, int v0);
72
- };
73
-
74
- /// Statistics about the search tree
75
- class Statistics {
76
- public:
77
- int solutions;
78
- int failures;
79
- int choices;
80
- int undetermined;
81
- int maxDepth;
82
-
83
- Statistics(void)
84
- : solutions(0), failures(0), choices(0), undetermined(1), maxDepth(0) {}
85
-
86
- static Statistics dummy;
87
- };
88
-
89
- class SpaceNode;
90
-
91
- /// \brief Static reference to the currently best space
92
- class BestNode {
93
- public:
94
- /// The currently best node found, or NULL
95
- SpaceNode* s;
96
- /// The object used for constraining spaces to be better
97
- Better* b;
98
- /// Constructor
99
- BestNode(SpaceNode* s0, Better* b);
100
- };
101
-
102
- /// \brief A node of a search tree of Gecode spaces
103
- class SpaceNode : public Node {
104
- private:
105
- /// A copy used for recomputation, or NULL
106
- Space* copy;
107
- /// Working space used for computing the status
108
- Space* workingSpace;
109
-
110
- union {
111
- /// Branching description
112
- const BranchingDesc* branch;
113
- /// Special branching description
114
- const SpecialDesc* special;
115
- /// Step description
116
- StepDesc* step;
117
- } desc;
118
-
119
- /// Current status of the node
120
- NodeStatus status;
121
-
122
- protected:
123
- /// Reference to currently best node (for branch-and-bound)
124
- BestNode* curBest;
125
- private:
126
- /// Reference to best space when the node was created
127
- SpaceNode* ownBest;
128
-
129
- /// Number of children that are not fully explored
130
- int noOfOpenChildren;
131
- /// Whether the subtree of this node is known to contain failure
132
- bool _hasFailedChildren;
133
- /// Whether the subtree of this node is known to contain solutions
134
- bool _hasSolvedChildren;
135
-
136
- /// Recompute workingSpace from a copy higher up, return distance to copy
137
- int recompute(void);
138
- /// Try to get workingSpace from parent
139
- Space* donateSpace(int alt, SpaceNode* ownBest);
140
- /// Try to get copy from parent if this node is the last alternative
141
- Space* checkLAO(int alt, SpaceNode* ownBest);
142
- /// Acquire working space, either through donateSpace or recompute
143
- void acquireSpace(void);
144
-
145
- /// Mark all ancestors as having solved children
146
- void solveUp(void);
147
- /// Book-keeping of open children
148
- void closeChild(bool hadFailures, bool hadSolutions);
149
- public:
150
- /// Construct node for alternative \a alt
151
- SpaceNode(int alt, BestNode* cb = NULL);
152
- /// Construct root node from Space \a root and branch-and-bound object \a better
153
- SpaceNode(Space* root, Better* b);
154
- /// Destructor
155
- virtual ~SpaceNode(void);
156
-
157
- /// Return the branch-and-bound wrapper
158
- Better* getBetterWrapper(void) const;
159
-
160
- /// Return working space. Receiver must delete the space.
161
- Space* getSpace(void);
162
-
163
- /// Return whether this node is the currently best solution
164
- bool isCurrentBest(void);
165
-
166
- /** \brief Compute and return the number of children
167
- *
168
- * On a node whose status is already determined, this function
169
- * just returns the number of children. On an undetermined node,
170
- * it first acquires a Space (possibly through recomputation), and
171
- * then asks for its status. If the space is solved or failed, the
172
- * node's status will be set accordingly, and 0 will be returned.
173
- * Otherwise, the status is SS_BRANCH, and as many new children will
174
- * be created as the branch has alternatives, and the number returned.
175
- */
176
- int getNumberOfChildNodes(Statistics& stats = Statistics::dummy);
177
-
178
- /// Return current status of the node
179
- NodeStatus getStatus(void);
180
- /// Change the status of the to \a s
181
- void setStatus(NodeStatus s);
182
- /// Return whether this node represents a propagation step
183
- bool isStepNode(void);
184
- /// Change the SpecialDesc to \a d
185
- void setSpecialDesc(const SpecialDesc* d);
186
- /// Change the StepDesc to \a d
187
- void setStepDesc(StepDesc* d);
188
- /// Return the StepDesc
189
- StepDesc* getStepDesc(void);
190
-
191
- /// Return alternative number of this node
192
- int getAlternative(void);
193
- /// Return whether this node still has open children
194
- bool isOpen(void);
195
- /// Opens all nodes on the path up to the root
196
- void openUp(void);
197
- /// Return whether the subtree of this node has any failed children
198
- bool hasFailedChildren(void);
199
- /// Return whether the subtree of this node has any solved children
200
- bool hasSolvedChildren(void);
201
- /// Return number of open children
202
- int getNoOfOpenChildren(void);
203
- /// Set number of open children to \a n
204
- void setNoOfOpenChildren(int n);
205
- /// Return whether the node has a copy
206
- bool hasCopy(void);
207
- /// Return whether the node has a working space
208
- bool hasWorkingSpace(void);
209
-
210
- /// Return the parent
211
- SpaceNode* getParent(void);
212
- /// Return child \a i
213
- SpaceNode* getChild(int i);
214
- /// Pseudo-constructor to allow creation of nodes of sub-classes from getNoOfChildNodes
215
- virtual SpaceNode* createChild(int alternative);
216
- /// Called when the status has changed
217
- virtual void changedStatus(void);
218
- };
219
-
220
- }}
221
-
222
- #endif
223
-
224
- // STATISTICS: gist-any
@@ -1,114 +0,0 @@
1
- /*
2
- * Main authors:
3
- * Guido Tack <tack@gecode.org>
4
- *
5
- * Copyright:
6
- * Guido Tack, 2006
7
- *
8
- * Last modified:
9
- * $Date: 2007-12-03 13:33:28 +0100 (Mon, 03 Dec 2007) $ by $Author: tack $
10
- * $Revision: 5559 $
11
- *
12
- * This file is part of Gecode, the generic constraint
13
- * development environment:
14
- * http://www.gecode.org
15
- *
16
- * Permission is hereby granted, free of charge, to any person obtaining
17
- * a copy of this software and associated documentation files (the
18
- * "Software"), to deal in the Software without restriction, including
19
- * without limitation the rights to use, copy, modify, merge, publish,
20
- * distribute, sublicense, and/or sell copies of the Software, and to
21
- * permit persons to whom the Software is furnished to do so, subject to
22
- * the following conditions:
23
- *
24
- * The above copyright notice and this permission notice shall be
25
- * included in all copies or substantial portions of the Software.
26
- *
27
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
- *
35
- */
36
-
37
- #include <QtGui>
38
-
39
- #include <iostream>
40
- #include "gecode/gist/textoutput.hh"
41
-
42
- namespace Gecode { namespace Gist {
43
-
44
- /// \brief An outputstream that prints on a QTextEdit
45
- class GistOutputStream
46
- : public std::basic_ostream<char, std::char_traits<char> > {
47
- /// \brief Buffer for printing on a QTextEdit
48
- class Buf
49
- : public std::basic_streambuf<char, std::char_traits<char> > {
50
- QString buffer;
51
- QTextEdit* editor;
52
- protected:
53
- virtual int overflow(int v = std::char_traits<char>::eof()) {
54
- if (v == '\n') {
55
- editor->append(buffer);
56
- buffer.clear();
57
- } else {
58
- buffer += (char)v;
59
- }
60
- return v;
61
- }
62
- public:
63
- Buf(QTextEdit* e) : editor(e) {}
64
- };
65
-
66
- Buf _buf;
67
- public:
68
- GistOutputStream(QTextEdit* editor)
69
- : std::basic_ostream<char, std::char_traits<char> >(&_buf),
70
- _buf(editor) {
71
- clear();
72
- }
73
- };
74
-
75
- TextOutput::TextOutput(const std::string& name, QWidget *parent)
76
- : QMainWindow(parent) {
77
- QFont font;
78
- font.setFamily("Courier");
79
- font.setFixedPitch(true);
80
- font.setPointSize(12);
81
-
82
- editor = new QTextEdit;
83
- editor->setFont(font);
84
- editor->setReadOnly(true);
85
- editor->setLineWrapMode(QTextEdit::FixedColumnWidth);
86
- editor->setLineWrapColumnOrWidth(80);
87
- editor->setTabStopWidth(2);
88
- os = new GistOutputStream(editor);
89
-
90
- setCentralWidget(editor);
91
- setWindowTitle(QString((std::string("Gist Console: ") + name).c_str()));
92
-
93
- setAttribute(Qt::WA_QuitOnClose, false);
94
- setAttribute(Qt::WA_DeleteOnClose, false);
95
- resize(600,300);
96
- }
97
-
98
- TextOutput::~TextOutput(void) {
99
- delete os;
100
- }
101
-
102
- std::ostream&
103
- TextOutput::getStream(void) {
104
- return *os;
105
- }
106
-
107
- void
108
- TextOutput::insertHtml(const QString& s) {
109
- editor->insertHtml(s);
110
- }
111
-
112
- }}
113
-
114
- // STATISTICS: gist-any
@@ -1,1140 +0,0 @@
1
- /*
2
- * Main authors:
3
- * Guido Tack <tack@gecode.org>
4
- *
5
- * Copyright:
6
- * Guido Tack, 2006
7
- *
8
- * Last modified:
9
- * $Date: 2008-03-04 13:54:11 +0100 (Tue, 04 Mar 2008) $ by $Author: tack $
10
- * $Revision: 6405 $
11
- *
12
- * This file is part of Gecode, the generic constraint
13
- * development environment:
14
- * http://www.gecode.org
15
- *
16
- * Permission is hereby granted, free of charge, to any person obtaining
17
- * a copy of this software and associated documentation files (the
18
- * "Software"), to deal in the Software without restriction, including
19
- * without limitation the rights to use, copy, modify, merge, publish,
20
- * distribute, sublicense, and/or sell copies of the Software, and to
21
- * permit persons to whom the Software is furnished to do so, subject to
22
- * the following conditions:
23
- *
24
- * The above copyright notice and this permission notice shall be
25
- * included in all copies or substantial portions of the Software.
26
- *
27
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
- *
35
- */
36
-
37
- #include <QtGui/QPainter>
38
-
39
- #include <stack>
40
- #include <fstream>
41
-
42
- #include "gecode/gist/treecanvas.hh"
43
-
44
- #include "gecode/gist/nodevisitor.hh"
45
- #include "gecode/gist/shapelist.hh"
46
- #include "gecode/gist/visualnode.hh"
47
- #include "gecode/gist/postscript.hh"
48
- #include "gecode/gist/drawingcursor.hh"
49
- #include "gecode/gist/analysiscursor.hh"
50
- #include "gecode/gist/addchild.hh"
51
- #include "gecode/gist/addvisualisationdialog.hh"
52
-
53
- namespace Gecode { namespace Gist {
54
-
55
- Inspector::~Inspector(void) {}
56
-
57
- TreeCanvasImpl::TreeCanvasImpl(Space* rootSpace, Better* b,
58
- QWidget* parent)
59
- : QWidget(parent)
60
- , mutex(QMutex::Recursive)
61
- , layoutMutex(QMutex::Recursive)
62
- , inspector(NULL), heatView(false)
63
- , autoHideFailed(true), autoZoom(false)
64
- , refresh(500), nextPit(0) {
65
- QMutexLocker locker(&mutex);
66
- root = new VisualNode(rootSpace, b);
67
- root->layout();
68
- root->setMarked(true);
69
- currentNode = root;
70
- pathHead = root;
71
- scale = 1.0;
72
-
73
- setAutoFillBackground(true);
74
-
75
- connect(&searcher, SIGNAL(update(int,int)), this,
76
- SLOT(layoutDone(int,int)));
77
- connect(&searcher, SIGNAL(statusChanged(bool)), this,
78
- SLOT(statusChanged(bool)));
79
-
80
- qRegisterMetaType<Gecode::Gist::NodeStatus>("Gecode::Gist::NodeStatus");
81
- update();
82
- }
83
-
84
- TreeCanvasImpl::~TreeCanvasImpl(void) { delete root; }
85
-
86
- void
87
- TreeCanvasImpl::setInspector(Inspector* i) { inspector = i; }
88
-
89
- void
90
- TreeCanvasImpl::scaleTree(int scale0) {
91
- QMutexLocker locker(&layoutMutex);
92
- BoundingBox bb;
93
- if (scale0<1)
94
- scale0 = 1;
95
- if (scale0>400)
96
- scale0 = 400;
97
- scale = (static_cast<double>(scale0)) / 100.0;
98
- bb = root->getBoundingBox();
99
- int w = static_cast<int>((bb.right-bb.left+20)*scale);
100
- int h = static_cast<int>(40+bb.depth*38*scale);
101
- if (heatView)
102
- w = std::max(w, 300);
103
- resize(w,h);
104
- emit scaleChanged(scale0);
105
- QWidget::update();
106
- }
107
-
108
- void
109
- TreeCanvasImpl::update(void) {
110
- QMutexLocker locker(&mutex);
111
- layoutMutex.lock();
112
- if (root != NULL) {
113
- root->layout();
114
- BoundingBox bb = root->getBoundingBox();
115
-
116
- int w = static_cast<int>((bb.right-bb.left+20)*scale);
117
- int h = static_cast<int>(40+bb.depth*38*scale);
118
- xtrans = -bb.left+10;
119
- resize(w,h);
120
- }
121
- if (autoZoom)
122
- zoomToFit();
123
- layoutMutex.unlock();
124
- QWidget::update();
125
- }
126
-
127
- void
128
- TreeCanvasImpl::layoutDone(int w, int h) {
129
- if (heatView)
130
- w = std::max(w, 300);
131
- resize(w,h);
132
- QWidget::update();
133
- }
134
-
135
- void
136
- TreeCanvasImpl::statusChanged(bool finished) {
137
- if (finished)
138
- centerCurrentNode();
139
- emit statusChanged(stats, finished);
140
- }
141
-
142
- void
143
- SearcherThread::search(VisualNode* n, bool all, TreeCanvasImpl* ti) {
144
- node = n;
145
- a = all;
146
- t = ti;
147
- start();
148
- }
149
-
150
- void
151
- SearcherThread::updateCanvas(void) {
152
- t->layoutMutex.lock();
153
- if (t->root == NULL)
154
- return;
155
-
156
- if (t->autoHideFailed) {
157
- t->root->hideFailed();
158
- }
159
- t->root->layout();
160
- BoundingBox bb = t->root->getBoundingBox();
161
-
162
- int w = static_cast<int>((bb.right-bb.left+20)*t->scale);
163
- int h = static_cast<int>(40+bb.depth*38*t->scale);
164
- t->xtrans = -bb.left+10;
165
-
166
- if (t->autoZoom) {
167
- QWidget* p = t->parentWidget();
168
- if (p) {
169
- double newXScale =
170
- static_cast<double>(p->width()) / (bb.right - bb.left + 20);
171
- double newYScale =
172
- static_cast<double>(p->height()) / (bb.depth * 38 + 40);
173
-
174
- int scale0 = static_cast<int>(std::min(newXScale, newYScale)*100);
175
- if (scale0<1)
176
- scale0 = 1;
177
- if (scale0>400)
178
- scale0 = 400;
179
- t->scale = (static_cast<double>(scale0)) / 100.0;
180
-
181
- w = static_cast<int>((bb.right-bb.left+20)*t->scale);
182
- h = static_cast<int>(40+bb.depth*38*t->scale);
183
-
184
- emit scaleChanged(scale0);
185
- }
186
- }
187
- t->layoutMutex.unlock();
188
- emit update(w,h);
189
- }
190
-
191
- void
192
- SearcherThread::run() {
193
- {
194
- t->mutex.lock();
195
- emit statusChanged(false);
196
- std::stack<VisualNode*> stck;
197
- stck.push(node);
198
-
199
- VisualNode* sol = NULL;
200
- int nodeCount = 0;
201
- t->stopSearchFlag = false;
202
- while (!stck.empty() && !t->stopSearchFlag) {
203
- if (t->refresh > 0 && ++nodeCount > t->refresh) {
204
- node->dirtyUp();
205
- updateCanvas();
206
- emit statusChanged(false);
207
- nodeCount = 0;
208
- }
209
- VisualNode* n = stck.top(); stck.pop();
210
- if (n->isOpen()) {
211
- int kids = n->getNumberOfChildNodes(t->stats);
212
- if (!a && n->getStatus() == SOLVED) {
213
- sol = n;
214
- break;
215
- }
216
- for (int i=kids; i--;) {
217
- stck.push(n->getChild(i));
218
- }
219
- }
220
- }
221
- node->dirtyUp();
222
- t->stopSearchFlag = false;
223
- t->mutex.unlock();
224
- if (sol != NULL) {
225
- t->setCurrentNode(sol);
226
- } else {
227
- t->setCurrentNode(node);
228
- }
229
- }
230
- updateCanvas();
231
- emit statusChanged(true);
232
- }
233
-
234
- void
235
- TreeCanvasImpl::searchAll(void) {
236
- QMutexLocker locker(&mutex);
237
- searcher.search(currentNode, true, this);
238
- }
239
-
240
- void
241
- TreeCanvasImpl::searchOne(void) {
242
- QMutexLocker locker(&mutex);
243
- searcher.search(currentNode, false, this);
244
- }
245
-
246
- void
247
- TreeCanvasImpl::toggleHidden(void) {
248
- QMutexLocker locker(&mutex);
249
- currentNode->toggleHidden();
250
- update();
251
- centerCurrentNode();
252
- }
253
-
254
- void
255
- TreeCanvasImpl::hideFailed(void) {
256
- QMutexLocker locker(&mutex);
257
- currentNode->hideFailed();
258
- update();
259
- centerCurrentNode();
260
- }
261
-
262
- void
263
- TreeCanvasImpl::unhideAll(void) {
264
- QMutexLocker locker(&mutex);
265
- QMutexLocker layoutLocker(&layoutMutex);
266
- currentNode->unhideAll();
267
- update();
268
- centerCurrentNode();
269
- }
270
-
271
- void
272
- TreeCanvasImpl::zoomToFit(void) {
273
- QMutexLocker locker(&layoutMutex);
274
- if (root != NULL) {
275
- BoundingBox bb;
276
- bb = root->getBoundingBox();
277
- QWidget* p = parentWidget();
278
- if (p) {
279
- double newXScale =
280
- static_cast<double>(p->width()) / (bb.right - bb.left + 20);
281
- double newYScale =
282
- static_cast<double>(p->height()) / (bb.depth * 38 + 40);
283
- scaleTree(static_cast<int>(std::min(newXScale, newYScale)*100));
284
- }
285
- }
286
- }
287
-
288
- void
289
- TreeCanvasImpl::centerCurrentNode(void) {
290
- QMutexLocker locker(&mutex);
291
- int x=0;
292
- int y=0;
293
-
294
- VisualNode* c = currentNode;
295
- while (c != NULL) {
296
- x += c->getOffset();
297
- y += 38;
298
- c = c->getParent();
299
- }
300
-
301
- x = static_cast<int>((xtrans+x)*scale); y = static_cast<int>(y*scale);
302
-
303
- QScrollArea* sa =
304
- static_cast<QScrollArea*>(parentWidget()->parentWidget());
305
- sa->ensureVisible(x, y);
306
- }
307
-
308
- void
309
- TreeCanvasImpl::analyzeTree(void) {
310
- QMutexLocker locker(&mutex);
311
- int min, max;
312
- AnalysisCursor ac(root, min, max);
313
- PostorderNodeVisitor<AnalysisCursor> va(ac);
314
- while (va.next()) {}
315
- DistributeCursor dc(root, min, max);
316
- PreorderNodeVisitor<DistributeCursor> vd(dc);
317
- while (vd.next()) {}
318
- if (!heatView)
319
- toggleHeatView();
320
- QWidget::update();
321
- }
322
-
323
- void
324
- TreeCanvasImpl::toggleHeatView(void) {
325
- heatView = !heatView;
326
- QPalette pal(palette());
327
- QScrollArea* sa =
328
- static_cast<QScrollArea*>(parentWidget()->parentWidget());
329
- pal.setColor(QPalette::Window, heatView ? Qt::black : Qt::white);
330
- setPalette(pal);
331
- sa->setPalette(pal);
332
- if (heatView) {
333
- setMinimumWidth(300);
334
- }
335
- QWidget::update();
336
- }
337
-
338
- void
339
- TreeCanvasImpl::inspectCurrentNode(void) {
340
- QMutexLocker locker(&mutex);
341
-
342
- if (currentNode->isHidden()) {
343
- toggleHidden();
344
- return;
345
- }
346
-
347
- switch (currentNode->getStatus()) {
348
- case UNDETERMINED:
349
- {
350
- (void) currentNode->getNumberOfChildNodes(stats);
351
- emit statusChanged(stats,true);
352
- emit currentNodeChanged(currentNode->getSpace(), currentNode->getStatus());
353
- }
354
- break;
355
- case FAILED:
356
- case STEP:
357
- case SPECIAL:
358
- case BRANCH:
359
- case SOLVED:
360
- Space* curSpace = currentNode->getSpace();
361
- Reflection::VarMap vm;
362
- curSpace->getVars(vm, false);
363
- emit inspect(vm, nextPit);
364
- saveCurrentNode();
365
- if (inspector != NULL) {
366
- inspector->inspect(curSpace);
367
- }
368
- break;
369
- }
370
-
371
- currentNode->dirtyUp();
372
- update();
373
- centerCurrentNode();
374
- }
375
-
376
- void
377
- TreeCanvasImpl::stopSearch(void) {
378
- stopSearchFlag = true;
379
- }
380
-
381
- void
382
- TreeCanvasImpl::reset(void) {
383
- QMutexLocker locker(&mutex);
384
- Space* rootSpace = root->getSpace();
385
- Better* b = root->getBetterWrapper();
386
- delete root;
387
- root = new VisualNode(rootSpace, b);
388
- root->setMarked(true);
389
- currentNode = root;
390
- pathHead = root;
391
- nodeMap.clear();
392
- nextPit = 0;
393
- scale = 1.0;
394
- stats = Statistics();
395
- root->layout();
396
-
397
- emit statusChanged(stats, true);
398
- emit currentNodeChanged(NULL, UNDETERMINED);
399
- update();
400
- }
401
-
402
- void
403
- TreeCanvasImpl::setPath(void) {
404
- QMutexLocker locker(&mutex);
405
- if(currentNode == pathHead)
406
- return;
407
-
408
- pathHead->unPathUp();
409
- pathHead = currentNode;
410
-
411
- currentNode->setPathInfos(true, -1, true);
412
- currentNode->pathUp();
413
- currentNode->dirtyUp();
414
- update();
415
- }
416
-
417
- void
418
- TreeCanvasImpl::inspectPath(void) {
419
- QMutexLocker locker(&mutex);
420
- setCurrentNode(root);
421
- while(currentNode->isOnPath()) {
422
- inspectCurrentNode();
423
- if(!currentNode->isLastOnPath())
424
- setCurrentNode(currentNode->getChild(currentNode->getPathAlternative()));
425
- else
426
- break;
427
- }
428
- update();
429
- }
430
-
431
- void
432
- TreeCanvasImpl::navUp(void) {
433
- QMutexLocker locker(&mutex);
434
-
435
- VisualNode* p = currentNode->getParent();
436
-
437
- setCurrentNode(p);
438
-
439
- if (p != NULL) {
440
- centerCurrentNode();
441
- }
442
- }
443
-
444
- void
445
- TreeCanvasImpl::navDown(void) {
446
- QMutexLocker locker(&mutex);
447
- if (!currentNode->isHidden()) {
448
- switch (currentNode->getStatus()) {
449
- case STEP:
450
- case SPECIAL:
451
- if (currentNode->getNumberOfChildren() < 1)
452
- break;
453
- case BRANCH:
454
- {
455
- int alt = 0;
456
- if(currentNode->isOnPath() && !currentNode->isLastOnPath()) {
457
- alt = currentNode->getPathAlternative();
458
- }
459
- VisualNode* n = currentNode->getChild(alt);
460
- setCurrentNode(n);
461
- centerCurrentNode();
462
- break;
463
- }
464
- case SOLVED:
465
- case FAILED:
466
- case UNDETERMINED:
467
- break;
468
- }
469
- }
470
- }
471
-
472
- void
473
- TreeCanvasImpl::navLeft(void) {
474
- QMutexLocker locker(&mutex);
475
- VisualNode* p = currentNode->getParent();
476
- if (p != NULL) {
477
- int alt = currentNode->getAlternative();
478
- if (alt > 0) {
479
- VisualNode* n = p->getChild(alt-1);
480
- setCurrentNode(n);
481
- centerCurrentNode();
482
- }
483
- }
484
- }
485
-
486
- void
487
- TreeCanvasImpl::navRight(void) {
488
- QMutexLocker locker(&mutex);
489
- VisualNode* p = currentNode->getParent();
490
- if (p != NULL) {
491
- int alt = currentNode->getAlternative();
492
- if (alt + 1 < p->getNumberOfChildNodes()) {
493
- VisualNode* n = p->getChild(alt+1);
494
- setCurrentNode(n);
495
- centerCurrentNode();
496
- }
497
- }
498
- }
499
-
500
- void
501
- TreeCanvasImpl::navRoot(void) {
502
- QMutexLocker locker(&mutex);
503
- setCurrentNode(root);
504
- centerCurrentNode();
505
- }
506
-
507
- void
508
- TreeCanvasImpl::markCurrentNode(int pit) {
509
- QMutexLocker locker(&mutex);
510
- if(nodeMap.size() > pit && nodeMap[pit] != NULL) {
511
- setCurrentNode(nodeMap[pit]);
512
- centerCurrentNode();
513
- emit pointInTimeChanged(pit);
514
- }
515
- }
516
-
517
- void
518
- TreeCanvasImpl::saveCurrentNode(void) {
519
- QMutexLocker locker(&mutex);
520
- assert(nextPit == nodeMap.size());
521
- nodeMap << currentNode;
522
- nextPit++;
523
- }
524
-
525
- void
526
- TreeCanvasImpl::exportPostscript(void) {
527
- QString filename = QFileDialog::getSaveFileName(this, tr("Save tree as postscript"), "", tr("Postscript (*.ps *.eps)"));
528
- if (filename != "") {
529
- std::ofstream outfile(filename.toStdString().c_str());
530
- QMutexLocker locker(&mutex);
531
- Postscript::output(outfile, root);
532
- outfile.close();
533
- }
534
- }
535
-
536
- void
537
- TreeCanvasImpl::print(void) {
538
- QPrinter printer;
539
- if (QPrintDialog(&printer).exec() == QDialog::Accepted) {
540
- QMutexLocker locker(&mutex);
541
-
542
- BoundingBox bb = root->getBoundingBox();
543
- QRect pageRect = printer.pageRect();
544
- double newXScale =
545
- static_cast<double>(pageRect.width()) / (bb.right - bb.left + 20);
546
- double newYScale =
547
- static_cast<double>(pageRect.height()) / (bb.depth * 38 + 40);
548
- double printScale = std::min(newXScale, newYScale)*100;
549
- if (printScale<1.0)
550
- printScale = 1.0;
551
- if (printScale > 400.0)
552
- printScale = 400.0;
553
- printScale = printScale / 100.0;
554
-
555
- QPainter painter(&printer);
556
- painter.setRenderHint(QPainter::Antialiasing);
557
- painter.scale(printScale,printScale);
558
- painter.translate(xtrans, 0);
559
- QRect clip(0,0,0,0);
560
- DrawingCursor dc(root, painter, heatView, clip);
561
- PreorderNodeVisitor<DrawingCursor> v(dc);
562
- while (v.next()) {}
563
- }
564
- }
565
-
566
- VisualNode*
567
- TreeCanvasImpl::eventNode(QEvent* event) {
568
- int x = 0;
569
- int y = 0;
570
- switch (event->type()) {
571
- case QEvent::ToolTip:
572
- {
573
- QHelpEvent* he = static_cast<QHelpEvent*>(event);
574
- x = he->x();
575
- y = he->y();
576
- break;
577
- }
578
- case QEvent::MouseButtonDblClick:
579
- case QEvent::MouseButtonPress:
580
- case QEvent::MouseButtonRelease:
581
- case QEvent::MouseMove:
582
- {
583
- QMouseEvent* me = static_cast<QMouseEvent*>(event);
584
- x = me->x();
585
- y = me->y();
586
- break;
587
- }
588
- case QEvent::ContextMenu:
589
- {
590
- QContextMenuEvent* ce = static_cast<QContextMenuEvent*>(event);
591
- x = ce->x();
592
- y = ce->y();
593
- break;
594
- }
595
- default:
596
- return NULL;
597
- }
598
- VisualNode* n;
599
- n = root->findNode(static_cast<int>(x/scale-xtrans),
600
- static_cast<int>((y-30)/scale));
601
- return n;
602
- }
603
-
604
- bool
605
- TreeCanvasImpl::event(QEvent* event) {
606
- if (event->type() == QEvent::ToolTip) {
607
- VisualNode* n = eventNode(event);
608
- if (n != NULL && !n->isHidden() && n->getStatus() == BRANCH) {
609
- QHelpEvent* he = static_cast<QHelpEvent*>(event);
610
- QToolTip::showText(he->globalPos(), QString(n->toolTip().c_str()));
611
- } else {
612
- QToolTip::hideText();
613
- }
614
- }
615
- return QWidget::event(event);
616
- }
617
-
618
- void
619
- TreeCanvasImpl::resizeToOuter(void) {
620
- if (autoZoom)
621
- zoomToFit();
622
- }
623
-
624
- void
625
- TreeCanvasImpl::paintEvent(QPaintEvent* event) {
626
- QMutexLocker locker(&layoutMutex);
627
- QPainter painter(this);
628
- painter.setRenderHint(QPainter::Antialiasing);
629
-
630
- if (heatView) {
631
- painter.setPen(Qt::white);
632
- painter.drawText(QRect(0,5,40,15), Qt::AlignRight, tr("cold"));
633
- painter.setPen(Qt::black);
634
- // Draw legend
635
- for (int i=0; i<180; i+=10) {
636
- int heat = (240 + i) % 360;
637
- painter.setBrush(QBrush(QColor::fromHsv(heat,255,255)));
638
- painter.drawRect(45+i, 5, 10, 15);
639
- }
640
- painter.setPen(Qt::white);
641
- painter.drawText(QRect(230,5,40,15), Qt::AlignLeft, tr("hot"));
642
- painter.setPen(Qt::black);
643
- }
644
-
645
- BoundingBox bb = root->getBoundingBox();
646
- QRect origClip = event->rect();
647
- painter.translate(0, 30);
648
- painter.scale(scale,scale);
649
- painter.translate(xtrans, 0);
650
- QRect clip(static_cast<int>(origClip.x()/scale-xtrans),
651
- static_cast<int>(origClip.y()/scale),
652
- static_cast<int>(origClip.width()/scale),
653
- static_cast<int>(origClip.height()/scale));
654
- DrawingCursor dc(root, painter, heatView, clip);
655
- PreorderNodeVisitor<DrawingCursor> v(dc);
656
- while (v.next()) {}
657
- }
658
-
659
- void
660
- TreeCanvasImpl::mouseDoubleClickEvent(QMouseEvent* event) {
661
- if(event->button() == Qt::LeftButton) {
662
- VisualNode* n = eventNode(event);
663
- if(n == currentNode) {
664
- inspectCurrentNode();
665
- event->accept();
666
- return;
667
- }
668
- }
669
- event->ignore();
670
- }
671
-
672
- void
673
- TreeCanvasImpl::contextMenuEvent(QContextMenuEvent* event) {
674
- QMutexLocker locker(&mutex);
675
- VisualNode* n = eventNode(event);
676
- if (n != NULL) {
677
- setCurrentNode(n);
678
- emit contextMenu(event);
679
- event->accept();
680
- return;
681
- }
682
- event->ignore();
683
- }
684
-
685
- void
686
- TreeCanvasImpl::finish(void) {
687
- stopSearchFlag = true;
688
- searcher.wait();
689
- }
690
-
691
- void
692
- TreeCanvasImpl::setCurrentNode(VisualNode* n) {
693
- QMutexLocker locker(&mutex);
694
- if (n != NULL) {
695
- currentNode->setMarked(false);
696
- currentNode = n;
697
- currentNode->setMarked(true);
698
- NodeStatus status = n->getStatus();
699
- if(status != UNDETERMINED) {
700
- emit currentNodeChanged(n->getSpace(), status);
701
- } else {
702
- emit currentNodeChanged(NULL, status);
703
- }
704
- QWidget::update();
705
- }
706
- }
707
-
708
- void
709
- TreeCanvasImpl::mousePressEvent(QMouseEvent* event) {
710
- QMutexLocker locker(&mutex);
711
- if (event->button() == Qt::LeftButton) {
712
- VisualNode* n = eventNode(event);
713
- setCurrentNode(n);
714
- if (n != NULL) {
715
- event->accept();
716
- return;
717
- }
718
- }
719
- event->ignore();
720
- }
721
-
722
- void
723
- TreeCanvasImpl::setAutoHideFailed(bool b) {
724
- autoHideFailed = b;
725
- }
726
-
727
- void
728
- TreeCanvasImpl::setAutoZoom(bool b) {
729
- autoZoom = b;
730
- if (autoZoom) {
731
- zoomToFit();
732
- }
733
- }
734
-
735
- bool
736
- TreeCanvasImpl::getAutoHideFailed(void) {
737
- return autoHideFailed;
738
- }
739
-
740
- bool
741
- TreeCanvasImpl::getAutoZoom(void) {
742
- return autoZoom;
743
- }
744
-
745
- void
746
- TreeCanvasImpl::setRefresh(int i) {
747
- refresh = i;
748
- }
749
-
750
- void
751
- TreeCanvasImpl::getRootVars(Gecode::Reflection::VarMap& vm) {
752
- QMutexLocker locker(&mutex);
753
- if(root != NULL) {
754
- Space* space = root->getSpace();
755
- space->getVars(vm, false);
756
- delete space;
757
- }
758
- }
759
-
760
- void
761
- TreeCanvasImpl::addVisualisation(QStringList vars, QString visType, QString windowName) {
762
- Config conf;
763
-
764
- pt2createView cv = conf.visualisationMap.value(visType);
765
-
766
- if(cv != NULL) {
767
- Reflection::VarMap vm;
768
- Space* rootSpace = root->getSpace();
769
- rootSpace->getVars(vm, false);
770
- delete rootSpace;
771
-
772
- QWidget* varView = cv(vm, nextPit, vars, this);
773
-
774
- varView->setWindowTitle(windowName);
775
-
776
- varView->setWindowFlags(Qt::Tool);
777
-
778
- varView->show();
779
-
780
- connect(this, SIGNAL(inspect(Gecode::Reflection::VarMap&, int)),
781
- varView, SLOT(display(Gecode::Reflection::VarMap&, int)));
782
- connect(this, SIGNAL(pointInTimeChanged(int)),
783
- varView, SLOT(displayOld(int)));
784
- connect(varView, SIGNAL(pointInTimeChanged(int)),
785
- this, SLOT(markCurrentNode(int)));
786
- }
787
- }
788
-
789
- void
790
- TreeCanvasImpl::addVisualisation(void) {
791
-
792
- Config conf;
793
-
794
- Reflection::VarMap rootVm;
795
- getRootVars(rootVm);
796
-
797
- AddVisualisationDialog* addVisDialog = new AddVisualisationDialog(conf, rootVm, this);
798
-
799
- if(addVisDialog->exec()) {
800
-
801
- QStringList itemList = addVisDialog->vars();
802
- QString visualisation = addVisDialog->vis();
803
- QString name = addVisDialog->name();
804
-
805
- addVisualisation(itemList, visualisation, name);
806
- }
807
- }
808
-
809
- TreeCanvas::TreeCanvas(Space* root, Better* b,
810
- QWidget* parent) : QWidget(parent) {
811
- QGridLayout* layout = new QGridLayout(this);
812
-
813
- QScrollArea* scrollArea = new QScrollArea(this);
814
-
815
- scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
816
- scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
817
- scrollArea->setAlignment(Qt::AlignHCenter);
818
- scrollArea->setAutoFillBackground(true);
819
- QPalette myPalette(scrollArea->palette());
820
- myPalette.setColor(QPalette::Window, Qt::white);
821
- scrollArea->setPalette(myPalette);
822
- canvas = new TreeCanvasImpl(root, b, this);
823
- canvas->setPalette(myPalette);
824
- canvas->setObjectName("canvas");
825
-
826
- scrollArea->setWidget(canvas);
827
-
828
- QSlider* scaleBar = new QSlider(Qt::Vertical, this);
829
- scaleBar->setObjectName("scaleBar");
830
- scaleBar->setMinimum(1);
831
- scaleBar->setMaximum(400);
832
- scaleBar->setValue(100);
833
-
834
- inspectCN = new QAction("Inspect", this);
835
- inspectCN->setShortcut(QKeySequence("Return"));
836
- connect(inspectCN, SIGNAL(triggered()), canvas,
837
- SLOT(inspectCurrentNode()));
838
-
839
- stopCN = new QAction("Stop search", this);
840
- stopCN->setShortcut(QKeySequence("Esc"));
841
- connect(stopCN, SIGNAL(triggered()), canvas,
842
- SLOT(stopSearch()));
843
-
844
- reset = new QAction("Reset", this);
845
- reset->setShortcut(QKeySequence("Ctrl+R"));
846
- connect(reset, SIGNAL(triggered()), canvas,
847
- SLOT(reset()));
848
-
849
- navUp = new QAction("Up", this);
850
- navUp->setShortcut(QKeySequence("Up"));
851
- connect(navUp, SIGNAL(triggered()), canvas,
852
- SLOT(navUp()));
853
-
854
- navDown = new QAction("Down", this);
855
- navDown->setShortcut(QKeySequence("Down"));
856
- connect(navDown, SIGNAL(triggered()), canvas,
857
- SLOT(navDown()));
858
-
859
- navLeft = new QAction("Left", this);
860
- navLeft->setShortcut(QKeySequence("Left"));
861
- connect(navLeft, SIGNAL(triggered()), canvas,
862
- SLOT(navLeft()));
863
-
864
- navRight = new QAction("Right", this);
865
- navRight->setShortcut(QKeySequence("Right"));
866
- connect(navRight, SIGNAL(triggered()), canvas,
867
- SLOT(navRight()));
868
-
869
- navRoot = new QAction("Root", this);
870
- navRoot->setShortcut(QKeySequence("R"));
871
- connect(navRoot, SIGNAL(triggered()), canvas,
872
- SLOT(navRoot()));
873
-
874
- searchNext = new QAction("Next solution", this);
875
- searchNext->setShortcut(QKeySequence("N"));
876
- connect(searchNext, SIGNAL(triggered()), canvas, SLOT(searchOne()));
877
-
878
- searchAll = new QAction("All solutions", this);
879
- searchAll->setShortcut(QKeySequence("A"));
880
- connect(searchAll, SIGNAL(triggered()), canvas, SLOT(searchAll()));
881
-
882
- toggleHidden = new QAction("Hide/unhide", this);
883
- toggleHidden->setShortcut(QKeySequence("H"));
884
- connect(toggleHidden, SIGNAL(triggered()), canvas, SLOT(toggleHidden()));
885
-
886
- hideFailed = new QAction("Hide failed subtrees", this);
887
- hideFailed->setShortcut(QKeySequence("F"));
888
- connect(hideFailed, SIGNAL(triggered()), canvas, SLOT(hideFailed()));
889
-
890
- unhideAll = new QAction("Unhide all", this);
891
- unhideAll->setShortcut(QKeySequence("U"));
892
- connect(unhideAll, SIGNAL(triggered()), canvas, SLOT(unhideAll()));
893
-
894
- zoomToFit = new QAction("Zoom to fit", this);
895
- zoomToFit->setShortcut(QKeySequence("Z"));
896
- connect(zoomToFit, SIGNAL(triggered()), canvas, SLOT(zoomToFit()));
897
-
898
- centerCN = new QAction("Center current node", this);
899
- centerCN->setShortcut(QKeySequence("C"));
900
- connect(centerCN, SIGNAL(triggered()), canvas, SLOT(centerCurrentNode()));
901
-
902
- exportPostscript = new QAction("Export postscript...", this);
903
- exportPostscript->setShortcut(QKeySequence("Ctrl+Shift+P"));
904
- connect(exportPostscript, SIGNAL(triggered()), canvas,
905
- SLOT(exportPostscript()));
906
-
907
- print = new QAction("Print...", this);
908
- print->setShortcut(QKeySequence("Ctrl+P"));
909
- connect(print, SIGNAL(triggered()), canvas,
910
- SLOT(print()));
911
-
912
- setPath = new QAction("Set path", this);
913
- setPath->setShortcut(QKeySequence("Shift+P"));
914
- connect(setPath, SIGNAL(triggered()), canvas, SLOT(setPath()));
915
-
916
- inspectPath = new QAction("Inspect path", this);
917
- inspectPath->setShortcut(QKeySequence("Shift+I"));
918
- connect(inspectPath, SIGNAL(triggered()), canvas, SLOT(inspectPath()));
919
-
920
- addVisualisation = new QAction("Add visualisation", this);
921
- addVisualisation->setShortcut(QKeySequence("Shift+V"));
922
- connect(addVisualisation, SIGNAL(triggered()), canvas, SLOT(addVisualisation()));
923
-
924
- toggleHeatView = new QAction("Toggle heat view", this);
925
- toggleHeatView->setShortcut(QKeySequence("Y"));
926
- connect(toggleHeatView, SIGNAL(triggered()), canvas,
927
- SLOT(toggleHeatView()));
928
-
929
- analyzeTree = new QAction("Analyze tree", this);
930
- analyzeTree->setShortcut(QKeySequence("Shift+Y"));
931
- connect(analyzeTree, SIGNAL(triggered()), canvas,
932
- SLOT(analyzeTree()));
933
-
934
- addAction(inspectCN);
935
- addAction(stopCN);
936
- addAction(reset);
937
- addAction(navUp);
938
- addAction(navDown);
939
- addAction(navLeft);
940
- addAction(navRight);
941
- addAction(navRoot);
942
-
943
- addAction(searchNext);
944
- addAction(searchAll);
945
- addAction(toggleHidden);
946
- addAction(hideFailed);
947
- addAction(unhideAll);
948
- addAction(zoomToFit);
949
- addAction(centerCN);
950
- addAction(exportPostscript);
951
- addAction(print);
952
-
953
- addAction(addVisualisation);
954
- addAction(toggleHeatView);
955
- addAction(analyzeTree);
956
-
957
- addAction(setPath);
958
- addAction(inspectPath);
959
-
960
- contextMenu = new QMenu(this);
961
- contextMenu->addAction(inspectCN);
962
- contextMenu->addAction(centerCN);
963
-
964
- contextMenu->addSeparator();
965
-
966
- contextMenu->addAction(searchNext);
967
- contextMenu->addAction(searchAll);
968
-
969
- contextMenu->addSeparator();
970
-
971
- contextMenu->addAction(toggleHidden);
972
- contextMenu->addAction(hideFailed);
973
- contextMenu->addAction(unhideAll);
974
-
975
- contextMenu->addSeparator();
976
-
977
- contextMenu->addAction(setPath);
978
- contextMenu->addAction(inspectPath);
979
-
980
- contextMenu->addSeparator();
981
-
982
- connect(scaleBar, SIGNAL(valueChanged(int)), canvas, SLOT(scaleTree(int)));
983
-
984
- connect(canvas, SIGNAL(scaleChanged(int)), scaleBar, SLOT(setValue(int)));
985
- connect(&canvas->searcher, SIGNAL(scaleChanged(int)),
986
- scaleBar, SLOT(setValue(int)));
987
-
988
- layout->addWidget(scrollArea, 0,0);
989
- layout->addWidget(scaleBar, 0,1);
990
-
991
- setLayout(layout);
992
-
993
- canvas->show();
994
-
995
- resize(500, 400);
996
-
997
- // enables on_<sender>_<signal>() mechanism
998
- QMetaObject::connectSlotsByName(this);
999
- }
1000
-
1001
- void
1002
- TreeCanvas::resizeEvent(QResizeEvent*) {
1003
- canvas->resizeToOuter();
1004
- }
1005
-
1006
- void
1007
- TreeCanvas::setInspector(Inspector* i0) { canvas->setInspector(i0); }
1008
-
1009
- TreeCanvas::~TreeCanvas(void) { delete canvas; }
1010
-
1011
- void
1012
- TreeCanvas::on_canvas_contextMenu(QContextMenuEvent* event) {
1013
- contextMenu->popup(event->globalPos());
1014
- }
1015
-
1016
- void
1017
- TreeCanvas::on_canvas_statusChanged(const Statistics& stats,
1018
- bool finished) {
1019
- if (!finished) {
1020
- inspectCN->setEnabled(false);
1021
- reset->setEnabled(false);
1022
- navUp->setEnabled(false);
1023
- navDown->setEnabled(false);
1024
- navLeft->setEnabled(false);
1025
- navRight->setEnabled(false);
1026
- navRoot->setEnabled(false);
1027
-
1028
- searchNext->setEnabled(false);
1029
- searchAll->setEnabled(false);
1030
- toggleHidden->setEnabled(false);
1031
- hideFailed->setEnabled(false);
1032
- unhideAll->setEnabled(false);
1033
- zoomToFit->setEnabled(false);
1034
- centerCN->setEnabled(false);
1035
- exportPostscript->setEnabled(false);
1036
- print->setEnabled(false);
1037
-
1038
- setPath->setEnabled(false);
1039
- inspectPath->setEnabled(false);
1040
- addVisualisation->setEnabled(false);
1041
-
1042
- toggleHeatView->setEnabled(false);
1043
- analyzeTree->setEnabled(false);
1044
- } else {
1045
- inspectCN->setEnabled(true);
1046
- reset->setEnabled(true);
1047
- navUp->setEnabled(true);
1048
- navLeft->setEnabled(true);
1049
- navRight->setEnabled(true);
1050
- navRoot->setEnabled(true);
1051
-
1052
- zoomToFit->setEnabled(true);
1053
- centerCN->setEnabled(true);
1054
- exportPostscript->setEnabled(true);
1055
- print->setEnabled(true);
1056
-
1057
- setPath->setEnabled(true);
1058
- inspectPath->setEnabled(true);
1059
- addVisualisation->setEnabled(true);
1060
-
1061
- toggleHeatView->setEnabled(true);
1062
- analyzeTree->setEnabled(true);
1063
- }
1064
- emit statusChanged(stats,finished);
1065
- }
1066
-
1067
- void
1068
- TreeCanvas::on_canvas_currentNodeChanged(Gecode::Space*, Gecode::Gist::NodeStatus status) {
1069
- switch (status) {
1070
- case Gecode::Gist::SOLVED:
1071
- case Gecode::Gist::FAILED:
1072
- navDown->setEnabled(false);
1073
-
1074
- searchNext->setEnabled(false);
1075
- searchAll->setEnabled(false);
1076
- toggleHidden->setEnabled(false);
1077
- hideFailed->setEnabled(false);
1078
- unhideAll->setEnabled(false);
1079
-
1080
- break;
1081
- case Gecode::Gist::UNDETERMINED:
1082
- navDown->setEnabled(false);
1083
-
1084
- searchNext->setEnabled(true);
1085
- searchAll->setEnabled(true);
1086
- toggleHidden->setEnabled(false);
1087
- hideFailed->setEnabled(false);
1088
- unhideAll->setEnabled(false);
1089
-
1090
- break;
1091
- case Gecode::Gist::BRANCH:
1092
- case Gecode::Gist::SPECIAL:
1093
- navDown->setEnabled(true);
1094
-
1095
- searchNext->setEnabled(true);
1096
- searchAll->setEnabled(true);
1097
- toggleHidden->setEnabled(true);
1098
- hideFailed->setEnabled(true);
1099
- unhideAll->setEnabled(true);
1100
-
1101
- break;
1102
- case Gecode::Gist::STEP:
1103
- navDown->setEnabled(true);
1104
-
1105
- searchNext->setEnabled(true);
1106
- searchAll->setEnabled(true);
1107
- toggleHidden->setEnabled(true);
1108
- hideFailed->setEnabled(false);
1109
- unhideAll->setEnabled(true);
1110
-
1111
- break;
1112
- }
1113
- }
1114
-
1115
- void
1116
- TreeCanvas::finish(void) {
1117
- canvas->finish();
1118
- }
1119
-
1120
- void
1121
- TreeCanvas::closeEvent(QCloseEvent* event) {
1122
- canvas->finish();
1123
- event->accept();
1124
- }
1125
-
1126
- void
1127
- TreeCanvas::setAutoHideFailed(bool b) { canvas->setAutoHideFailed(b); }
1128
- void
1129
- TreeCanvas::setAutoZoom(bool b) { canvas->setAutoZoom(b); }
1130
- bool
1131
- TreeCanvas::getAutoHideFailed(void) { return canvas->getAutoHideFailed(); }
1132
- bool
1133
- TreeCanvas::getAutoZoom(void) { return canvas->getAutoZoom(); }
1134
- void
1135
- TreeCanvas::setRefresh(int i) { canvas->setRefresh(i); }
1136
-
1137
- }}
1138
-
1139
- // STATISTICS: gist-any
1140
-