dep-selector-libgecode 1.0.0.alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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