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,432 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ * Guido Tack <tack@gecode.org>
6
+ *
7
+ * Copyright:
8
+ * Christian Schulte, 2009
9
+ * Guido Tack, 2010
10
+ *
11
+ * Last modified:
12
+ * $Date: 2011-07-14 02:56:36 +1000 (Thu, 14 Jul 2011) $ by $Author: tack $
13
+ * $Revision: 12195 $
14
+ *
15
+ * This file is part of Gecode, the generic constraint
16
+ * development environment:
17
+ * http://www.gecode.org
18
+ *
19
+ * Permission is hereby granted, free of charge, to any person obtaining
20
+ * a copy of this software and associated documentation files (the
21
+ * "Software"), to deal in the Software without restriction, including
22
+ * without limitation the rights to use, copy, modify, merge, publish,
23
+ * distribute, sublicense, and/or sell copies of the Software, and to
24
+ * permit persons to whom the Software is furnished to do so, subject to
25
+ * the following conditions:
26
+ *
27
+ * The above copyright notice and this permission notice shall be
28
+ * included in all copies or substantial portions of the Software.
29
+ *
30
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37
+ *
38
+ */
39
+
40
+ #include <gecode/int/cumulative.hh>
41
+
42
+ #include <algorithm>
43
+
44
+ namespace Gecode {
45
+
46
+ template<class Cap>
47
+ void
48
+ cumulative(Home home, Cap c, const TaskTypeArgs& t,
49
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
50
+ IntConLevel icl) {
51
+ using namespace Gecode::Int;
52
+ using namespace Gecode::Int::Cumulative;
53
+ if ((s.size() != p.size()) || (s.size() != u.size()) ||
54
+ (s.size() != t.size()))
55
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
56
+ double w = 0.0;
57
+ for (int i=p.size(); i--; ) {
58
+ Int::Limits::nonnegative(p[i],"Int::cumulative");
59
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
60
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
61
+ "Int::cumulative");
62
+ Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
63
+ "Int::cumulative");
64
+ w += s[i].width();
65
+ }
66
+ Int::Limits::double_check(c.max() * w * s.size(),
67
+ "Int::cumulative");
68
+ if (home.failed()) return;
69
+
70
+ int minU = INT_MAX; int minU2 = INT_MAX; int maxU = INT_MIN;
71
+ for (int i=u.size(); i--;) {
72
+ if (u[i] < minU)
73
+ minU = u[i];
74
+ else if (u[i] < minU2)
75
+ minU2 = u[i];
76
+ if (u[i] > maxU)
77
+ maxU = u[i];
78
+ }
79
+ bool disjunctive =
80
+ (minU > c.max()/2) || (minU2 > c.max()/2 && minU+minU2>c.max());
81
+ if (disjunctive) {
82
+ GECODE_ME_FAIL(c.gq(home,maxU));
83
+ unary(home,t,s,p,icl);
84
+ } else {
85
+ bool fixp = true;
86
+ for (int i=t.size(); i--;)
87
+ if (t[i] != TT_FIXP) {
88
+ fixp = false; break;
89
+ }
90
+ if (fixp) {
91
+ TaskArray<ManFixPTask> tasks(home,s.size());
92
+ for (int i=0; i<s.size(); i++)
93
+ tasks[i].init(s[i],p[i],u[i]);
94
+ GECODE_ES_FAIL((ManProp<ManFixPTask,Cap>::post(home,c,tasks)));
95
+ } else {
96
+ TaskArray<ManFixPSETask> tasks(home,s.size());
97
+ for (int i=s.size(); i--;)
98
+ tasks[i].init(t[i],s[i],p[i],u[i]);
99
+ GECODE_ES_FAIL((ManProp<ManFixPSETask,Cap>::post(home,c,tasks)));
100
+ }
101
+ }
102
+ }
103
+
104
+ void
105
+ cumulative(Home home, int c, const TaskTypeArgs& t,
106
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
107
+ IntConLevel icl) {
108
+ Int::Limits::nonnegative(c,"Int::cumulative");
109
+ cumulative(home,Int::ConstIntView(c),t,s,p,u,icl);
110
+ }
111
+ void
112
+ cumulative(Home home, IntVar c, const TaskTypeArgs& t,
113
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
114
+ IntConLevel icl) {
115
+ if (c.assigned())
116
+ cumulative(home,c.val(),t,s,p,u,icl);
117
+ else
118
+ cumulative(home,Int::IntView(c),t,s,p,u,icl);
119
+ }
120
+
121
+ template<class Cap>
122
+ void
123
+ cumulative(Home home, Cap c, const TaskTypeArgs& t,
124
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
125
+ const BoolVarArgs& m, IntConLevel icl) {
126
+ using namespace Gecode::Int;
127
+ using namespace Gecode::Int::Cumulative;
128
+ if ((s.size() != p.size()) || (s.size() != u.size()) ||
129
+ (s.size() != t.size()) || (s.size() != m.size()))
130
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
131
+ double w = 0.0;
132
+ for (int i=p.size(); i--; ) {
133
+ Int::Limits::nonnegative(p[i],"Int::cumulative");
134
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
135
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
136
+ "Int::cumulative");
137
+ Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
138
+ "Int::cumulative");
139
+ w += s[i].width();
140
+ }
141
+ Int::Limits::double_check(c.max() * w * s.size(),
142
+ "Int::cumulative");
143
+ if (home.failed()) return;
144
+
145
+ bool allMandatory = true;
146
+ for (int i=m.size(); i--;) {
147
+ if (!m[i].one()) {
148
+ allMandatory = false;
149
+ break;
150
+ }
151
+ }
152
+ if (allMandatory) {
153
+ cumulative(home,c,t,s,p,u,icl);
154
+ } else {
155
+ bool fixp = true;
156
+ for (int i=t.size(); i--;)
157
+ if (t[i] != TT_FIXP) {
158
+ fixp = false; break;
159
+ }
160
+ if (fixp) {
161
+ TaskArray<OptFixPTask> tasks(home,s.size());
162
+ for (int i=0; i<s.size(); i++)
163
+ tasks[i].init(s[i],p[i],u[i],m[i]);
164
+ GECODE_ES_FAIL((OptProp<OptFixPTask,Cap>::post(home,c,tasks)));
165
+ } else {
166
+ TaskArray<OptFixPSETask> tasks(home,s.size());
167
+ for (int i=s.size(); i--;)
168
+ tasks[i].init(t[i],s[i],p[i],u[i],m[i]);
169
+ GECODE_ES_FAIL((OptProp<OptFixPSETask,Cap>::post(home,c,tasks)));
170
+ }
171
+ }
172
+ }
173
+
174
+ void
175
+ cumulative(Home home, int c, const TaskTypeArgs& t,
176
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
177
+ const BoolVarArgs& m, IntConLevel icl) {
178
+ Int::Limits::nonnegative(c,"Int::cumulative");
179
+ cumulative(home,Int::ConstIntView(c),t,s,p,u,m,icl);
180
+ }
181
+ void
182
+ cumulative(Home home, IntVar c, const TaskTypeArgs& t,
183
+ const IntVarArgs& s, const IntArgs& p, const IntArgs& u,
184
+ const BoolVarArgs& m, IntConLevel icl) {
185
+ if (c.assigned())
186
+ cumulative(home,c.val(),t,s,p,u,m,icl);
187
+ else
188
+ cumulative(home,Int::IntView(c),t,s,p,u,m,icl);
189
+ }
190
+
191
+ template<class Cap>
192
+ void
193
+ cumulative(Home home, Cap c, const IntVarArgs& s,
194
+ const IntArgs& p, const IntArgs& u, IntConLevel icl) {
195
+ using namespace Gecode::Int;
196
+ using namespace Gecode::Int::Cumulative;
197
+ if ((s.size() != p.size()) || (s.size() != u.size()))
198
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
199
+ double w = 0.0;
200
+ for (int i=p.size(); i--; ) {
201
+ Int::Limits::nonnegative(p[i],"Int::cumulative");
202
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
203
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
204
+ "Int::cumulative");
205
+ Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
206
+ "Int::cumulative");
207
+ w += s[i].width();
208
+ }
209
+ Int::Limits::double_check(c.max() * w * s.size(),
210
+ "Int::cumulative");
211
+ if (home.failed()) return;
212
+
213
+ int minU = INT_MAX; int minU2 = INT_MAX; int maxU = INT_MIN;
214
+ for (int i=u.size(); i--;) {
215
+ if (u[i] < minU)
216
+ minU = u[i];
217
+ else if (u[i] < minU2)
218
+ minU2 = u[i];
219
+ if (u[i] > maxU)
220
+ maxU = u[i];
221
+ }
222
+ bool disjunctive =
223
+ (minU > c.max()/2) || (minU2 > c.max()/2 && minU+minU2>c.max());
224
+ if (disjunctive) {
225
+ GECODE_ME_FAIL(c.gq(home,maxU));
226
+ unary(home,s,p,icl);
227
+ } else {
228
+ TaskArray<ManFixPTask> t(home,s.size());
229
+ for (int i=0; i<s.size(); i++) {
230
+ t[i].init(s[i],p[i],u[i]);
231
+ }
232
+ GECODE_ES_FAIL((ManProp<ManFixPTask,Cap>::post(home,c,t)));
233
+ }
234
+ }
235
+
236
+ void
237
+ cumulative(Home home, int c, const IntVarArgs& s,
238
+ const IntArgs& p, const IntArgs& u, IntConLevel icl) {
239
+ Int::Limits::nonnegative(c,"Int::cumulative");
240
+ cumulative(home,Int::ConstIntView(c),s,p,u,icl);
241
+ }
242
+ void
243
+ cumulative(Home home, IntVar c, const IntVarArgs& s,
244
+ const IntArgs& p, const IntArgs& u, IntConLevel icl) {
245
+ if (c.assigned())
246
+ cumulative(home,c.val(),s,p,u,icl);
247
+ else
248
+ cumulative(home,Int::IntView(c),s,p,u,icl);
249
+ }
250
+
251
+ template<class Cap>
252
+ void
253
+ cumulative(Home home, Cap c, const IntVarArgs& s, const IntArgs& p,
254
+ const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
255
+ using namespace Gecode::Int;
256
+ using namespace Gecode::Int::Cumulative;
257
+ if ((s.size() != p.size()) || (s.size() != u.size()) ||
258
+ (s.size() != m.size()))
259
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
260
+ double w = 0.0;
261
+ for (int i=p.size(); i--; ) {
262
+ Int::Limits::nonnegative(p[i],"Int::cumulative");
263
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
264
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i],
265
+ "Int::cumulative");
266
+ Int::Limits::double_check(static_cast<double>(p[i]) * u[i],
267
+ "Int::cumulative");
268
+ w += s[i].width();
269
+ }
270
+ Int::Limits::double_check(c.max() * w * s.size(),
271
+ "Int::cumulative");
272
+ if (home.failed()) return;
273
+
274
+ bool allMandatory = true;
275
+ for (int i=m.size(); i--;) {
276
+ if (!m[i].one()) {
277
+ allMandatory = false;
278
+ break;
279
+ }
280
+ }
281
+ if (allMandatory) {
282
+ cumulative(home,c,s,p,u,icl);
283
+ } else {
284
+ TaskArray<OptFixPTask> t(home,s.size());
285
+ for (int i=0; i<s.size(); i++) {
286
+ t[i].init(s[i],p[i],u[i],m[i]);
287
+ }
288
+ GECODE_ES_FAIL((OptProp<OptFixPTask,Cap>::post(home,c,t)));
289
+ }
290
+ }
291
+
292
+ void
293
+ cumulative(Home home, int c, const IntVarArgs& s, const IntArgs& p,
294
+ const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
295
+ Int::Limits::nonnegative(c,"Int::cumulative");
296
+ cumulative(home,Int::ConstIntView(c),s,p,u,m,icl);
297
+ }
298
+ void
299
+ cumulative(Home home, IntVar c, const IntVarArgs& s, const IntArgs& p,
300
+ const IntArgs& u, const BoolVarArgs& m, IntConLevel icl) {
301
+ if (c.assigned())
302
+ cumulative(home,c.val(),s,p,u,m,icl);
303
+ else
304
+ cumulative(home,Int::IntView(c),s,p,u,m,icl);
305
+ }
306
+
307
+ template<class Cap>
308
+ void
309
+ cumulative(Home home, Cap c, const IntVarArgs& s,
310
+ const IntVarArgs& p, const IntVarArgs& e,
311
+ const IntArgs& u, IntConLevel icl) {
312
+ using namespace Gecode::Int;
313
+ using namespace Gecode::Int::Cumulative;
314
+ if ((s.size() != p.size()) || (s.size() != e.size()) ||
315
+ (s.size() != u.size()))
316
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
317
+ double w = 0.0;
318
+ for (int i=p.size(); i--; ) {
319
+ rel(home, p[i], IRT_GQ, 0);
320
+ }
321
+ for (int i=p.size(); i--; ) {
322
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
323
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i].max(),
324
+ "Int::cumulative");
325
+ Int::Limits::double_check(static_cast<double>(p[i].max()) * u[i],
326
+ "Int::cumulative");
327
+ w += s[i].width();
328
+ }
329
+ Int::Limits::double_check(c.max() * w * s.size(),
330
+ "Int::cumulative");
331
+ if (home.failed()) return;
332
+
333
+ bool fixP = true;
334
+ for (int i=p.size(); i--;) {
335
+ if (!p[i].assigned()) {
336
+ fixP = false;
337
+ break;
338
+ }
339
+ }
340
+ if (fixP) {
341
+ IntArgs pp(p.size());
342
+ for (int i=p.size(); i--;)
343
+ pp[i] = p[i].val();
344
+ cumulative(home,c,s,pp,u,icl);
345
+ } else {
346
+ TaskArray<ManFlexTask> t(home,s.size());
347
+ for (int i=s.size(); i--; )
348
+ t[i].init(s[i],p[i],e[i],u[i]);
349
+ GECODE_ES_FAIL((ManProp<ManFlexTask,Cap>::post(home,c,t)));
350
+ }
351
+ }
352
+
353
+ void
354
+ cumulative(Home home, int c, const IntVarArgs& s,
355
+ const IntVarArgs& p, const IntVarArgs& e,
356
+ const IntArgs& u, IntConLevel icl) {
357
+ Int::Limits::nonnegative(c,"Int::cumulative");
358
+ cumulative(home,Int::ConstIntView(c),s,p,e,u,icl);
359
+ }
360
+ void
361
+ cumulative(Home home, IntVar c, const IntVarArgs& s,
362
+ const IntVarArgs& p, const IntVarArgs& e,
363
+ const IntArgs& u, IntConLevel icl) {
364
+ if (c.assigned())
365
+ cumulative(home,c.val(),s,p,e,u,icl);
366
+ else
367
+ cumulative(home,Int::IntView(c),s,p,e,u,icl);
368
+ }
369
+
370
+ template<class Cap>
371
+ void
372
+ cumulative(Home home, Cap c, const IntVarArgs& s, const IntVarArgs& p,
373
+ const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
374
+ IntConLevel icl) {
375
+ using namespace Gecode::Int;
376
+ using namespace Gecode::Int::Cumulative;
377
+ if ((s.size() != p.size()) || (s.size() != u.size()) ||
378
+ (s.size() != e.size()) || (s.size() != m.size()))
379
+ throw Int::ArgumentSizeMismatch("Int::cumulative");
380
+ for (int i=p.size(); i--; ) {
381
+ rel(home, p[i], IRT_GQ, 0);
382
+ }
383
+ double w = 0.0;
384
+ for (int i=p.size(); i--; ) {
385
+ Int::Limits::nonnegative(u[i],"Int::cumulative");
386
+ Int::Limits::check(static_cast<double>(s[i].max()) + p[i].max(),
387
+ "Int::cumulative");
388
+ Int::Limits::double_check(static_cast<double>(p[i].max()) * u[i],
389
+ "Int::cumulative");
390
+ w += s[i].width();
391
+ }
392
+ Int::Limits::double_check(c.max() * w * s.size(),
393
+ "Int::cumulative");
394
+ if (home.failed()) return;
395
+
396
+ bool allMandatory = true;
397
+ for (int i=m.size(); i--;) {
398
+ if (!m[i].one()) {
399
+ allMandatory = false;
400
+ break;
401
+ }
402
+ }
403
+ if (allMandatory) {
404
+ cumulative(home,c,s,p,e,u,icl);
405
+ } else {
406
+ TaskArray<OptFlexTask> t(home,s.size());
407
+ for (int i=s.size(); i--; )
408
+ t[i].init(s[i],p[i],e[i],u[i],m[i]);
409
+ GECODE_ES_FAIL((OptProp<OptFlexTask,Cap>::post(home,c,t)));
410
+ }
411
+ }
412
+
413
+ void
414
+ cumulative(Home home, int c, const IntVarArgs& s, const IntVarArgs& p,
415
+ const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
416
+ IntConLevel icl) {
417
+ Int::Limits::nonnegative(c,"Int::cumulative");
418
+ cumulative(home,Int::ConstIntView(c),s,p,e,u,m,icl);
419
+ }
420
+ void
421
+ cumulative(Home home, IntVar c, const IntVarArgs& s, const IntVarArgs& p,
422
+ const IntVarArgs& e, const IntArgs& u, const BoolVarArgs& m,
423
+ IntConLevel icl) {
424
+ if (c.assigned())
425
+ cumulative(home,c.val(),s,p,e,u,m,icl);
426
+ else
427
+ cumulative(home,Int::IntView(c),s,p,e,u,m,icl);
428
+ }
429
+
430
+ }
431
+
432
+ // STATISTICS: int-post
@@ -0,0 +1,745 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ * Guido Tack <tack@gecode.org>
6
+ *
7
+ * Copyright:
8
+ * Christian Schulte, 2009
9
+ * Guido Tack, 2010
10
+ *
11
+ * Last modified:
12
+ * $Date: 2011-07-13 20:11:00 +1000 (Wed, 13 Jul 2011) $ by $Author: tack $
13
+ * $Revision: 12181 $
14
+ *
15
+ * This file is part of Gecode, the generic constraint
16
+ * development environment:
17
+ * http://www.gecode.org
18
+ *
19
+ * Permission is hereby granted, free of charge, to any person obtaining
20
+ * a copy of this software and associated documentation files (the
21
+ * "Software"), to deal in the Software without restriction, including
22
+ * without limitation the rights to use, copy, modify, merge, publish,
23
+ * distribute, sublicense, and/or sell copies of the Software, and to
24
+ * permit persons to whom the Software is furnished to do so, subject to
25
+ * the following conditions:
26
+ *
27
+ * The above copyright notice and this permission notice shall be
28
+ * included in all copies or substantial portions of the Software.
29
+ *
30
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
31
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
33
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
34
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
35
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
36
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
37
+ *
38
+ */
39
+
40
+ #ifndef __GECODE_INT_CUMULATIVE_HH__
41
+ #define __GECODE_INT_CUMULATIVE_HH__
42
+
43
+ #include <gecode/int/task.hh>
44
+ #include <gecode/int/unary.hh>
45
+
46
+ /**
47
+ * \namespace Gecode::Int::Cumulative
48
+ *
49
+ * The edge-finding and overload-checking algorithms and data structures
50
+ * follow (mostly):
51
+ * Petr Vil�m, Max Energy Filtering Algorithm for Discrete
52
+ * Cumulative Resources, CP-AI-OR, 2009.
53
+ * Petr Vil�m, Edge Finding Filtering Algorithm for Discrete
54
+ * Cumulative Resources in O(kn log n), CP, 2009.
55
+ *
56
+ * \brief %Scheduling for cumulative resources
57
+ */
58
+
59
+ namespace Gecode { namespace Int { namespace Cumulative {
60
+
61
+ /// Cumulative (mandatory) task with fixed processing time
62
+ class ManFixPTask : public Unary::ManFixPTask {
63
+ protected:
64
+ /// Required capacity
65
+ int _c;
66
+ public:
67
+ /// \name Constructors and initialization
68
+ //@{
69
+ /// Default constructor
70
+ ManFixPTask(void);
71
+ /// Initialize task with start time \a s, processing time \a p, and required resource \a c
72
+ ManFixPTask(IntVar s, int p, int c);
73
+ /// Initialize task with start time \a s, processing time \a p, and required resource \a c
74
+ void init(IntVar s, int p, int c);
75
+ /// Initialize from task \a t
76
+ void init(const ManFixPTask& t);
77
+ //@}
78
+
79
+ /// \name Value access
80
+ //@{
81
+ /// Return required capacity
82
+ int c(void) const;
83
+ /// Return required energy
84
+ double e(void) const;
85
+ //@}
86
+
87
+ /// \name Cloning
88
+ //@{
89
+ /// Update this task to be a clone of task \a t
90
+ void update(Space& home, bool share, ManFixPTask& t);
91
+ //@}
92
+
93
+ };
94
+
95
+ /**
96
+ * \brief Print task in format est:[p,c]:lct
97
+ * \relates ManFixPTask
98
+ */
99
+ template<class Char, class Traits>
100
+ std::basic_ostream<Char,Traits>&
101
+ operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPTask& t);
102
+
103
+ /// Cumulative (mandatory) task with fixed processing, start or end time
104
+ class ManFixPSETask : public Unary::ManFixPSETask {
105
+ protected:
106
+ /// Required capacity
107
+ int _c;
108
+ public:
109
+ /// \name Constructors and initialization
110
+ //@{
111
+ /// Default constructor
112
+ ManFixPSETask(void);
113
+ /**
114
+ * \brief Initialize task
115
+ *
116
+ * Depending on \a t, \a s is either the end time (if \a t is FIXS)
117
+ * or the start time of the task, \a p is the fixed parameter,
118
+ * and \a c is the required capacity.
119
+ */
120
+ ManFixPSETask(TaskType t, IntVar s, int p, int c);
121
+ /**
122
+ * \brief Initialize task
123
+ *
124
+ * Depending on \a t, \a s is either the end time (if \a t is FIXS)
125
+ * or the start time of the task, \a p is the fixed parameter,
126
+ * and \a c is the required capacity.
127
+ */
128
+ void init(TaskType t, IntVar s, int p, int c);
129
+ /// Initialize from task \a t
130
+ void init(const ManFixPSETask& t);
131
+ //@}
132
+
133
+ /// \name Value access
134
+ //@{
135
+ /// Return required capacity
136
+ int c(void) const;
137
+ /// Return required energy
138
+ double e(void) const;
139
+ //@}
140
+
141
+ /// \name Cloning
142
+ //@{
143
+ /// Update this task to be a clone of task \a t
144
+ void update(Space& home, bool share, ManFixPSETask& t);
145
+ //@}
146
+
147
+ };
148
+
149
+ /**
150
+ * \brief Print task in format est:[p,c]:lct
151
+ * \relates ManFixPSETask
152
+ */
153
+ template<class Char, class Traits>
154
+ std::basic_ostream<Char,Traits>&
155
+ operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPSETask& t);
156
+
157
+ /// Cumulative (mandatory) task with flexible processing time
158
+ class ManFlexTask : public Unary::ManFlexTask {
159
+ protected:
160
+ /// Required capacity
161
+ int _c;
162
+ public:
163
+ /// \name Constructors and initialization
164
+ //@{
165
+ /// Default constructor
166
+ ManFlexTask(void);
167
+ /// Initialize with start time \a s, processing time \a p, end time \a e
168
+ ManFlexTask(IntVar s, IntVar p, IntVar e, int c);
169
+ /// Initialize with start time \a s, processing time \a p, end time \a e
170
+ void init(IntVar s, IntVar p, IntVar e, int c);
171
+ /// Initialize from task \a t
172
+ void init(const ManFlexTask& t);
173
+ //@}
174
+
175
+ /// \name Value access
176
+ //@{
177
+ /// Return required capacity
178
+ int c(void) const;
179
+ /// Return required energy
180
+ double e(void) const;
181
+ //@}
182
+
183
+ /// \name Cloning
184
+ //@{
185
+ /// Update this task to be a clone of task \a t
186
+ void update(Space& home, bool share, ManFlexTask& t);
187
+ //@}
188
+
189
+ };
190
+
191
+ /**
192
+ * \brief Print task in format est:[p,c]:lct
193
+ * \relates ManFlexTask
194
+ */
195
+ template<class Char, class Traits>
196
+ std::basic_ostream<Char,Traits>&
197
+ operator <<(std::basic_ostream<Char,Traits>& os, const ManFlexTask& t);
198
+
199
+
200
+ /// Cumulative optional task with fixed processing time
201
+ class OptFixPTask : public ManToOptTask<ManFixPTask> {
202
+ protected:
203
+ using ManToOptTask<ManFixPTask>::_m;
204
+ public:
205
+ /// \name Constructors and initialization
206
+ //@{
207
+ /// Default constructor
208
+ OptFixPTask(void);
209
+ /// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
210
+ OptFixPTask(IntVar s, int p, int c, BoolVar m);
211
+ /// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
212
+ void init(IntVar s, int p, int c, BoolVar m);
213
+ //@}
214
+ /// Cast to corresponding unary task
215
+ operator Unary::OptFixPTask (void);
216
+ };
217
+
218
+ /**
219
+ * \brief Print optional task in format est:[p,c]:lct:m
220
+ * \relates OptFixPTask
221
+ */
222
+ template<class Char, class Traits>
223
+ std::basic_ostream<Char,Traits>&
224
+ operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPTask& t);
225
+
226
+ /// Cumulative optional task with fixed processing, start or end time
227
+ class OptFixPSETask : public ManToOptTask<ManFixPSETask> {
228
+ protected:
229
+ using ManToOptTask<ManFixPSETask>::_m;
230
+ public:
231
+ /// \name Constructors and initialization
232
+ //@{
233
+ /// Default constructor
234
+ OptFixPSETask(void);
235
+ /// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
236
+ OptFixPSETask(TaskType t, IntVar s, int p, int c, BoolVar m);
237
+ /// Initialize with start time \a s, processing time \a p, required capacity \a c, and mandatory flag \a m
238
+ void init(TaskType t, IntVar s, int p, int c, BoolVar m);
239
+ //@}
240
+ /// Cast to corresponding unary task
241
+ operator Unary::OptFixPSETask (void);
242
+ };
243
+
244
+ /**
245
+ * \brief Print optional task in format est:[p,c]:lct:m
246
+ * \relates OptFixPSETask
247
+ */
248
+ template<class Char, class Traits>
249
+ std::basic_ostream<Char,Traits>&
250
+ operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPSETask& t);
251
+
252
+ /// %Cumulative optional task with flexible processing time
253
+ class OptFlexTask : public ManToOptTask<ManFlexTask> {
254
+ protected:
255
+ using ManToOptTask<ManFlexTask>::_m;
256
+ public:
257
+ /// \name Constructors and initialization
258
+ //@{
259
+ /// Default constructor
260
+ OptFlexTask(void);
261
+ /// Initialize with start time \a s, processing time \a p, end time \a e, and mandatory flag \a m
262
+ OptFlexTask(IntVar s, IntVar p, IntVar e, int c, BoolVar m);
263
+ /// Initialize with start time \a s, processing time \a p, end time \a e, and mandatory flag \a m
264
+ void init(IntVar s, IntVar p, IntVar e, int c, BoolVar m);
265
+ //@}
266
+ /// Cast to corresponding unary task
267
+ operator Unary::OptFlexTask (void);
268
+ };
269
+
270
+ /**
271
+ * \brief Print optional task in format est:lst:pmin:pmax:c:ect:lct:m
272
+ * \relates OptFlexTask
273
+ */
274
+ template<class Char, class Traits>
275
+ std::basic_ostream<Char,Traits>&
276
+ operator <<(std::basic_ostream<Char,Traits>& os, const OptFlexTask& t);
277
+
278
+ }}}
279
+
280
+ #include <gecode/int/cumulative/task.hpp>
281
+
282
+ namespace Gecode { namespace Int { namespace Cumulative {
283
+
284
+ /// Forward mandatory fixed task view
285
+ typedef ManFixPTask ManFixPTaskFwd;
286
+
287
+ /// Backward (dual) mandatory fixed task view
288
+ typedef FwdToBwd<ManFixPTaskFwd> ManFixPTaskBwd;
289
+
290
+ /// Forward mandatory fixed task view
291
+ typedef ManFixPSETask ManFixPSETaskFwd;
292
+
293
+ /// Backward (dual) mandatory fixed task view
294
+ typedef FwdToBwd<ManFixPSETaskFwd> ManFixPSETaskBwd;
295
+
296
+ /// Forward optional fixed task view
297
+ typedef OptFixPTask OptFixPTaskFwd;
298
+
299
+ /// Backward (dual) optional fixed task view
300
+ typedef FwdToBwd<OptFixPTaskFwd> OptFixPTaskBwd;
301
+
302
+ /// Forward optional fixed task view
303
+ typedef OptFixPSETask OptFixPSETaskFwd;
304
+
305
+ /// Backward (dual) optional fixed task view
306
+ typedef FwdToBwd<OptFixPSETaskFwd> OptFixPSETaskBwd;
307
+
308
+ /// Forward mandatory flexible task view
309
+ typedef ManFlexTask ManFlexTaskFwd;
310
+
311
+ /// Backward (dual) mandatory flexible task view
312
+ typedef FwdToBwd<ManFlexTaskFwd> ManFlexTaskBwd;
313
+
314
+ /// Forward optional flexible task view
315
+ typedef OptFlexTask OptFlexTaskFwd;
316
+
317
+ /// Backward (dual) optional flexible task view
318
+ typedef FwdToBwd<OptFlexTaskFwd> OptFlexTaskBwd;
319
+
320
+
321
+ /**
322
+ * \brief Print backward task view in format est:p:lct
323
+ * \relates ManFixPTaskBwd
324
+ */
325
+ template<class Char, class Traits>
326
+ std::basic_ostream<Char,Traits>&
327
+ operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPTaskBwd& t);
328
+
329
+ /**
330
+ * \brief Print backward task view in format est:p:lct
331
+ * \relates ManFixPSETaskBwd
332
+ */
333
+ template<class Char, class Traits>
334
+ std::basic_ostream<Char,Traits>&
335
+ operator <<(std::basic_ostream<Char,Traits>& os, const ManFixPSETaskBwd& t);
336
+
337
+ /**
338
+ * \brief Print optional backward task view in format est:p:lct:m
339
+ * \relates OptFixPTaskBwd
340
+ */
341
+ template<class Char, class Traits>
342
+ std::basic_ostream<Char,Traits>&
343
+ operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPTaskBwd& t);
344
+
345
+ /**
346
+ * \brief Print optional backward task view in format est:p:lct:m
347
+ * \relates OptFixPSETaskBwd
348
+ */
349
+ template<class Char, class Traits>
350
+ std::basic_ostream<Char,Traits>&
351
+ operator <<(std::basic_ostream<Char,Traits>& os, const OptFixPSETaskBwd& t);
352
+
353
+ }}}
354
+
355
+ #include <gecode/int/cumulative/task-view.hpp>
356
+
357
+ namespace Gecode { namespace Int {
358
+
359
+ /// Task view traits for forward task views
360
+ template<>
361
+ class TaskViewTraits<Cumulative::ManFixPTaskFwd> {
362
+ public:
363
+ /// The task type
364
+ typedef Cumulative::ManFixPTask Task;
365
+ };
366
+
367
+ /// Task view traits for backward task views
368
+ template<>
369
+ class TaskViewTraits<Cumulative::ManFixPTaskBwd> {
370
+ public:
371
+ /// The task type
372
+ typedef Cumulative::ManFixPTask Task;
373
+ };
374
+
375
+ /// Task view traits for forward task views
376
+ template<>
377
+ class TaskViewTraits<Cumulative::ManFixPSETaskFwd> {
378
+ public:
379
+ /// The task type
380
+ typedef Cumulative::ManFixPSETask Task;
381
+ };
382
+
383
+ /// Task view traits for backward task views
384
+ template<>
385
+ class TaskViewTraits<Cumulative::ManFixPSETaskBwd> {
386
+ public:
387
+ /// The task type
388
+ typedef Cumulative::ManFixPSETask Task;
389
+ };
390
+
391
+ /// Task view traits for forward optional task views
392
+ template<>
393
+ class TaskViewTraits<Cumulative::OptFixPTaskFwd> {
394
+ public:
395
+ /// The task type
396
+ typedef Cumulative::OptFixPTask Task;
397
+ };
398
+
399
+ /// Task view traits for backward task views
400
+ template<>
401
+ class TaskViewTraits<Cumulative::OptFixPTaskBwd> {
402
+ public:
403
+ /// The task type
404
+ typedef Cumulative::OptFixPTask Task;
405
+ };
406
+
407
+ /// Task view traits for forward optional task views
408
+ template<>
409
+ class TaskViewTraits<Cumulative::OptFixPSETaskFwd> {
410
+ public:
411
+ /// The task type
412
+ typedef Cumulative::OptFixPSETask Task;
413
+ };
414
+
415
+ /// Task view traits for backward task views
416
+ template<>
417
+ class TaskViewTraits<Cumulative::OptFixPSETaskBwd> {
418
+ public:
419
+ /// The task type
420
+ typedef Cumulative::OptFixPSETask Task;
421
+ };
422
+
423
+ /// Task view traits for forward task views
424
+ template<>
425
+ class TaskViewTraits<Cumulative::ManFlexTaskFwd> {
426
+ public:
427
+ /// The task type
428
+ typedef Cumulative::ManFlexTask Task;
429
+ };
430
+
431
+ /// Task view traits for backward task views
432
+ template<>
433
+ class TaskViewTraits<Cumulative::ManFlexTaskBwd> {
434
+ public:
435
+ /// The task type
436
+ typedef Cumulative::ManFlexTask Task;
437
+ };
438
+
439
+ /// Task view traits for forward optional task views
440
+ template<>
441
+ class TaskViewTraits<Cumulative::OptFlexTaskFwd> {
442
+ public:
443
+ /// The task type
444
+ typedef Cumulative::OptFlexTask Task;
445
+ };
446
+
447
+ /// Task view traits for backward task views
448
+ template<>
449
+ class TaskViewTraits<Cumulative::OptFlexTaskBwd> {
450
+ public:
451
+ /// The task type
452
+ typedef Cumulative::OptFlexTask Task;
453
+ };
454
+
455
+
456
+ /// Task traits for mandatory fixed tasks
457
+ template<>
458
+ class TaskTraits<Cumulative::ManFixPTask> {
459
+ public:
460
+ /// The forward task view type
461
+ typedef Cumulative::ManFixPTaskFwd TaskViewFwd;
462
+ /// The backward task view type
463
+ typedef Cumulative::ManFixPTaskBwd TaskViewBwd;
464
+ /// The corresponding unary task type
465
+ typedef Unary::ManFixPTask UnaryTask;
466
+ };
467
+
468
+ /// Task traits for mandatory fixed tasks
469
+ template<>
470
+ class TaskTraits<Cumulative::ManFixPSETask> {
471
+ public:
472
+ /// The forward task view type
473
+ typedef Cumulative::ManFixPSETaskFwd TaskViewFwd;
474
+ /// The backward task view type
475
+ typedef Cumulative::ManFixPSETaskBwd TaskViewBwd;
476
+ /// The corresponding unary task type
477
+ typedef Unary::ManFixPSETask UnaryTask;
478
+ };
479
+
480
+ /// Task traits for optional fixed tasks
481
+ template<>
482
+ class TaskTraits<Cumulative::OptFixPTask> {
483
+ public:
484
+ /// The forward task view type
485
+ typedef Cumulative::OptFixPTaskFwd TaskViewFwd;
486
+ /// The backward task view type
487
+ typedef Cumulative::OptFixPTaskBwd TaskViewBwd;
488
+ /// The corresponding mandatory task
489
+ typedef Cumulative::ManFixPTask ManTask;
490
+ /// The corresponding unary task type
491
+ typedef Unary::OptFixPTask UnaryTask;
492
+ };
493
+
494
+ /// Task traits for optional fixed tasks
495
+ template<>
496
+ class TaskTraits<Cumulative::OptFixPSETask> {
497
+ public:
498
+ /// The forward task view type
499
+ typedef Cumulative::OptFixPSETaskFwd TaskViewFwd;
500
+ /// The backward task view type
501
+ typedef Cumulative::OptFixPSETaskBwd TaskViewBwd;
502
+ /// The corresponding mandatory task
503
+ typedef Cumulative::ManFixPSETask ManTask;
504
+ /// The corresponding unary task type
505
+ typedef Unary::OptFixPSETask UnaryTask;
506
+ };
507
+
508
+ /// Task traits for mandatory flexible tasks
509
+ template<>
510
+ class TaskTraits<Cumulative::ManFlexTask> {
511
+ public:
512
+ /// The forward task view type
513
+ typedef Cumulative::ManFlexTaskFwd TaskViewFwd;
514
+ /// The backward task view type
515
+ typedef Cumulative::ManFlexTaskBwd TaskViewBwd;
516
+ /// The corresponding unary task type
517
+ typedef Unary::ManFlexTask UnaryTask;
518
+ };
519
+
520
+ /// Task traits for optional flexible tasks
521
+ template<>
522
+ class TaskTraits<Cumulative::OptFlexTask> {
523
+ public:
524
+ /// The forward task view type
525
+ typedef Cumulative::OptFlexTaskFwd TaskViewFwd;
526
+ /// The backward task view type
527
+ typedef Cumulative::OptFlexTaskBwd TaskViewBwd;
528
+ /// The corresponding mandatory task
529
+ typedef Cumulative::ManFlexTask ManTask;
530
+ /// The corresponding unary task type
531
+ typedef Unary::OptFlexTask UnaryTask;
532
+ };
533
+
534
+ }}
535
+
536
+ namespace Gecode { namespace Int { namespace Cumulative {
537
+
538
+ /// Node for an omega tree
539
+ class OmegaNode {
540
+ public:
541
+ /// Energy for subtree
542
+ double e;
543
+ /// Energy envelope for subtree
544
+ double env;
545
+ /// Initialize node from left child \a l and right child \a r
546
+ void init(const OmegaNode& l, const OmegaNode& r);
547
+ /// Update node from left child \a l and right child \a r
548
+ void update(const OmegaNode& l, const OmegaNode& r);
549
+ };
550
+
551
+ /// Omega trees for computing ect of task sets
552
+ template<class TaskView>
553
+ class OmegaTree : public TaskTree<TaskView,OmegaNode> {
554
+ protected:
555
+ using TaskTree<TaskView,OmegaNode>::tasks;
556
+ using TaskTree<TaskView,OmegaNode>::leaf;
557
+ using TaskTree<TaskView,OmegaNode>::root;
558
+ using TaskTree<TaskView,OmegaNode>::init;
559
+ using TaskTree<TaskView,OmegaNode>::update;
560
+ /// Capacity
561
+ int c;
562
+ public:
563
+ /// Initialize tree for tasks \a t and capacity \a c
564
+ OmegaTree(Region& r, int c, const TaskViewArray<TaskView>& t);
565
+ /// Insert task with index \a i
566
+ void insert(int i);
567
+ /// Remove task with index \a i
568
+ void remove(int i);
569
+ /// Return energy envelope of all tasks
570
+ double env(void) const;
571
+ };
572
+
573
+ /// Node for an extended omega tree
574
+ class ExtOmegaNode : public OmegaNode {
575
+ public:
576
+ /// Energy envelope for subtree
577
+ double cenv;
578
+ /// Initialize node from left child \a l and right child \a r
579
+ void init(const ExtOmegaNode& l, const ExtOmegaNode& r);
580
+ /// Update node from left child \a l and right child \a r
581
+ void update(const ExtOmegaNode& l, const ExtOmegaNode& r);
582
+ };
583
+
584
+ /// Omega trees for computing ect of task sets
585
+ template<class TaskView>
586
+ class ExtOmegaTree : public TaskTree<TaskView,ExtOmegaNode> {
587
+ protected:
588
+ using TaskTree<TaskView,ExtOmegaNode>::tasks;
589
+ using TaskTree<TaskView,ExtOmegaNode>::leaf;
590
+ using TaskTree<TaskView,ExtOmegaNode>::root;
591
+ using TaskTree<TaskView,ExtOmegaNode>::init;
592
+ using TaskTree<TaskView,ExtOmegaNode>::update;
593
+ using TaskTree<TaskView,ExtOmegaNode>::node;
594
+ using TaskTree<TaskView,ExtOmegaNode>::n_leaf;
595
+ using TaskTree<TaskView,ExtOmegaNode>::n_left;
596
+ using TaskTree<TaskView,ExtOmegaNode>::left;
597
+ using TaskTree<TaskView,ExtOmegaNode>::n_right;
598
+ using TaskTree<TaskView,ExtOmegaNode>::right;
599
+ using TaskTree<TaskView,ExtOmegaNode>::n_root;
600
+ using TaskTree<TaskView,ExtOmegaNode>::n_parent;
601
+ using TaskTree<TaskView,ExtOmegaNode>::n_nodes;
602
+ using TaskTree<TaskView,ExtOmegaNode>::_leaf;
603
+ /// Capacity
604
+ int c, ci;
605
+ public:
606
+ /// Initialize tree for tasks \a t and capacity \a c
607
+ template<class Node>
608
+ ExtOmegaTree(Region& r, int c, const TaskTree<TaskView,Node>& t);
609
+ /// Initialize tasks for current capacity \a ci
610
+ void init(int ci);
611
+ /// Compute update for task with index \a i
612
+ double env(int i);
613
+ };
614
+
615
+
616
+ /// Node for an omega lambda tree
617
+ class OmegaLambdaNode : public OmegaNode {
618
+ public:
619
+ /// Undefined task
620
+ static const int undef = -1;
621
+ /// Energy for subtree
622
+ double le;
623
+ /// Energy envelope for subtree
624
+ double lenv;
625
+ /// Node which is responsible for le
626
+ int resLe;
627
+ /// Node which is responsible for lenv
628
+ int resLenv;
629
+ /// Initialize node from left child \a l and right child \a r
630
+ void init(const OmegaLambdaNode& l, const OmegaLambdaNode& r);
631
+ /// Update node from left child \a l and right child \a r
632
+ void update(const OmegaLambdaNode& l, const OmegaLambdaNode& r);
633
+ };
634
+
635
+ /// Omega-lambda trees for computing ect of task sets
636
+ template<class TaskView>
637
+ class OmegaLambdaTree : public TaskTree<TaskView,OmegaLambdaNode> {
638
+ protected:
639
+ using TaskTree<TaskView,OmegaLambdaNode>::tasks;
640
+ using TaskTree<TaskView,OmegaLambdaNode>::leaf;
641
+ using TaskTree<TaskView,OmegaLambdaNode>::root;
642
+ using TaskTree<TaskView,OmegaLambdaNode>::init;
643
+ using TaskTree<TaskView,OmegaLambdaNode>::update;
644
+ /// Capacity
645
+ int c;
646
+ public:
647
+ /// Initialize tree for tasks \a t and capcity \a c with all tasks included in omega
648
+ OmegaLambdaTree(Region& r, int c, const TaskViewArray<TaskView>& t);
649
+ /// Shift task with index \a i from omega to lambda
650
+ void shift(int i);
651
+ /// Remove task with index \a i from lambda
652
+ void lremove(int i);
653
+ /// Whether has responsible task
654
+ bool lempty(void) const;
655
+ /// Return responsible task
656
+ int responsible(void) const;
657
+ /// Return energy envelope of all tasks
658
+ double env(void) const;
659
+ /// Return energy envelope of all tasks excluding lambda tasks
660
+ double lenv(void) const;
661
+ };
662
+
663
+ }}}
664
+
665
+ #include <gecode/int/cumulative/tree.hpp>
666
+
667
+ namespace Gecode { namespace Int { namespace Cumulative {
668
+
669
+ /// Perform basic propagation
670
+ template<class Task, class Cap>
671
+ ExecStatus basic(Space& home, bool& subsumed, Cap c, TaskArray<Task>& t);
672
+
673
+ /// Check mandatory tasks \a t for overload
674
+ template<class ManTask>
675
+ ExecStatus overload(Space& home, int c, TaskArray<ManTask>& t);
676
+
677
+ /// Propagate by edge finding
678
+ template<class Task>
679
+ ExecStatus edgefinding(Space& home, int c, TaskArray<Task>& t);
680
+
681
+ /**
682
+ * \brief Scheduling propagator for cumulative resource with mandatory tasks
683
+ *
684
+ * Requires \code #include <gecode/int/cumulative.hh> \endcode
685
+ * \ingroup FuncIntProp
686
+ */
687
+ template<class ManTask, class Cap>
688
+ class ManProp : public TaskProp<ManTask,Int::PC_INT_DOM> {
689
+ protected:
690
+ using TaskProp<ManTask,Int::PC_INT_DOM>::t;
691
+ /// Resource capacity
692
+ Cap c;
693
+ /// Constructor for creation
694
+ ManProp(Home home, Cap c, TaskArray<ManTask>& t);
695
+ /// Constructor for cloning \a p
696
+ ManProp(Space& home, bool shared, ManProp& p);
697
+ public:
698
+ /// Perform copying during cloning
699
+ virtual Actor* copy(Space& home, bool share);
700
+ /// Perform propagation
701
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
702
+ /// Post propagator that schedules tasks on cumulative resource
703
+ static ExecStatus post(Home home, Cap c, TaskArray<ManTask>& t);
704
+ /// Delete propagator and return its size
705
+ virtual size_t dispose(Space& home);
706
+ };
707
+
708
+ /**
709
+ * \brief Scheduling propagator for cumulative resource with optional tasks
710
+ *
711
+ * Requires \code #include <gecode/int/cumulative.hh> \endcode
712
+ * \ingroup FuncIntProp
713
+ */
714
+ template<class OptTask, class Cap>
715
+ class OptProp : public TaskProp<OptTask,Int::PC_INT_DOM> {
716
+ protected:
717
+ using TaskProp<OptTask,Int::PC_INT_DOM>::t;
718
+ /// Resource capacity
719
+ Cap c;
720
+ /// Constructor for creation
721
+ OptProp(Home home, Cap c, TaskArray<OptTask>& t);
722
+ /// Constructor for cloning \a p
723
+ OptProp(Space& home, bool shared, OptProp& p);
724
+ public:
725
+ /// Perform copying during cloning
726
+ virtual Actor* copy(Space& home, bool share);
727
+ /// Perform propagation
728
+ virtual ExecStatus propagate(Space& home, const ModEventDelta& med);
729
+ /// Post propagator that schedules tasks on cumulative resource
730
+ static ExecStatus post(Home home, Cap c, TaskArray<OptTask>& t);
731
+ /// Delete propagator and return its size
732
+ virtual size_t dispose(Space& home);
733
+ };
734
+
735
+ }}}
736
+
737
+ #include <gecode/int/cumulative/basic.hpp>
738
+ #include <gecode/int/cumulative/overload.hpp>
739
+ #include <gecode/int/cumulative/edge-finding.hpp>
740
+ #include <gecode/int/cumulative/man-prop.hpp>
741
+ #include <gecode/int/cumulative/opt-prop.hpp>
742
+
743
+ #endif
744
+
745
+ // STATISTICS: int-prop