dep-selector-libgecode 1.0.0.alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (806) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +20 -0
  7. data/dep-selector-libgecode.gemspec +25 -0
  8. data/ext/libgecode3/Makefile +8 -0
  9. data/ext/libgecode3/extconf.rb +57 -0
  10. data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
  11. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
  12. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
  13. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
  14. data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
  15. data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
  16. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
  17. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
  18. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
  19. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
  20. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
  21. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
  22. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
  23. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
  24. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
  25. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
  26. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
  27. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
  28. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
  29. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
  30. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
  31. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
  32. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
  33. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
  34. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
  35. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
  36. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
  37. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
  38. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
  39. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
  40. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
  41. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
  42. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
  43. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
  44. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
  45. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
  46. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
  47. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
  48. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
  49. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
  50. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
  51. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
  52. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
  53. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
  54. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
  55. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
  56. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
  57. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
  58. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
  59. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
  60. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
  61. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
  62. data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
  63. data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
  64. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
  65. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
  66. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
  67. data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
  68. data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
  69. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
  70. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
  71. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
  72. data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
  73. data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
  74. data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
  75. data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
  76. data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
  77. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
  78. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
  79. data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
  80. data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
  81. data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
  82. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
  83. data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
  84. data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
  85. data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
  86. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
  87. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
  88. data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
  89. data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
  90. data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
  91. data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
  92. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
  93. data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
  94. data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
  95. data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
  96. data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
  97. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
  98. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
  99. data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
  100. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
  101. data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
  102. data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
  103. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
  104. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
  105. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
  106. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
  107. data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
  108. data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
  109. data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
  110. data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
  111. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
  112. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
  113. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
  114. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
  115. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
  116. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
  117. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
  118. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
  119. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
  120. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
  121. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
  122. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
  123. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
  124. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
  125. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
  126. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
  127. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
  128. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
  129. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
  130. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
  131. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
  132. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
  133. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
  134. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
  135. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
  136. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
  137. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
  138. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
  139. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
  140. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
  141. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
  142. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
  143. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
  144. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
  145. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
  146. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
  147. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
  148. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
  149. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
  150. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
  151. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
  152. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
  153. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
  154. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
  155. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
  156. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
  157. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
  158. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
  159. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
  160. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
  161. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
  162. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
  163. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
  164. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
  165. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
  166. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
  167. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
  168. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
  169. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
  170. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
  171. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
  172. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
  173. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
  174. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
  175. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
  176. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
  177. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
  178. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
  179. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
  180. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
  181. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
  182. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
  183. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
  184. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
  185. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
  186. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
  187. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
  188. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
  189. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
  190. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
  191. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
  192. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
  193. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
  194. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
  195. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
  196. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
  197. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
  198. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
  199. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
  200. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
  201. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
  202. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
  203. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
  204. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
  205. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
  206. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
  207. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
  208. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
  209. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
  210. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
  211. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
  212. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
  213. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
  214. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
  215. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
  216. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
  217. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
  218. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
  219. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
  220. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
  221. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
  222. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
  223. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
  224. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
  225. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
  226. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
  227. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
  228. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
  229. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
  230. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
  231. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
  232. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
  233. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
  234. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
  235. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
  236. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
  237. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
  238. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
  239. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
  240. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
  241. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
  242. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
  243. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
  244. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
  245. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
  246. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
  247. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
  248. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
  249. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
  250. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
  251. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
  252. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
  253. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
  254. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
  255. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
  256. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
  257. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
  258. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
  259. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
  260. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
  261. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
  262. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
  263. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
  264. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
  265. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
  266. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
  267. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
  268. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
  269. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
  270. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
  271. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
  272. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
  273. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
  274. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
  275. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
  276. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
  277. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
  278. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
  279. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
  280. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
  281. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
  282. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
  283. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
  284. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
  285. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
  286. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
  287. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
  288. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
  289. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
  290. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
  291. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
  292. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
  293. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
  294. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
  295. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
  296. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
  297. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
  298. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
  299. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
  300. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
  301. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
  302. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
  303. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
  304. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
  305. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
  306. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
  307. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
  308. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
  309. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
  310. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
  311. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
  312. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
  313. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
  314. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
  315. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
  316. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
  317. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
  318. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
  319. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
  320. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
  321. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
  322. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
  323. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
  324. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
  325. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
  326. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
  327. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
  328. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
  329. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
  330. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
  331. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
  332. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
  333. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
  334. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
  335. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
  336. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
  337. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
  338. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
  339. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
  340. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
  341. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
  342. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
  343. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
  344. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
  345. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
  346. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
  347. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
  348. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
  349. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
  350. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
  351. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
  352. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
  353. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
  354. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
  355. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
  356. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
  357. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
  358. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
  359. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
  360. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
  361. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
  362. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
  363. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
  364. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
  365. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
  366. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
  367. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
  368. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
  369. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
  370. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
  371. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
  372. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
  373. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
  374. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
  375. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
  376. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
  377. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
  378. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
  379. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
  380. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
  381. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
  382. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
  383. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
  384. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
  385. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
  386. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
  387. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
  388. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
  389. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
  390. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
  391. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
  392. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
  393. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
  394. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
  395. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
  396. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
  397. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
  398. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
  399. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
  400. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
  401. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
  402. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
  403. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
  404. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
  405. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
  406. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
  407. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
  408. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
  409. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
  410. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
  411. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
  412. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
  413. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
  414. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
  415. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
  416. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
  417. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
  418. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
  419. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
  420. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
  421. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
  422. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
  423. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
  424. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
  425. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
  426. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
  427. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
  428. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
  429. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
  430. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
  431. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
  432. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
  433. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
  434. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
  435. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
  436. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
  437. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
  438. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
  439. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
  440. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
  441. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
  442. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
  443. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
  444. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
  445. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
  446. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
  447. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
  448. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
  449. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
  450. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
  451. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
  452. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
  453. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
  454. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
  455. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
  456. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
  457. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
  458. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
  459. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
  460. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
  461. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
  462. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
  463. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
  464. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
  465. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
  466. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
  467. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
  468. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
  469. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
  470. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
  471. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
  472. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
  473. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
  474. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
  475. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
  476. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
  477. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
  478. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
  479. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
  480. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
  481. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
  482. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
  483. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
  484. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
  485. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
  486. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
  487. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
  488. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
  489. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
  490. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
  491. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
  492. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
  493. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
  494. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
  495. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
  496. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
  497. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
  498. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
  499. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
  500. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
  501. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
  502. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
  503. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
  504. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
  505. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
  506. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
  507. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
  508. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
  509. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
  510. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
  511. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
  512. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
  513. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
  514. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
  515. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
  516. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
  517. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
  518. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
  519. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
  520. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
  521. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
  522. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
  523. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
  524. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
  525. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
  526. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
  527. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
  528. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
  529. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
  530. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
  531. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
  532. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
  533. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
  534. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
  535. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
  536. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
  537. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
  538. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
  539. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
  540. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
  541. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
  542. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
  543. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
  544. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
  545. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
  546. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
  547. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
  548. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
  549. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
  550. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
  551. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
  552. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
  553. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
  554. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
  555. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
  556. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
  557. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
  558. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
  559. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
  560. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
  561. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
  562. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
  563. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
  564. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
  565. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
  566. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
  567. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
  568. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
  569. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
  570. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
  571. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
  572. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
  573. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
  574. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
  575. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
  576. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
  577. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
  578. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
  579. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
  580. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
  581. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
  582. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
  583. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
  584. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
  585. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
  586. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
  587. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
  588. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
  589. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
  590. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
  591. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
  592. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
  593. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
  594. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
  595. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
  596. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
  597. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
  598. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
  599. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
  600. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
  601. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
  602. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
  603. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
  604. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
  605. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
  606. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
  607. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
  608. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
  609. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
  610. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
  611. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
  612. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
  613. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
  614. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
  615. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
  616. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
  617. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
  618. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
  619. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
  620. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
  621. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
  622. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
  623. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
  624. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
  625. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
  626. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
  627. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
  628. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
  629. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
  630. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
  631. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
  632. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
  633. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
  634. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
  635. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
  636. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
  637. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
  638. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
  639. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
  640. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
  641. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
  642. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
  643. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
  644. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
  645. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
  646. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
  647. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
  648. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
  649. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
  650. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
  651. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
  652. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
  653. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
  654. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
  655. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
  656. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
  657. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
  658. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
  659. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
  660. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
  661. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
  662. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
  663. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
  664. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
  665. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
  666. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
  667. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
  668. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
  669. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
  670. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
  671. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
  672. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
  673. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
  674. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
  675. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
  676. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
  677. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
  678. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
  679. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
  680. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
  681. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
  682. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
  683. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
  684. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
  685. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
  686. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
  687. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
  688. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
  689. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
  690. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
  691. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
  692. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
  693. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
  694. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
  695. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
  696. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
  697. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
  698. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
  699. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
  700. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
  701. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
  702. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
  703. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
  704. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
  705. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
  706. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
  707. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
  708. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
  709. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
  710. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
  711. data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
  712. data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
  713. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
  714. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
  715. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
  716. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
  717. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
  718. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
  719. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
  720. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
  721. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
  722. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
  723. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
  724. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
  725. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
  726. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
  727. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
  728. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
  729. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
  730. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
  731. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
  732. data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
  733. data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
  734. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
  735. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
  736. data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
  737. data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
  738. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
  739. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
  740. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
  741. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
  742. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
  743. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
  744. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
  745. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
  746. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
  747. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
  748. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
  749. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
  750. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
  751. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
  752. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
  753. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
  754. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
  755. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
  756. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
  757. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
  758. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
  759. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
  760. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
  761. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
  762. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
  763. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
  764. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
  765. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
  766. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
  767. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
  768. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
  769. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
  770. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
  771. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
  772. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
  773. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
  774. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
  775. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
  776. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
  777. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
  778. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
  779. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
  780. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
  781. data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
  782. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
  783. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
  784. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
  785. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
  786. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
  787. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
  788. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
  789. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
  790. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
  791. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
  792. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
  793. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
  794. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
  795. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
  796. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
  797. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
  798. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
  799. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
  800. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
  801. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
  802. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
  803. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
  804. data/lib/dep-selector-libgecode.rb +15 -0
  805. data/lib/dep-selector-libgecode/version.rb +3 -0
  806. metadata +878 -0
@@ -0,0 +1,202 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2004
8
+ *
9
+ * Last modified:
10
+ * $Date: 2009-08-26 23:58:07 +1000 (Wed, 26 Aug 2009) $ by $Author: schulte $
11
+ * $Revision: 9628 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ #ifndef __GECODE_SEARCH_WORKER_HH__
39
+ #define __GECODE_SEARCH_WORKER_HH__
40
+
41
+ #include <gecode/search.hh>
42
+
43
+ namespace Gecode { namespace Search {
44
+
45
+ /**
46
+ * \brief %Search worker control including memory information
47
+ */
48
+ class Worker : public Statistics {
49
+ protected:
50
+ /// Whether engine has been stopped
51
+ bool _stopped;
52
+ /// Memory required for a single space
53
+ size_t mem_space;
54
+ /// Memory for the current space (including memory for caching)
55
+ size_t mem_cur;
56
+ /// Current total memory
57
+ size_t mem_total;
58
+ /// Depth of root node (for work stealing)
59
+ unsigned long int root_depth;
60
+ public:
61
+ /// Initialize with space size \a sz
62
+ Worker(size_t sz);
63
+ /// Reset stop information
64
+ void start(void);
65
+ /// Check whether engine must be stopped (with additional stackspace \a sz)
66
+ bool stop(const Options& o, size_t sz);
67
+ /// Check whether engine has been stopped
68
+ bool stopped(void) const;
69
+ /// New space \a s and choice \a c get pushed on stack
70
+ void push(const Space* s, const Choice* c);
71
+ /// Space \a s1 is replaced by space \a s2 due to constraining
72
+ void constrained(const Space* s1, const Space* s2);
73
+ /// New space \a s is added for adaptive recomputation
74
+ void adapt(const Space* s);
75
+ /// Space \a s and choice \a c get popped from stack
76
+ void pop(const Space* s, const Choice* c);
77
+ /// Space \a s gets used for LAO (removed from stack)
78
+ void lao(const Space* s);
79
+ /// Space \a s becomes current space (\a s = NULL: current space deleted)
80
+ void current(const Space* s);
81
+ /// Reset statistics for space \a s with root depth \a d
82
+ void reset(const Space* s, unsigned long int d=0);
83
+ /// Reset statistics for failed space
84
+ void reset(void);
85
+ /// Record stack depth \a d
86
+ void stack_depth(unsigned long int d);
87
+ /// Return steal depth
88
+ unsigned long int steal_depth(unsigned long int d) const;
89
+ };
90
+
91
+
92
+
93
+ forceinline
94
+ Worker::Worker(size_t sz)
95
+ : _stopped(false), mem_space(sz), mem_cur(0), mem_total(0),
96
+ root_depth(0) {
97
+ memory = 0;
98
+ }
99
+
100
+ forceinline void
101
+ Worker::start(void) {
102
+ _stopped = false;
103
+ }
104
+
105
+ forceinline bool
106
+ Worker::stop(const Options& o, size_t sz) {
107
+ if (o.stop == NULL)
108
+ return false;
109
+ memory += sz;
110
+ _stopped |= o.stop->stop(*this,o);
111
+ memory -= sz;
112
+ return _stopped;
113
+ }
114
+
115
+ forceinline bool
116
+ Worker::stopped(void) const {
117
+ return _stopped;
118
+ }
119
+
120
+ forceinline void
121
+ Worker::push(const Space* s, const Choice* c) {
122
+ if (s != NULL)
123
+ mem_total += mem_space + s->allocated();
124
+ mem_total += c->size();
125
+ if (mem_total > memory)
126
+ memory = mem_total;
127
+ }
128
+
129
+ forceinline void
130
+ Worker::adapt(const Space* s) {
131
+ mem_total += mem_space + s->allocated();
132
+ if (mem_total > memory)
133
+ memory = mem_total;
134
+ }
135
+
136
+ forceinline void
137
+ Worker::constrained(const Space* s1, const Space* s2) {
138
+ mem_total -= s1->allocated();
139
+ mem_total += s2->allocated();
140
+ if (mem_total > memory)
141
+ memory = mem_total;
142
+ }
143
+
144
+ forceinline void
145
+ Worker::lao(const Space* s) {
146
+ mem_total -= mem_space + s->allocated();
147
+ }
148
+
149
+ forceinline void
150
+ Worker::pop(const Space* s, const Choice* c) {
151
+ if (s != NULL)
152
+ mem_total -= mem_space + s->allocated();
153
+ mem_total -= c->size();
154
+ }
155
+
156
+ forceinline void
157
+ Worker::current(const Space* s) {
158
+ if (s == NULL) {
159
+ mem_total -= mem_cur;
160
+ mem_cur = 0;
161
+ } else {
162
+ mem_cur = mem_space + s->allocated();
163
+ mem_total += mem_cur;
164
+ if (mem_total > memory)
165
+ memory = mem_total;
166
+ }
167
+ }
168
+
169
+ forceinline void
170
+ Worker::reset(const Space* s, unsigned long int d) {
171
+ mem_cur = mem_space + s->allocated();
172
+ mem_total = mem_cur;
173
+ if (mem_total > memory)
174
+ memory = mem_total;
175
+ root_depth = d;
176
+ if (depth < d)
177
+ depth = d;
178
+ }
179
+
180
+ forceinline void
181
+ Worker::reset(void) {
182
+ mem_cur = 0;
183
+ mem_total = 0;
184
+ root_depth = 0;
185
+ }
186
+
187
+ forceinline void
188
+ Worker::stack_depth(unsigned long int d) {
189
+ if (depth < root_depth + d)
190
+ depth = root_depth + d;
191
+ }
192
+
193
+ forceinline unsigned long int
194
+ Worker::steal_depth(unsigned long int d) const {
195
+ return root_depth + d;
196
+ }
197
+
198
+ }}
199
+
200
+ #endif
201
+
202
+ // STATISTICS: search-other
@@ -0,0 +1,1144 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Guido Tack <tack@gecode.org>
5
+ * Christian Schulte <schulte@gecode.org>
6
+ *
7
+ * Contributing authors:
8
+ * Gabor Szokoli <szokoli@gecode.org>
9
+ *
10
+ * Copyright:
11
+ * Guido Tack, 2004
12
+ * Christian Schulte, 2004
13
+ * Gabor Szokoli, 2004
14
+ *
15
+ * Last modified:
16
+ * $Date: 2011-08-25 00:34:16 +1000 (Thu, 25 Aug 2011) $ by $Author: tack $
17
+ * $Revision: 12346 $
18
+ *
19
+ * This file is part of Gecode, the generic constraint
20
+ * development environment:
21
+ * http://www.gecode.org
22
+ *
23
+ * Permission is hereby granted, free of charge, to any person obtaining
24
+ * a copy of this software and associated documentation files (the
25
+ * "Software"), to deal in the Software without restriction, including
26
+ * without limitation the rights to use, copy, modify, merge, publish,
27
+ * distribute, sublicense, and/or sell copies of the Software, and to
28
+ * permit persons to whom the Software is furnished to do so, subject to
29
+ * the following conditions:
30
+ *
31
+ * The above copyright notice and this permission notice shall be
32
+ * included in all copies or substantial portions of the Software.
33
+ *
34
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
36
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
38
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
39
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
40
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
41
+ *
42
+ */
43
+
44
+ #ifndef __GECODE_SET_HH__
45
+ #define __GECODE_SET_HH__
46
+
47
+ #include <gecode/kernel.hh>
48
+ #include <gecode/int.hh>
49
+ #include <gecode/iter.hh>
50
+
51
+ /*
52
+ * Configure linking
53
+ *
54
+ */
55
+ #if !defined(GECODE_STATIC_LIBS) && \
56
+ (defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
57
+
58
+ #ifdef GECODE_BUILD_SET
59
+ #define GECODE_SET_EXPORT __declspec( dllexport )
60
+ #else
61
+ #define GECODE_SET_EXPORT __declspec( dllimport )
62
+ #endif
63
+
64
+ #else
65
+
66
+ #ifdef GECODE_GCC_HAS_CLASS_VISIBILITY
67
+ #define GECODE_SET_EXPORT __attribute__ ((visibility("default")))
68
+ #else
69
+ #define GECODE_SET_EXPORT
70
+ #endif
71
+
72
+ #endif
73
+
74
+ // Configure auto-linking
75
+ #ifndef GECODE_BUILD_SET
76
+ #define GECODE_LIBRARY_NAME "Set"
77
+ #include <gecode/support/auto-link.hpp>
78
+ #endif
79
+
80
+
81
+ /**
82
+ * \namespace Gecode::Set
83
+ * \brief Finite integer sets
84
+ *
85
+ * The Gecode::Set namespace contains all functionality required
86
+ * to program propagators and branchers for finite integer sets.
87
+ * In addition, all propagators and branchers for finite integer
88
+ * sets provided by %Gecode are contained as nested namespaces.
89
+ *
90
+ */
91
+
92
+ #include <gecode/set/exception.hpp>
93
+
94
+ namespace Gecode { namespace Set {
95
+
96
+ /// Numerical limits for set variables
97
+ namespace Limits {
98
+ /// Largest allowed integer in integer set
99
+ const int max = (Gecode::Int::Limits::max / 2) - 1;
100
+ /// Smallest allowed integer in integer set
101
+ const int min = -max;
102
+ /// Maximum cardinality of an integer set
103
+ const unsigned int card = max-min+1;
104
+ /// Check whether integer \a n is in range, otherwise throw overflow exception with information \a l
105
+ void check(int n, const char* l);
106
+ /// Check whether unsigned int \a n is in range for cardinality, otherwise throw overflow exception with information \a l
107
+ void check(unsigned int n, const char* l);
108
+ /// Check whether minimum and maximum of IntSet \a s is in range, otherwise throw overflow exception with information \a l
109
+ void check(const IntSet& s, const char* l);
110
+ }
111
+
112
+ }}
113
+
114
+ #include <gecode/set/limits.hpp>
115
+
116
+ #include <gecode/set/var-imp.hpp>
117
+
118
+ namespace Gecode {
119
+
120
+ namespace Set {
121
+ class SetView;
122
+ }
123
+
124
+ /**
125
+ * \brief %Set variables
126
+ *
127
+ * \ingroup TaskModelSetVars
128
+ */
129
+ class SetVar : public VarImpVar<Set::SetVarImp> {
130
+ friend class SetVarArray;
131
+ friend class SetVarArgs;
132
+ using VarImpVar<Set::SetVarImp>::x;
133
+ public:
134
+ /// \name Constructors and initialization
135
+ //@{
136
+ /// Default constructor
137
+ SetVar(void);
138
+ /// Initialize from set variable \a y
139
+ SetVar(const SetVar& y);
140
+ /// Initialize from set view \a y
141
+ SetVar(const Set::SetView& y);
142
+
143
+ /// Initialize variable with empty greatest lower and full least upper bound
144
+ GECODE_SET_EXPORT SetVar(Space& home);
145
+
146
+ /**
147
+ * \brief Initialize variable with given bounds and cardinality
148
+ *
149
+ * The variable is created with
150
+ * greatest lower bound \f$\{\mathit{glbMin},\dots,\mathit{glbMax}\}\f$,
151
+ * least upper bound \f$\{\mathit{lubMin},\dots,\mathit{lubMax}\}\f$, and
152
+ * cardinality minimum \a cardMin and maximum \a cardMax.
153
+ * The following exceptions might be thrown:
154
+ * - If the bounds are no legal set bounds (between Set::Limits::min
155
+ * and Set::Limits::max), an exception of type
156
+ * Gecode::Set::OutOfLimits is thrown.
157
+ * - If the cardinality is greater than Set::Limits::max_set_size, an
158
+ * exception of type Gecode::Set::OutOfLimits is
159
+ * thrown.
160
+ * - If \a cardMin > \a cardMax, an exception of type
161
+ * Gecode::Set::VariableEmptyDomain is thrown.
162
+ */
163
+ GECODE_SET_EXPORT
164
+ SetVar(Space& home,int glbMin,int glbMax,int lubMin,int lubMax,
165
+ unsigned int cardMin = 0,
166
+ unsigned int cardMax = Set::Limits::card);
167
+
168
+ /**
169
+ * \brief Initialize variable with given bounds and cardinality
170
+ *
171
+ * The variable is created with greatest lower bound \a glbD,
172
+ * least upper bound \f$\{\mathit{lubMin},\dots,\mathit{lubMax}\}\f$, and
173
+ * cardinality minimum \a cardMin and maximum \a cardMax.
174
+ * The following exceptions might be thrown:
175
+ * - If the bounds are no legal set bounds (between Set::Limits::min
176
+ * and Set::Limits::max), an exception of type
177
+ * Gecode::Set::OutOfLimits is thrown.
178
+ * - If the cardinality is greater than Set::Limits::max_set_size, an
179
+ * exception of type Gecode::Set::OutOfLimits is
180
+ * thrown.
181
+ * - If \a cardMin > \a cardMax, an exception of type
182
+ * Gecode::Set::VariableEmptyDomain is thrown.
183
+ */
184
+ GECODE_SET_EXPORT
185
+ SetVar(Space& home,const IntSet& glbD,int lubMin,int lubMax,
186
+ unsigned int cardMin = 0,
187
+ unsigned int cardMax = Set::Limits::card);
188
+
189
+ /**
190
+ * \brief Initialize variable with given bounds and cardinality
191
+ *
192
+ * The variable is created with
193
+ * greatest lower bound \f$\{\mathit{glbMin},\dots,\mathit{glbMax}\}\f$,
194
+ * least upper bound \a lubD, and
195
+ * cardinality minimum \a cardMin and maximum \a cardMax.
196
+ * The following exceptions might be thrown:
197
+ * - If the bounds are no legal set bounds (between Set::Limits::min
198
+ * and Set::Limits::max), an exception of type
199
+ * Gecode::Set::OutOfLimits is thrown.
200
+ * - If the cardinality is greater than Set::Limits::max_set_size, an
201
+ * exception of type Gecode::Set::OutOfLimits is
202
+ * thrown.
203
+ * - If \a minCard > \a maxCard, an exception of type
204
+ * Gecode::Set::VariableEmptyDomain is thrown.
205
+ */
206
+ GECODE_SET_EXPORT
207
+ SetVar(Space& home,int glbMin,int glbMax,const IntSet& lubD,
208
+ unsigned int cardMin = 0,
209
+ unsigned int cardMax = Set::Limits::card);
210
+
211
+ /**
212
+ * \brief Initialize variable with given bounds and cardinality
213
+ *
214
+ * The variable is created with
215
+ * greatest lower bound \a glbD,
216
+ * least upper bound \a lubD, and
217
+ * cardinality minimum \a cardMin and maximum \a cardMax.
218
+ * The following exceptions might be thrown:
219
+ * - If the bounds are no legal set bounds (between Set::Limits::min
220
+ * and Set::Limits::max), an exception of type
221
+ * Gecode::Set::OutOfLimits is thrown.
222
+ * - If the cardinality is greater than Set::Limits::max_set_size, an
223
+ * exception of type Gecode::Set::OutOfLimits is
224
+ * thrown.
225
+ * - If \a minCard > \a maxCard, an exception of type
226
+ * Gecode::Set::VariableEmptyDomain is thrown.
227
+ */
228
+ GECODE_SET_EXPORT
229
+ SetVar(Space& home,const IntSet& glbD,const IntSet& lubD,
230
+ unsigned int cardMin = 0,
231
+ unsigned int cardMax = Set::Limits::card);
232
+ //@}
233
+
234
+ /// \name Value access
235
+ //@{
236
+ /// Return number of elements in the greatest lower bound
237
+ unsigned int glbSize(void) const;
238
+ /// Return number of elements in the least upper bound
239
+ unsigned int lubSize(void) const;
240
+ /// Return number of unknown elements (elements in lub but not in glb)
241
+ unsigned int unknownSize(void) const;
242
+ /// Return cardinality minimum
243
+ unsigned int cardMin(void) const;
244
+ /// Return cardinality maximum
245
+ unsigned int cardMax(void) const;
246
+ /// Return minimum element of least upper bound
247
+ int lubMin(void) const;
248
+ /// Return maximum element of least upper bound
249
+ int lubMax(void) const;
250
+ /// Return minimum element of greatest lower bound
251
+ int glbMin(void) const;
252
+ /// Return maximum of greatest lower bound
253
+ int glbMax(void) const;
254
+ //@}
255
+
256
+ /// \name Domain tests
257
+ //@{
258
+ /// Test whether \a i is in greatest lower bound
259
+ bool contains(int i) const;
260
+ /// Test whether \a i is not in the least upper bound
261
+ bool notContains(int i) const;
262
+ //@}
263
+ };
264
+
265
+ /**
266
+ * \defgroup TaskModelSetIter Range and value iterators for set variables
267
+ * \ingroup TaskModelSet
268
+ */
269
+ //@{
270
+
271
+ /// Iterator for the greatest lower bound ranges of a set variable
272
+ class SetVarGlbRanges {
273
+ private:
274
+ Set::GlbRanges<Set::SetVarImp*> iter;
275
+ public:
276
+ /// \name Constructors and initialization
277
+ //@{
278
+ /// Default constructor
279
+ SetVarGlbRanges(void);
280
+ /// Initialize to iterate ranges of variable \a x
281
+ SetVarGlbRanges(const SetVar& x);
282
+ //@}
283
+
284
+ /// \name Iteration control
285
+ //@{
286
+ /// Test whether iterator is still at a range or done
287
+ bool operator ()(void) const;
288
+ /// Move iterator to next range (if possible)
289
+ void operator ++(void);
290
+ //@}
291
+
292
+ /// \name Range access
293
+ //@{
294
+ /// Return smallest value of range
295
+ int min(void) const;
296
+ /// Return largest value of range
297
+ int max(void) const;
298
+ /// Return width of range (distance between minimum and maximum)
299
+ unsigned int width(void) const;
300
+ //@}
301
+ };
302
+
303
+ /// Iterator for the least upper bound ranges of a set variable
304
+ class SetVarLubRanges {
305
+ private:
306
+ Set::LubRanges<Set::SetVarImp*> iter;
307
+ public:
308
+ /// \name Constructors and initialization
309
+ //@{
310
+ /// Default constructor
311
+ SetVarLubRanges(void);
312
+ /// Initialize to iterate ranges of variable \a x
313
+ SetVarLubRanges(const SetVar& x);
314
+ //@}
315
+
316
+ /// \name Iteration control
317
+ //@{
318
+ /// Test whether iterator is still at a range or done
319
+ bool operator ()(void) const;
320
+ /// Move iterator to next range (if possible)
321
+ void operator ++(void);
322
+ //@}
323
+
324
+ /// \name Range access
325
+ //@{
326
+ /// Return smallest value of range
327
+ int min(void) const;
328
+ /// Return largest value of range
329
+ int max(void) const;
330
+ /// Return width of range (distance between minimum and maximum)
331
+ unsigned int width(void) const;
332
+ //@}
333
+ };
334
+
335
+ /// Iterator for the unknown ranges of a set variable
336
+ class SetVarUnknownRanges {
337
+ private:
338
+ Set::UnknownRanges<Set::SetVarImp*> iter;
339
+ public:
340
+ /// \name Constructors and initialization
341
+ //@{
342
+ /// Default constructor
343
+ SetVarUnknownRanges(void);
344
+ /// Initialize to iterate ranges of variable \a x
345
+ SetVarUnknownRanges(const SetVar& x);
346
+ //@}
347
+
348
+ /// \name Iteration control
349
+ //@{
350
+ /// Test whether iterator is still at a range or done
351
+ bool operator ()(void) const;
352
+ /// Move iterator to next range (if possible)
353
+ void operator ++(void);
354
+ //@}
355
+
356
+ /// \name Range access
357
+ //@{
358
+ /// Return smallest value of range
359
+ int min(void) const;
360
+ /// Return largest value of range
361
+ int max(void) const;
362
+ /// Return width of range (distance between minimum and maximum)
363
+ unsigned int width(void) const;
364
+ //@}
365
+ };
366
+
367
+ /// Iterator for the values in the greatest lower bound of a set variable
368
+ class SetVarGlbValues {
369
+ private:
370
+ Iter::Ranges::ToValues<SetVarGlbRanges> iter;
371
+ public:
372
+ /// \name Constructors and initialization
373
+ //@{
374
+ /// Default constructor
375
+ SetVarGlbValues(void);
376
+ /// Initialize to iterate values of variable \a x
377
+ SetVarGlbValues(const SetVar& x);
378
+ //@}
379
+
380
+ /// \name Iteration control
381
+ //@{
382
+ /// Test whether iterator is still at a value or done
383
+ bool operator ()(void) const;
384
+ /// Move iterator to next value (if possible)
385
+ void operator ++(void);
386
+ //@}
387
+
388
+ /// \name Value access
389
+ //@{
390
+ /// Return current value
391
+ int val(void) const;
392
+ //@}
393
+ };
394
+
395
+ /// Iterator for the values in the least upper bound of a set variable
396
+ class SetVarLubValues {
397
+ private:
398
+ Iter::Ranges::ToValues<SetVarLubRanges> iter;
399
+ public:
400
+ /// \name Constructors and initialization
401
+ //@{
402
+ /// Default constructor
403
+ SetVarLubValues(void);
404
+ /// Initialize to iterate values of variable \a x
405
+ SetVarLubValues(const SetVar& x);
406
+ //@}
407
+
408
+ /// \name Iteration control
409
+ //@{
410
+ /// Test whether iterator is still at a value or done
411
+ bool operator ()(void) const;
412
+ /// Move iterator to next value (if possible)
413
+ void operator ++(void);
414
+ //@}
415
+
416
+ /// \name Value access
417
+ //@{
418
+ /// Return current value
419
+ int val(void) const;
420
+ //@}
421
+ };
422
+
423
+ /// Iterator for the values in the unknown set of a set variable
424
+ class SetVarUnknownValues {
425
+ private:
426
+ Iter::Ranges::ToValues<SetVarUnknownRanges> iter;
427
+ public:
428
+ /// \name Constructors and initialization
429
+ //@{
430
+ /// Default constructor
431
+ SetVarUnknownValues(void);
432
+ /// Initialize to iterate values of variable \a x
433
+ SetVarUnknownValues(const SetVar& x);
434
+ //@}
435
+
436
+ /// \name Iteration control
437
+ //@{
438
+ /// Test whether iterator is still at a value or done
439
+ bool operator ()(void) const;
440
+ /// Move iterator to next value (if possible)
441
+ void operator ++(void);
442
+ //@}
443
+
444
+ /// \name Value access
445
+ //@{
446
+ /// Return current value
447
+ int val(void) const;
448
+ //@}
449
+ };
450
+
451
+ //@}
452
+
453
+ /**
454
+ * \brief Print set variable \a x
455
+ * \relates Gecode::SetVar
456
+ */
457
+ template<class Char, class Traits>
458
+ std::basic_ostream<Char,Traits>&
459
+ operator <<(std::basic_ostream<Char,Traits>& os, const SetVar& x);
460
+
461
+ }
462
+
463
+ #include <gecode/set/view.hpp>
464
+
465
+ namespace Gecode {
466
+ /**
467
+ * \defgroup TaskModelSetArgs Argument arrays
468
+ *
469
+ * Argument arrays are just good enough for passing arguments
470
+ * with automatic memory management.
471
+ * \ingroup TaskModelSet
472
+ */
473
+
474
+ //@{
475
+
476
+ }
477
+
478
+ #include <gecode/set/array-traits.hpp>
479
+
480
+ namespace Gecode {
481
+
482
+ /** \brief Passing set variables
483
+ *
484
+ * We could have used a simple typedef instead, but doxygen cannot
485
+ * resolve some overloading then, leading to unusable documentation for
486
+ * important parts of the library. As long as there is no fix for this,
487
+ * we will keep this workaround.
488
+ *
489
+ */
490
+ class SetVarArgs : public VarArgArray<SetVar> {
491
+ public:
492
+ /// \name Constructors and initialization
493
+ //@{
494
+ /// Allocate empty array
495
+ SetVarArgs(void) {}
496
+ /// Allocate array with \a n elements
497
+ explicit SetVarArgs(int n) : VarArgArray<SetVar>(n) {}
498
+ /// Initialize from variable argument array \a a (copy elements)
499
+ SetVarArgs(const SetVarArgs& a) : VarArgArray<SetVar>(a) {}
500
+ /// Initialize from variable array \a a (copy elements)
501
+ SetVarArgs(const VarArray<SetVar>& a) : VarArgArray<SetVar>(a) {}
502
+ /**
503
+ * \brief Create an array of size \a n.
504
+ *
505
+ * Each variable is initialized with the bounds and cardinality as
506
+ * given by the arguments.
507
+ */
508
+ GECODE_SET_EXPORT
509
+ SetVarArgs(Space& home,int n,int glbMin,int glbMax,
510
+ int lubMin,int lubMax,
511
+ unsigned int minCard = 0,
512
+ unsigned int maxCard = Set::Limits::card);
513
+ /**
514
+ * \brief Create an array of size \a n.
515
+ *
516
+ * Each variable is initialized with the bounds and cardinality as
517
+ * given by the arguments.
518
+ */
519
+ GECODE_SET_EXPORT
520
+ SetVarArgs(Space& home,int n,const IntSet& glb,
521
+ int lubMin, int lubMax,
522
+ unsigned int minCard = 0,
523
+ unsigned int maxCard = Set::Limits::card);
524
+ /**
525
+ * \brief Create an array of size \a n.
526
+ *
527
+ * Each variable is initialized with the bounds and cardinality as
528
+ * given by the arguments.
529
+ */
530
+ GECODE_SET_EXPORT
531
+ SetVarArgs(Space& home,int n,int glbMin,int glbMax,
532
+ const IntSet& lub,
533
+ unsigned int minCard = 0,
534
+ unsigned int maxCard = Set::Limits::card);
535
+ /**
536
+ * \brief Create an array of size \a n.
537
+ *
538
+ * Each variable is initialized with the bounds and cardinality as
539
+ * given by the arguments.
540
+ */
541
+ GECODE_SET_EXPORT
542
+ SetVarArgs(Space& home,int n,
543
+ const IntSet& glb,const IntSet& lub,
544
+ unsigned int minCard = 0,
545
+ unsigned int maxCard = Set::Limits::card);
546
+ //@}
547
+ };
548
+ //@}
549
+
550
+ /**
551
+ * \defgroup TaskModelSetVarArrays Variable arrays
552
+ *
553
+ * Variable arrays can store variables. They are typically used
554
+ * for storing the variables being part of a solution. However,
555
+ * they can also be used for temporary purposes (even though
556
+ * memory is not reclaimed until the space it is created for
557
+ * is deleted).
558
+ * \ingroup TaskModelSet
559
+ */
560
+
561
+ /**
562
+ * \brief %Set variable array
563
+ * \ingroup TaskModelSetVarArrays
564
+ */
565
+ class SetVarArray : public VarArray<SetVar> {
566
+ public:
567
+ /// \name Creation and initialization
568
+ //@{
569
+ /// Default constructor (array of size 0)
570
+ SetVarArray(void);
571
+ /// Initialize from set variable array \a a (share elements)
572
+ SetVarArray(const SetVarArray&);
573
+ /// Initialize from set variable argument array \a a (copy elements)
574
+ SetVarArray(Space& home, const SetVarArgs&);
575
+ /// Allocate array for \a n set variables (variables are uninitialized)
576
+ GECODE_SET_EXPORT SetVarArray(Space& home, int n);
577
+ /**
578
+ * \brief Create an array of size \a n.
579
+ *
580
+ * Each variable is initialized with the bounds and cardinality as
581
+ * given by the arguments.
582
+ */
583
+ GECODE_SET_EXPORT
584
+ SetVarArray(Space& home,int n,int glbMin,int glbMax,int lubMin,int lubMax,
585
+ unsigned int minCard = 0,
586
+ unsigned int maxCard = Set::Limits::card);
587
+ /**
588
+ * \brief Create an array of size \a n.
589
+ *
590
+ * Each variable is initialized with the bounds and cardinality as
591
+ * given by the arguments.
592
+ */
593
+ GECODE_SET_EXPORT
594
+ SetVarArray(Space& home,int n,const IntSet& glb, int lubMin, int lubMax,
595
+ unsigned int minCard = 0,
596
+ unsigned int maxCard = Set::Limits::card);
597
+ /**
598
+ * \brief Create an array of size \a n.
599
+ *
600
+ * Each variable is initialized with the bounds and cardinality as
601
+ * given by the arguments.
602
+ */
603
+ GECODE_SET_EXPORT
604
+ SetVarArray(Space& home,int n,int glbMin,int glbMax,const IntSet& lub,
605
+ unsigned int minCard = 0,
606
+ unsigned int maxCard = Set::Limits::card);
607
+ /**
608
+ * \brief Create an array of size \a n.
609
+ *
610
+ * Each variable is initialized with the bounds and cardinality as
611
+ * given by the arguments.
612
+ */
613
+ GECODE_SET_EXPORT
614
+ SetVarArray(Space& home,int n,
615
+ const IntSet& glb,const IntSet& lub,
616
+ unsigned int minCard = 0,
617
+ unsigned int maxCard = Set::Limits::card);
618
+ //@}
619
+ };
620
+
621
+ }
622
+
623
+ #include <gecode/set/array.hpp>
624
+
625
+ namespace Gecode {
626
+
627
+ /**
628
+ * \brief Common relation types for sets
629
+ *
630
+ * The total order on sets is defined as the lexicographic
631
+ * order on their characteristic functions, e.g.,
632
+ * \f$x\leq y\f$ means that either \f$x\f$ is empty or
633
+ * the minimal element of the symmetric difference
634
+ * \f$x\ominus y\f$ is in \f$y\f$.
635
+ *
636
+ * \ingroup TaskModelSet
637
+ */
638
+ enum SetRelType {
639
+ SRT_EQ, ///< Equality (\f$=\f$)
640
+ SRT_NQ, ///< Disequality (\f$\neq\f$)
641
+ SRT_SUB, ///< Subset (\f$\subseteq\f$)
642
+ SRT_SUP, ///< Superset (\f$\supseteq\f$)
643
+ SRT_DISJ, ///< Disjoint (\f$\parallel\f$)
644
+ SRT_CMPL, ///< Complement
645
+ SRT_LQ, ///< Less or equal (\f$\leq\f$)
646
+ SRT_LE, ///< Less (\f$<\f$)
647
+ SRT_GQ, ///< Greater or equal (\f$\geq\f$)
648
+ SRT_GR ///< Greater (\f$>\f$)
649
+ };
650
+
651
+ /**
652
+ * \brief Common operations for sets
653
+ * \ingroup TaskModelSet
654
+ */
655
+ enum SetOpType {
656
+ SOT_UNION, ///< Union
657
+ SOT_DUNION, ///< Disjoint union
658
+ SOT_INTER, ///< %Intersection
659
+ SOT_MINUS ///< Difference
660
+ };
661
+
662
+ /**
663
+ * \defgroup TaskModelSetDom Domain constraints
664
+ * \ingroup TaskModelSet
665
+ *
666
+ */
667
+
668
+ //@{
669
+
670
+ /// Propagates \f$ x \sim_r \{i\}\f$
671
+ GECODE_SET_EXPORT void
672
+ dom(Home home, SetVar x, SetRelType r, int i);
673
+
674
+ /// Propagates \f$ x \sim_r \{i,\dots,j\}\f$
675
+ GECODE_SET_EXPORT void
676
+ dom(Home home, SetVar x, SetRelType r, int i, int j);
677
+
678
+ /// Propagates \f$ x \sim_r s\f$
679
+ GECODE_SET_EXPORT void
680
+ dom(Home home, SetVar x, SetRelType r, const IntSet& s);
681
+
682
+ /// Post propagator for \f$ (x \sim_r \{i\}) \Leftrightarrow b \f$
683
+ GECODE_SET_EXPORT void
684
+ dom(Home home, SetVar x, SetRelType r, int i, BoolVar b);
685
+
686
+ /// Post propagator for \f$ (x \sim_r \{i,\dots,j\}) \Leftrightarrow b \f$
687
+ GECODE_SET_EXPORT void
688
+ dom(Home home, SetVar x, SetRelType r, int i, int j, BoolVar b);
689
+
690
+ /// Post propagator for \f$ (x \sim_r s) \Leftrightarrow b \f$
691
+ GECODE_SET_EXPORT void
692
+ dom(Home home, SetVar x, SetRelType r, const IntSet& s, BoolVar b);
693
+
694
+ /// Propagates \f$ i \leq |s| \leq j \f$
695
+ GECODE_SET_EXPORT void
696
+ cardinality(Home home, SetVar x, unsigned int i, unsigned int j);
697
+
698
+ //@}
699
+
700
+
701
+ /**
702
+ * \defgroup TaskModelSetRel Relation constraints
703
+ * \ingroup TaskModelSet
704
+ *
705
+ */
706
+
707
+ //@{
708
+
709
+ /// Post propagator for \f$ x \sim_r y\f$
710
+ GECODE_SET_EXPORT void
711
+ rel(Home home, SetVar x, SetRelType r, SetVar y);
712
+
713
+ /// Post propagator for \f$ (x \sim_r y) \Leftrightarrow b \f$
714
+ GECODE_SET_EXPORT void
715
+ rel(Home home, SetVar x, SetRelType r, SetVar y, BoolVar b);
716
+
717
+ /// Post propagator for \f$ s \sim_r \{x\}\f$
718
+ GECODE_SET_EXPORT void
719
+ rel(Home home, SetVar s, SetRelType r, IntVar x);
720
+
721
+ /// Post propagator for \f$ \{x\} \sim_r s\f$
722
+ GECODE_SET_EXPORT void
723
+ rel(Home home, IntVar x, SetRelType r, SetVar s);
724
+
725
+ /// Post propagator for \f$ (s \sim_r \{x\}) \Leftrightarrow b \f$
726
+ GECODE_SET_EXPORT void
727
+ rel(Home home, SetVar s, SetRelType r, IntVar x, BoolVar b);
728
+
729
+ /// Post propagator for \f$ (\{x\} \sim_r s) \Leftrightarrow b \f$
730
+ GECODE_SET_EXPORT void
731
+ rel(Home home, IntVar x, SetRelType r, SetVar s, BoolVar b);
732
+
733
+ /// Post propagator for \f$|s|\geq 1 \land \forall i\in s:\ i \sim_r x\f$
734
+ GECODE_SET_EXPORT void
735
+ rel(Home home, SetVar s, IntRelType r, IntVar x);
736
+
737
+ /// Post propagator for \f$|s|\geq 1 \land \forall i\in s:\ x \sim_r i\f$
738
+ GECODE_SET_EXPORT void
739
+ rel(Home home, IntVar x, IntRelType r, SetVar s);
740
+
741
+ //@}
742
+
743
+ /**
744
+ * \defgroup TaskModelSetRelOp Set operation/relation constraints
745
+ * \ingroup TaskModelSet
746
+ *
747
+ */
748
+
749
+ //@{
750
+
751
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
752
+ GECODE_SET_EXPORT void
753
+ rel(Home home, SetVar x, SetOpType op, SetVar y, SetRelType r, SetVar z);
754
+
755
+ /// Post propagator for \f$ y = \diamond_{\mathit{op}} x\f$
756
+ GECODE_SET_EXPORT void
757
+ rel(Home home, SetOpType op, const SetVarArgs& x, SetVar y);
758
+
759
+ /// Post propagator for \f$ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z\f$
760
+ GECODE_SET_EXPORT void
761
+ rel(Home home, SetOpType op, const SetVarArgs& x, const IntSet& z, SetVar y);
762
+
763
+ /// Post propagator for \f$ y = \diamond_{\mathit{op}} x \diamond_{\mathit{op}} z\f$
764
+ GECODE_SET_EXPORT void
765
+ rel(Home home, SetOpType op, const IntVarArgs& x, const IntSet& z, SetVar y);
766
+
767
+ /// Post propagator for \f$ y = \diamond_{\mathit{op}} x\f$
768
+ GECODE_SET_EXPORT void
769
+ rel(Home home, SetOpType op, const IntVarArgs& x, SetVar y);
770
+
771
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
772
+ GECODE_SET_EXPORT void
773
+ rel(Home home, const IntSet& x, SetOpType op, SetVar y,
774
+ SetRelType r, SetVar z);
775
+
776
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
777
+ GECODE_SET_EXPORT void
778
+ rel(Home home, SetVar x, SetOpType op, const IntSet& y,
779
+ SetRelType r, SetVar z);
780
+
781
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
782
+ GECODE_SET_EXPORT void
783
+ rel(Home home, SetVar x, SetOpType op, SetVar y,
784
+ SetRelType r, const IntSet& z);
785
+
786
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
787
+ GECODE_SET_EXPORT void
788
+ rel(Home home, const IntSet& x, SetOpType op, SetVar y, SetRelType r,
789
+ const IntSet& z);
790
+
791
+ /// Post propagator for \f$ (x \diamond_{\mathit{op}} y) \sim_r z \f$
792
+ GECODE_SET_EXPORT void
793
+ rel(Home home, SetVar x, SetOpType op, const IntSet& y, SetRelType r,
794
+ const IntSet& z);
795
+
796
+ //@}
797
+
798
+
799
+ /**
800
+ * \defgroup TaskModelSetConvex Convexity constraints
801
+ * \ingroup TaskModelSet
802
+ *
803
+ */
804
+ //@{
805
+
806
+ /// Post propagator that propagates that \a x is convex
807
+ GECODE_SET_EXPORT void
808
+ convex(Home home, SetVar x);
809
+
810
+ /// Post propagator that propagates that \a y is the convex hull of \a x
811
+ GECODE_SET_EXPORT void
812
+ convex(Home home, SetVar x, SetVar y);
813
+
814
+ //@}
815
+
816
+ /**
817
+ * \defgroup TaskModelSetSequence Sequence constraints
818
+ * \ingroup TaskModelSet
819
+ *
820
+ */
821
+ //@{
822
+
823
+ /// Post propagator for \f$\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})\f$
824
+ GECODE_SET_EXPORT void
825
+ sequence(Home home, const SetVarArgs& x);
826
+
827
+ /// Post propagator for \f$\forall 0\leq i< |x|-1 : \max(x_i)<\min(x_{i+1})\f$ and \f$ x = \bigcup_{i\in\{0,\dots,n-1\}} y_i \f$
828
+ GECODE_SET_EXPORT void
829
+ sequence(Home home, const SetVarArgs& y, SetVar x);
830
+
831
+ //@}
832
+
833
+ /**
834
+ * \defgroup TaskModelSetDistinct Distinctness constraints
835
+ * \ingroup TaskModelSet
836
+ *
837
+ */
838
+ //@{
839
+
840
+
841
+ /// Post propagator for \f$\forall 0\leq i\leq |x| : |x_i|=c\f$ and \f$\forall 0\leq i<j\leq |x| : |x_i\cap x_j|\leq 1\f$
842
+ GECODE_SET_EXPORT void
843
+ atmostOne(Home home, const SetVarArgs& x, unsigned int c);
844
+
845
+ //@}
846
+
847
+ /**
848
+ * \defgroup TaskModelSetConnect Connection constraints to integer variables
849
+ * \ingroup TaskModelSet
850
+ *
851
+ */
852
+
853
+ //@{
854
+
855
+ /** \brief Post propagator that propagates that \a x is the
856
+ * minimal element of \a s, and that \a s is not empty */
857
+ GECODE_SET_EXPORT void
858
+ min(Home home, SetVar s, IntVar x);
859
+
860
+ /** \brief Post propagator that propagates that \a x is not the
861
+ * minimal element of \a s */
862
+ GECODE_SET_EXPORT void
863
+ notMin(Home home, SetVar s, IntVar x);
864
+
865
+ /** \brief Post reified propagator for \a b iff \a x is the
866
+ * minimal element of \a s */
867
+ GECODE_SET_EXPORT void
868
+ min(Home home, SetVar s, IntVar x, BoolVar b);
869
+
870
+ /** \brief Post propagator that propagates that \a x is the
871
+ * maximal element of \a s, and that \a s is not empty */
872
+ GECODE_SET_EXPORT void
873
+ max(Home home, SetVar s, IntVar x);
874
+
875
+ /** \brief Post propagator that propagates that \a x is not the
876
+ * maximal element of \a s */
877
+ GECODE_SET_EXPORT void
878
+ notMax(Home home, SetVar s, IntVar x);
879
+
880
+ /** \brief Post reified propagator for \a b iff \a x is the
881
+ * maximal element of \a s */
882
+ GECODE_SET_EXPORT void
883
+ max(Home home, SetVar s, IntVar x, BoolVar b);
884
+
885
+ /// Post propagator for \f$\{x_0,\dots,x_{n-1}\}=y\f$ and \f$x_i<x_{i+1}\f$
886
+ GECODE_SET_EXPORT void
887
+ channelSorted(Home home, const IntVarArgs& x, SetVar y);
888
+
889
+ /// Post propagator for \f$x_i=j \Leftrightarrow i\in y_j\f$
890
+ GECODE_SET_EXPORT void
891
+ channel(Home home, const IntVarArgs& x,const SetVarArgs& y);
892
+
893
+ /// Post propagator for \f$x_i=1 \Leftrightarrow i\in y\f$
894
+ GECODE_SET_EXPORT void
895
+ channel(Home home, const BoolVarArgs& x, SetVar y);
896
+
897
+ /// Post propagator for \f$ |s|=x \f$
898
+ GECODE_SET_EXPORT void
899
+ cardinality(Home home, SetVar s, IntVar x);
900
+
901
+
902
+ /**
903
+ * \brief Post propagator for \f$y = \mathrm{weight}(x)\f$
904
+ *
905
+ * The weights are given as pairs of elements and their weight:
906
+ * \f$\mathrm{weight}(\mathrm{elements}_i) = \mathrm{weights}_i\f$
907
+ *
908
+ * The upper bound of \a x is constrained to contain only elements from
909
+ * \a elements. The weight of a set is the sum of the weights of its
910
+ * elements.
911
+ */
912
+ GECODE_SET_EXPORT void
913
+ weights(Home home, IntSharedArray elements, IntSharedArray weights,
914
+ SetVar x, IntVar y);
915
+
916
+ //@}
917
+
918
+ /**
919
+ * \defgroup TaskModelSetPrecede Value precedence constraints over set variables
920
+ * \ingroup TaskModelSet
921
+ */
922
+ /** \brief Post propagator that \a s precedes \a t in \a x
923
+ *
924
+ * This constraint enforces that if there exists \f$j\f$ such that
925
+ * \f$s\notin x_j\land t\in x_j\f$, then there exists \f$i<j\f$ such that
926
+ * \f$s\in x_i\land t\notin x_i\f$.
927
+ * \ingroup TaskModelSetPrecede
928
+ */
929
+ GECODE_SET_EXPORT void
930
+ precede(Home home, const SetVarArgs& x, int s, int t);
931
+ /** \brief Post propagator that successive values in \a c precede each other in \a x
932
+ * \ingroup TaskModelSetPrecede
933
+ */
934
+ GECODE_SET_EXPORT void
935
+ precede(Home home, const SetVarArgs& x, const IntArgs& c);
936
+
937
+ /**
938
+ * \defgroup TaskModelSetElement Element constraints
939
+ * \ingroup TaskModelSet
940
+ *
941
+ * An element constraint selects zero, one or more elements out of a
942
+ * sequence. We write \f$ \langle x_0,\dots, x_{n-1} \rangle \f$ for the
943
+ * sequence, and \f$ [y] \f$ for the index variable.
944
+ *
945
+ * Set element constraints are closely related to the ::element constraint
946
+ * on integer variables.
947
+ */
948
+
949
+ //@{
950
+
951
+ /**
952
+ * \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] \f$
953
+ *
954
+ * If \a y is the empty set, the usual conventions for set operations apply:
955
+ * an empty union is empty, while an empty intersection is the universe,
956
+ * which can be given as the optional parameter \a u.
957
+ *
958
+ * The indices for \a y start at 0.
959
+ */
960
+ GECODE_SET_EXPORT void
961
+ element(Home home, SetOpType op, const SetVarArgs& x, SetVar y, SetVar z,
962
+ const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
963
+
964
+ /**
965
+ * \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] \f$
966
+ *
967
+ * If \a y is the empty set, the usual conventions for set operations apply:
968
+ * an empty union is empty, while an empty intersection is the universe,
969
+ * which can be given as the optional parameter \a u.
970
+ *
971
+ * The indices for \a y start at 0.
972
+ */
973
+ GECODE_SET_EXPORT void
974
+ element(Home home, SetOpType op, const IntVarArgs& x, SetVar y, SetVar z,
975
+ const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
976
+
977
+ /**
978
+ * \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle x_0,\dots,x_{n-1}\rangle[y] \f$
979
+ *
980
+ * If \a y is the empty set, the usual conventions for set operations apply:
981
+ * an empty union is empty, while an empty intersection is the universe,
982
+ * which can be given as the optional parameter \a u.
983
+ *
984
+ * The indices for \a y start at 0.
985
+ */
986
+ GECODE_SET_EXPORT void
987
+ element(Home home, SetOpType op, const IntSetArgs& x, SetVar y, SetVar z,
988
+ const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
989
+
990
+ /**
991
+ * \brief Post propagator for \f$ z=\diamond_{\mathit{op}}\langle \{x_0\},\dots,\{x_{n-1}\}\rangle[y] \f$
992
+ *
993
+ * If \a y is the empty set, the usual conventions for set operations apply:
994
+ * an empty union is empty, while an empty intersection is the universe,
995
+ * which can be given as the optional parameter \a u.
996
+ *
997
+ * The indices for \a y start at 0.
998
+ */
999
+ GECODE_SET_EXPORT void
1000
+ element(Home home, SetOpType op, const IntArgs& x, SetVar y, SetVar z,
1001
+ const IntSet& u = IntSet(Set::Limits::min,Set::Limits::max));
1002
+
1003
+ /**
1004
+ * \brief Post propagator for \f$ z=\langle x_0,\dots,x_{n-1}\rangle[y] \f$
1005
+ *
1006
+ * The indices for \a y start at 0.
1007
+ */
1008
+ GECODE_SET_EXPORT void
1009
+ element(Home home, const SetVarArgs& x, IntVar y, SetVar z);
1010
+
1011
+ /**
1012
+ * \brief Post propagator for \f$ z=\langle s_0,\dots,s_{n-1}\rangle[y] \f$
1013
+ *
1014
+ * The indices for \a y start at 0.
1015
+ */
1016
+ GECODE_SET_EXPORT void
1017
+ element(Home home, const IntSetArgs& s, IntVar y, SetVar z);
1018
+
1019
+ /** \brief Post propagator for \f$ a_{x+w\cdot y}=z\f$
1020
+ *
1021
+ * Throws an exception of type Set::ArgumentSizeMismatch, if
1022
+ * \f$ w\cdot h\neq|a|\f$.
1023
+ */
1024
+ GECODE_SET_EXPORT void
1025
+ element(Home home, const IntSetArgs& a,
1026
+ IntVar x, int w, IntVar y, int h, SetVar z);
1027
+ /** \brief Post propagator for \f$ a_{x+w\cdot y}=z\f$
1028
+ *
1029
+ * Throws an exception of type Set::ArgumentSizeMismatch, if
1030
+ * \f$ w\cdot h\neq|a|\f$.
1031
+ */
1032
+ GECODE_SET_EXPORT void
1033
+ element(Home home, const SetVarArgs& a,
1034
+ IntVar x, int w, IntVar y, int h, SetVar z);
1035
+ //@}
1036
+
1037
+ /**
1038
+ * \defgroup TaskModelSetExec Synchronized execution
1039
+ * \ingroup TaskModelSet
1040
+ *
1041
+ * Synchronized execution executes a function or a static member function
1042
+ * when a certain event happends.
1043
+ *
1044
+ * \ingroup TaskModelSet
1045
+ */
1046
+ //@{
1047
+ /// Execute \a c when \a x becomes assigned
1048
+ GECODE_SET_EXPORT void
1049
+ wait(Home home, SetVar x, void (*c)(Space& home));
1050
+ /// Execute \a c when all variables in \a x become assigned
1051
+ GECODE_SET_EXPORT void
1052
+ wait(Home home, const SetVarArgs& x, void (*c)(Space& home));
1053
+ //@}
1054
+
1055
+ /**
1056
+ * \defgroup TaskModelSetBranch Branching
1057
+ * \ingroup TaskModelSet
1058
+ */
1059
+
1060
+ //@{
1061
+ /// Which variable to select for branching
1062
+ enum SetVarBranch {
1063
+ SET_VAR_NONE = 0, ///< First unassigned
1064
+ SET_VAR_RND, ///< Random (uniform, for tie breaking)
1065
+ SET_VAR_DEGREE_MIN, ///< With smallest degree
1066
+ SET_VAR_DEGREE_MAX, ///< With largest degree
1067
+ SET_VAR_AFC_MIN, ///< With smallest accumulated failure count
1068
+ SET_VAR_AFC_MAX, ///< With largest accumulated failure count
1069
+ SET_VAR_MIN_MIN, ///< With smallest minimum unknown element
1070
+ SET_VAR_MIN_MAX, ///< With largest minimum unknown element
1071
+ SET_VAR_MAX_MIN, ///< With smallest maximum unknown element
1072
+ SET_VAR_MAX_MAX, ///< With largest maximum unknown element
1073
+ SET_VAR_SIZE_MIN, ///< With smallest unknown set
1074
+ SET_VAR_SIZE_MAX, ///< With largest unknown set
1075
+ SET_VAR_SIZE_DEGREE_MIN, ///< With smallest domain size divided by degree
1076
+ SET_VAR_SIZE_DEGREE_MAX, ///< With largest domain size divided by degree
1077
+ SET_VAR_SIZE_AFC_MIN, ///< With smallest domain size divided by accumulated failure count
1078
+ SET_VAR_SIZE_AFC_MAX ///< With largest domain size divided by accumulated failure count
1079
+ };
1080
+
1081
+ /// Which values to select first for branching
1082
+ enum SetValBranch {
1083
+ SET_VAL_MIN_INC, ///< Include smallest element
1084
+ SET_VAL_MIN_EXC, ///< Exclude smallest element
1085
+ SET_VAL_MED_INC, ///< Include median element (rounding downwards)
1086
+ SET_VAL_MED_EXC, ///< Exclude median element (rounding downwards)
1087
+ SET_VAL_MAX_INC, ///< Include largest element
1088
+ SET_VAL_MAX_EXC, ///< Exclude largest element
1089
+ SET_VAL_RND_INC, ///< Include random element
1090
+ SET_VAL_RND_EXC ///< Exclude random element
1091
+ };
1092
+
1093
+ /// Branch over \a x with variable selection \a vars and value selection \a vals
1094
+ GECODE_SET_EXPORT void
1095
+ branch(Home home, const SetVarArgs& x,
1096
+ SetVarBranch vars, SetValBranch vals,
1097
+ const VarBranchOptions& o_vars = VarBranchOptions::def,
1098
+ const ValBranchOptions& o_vals = ValBranchOptions::def);
1099
+ /// Branch over \a x with tie-breaking variable selection \a vars and value selection \a vals
1100
+ GECODE_SET_EXPORT void
1101
+ branch(Home home, const SetVarArgs& x,
1102
+ const TieBreakVarBranch<SetVarBranch>& vars, SetValBranch vals,
1103
+ const TieBreakVarBranchOptions& o_vars = TieBreakVarBranchOptions::def,
1104
+ const ValBranchOptions& o_vals = ValBranchOptions::def);
1105
+ /// Branch over \a x with value selection \a vals
1106
+ GECODE_SET_EXPORT void
1107
+ branch(Home home, SetVar x, SetValBranch vals,
1108
+ const ValBranchOptions& o_vals = ValBranchOptions::def);
1109
+ //@}
1110
+
1111
+ /**
1112
+ * \defgroup TaskModelSetAssign Assigning
1113
+ * \ingroup TaskModelSet
1114
+ */
1115
+ //@{
1116
+ /// Which value to select for assignment
1117
+ enum SetAssign {
1118
+ SET_ASSIGN_MIN_INC, ///< Include smallest element
1119
+ SET_ASSIGN_MIN_EXC, ///< Exclude smallest element
1120
+ SET_ASSIGN_MED_INC, ///< Include median element (rounding downwards)
1121
+ SET_ASSIGN_MED_EXC, ///< Exclude median element (rounding downwards)
1122
+ SET_ASSIGN_MAX_INC, ///< Include largest element
1123
+ SET_ASSIGN_MAX_EXC, ///< Exclude largest element
1124
+ SET_ASSIGN_RND_INC, ///< Include random element
1125
+ SET_ASSIGN_RND_EXC ///< Exclude random element
1126
+ };
1127
+
1128
+ /// Assign all \a x with value selection \a vals
1129
+ GECODE_SET_EXPORT void
1130
+ assign(Home home, const SetVarArgs& x, SetAssign vals,
1131
+ const ValBranchOptions& o_vals = ValBranchOptions::def);
1132
+ /// Assign \a x with value selection \a vals
1133
+ GECODE_SET_EXPORT void
1134
+ assign(Home home, SetVar x, SetAssign vals,
1135
+ const ValBranchOptions& o_vals = ValBranchOptions::def);
1136
+
1137
+ //@}
1138
+
1139
+ }
1140
+
1141
+ #endif
1142
+
1143
+ // IFDEF: GECODE_HAS_SET_VARS
1144
+ // STATISTICS: set-post