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,171 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2003
8
+ *
9
+ * Last modified:
10
+ * $Date: 2011-09-08 22:34:40 +1000 (Thu, 08 Sep 2011) $ by $Author: schulte $
11
+ * $Revision: 12395 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ namespace Gecode { namespace Int { namespace ViewValGraph {
39
+
40
+ /*
41
+ * Nodes
42
+ *
43
+ */
44
+
45
+ template<class View>
46
+ forceinline
47
+ Node<View>::Node(void) : min(0) {
48
+ // Must be initialized such that the node is considered unvisited initially
49
+ }
50
+ template<class View>
51
+ forceinline Edge<View>*
52
+ Node<View>::edge_fst(void) const {
53
+ return static_cast<Edge<View>*>(BiLink::next());
54
+ }
55
+ template<class View>
56
+ forceinline Edge<View>*
57
+ Node<View>::edge_lst(void) const {
58
+ return static_cast<Edge<View>*>(static_cast<BiLink*>(const_cast<Node<View>*>(this)));
59
+ }
60
+ template<class View>
61
+ forceinline void
62
+ Node<View>::operator delete(void*, size_t) {}
63
+ template<class View>
64
+ forceinline void
65
+ Node<View>::operator delete(void*,Space&) {}
66
+ template<class View>
67
+ forceinline void*
68
+ Node<View>::operator new(size_t s, Space& home) {
69
+ return home.ralloc(s);
70
+ }
71
+
72
+ /*
73
+ * Value nodes
74
+ *
75
+ */
76
+
77
+
78
+ template<class View>
79
+ forceinline
80
+ ValNode<View>::ValNode(int v)
81
+ : _val(v), _matching(NULL) {}
82
+ template<class View>
83
+ forceinline
84
+ ValNode<View>::ValNode(int v, ValNode<View>* n)
85
+ : _val(v), _matching(NULL), _next_val(n) {}
86
+ template<class View>
87
+ forceinline int
88
+ ValNode<View>::val(void) const {
89
+ return _val;
90
+ }
91
+ template<class View>
92
+ forceinline void
93
+ ValNode<View>::matching(Edge<View>* m) {
94
+ _matching = m;
95
+ }
96
+ template<class View>
97
+ forceinline Edge<View>*
98
+ ValNode<View>::matching(void) const {
99
+ return _matching;
100
+ }
101
+ template<class View>
102
+ forceinline ValNode<View>**
103
+ ValNode<View>::next_val_ref(void) {
104
+ return &_next_val;
105
+ }
106
+ template<class View>
107
+ forceinline ValNode<View>*
108
+ ValNode<View>::next_val(void) const {
109
+ return _next_val;
110
+ }
111
+ template<class View>
112
+ forceinline void
113
+ ValNode<View>::next_val(ValNode<View>* n) {
114
+ _next_val = n;
115
+ }
116
+
117
+
118
+
119
+ /*
120
+ * View nodes
121
+ *
122
+ */
123
+
124
+ template<class View>
125
+ forceinline
126
+ ViewNode<View>::ViewNode(void)
127
+ : _view(View(NULL)) {}
128
+ template<class View>
129
+ forceinline
130
+ ViewNode<View>::ViewNode(View x)
131
+ : _size(x.size()), _view(x) {}
132
+ template<class View>
133
+ forceinline Edge<View>*
134
+ ViewNode<View>::val_edges(void) const {
135
+ return _val_edges;
136
+ }
137
+ template<class View>
138
+ forceinline Edge<View>**
139
+ ViewNode<View>::val_edges_ref(void) {
140
+ return &_val_edges;
141
+ }
142
+ template<class View>
143
+ forceinline bool
144
+ ViewNode<View>::fake(void) const {
145
+ return _view.varimp() == NULL;
146
+ }
147
+ template<class View>
148
+ forceinline View
149
+ ViewNode<View>::view(void) const {
150
+ return _view;
151
+ }
152
+ template<class View>
153
+ forceinline bool
154
+ ViewNode<View>::changed(void) const {
155
+ return _size != _view.size();
156
+ }
157
+ template<class View>
158
+ forceinline void
159
+ ViewNode<View>::update(void) {
160
+ _size = _view.size();
161
+ }
162
+ template<class View>
163
+ forceinline bool
164
+ ViewNode<View>::matched(void) const {
165
+ return Node<View>::edge_fst() != Node<View>::edge_lst();
166
+ }
167
+
168
+ }}}
169
+
170
+ // STATISTICS: int-prop
171
+
@@ -0,0 +1,1690 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2005
8
+ *
9
+ * Last modified:
10
+ * $Date: 2011-09-28 22:50:49 +1000 (Wed, 28 Sep 2011) $ by $Author: tack $
11
+ * $Revision: 12418 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ #include <iostream>
39
+
40
+ #if (-17 / 7) == -2
41
+ #define GECODE_INT_RND_TWDS_ZERO 1
42
+ #else
43
+ #define GECODE_INT_RND_TWDS_ZERO 0
44
+ #endif
45
+
46
+ namespace Gecode { namespace Int {
47
+
48
+ /**
49
+ * \brief Range iterator for integer views
50
+ *
51
+ * This class provides (by specialization) a range iterator
52
+ * for all integer views.
53
+ *
54
+ * Note that this template class serves only as a specification
55
+ * of the interface of the various specializations.
56
+ *
57
+ * \ingroup TaskActorInt
58
+ */
59
+ template<class View>
60
+ class ViewRanges {
61
+ public:
62
+ /// \name Constructors and initialization
63
+ //@{
64
+ /// Default constructor
65
+ ViewRanges(void);
66
+ /// Initialize with ranges for view \a x
67
+ ViewRanges(const View& x);
68
+ /// Initialize with ranges for view \a x
69
+ void init(const View& x);
70
+ //@}
71
+
72
+ /// \name Iteration control
73
+ //@{
74
+ /// Test whether iterator is still at a range or done
75
+ bool operator ()(void) const;
76
+ /// Move iterator to next range (if possible)
77
+ void operator ++(void);
78
+ //@}
79
+
80
+ /// \name Range access
81
+ //@{
82
+ /// Return smallest value of range
83
+ int min(void) const;
84
+ /// Return largest value of range
85
+ int max(void) const;
86
+ /// Return width of range (distance between minimum and maximum)
87
+ unsigned int width(void) const;
88
+ //@}
89
+ };
90
+
91
+ /**
92
+ * \brief Value iterator for integer views
93
+ *
94
+ * This class provides a value iterator for all
95
+ * integer views.
96
+ *
97
+ * \ingroup TaskActorInt
98
+ */
99
+ template<class View>
100
+ class ViewValues : public Iter::Ranges::ToValues<ViewRanges<View> > {
101
+ public:
102
+ /// \name Constructors and initialization
103
+ //@{
104
+ /// Default constructor
105
+ ViewValues(void);
106
+ /// Initialize with values for \a x
107
+ ViewValues(const View& x);
108
+ /// Initialize with values \a x
109
+ void init(const View& x);
110
+ //@}
111
+ };
112
+
113
+ }}
114
+
115
+ #include <gecode/int/view/iter.hpp>
116
+
117
+ namespace Gecode { namespace Int {
118
+
119
+ /**
120
+ * \defgroup TaskActorIntView Integer views
121
+ *
122
+ * Integer propagators and branchers compute with integer views.
123
+ * Integer views provide views on integer variable implementations,
124
+ * integer constants, and also allow to scale, translate, and negate
125
+ * variables. Additionally, a special Boolean view is provided that
126
+ * offers convenient and efficient operations for Boolean (0/1)
127
+ * views.
128
+ * \ingroup TaskActorInt
129
+ */
130
+
131
+ /**
132
+ * \brief Integer view for integer variables
133
+ * \ingroup TaskActorIntView
134
+ */
135
+ class IntView : public VarImpView<IntVar> {
136
+ protected:
137
+ using VarImpView<IntVar>::x;
138
+ public:
139
+ /// \name Constructors and initialization
140
+ //@{
141
+ /// Default constructor
142
+ IntView(void);
143
+ /// Initialize from integer variable \a y
144
+ IntView(const IntVar& y);
145
+ /// Initialize from integer variable \a y
146
+ IntView(IntVarImp* y);
147
+ //@}
148
+
149
+ /// \name Value access
150
+ //@{
151
+ /// Return minimum of domain
152
+ int min(void) const;
153
+ /// Return maximum of domain
154
+ int max(void) const;
155
+ /// Return median of domain (greatest element not greater than the median)
156
+ int med(void) const;
157
+ /// Return assigned value (only if assigned)
158
+ int val(void) const;
159
+
160
+ /// Return size (cardinality) of domain
161
+ unsigned int size(void) const;
162
+ /// Return width of domain (distance between maximum and minimum)
163
+ unsigned int width(void) const;
164
+ /// Return regret of domain minimum (distance to next larger value)
165
+ unsigned int regret_min(void) const;
166
+ /// Return regret of domain maximum (distance to next smaller value)
167
+ unsigned int regret_max(void) const;
168
+ //@}
169
+
170
+ /// \name Domain tests
171
+ //@{
172
+ /// Test whether domain is a range
173
+ bool range(void) const;
174
+
175
+ /// Test whether \a n is contained in domain
176
+ bool in(int n) const;
177
+ /// Test whether \a n is contained in domain
178
+ bool in(double n) const;
179
+ //@}
180
+
181
+ /// \name Domain update by value
182
+ //@{
183
+ /// Restrict domain values to be less or equal than \a n
184
+ ModEvent lq(Space& home, int n);
185
+ /// Restrict domain values to be less or equal than \a n
186
+ ModEvent lq(Space& home, double n);
187
+
188
+ /// Restrict domain values to be less than \a n
189
+ ModEvent le(Space& home, int n);
190
+ /// Restrict domain values to be less than \a n
191
+ ModEvent le(Space& home, double n);
192
+
193
+ /// Restrict domain values to be greater or equal than \a n
194
+ ModEvent gq(Space& home, int n);
195
+ /// Restrict domain values to be greater or equal than \a n
196
+ ModEvent gq(Space& home, double n);
197
+
198
+ /// Restrict domain values to be greater than \a n
199
+ ModEvent gr(Space& home, int n);
200
+ /// Restrict domain values to be greater than \a n
201
+ ModEvent gr(Space& home, double n);
202
+ /// Restrict domain values to be different from \a n
203
+ ModEvent nq(Space& home, int n);
204
+ /// Restrict domain values to be different from \a n
205
+ ModEvent nq(Space& home, double n);
206
+
207
+ /// Restrict domain values to be equal to \a n
208
+ ModEvent eq(Space& home, int n);
209
+ /// Restrict domain values to be equal to \a n
210
+ ModEvent eq(Space& home, double n);
211
+ //@}
212
+
213
+ /**
214
+ * \name Domain update by iterator
215
+ *
216
+ * Views can be both updated by range and value iterators.
217
+ * Value iterators do not need to be strict in that the same value
218
+ * is allowed to occur more than once in the iterated sequence.
219
+ *
220
+ * The argument \a depends must be true, if the iterator
221
+ * passed as argument depends on the view on which the operation
222
+ * is invoked. In this case, the view is only updated after the
223
+ * iterator has been consumed. Otherwise, the domain might be updated
224
+ * concurrently while following the iterator.
225
+ *
226
+ */
227
+ //@{
228
+ /// Replace domain by ranges described by \a i
229
+ template<class I>
230
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
231
+ /// Intersect domain with ranges described by \a i
232
+ template<class I>
233
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
234
+ /// Remove from domain the ranges described by \a i
235
+ template<class I>
236
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
237
+ /// Replace domain by values described by \a i
238
+ template<class I>
239
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
240
+ /// Intersect domain with values described by \a i
241
+ template<class I>
242
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
243
+ /// Remove from domain the values described by \a i
244
+ template<class I>
245
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
246
+ //@}
247
+
248
+ /// \name Delta information for advisors
249
+ //@{
250
+ /// Return minimum value just pruned
251
+ int min(const Delta& d) const;
252
+ /// Return maximum value just pruned
253
+ int max(const Delta& d) const;
254
+ /// Test whether arbitrary values got pruned
255
+ bool any(const Delta& d) const;
256
+ //@}
257
+
258
+ /// \name View-dependent propagator support
259
+ //@{
260
+ /// Translate modification event \a me to modification event delta for view
261
+ static ModEventDelta med(ModEvent me);
262
+ //@}
263
+ };
264
+
265
+ /**
266
+ * \brief Print integer variable view
267
+ * \relates Gecode::Int::IntView
268
+ */
269
+ template<class Char, class Traits>
270
+ std::basic_ostream<Char,Traits>&
271
+ operator <<(std::basic_ostream<Char,Traits>& os, const IntView& x);
272
+
273
+
274
+ /**
275
+ * \brief Minus integer view
276
+ *
277
+ * A minus integer view \f$m\f$ for an integer view \f$x\f$ provides
278
+ * operations such that \f$m\f$ behaves as \f$-x\f$.
279
+ * \ingroup TaskActorIntView
280
+ */
281
+ class MinusView : public DerivedView<IntView> {
282
+ protected:
283
+ using DerivedView<IntView>::x;
284
+ public:
285
+ /// \name Constructors and initialization
286
+ //@{
287
+ /// Default constructor
288
+ MinusView(void);
289
+ /// Initialize with integer view \a y
290
+ explicit MinusView(const IntView& y);
291
+ //@}
292
+
293
+ /// \name Value access
294
+ //@{
295
+ /// Return minimum of domain
296
+ int min(void) const;
297
+ /// Return maximum of domain
298
+ int max(void) const;
299
+ /// Return median of domain
300
+ int med(void) const;
301
+ /// Return assigned value (only if assigned)
302
+ int val(void) const;
303
+
304
+ /// Return size (cardinality) of domain
305
+ unsigned int size(void) const;
306
+ /// Return width of domain (distance between maximum and minimum)
307
+ unsigned int width(void) const;
308
+ /// Return regret of domain minimum (distance to next larger value)
309
+ unsigned int regret_min(void) const;
310
+ /// Return regret of domain maximum (distance to next smaller value)
311
+ unsigned int regret_max(void) const;
312
+ //@}
313
+
314
+ /// \name Domain tests
315
+ //@{
316
+ /// Test whether domain is a range
317
+ bool range(void) const;
318
+
319
+ /// Test whether \a n is contained in domain
320
+ bool in(int n) const;
321
+ /// Test whether \a n is contained in domain
322
+ bool in(double n) const;
323
+ //@}
324
+
325
+ /// \name Domain update by value
326
+ //@{
327
+ /// Restrict domain values to be less or equal than \a n
328
+ ModEvent lq(Space& home, int n);
329
+ /// Restrict domain values to be less or equal than \a n
330
+ ModEvent lq(Space& home, double n);
331
+ /// Restrict domain values to be less than \a n
332
+ ModEvent le(Space& home, int n);
333
+ /// Restrict domain values to be less than \a n
334
+ ModEvent le(Space& home, double n);
335
+ /// Restrict domain values to be greater or equal than \a n
336
+ ModEvent gq(Space& home, int n);
337
+ /// Restrict domain values to be greater or equal than \a n
338
+ ModEvent gq(Space& home, double n);
339
+ /// Restrict domain values to be greater than \a n
340
+ ModEvent gr(Space& home, int n);
341
+ /// Restrict domain values to be greater than \a n
342
+ ModEvent gr(Space& home, double n);
343
+ /// Restrict domain values to be different from \a n
344
+ ModEvent nq(Space& home, int n);
345
+ /// Restrict domain values to be different from \a n
346
+ ModEvent nq(Space& home, double n);
347
+ /// Restrict domain values to be equal to \a n
348
+ ModEvent eq(Space& home, int n);
349
+ /// Restrict domain values to be equal to \a n
350
+ ModEvent eq(Space& home, double n);
351
+ //@}
352
+
353
+ /**
354
+ * \name Domain update by iterator
355
+ *
356
+ * Views can be both updated by range and value iterators.
357
+ * Value iterators do not need to be strict in that the same value
358
+ * is allowed to occur more than once in the iterated sequence.
359
+ *
360
+ * The argument \a depends must be true, if the iterator
361
+ * passed as argument depends on the view on which the operation
362
+ * is invoked. In this case, the view is only updated after the
363
+ * iterator has been consumed. Otherwise, the domain might be updated
364
+ * concurrently while following the iterator.
365
+ *
366
+ */
367
+ //@{
368
+ /// Replace domain by ranges described by \a i
369
+ template<class I>
370
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
371
+ /// Intersect domain with ranges described by \a i
372
+ template<class I>
373
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
374
+ /// Remove from domain the ranges described by \a i
375
+ template<class I>
376
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
377
+ /// Replace domain by values described by \a i
378
+ template<class I>
379
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
380
+ /// Intersect domain with values described by \a i
381
+ template<class I>
382
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
383
+ /// Remove from domain the values described by \a i
384
+ template<class I>
385
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
386
+ //@}
387
+
388
+ /// \name View-dependent propagator support
389
+ //@{
390
+ /// Translate modification event \a me to modification event delta for view
391
+ static ModEventDelta med(ModEvent me);
392
+ //@}
393
+
394
+ /// \name Delta information for advisors
395
+ //@{
396
+ /// Return minimum value just pruned
397
+ int min(const Delta& d) const;
398
+ /// Return maximum value just pruned
399
+ int max(const Delta& d) const;
400
+ /// Test whether arbitrary values got pruned
401
+ bool any(const Delta& d) const;
402
+ //@}
403
+ };
404
+
405
+ /**
406
+ * \brief Print integer minus view
407
+ * \relates Gecode::Int::MinusView
408
+ */
409
+ template<class Char, class Traits>
410
+ std::basic_ostream<Char,Traits>&
411
+ operator <<(std::basic_ostream<Char,Traits>& os, const MinusView& x);
412
+
413
+
414
+ /**
415
+ * \brief Offset integer view
416
+ *
417
+ * An offset integer view \f$o\f$ for an integer view \f$x\f$ and
418
+ * an integer \f$c\f$ provides operations such that \f$o\f$
419
+ * behaves as \f$x+c\f$.
420
+ * \ingroup TaskActorIntView
421
+ */
422
+ class OffsetView : public DerivedView<IntView> {
423
+ protected:
424
+ /// Offset
425
+ int c;
426
+ using DerivedView<IntView>::x;
427
+ public:
428
+ /// \name Constructors and initialization
429
+ //@{
430
+ /// Default constructor
431
+ OffsetView(void);
432
+ /// Initialize with integer view \a y and offset \a c
433
+ OffsetView(const IntView& y, int c);
434
+ //@}
435
+
436
+ /// \name Value access
437
+ //@{
438
+ /// Return offset
439
+ int offset(void) const;
440
+ /// Change offset to \a n
441
+ void offset(int n);
442
+ /// Return minimum of domain
443
+ int min(void) const;
444
+ /// Return maximum of domain
445
+ int max(void) const;
446
+ /// Return median of domain (greatest element not greater than the median)
447
+ int med(void) const;
448
+ /// Return assigned value (only if assigned)
449
+ int val(void) const;
450
+
451
+ /// Return size (cardinality) of domain
452
+ unsigned int size(void) const;
453
+ /// Return width of domain (distance between maximum and minimum)
454
+ unsigned int width(void) const;
455
+ /// Return regret of domain minimum (distance to next larger value)
456
+ unsigned int regret_min(void) const;
457
+ /// Return regret of domain maximum (distance to next smaller value)
458
+ unsigned int regret_max(void) const;
459
+ //@}
460
+
461
+ /// \name Domain tests
462
+ //@{
463
+ /// Test whether domain is a range
464
+ bool range(void) const;
465
+
466
+ /// Test whether \a n is contained in domain
467
+ bool in(int n) const;
468
+ /// Test whether \a n is contained in domain
469
+ bool in(double n) const;
470
+ //@}
471
+
472
+ /// \name Domain update by value
473
+ //@{
474
+ /// Restrict domain values to be less or equal than \a n
475
+ ModEvent lq(Space& home, int n);
476
+ /// Restrict domain values to be less or equal than \a n
477
+ ModEvent lq(Space& home, double n);
478
+ /// Restrict domain values to be less than \a n
479
+ ModEvent le(Space& home, int n);
480
+ /// Restrict domain values to be less than \a n
481
+ ModEvent le(Space& home, double n);
482
+ /// Restrict domain values to be greater or equal than \a n
483
+ ModEvent gq(Space& home, int n);
484
+ /// Restrict domain values to be greater or equal than \a n
485
+ ModEvent gq(Space& home, double n);
486
+ /// Restrict domain values to be greater than \a n
487
+ ModEvent gr(Space& home, int n);
488
+ /// Restrict domain values to be greater than \a n
489
+ ModEvent gr(Space& home, double n);
490
+ /// Restrict domain values to be different from \a n
491
+ ModEvent nq(Space& home, int n);
492
+ /// Restrict domain values to be different from \a n
493
+ ModEvent nq(Space& home, double n);
494
+ /// Restrict domain values to be equal to \a n
495
+ ModEvent eq(Space& home, int n);
496
+ /// Restrict domain values to be equal to \a n
497
+ ModEvent eq(Space& home, double n);
498
+ //@}
499
+
500
+ /**
501
+ * \name Domain update by iterator
502
+ *
503
+ * Views can be both updated by range and value iterators.
504
+ * Value iterators do not need to be strict in that the same value
505
+ * is allowed to occur more than once in the iterated sequence.
506
+ *
507
+ * The argument \a depends must be true, if the iterator
508
+ * passed as argument depends on the view on which the operation
509
+ * is invoked. In this case, the view is only updated after the
510
+ * iterator has been consumed. Otherwise, the domain might be updated
511
+ * concurrently while following the iterator.
512
+ *
513
+ */
514
+ //@{
515
+ /// Replace domain by ranges described by \a i
516
+ template<class I>
517
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
518
+ /// Intersect domain with ranges described by \a i
519
+ template<class I>
520
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
521
+ /// Remove from domain the ranges described by \a i
522
+ template<class I>
523
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
524
+ /// Replace domain by values described by \a i
525
+ template<class I>
526
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
527
+ /// Intersect domain with values described by \a i
528
+ template<class I>
529
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
530
+ /// Remove from domain the values described by \a i
531
+ template<class I>
532
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
533
+ //@}
534
+
535
+ /// \name View-dependent propagator support
536
+ //@{
537
+ /// Translate modification event \a me to modification event delta for view
538
+ static ModEventDelta med(ModEvent me);
539
+ //@}
540
+
541
+ /// \name Delta information for advisors
542
+ //@{
543
+ /// Return minimum value just pruned
544
+ int min(const Delta& d) const;
545
+ /// Return maximum value just pruned
546
+ int max(const Delta& d) const;
547
+ /// Test whether arbitrary values got pruned
548
+ bool any(const Delta& d) const;
549
+ //@}
550
+
551
+ /// \name Cloning
552
+ //@{
553
+ /// Update this view to be a clone of view \a y
554
+ void update(Space& home, bool share, OffsetView& y);
555
+ //@}
556
+ };
557
+
558
+ /**
559
+ * \brief Print integer offset view
560
+ * \relates Gecode::Int::OffsetView
561
+ */
562
+ template<class Char, class Traits>
563
+ std::basic_ostream<Char,Traits>&
564
+ operator <<(std::basic_ostream<Char,Traits>& os, const OffsetView& x);
565
+
566
+ /** \name View comparison
567
+ * \relates Gecode::Int::OffsetView
568
+ */
569
+ //@{
570
+ /// Test whether views \a x and \a y are the same
571
+ bool same(const OffsetView& x, const OffsetView& y);
572
+ /// Test whether view \a x comes before \a y (arbitrary order)
573
+ bool before(const OffsetView& x, const OffsetView& y);
574
+ //@}
575
+
576
+ /**
577
+ * \brief Converter without offsets
578
+ */
579
+ template<class View>
580
+ class NoOffset {
581
+ public:
582
+ /// The view type
583
+ typedef View ViewType;
584
+ /// Pass through \a x
585
+ View& operator ()(View& x);
586
+ /// Update during cloning
587
+ void update(const NoOffset&);
588
+ /// Access offset
589
+ int offset(void) const;
590
+ };
591
+
592
+ template<class View>
593
+ forceinline View&
594
+ NoOffset<View>::operator ()(View& x) {
595
+ return x;
596
+ }
597
+
598
+ template<class View>
599
+ forceinline void
600
+ NoOffset<View>::update(const NoOffset&) {}
601
+
602
+ template<class View>
603
+ forceinline int
604
+ NoOffset<View>::offset(void) const {
605
+ return 0;
606
+ }
607
+
608
+
609
+ /**
610
+ * \brief Converter with fixed offset
611
+ */
612
+ class Offset {
613
+ public:
614
+ /// The view type
615
+ typedef OffsetView ViewType;
616
+ /// The offset
617
+ int c;
618
+ /// Constructor with offset \a off
619
+ Offset(int off = 0);
620
+ /// Return OffsetRefView for \a x
621
+ OffsetView operator()(IntView& x);
622
+ /// Update during cloning
623
+ void update(const Offset& o);
624
+ /// Access offset
625
+ int offset(void) const;
626
+ };
627
+
628
+ forceinline
629
+ Offset::Offset(int off) : c(off) {}
630
+
631
+ forceinline void
632
+ Offset::update(const Offset& o) { c = o.c; }
633
+
634
+ forceinline int
635
+ Offset::offset(void) const { return c; }
636
+
637
+ forceinline OffsetView
638
+ Offset::operator ()(IntView& x) {
639
+ return OffsetView(x,c);
640
+ }
641
+
642
+ /**
643
+ * \brief Scale integer view (template)
644
+ *
645
+ * A scale integer view \f$s\f$ for an integer view \f$x\f$ and
646
+ * a non-negative integer \f$a\f$ provides operations such that \f$s\f$
647
+ * behaves as \f$a\cdot x\f$.
648
+ *
649
+ * The precision of a scale integer view is defined by the value types
650
+ * \a Val and \a UnsVal. \a Val can be either \c int or \c double where
651
+ * \a UnsVal must be the unsigned variant of \a Val (that is, if \a Val
652
+ * is \c int, then \a UnsVal must be \c unsigned \c int; if \a Val is
653
+ * \c double, then \a UnsVal must be \c double as well). The range which is
654
+ * allowed for the two types is defined by the values in
655
+ * Gecode::Limits.
656
+ *
657
+ * Note that scale integer views currently do not provide operations
658
+ * for updating domains by range iterators.
659
+ *
660
+ * The template is not to be used directly (as it is very clumsy). Use
661
+ * the following instead:
662
+ * - IntScaleView for scale views with integer precision
663
+ * - DoubleScaleView for scale views with double precision
664
+ *
665
+ * \ingroup TaskActorIntView
666
+ */
667
+ template<class Val, class UnsVal>
668
+ class ScaleView : public DerivedView<IntView> {
669
+ protected:
670
+ using DerivedView<IntView>::x;
671
+ /// Scale factor
672
+ int a;
673
+ /// \name Support functions for division
674
+ //@{
675
+ /// Return \f$\lfloor y/a\rfloor\f$
676
+ Val floor_div(double y) const;
677
+ /// Return \f$\lceil y/a\rceil\f$
678
+ Val ceil_div(double y) const;
679
+ /// Return \f$y/a\f$ and set \a exact to true if \a y is multiple of \a a
680
+ Val exact_div(double y, bool& exact) const;
681
+ #if GECODE_INT_RND_TWDS_ZERO
682
+ /// Return \f$\lfloor y/a\rfloor\f$
683
+ int floor_div(int y) const;
684
+ /// Return \f$\lceil y/a\rceil\f$
685
+ int ceil_div(int y) const;
686
+ /// Return \f$y/a\f$ and set \a exact to true if \a y is multiple of \a a
687
+ int exact_div(int y, bool& exact) const;
688
+ #endif
689
+ //@}
690
+
691
+ public:
692
+ /// \name Constructors and initialization
693
+ //@{
694
+ /// Default constructor
695
+ ScaleView(void);
696
+ /// Initialize as \f$b\cdot y\f$
697
+ ScaleView(int b, const IntView& y);
698
+ //@}
699
+
700
+ /// \name Value access
701
+ //@{
702
+ /// Return scale factor of scale view
703
+ int scale(void) const;
704
+ /// Return minimum of domain
705
+ Val min(void) const;
706
+ /// Return maximum of domain
707
+ Val max(void) const;
708
+ /// Return median of domain (greatest element not greater than the median)
709
+ Val med(void) const;
710
+ /// Return assigned value (only if assigned)
711
+ Val val(void) const;
712
+
713
+ /// Return size (cardinality) of domain
714
+ UnsVal size(void) const;
715
+ /// Return width of domain (distance between maximum and minimum)
716
+ UnsVal width(void) const;
717
+ /// Return regret of domain minimum (distance to next larger value)
718
+ UnsVal regret_min(void) const;
719
+ /// Return regret of domain maximum (distance to next smaller value)
720
+ UnsVal regret_max(void) const;
721
+ //@}
722
+
723
+ /// \name Domain tests
724
+ //@{
725
+ /// Test whether domain is a range
726
+ bool range(void) const;
727
+ /// Test whether \a n is contained in domain
728
+ bool in(Val n) const;
729
+ //@}
730
+
731
+ /// \name Domain update by value
732
+ //@{
733
+ /// Restrict domain values to be less or equal than \a n
734
+ ModEvent lq(Space& home, Val n);
735
+ /// Restrict domain values to be less than \a n
736
+ ModEvent le(Space& home, Val n);
737
+ /// Restrict domain values to be greater or equal than \a n
738
+ ModEvent gq(Space& home, Val n);
739
+ /// Restrict domain values to be greater than \a n
740
+ ModEvent gr(Space& home, Val n);
741
+ /// Restrict domain values to be different from \a n
742
+ ModEvent nq(Space& home, Val n);
743
+ /// Restrict domain values to be equal to \a n
744
+ ModEvent eq(Space& home, Val n);
745
+ //@}
746
+
747
+ /// \name View-dependent propagator support
748
+ //@{
749
+ /// Translate modification event \a me to modification event delta for view
750
+ static ModEventDelta med(ModEvent me);
751
+ //@}
752
+
753
+ /// \name Delta information for advisors
754
+ //@{
755
+ /// Return minimum value just pruned
756
+ Val min(const Delta& d) const;
757
+ /// Return maximum value just pruned
758
+ Val max(const Delta& d) const;
759
+ /// Test whether arbitrary values got pruned
760
+ bool any(const Delta& d) const;
761
+ //@}
762
+
763
+ /// \name Cloning
764
+ //@{
765
+ /// Update this view to be a clone of view \a y
766
+ void update(Space& home, bool share, ScaleView<Val,UnsVal>& y);
767
+ //@}
768
+ };
769
+
770
+ /**
771
+ * \brief Integer-precision integer scale view
772
+ * \ingroup TaskActorIntView
773
+ */
774
+ typedef ScaleView<int,unsigned int> IntScaleView;
775
+
776
+ /**
777
+ * \brief Double-precision integer scale view
778
+ * \ingroup TaskActorIntView
779
+ */
780
+ typedef ScaleView<double,double> DoubleScaleView;
781
+
782
+ /**
783
+ * \brief Print integer-precision integer scale view
784
+ * \relates Gecode::Int::ScaleView
785
+ */
786
+ template<class Char, class Traits>
787
+ std::basic_ostream<Char,Traits>&
788
+ operator <<(std::basic_ostream<Char,Traits>& os, const IntScaleView& x);
789
+
790
+ /**
791
+ * \brief Print double-precision integer scale view
792
+ * \relates Gecode::Int::ScaleView
793
+ */
794
+ template<class Char, class Traits>
795
+ std::basic_ostream<Char,Traits>&
796
+ operator <<(std::basic_ostream<Char,Traits>& os, const DoubleScaleView& x);
797
+
798
+ /** \name View comparison
799
+ * \relates Gecode::Int::ScaleView
800
+ */
801
+ //@{
802
+ /// Test whether views \a x and \a y are the same
803
+ template<class Val, class UnsVal>
804
+ bool same(const ScaleView<Val,UnsVal>& x, const ScaleView<Val,UnsVal>& y);
805
+ /// Test whether view \a x comes before \a y (arbitrary order)
806
+ template<class Val, class UnsVal>
807
+ bool before(const ScaleView<Val,UnsVal>& x, const ScaleView<Val,UnsVal>& y);
808
+ //@}
809
+
810
+
811
+
812
+ /**
813
+ * \brief Constant integer view
814
+ *
815
+ * A constant integer view \f$x\f$ for an integer \f$c\f$ provides
816
+ * operations such that \f$x\f$ behaves as a view assigned to \f$c\f$.
817
+ * \ingroup TaskActorIntView
818
+ */
819
+ class ConstIntView : public ConstView<IntView> {
820
+ protected:
821
+ int x;
822
+ public:
823
+ /// \name Constructors and initialization
824
+ //@{
825
+ /// Default constructor
826
+ ConstIntView(void);
827
+ /// Initialize with integer value \a n
828
+ ConstIntView(int n);
829
+ //@}
830
+
831
+ /// \name Value access
832
+ //@{
833
+ /// Return minimum of domain
834
+ int min(void) const;
835
+ /// Return maximum of domain
836
+ int max(void) const;
837
+ /// Return median of domain (greatest element not greater than the median)
838
+ int med(void) const;
839
+ /// Return assigned value (only if assigned)
840
+ int val(void) const;
841
+
842
+ /// Return size (cardinality) of domain
843
+ unsigned int size(void) const;
844
+ /// Return width of domain (distance between maximum and minimum)
845
+ unsigned int width(void) const;
846
+ /// Return regret of domain minimum (distance to next larger value)
847
+ unsigned int regret_min(void) const;
848
+ /// Return regret of domain maximum (distance to next smaller value)
849
+ unsigned int regret_max(void) const;
850
+ //@}
851
+
852
+ /// \name Domain tests
853
+ //@{
854
+ /// Test whether domain is a range
855
+ bool range(void) const;
856
+ /// Test whether \a n is contained in domain
857
+ bool in(int n) const;
858
+ /// Test whether \a n is contained in domain
859
+ bool in(double n) const;
860
+ //@}
861
+
862
+ /// \name Domain update by value
863
+ //@{
864
+ /// Restrict domain values to be less or equal than \a n
865
+ ModEvent lq(Space& home, int n);
866
+ /// Restrict domain values to be less or equal than \a n
867
+ ModEvent lq(Space& home, double n);
868
+ /// Restrict domain values to be less than \a n
869
+ ModEvent le(Space& home, int n);
870
+ /// Restrict domain values to be less than \a n
871
+ ModEvent le(Space& home, double n);
872
+ /// Restrict domain values to be greater or equal than \a n
873
+ ModEvent gq(Space& home, int n);
874
+ /// Restrict domain values to be greater or equal than \a n
875
+ ModEvent gq(Space& home, double n);
876
+ /// Restrict domain values to be greater than \a n
877
+ ModEvent gr(Space& home, int n);
878
+ /// Restrict domain values to be greater than \a n
879
+ ModEvent gr(Space& home, double n);
880
+ /// Restrict domain values to be different from \a n
881
+ ModEvent nq(Space& home, int n);
882
+ /// Restrict domain values to be different from \a n
883
+ ModEvent nq(Space& home, double n);
884
+ /// Restrict domain values to be equal to \a n
885
+ ModEvent eq(Space& home, int n);
886
+ /// Restrict domain values to be equal to \a n
887
+ ModEvent eq(Space& home, double n);
888
+ //@}
889
+
890
+ /**
891
+ * \name Domain update by iterator
892
+ *
893
+ * Views can be both updated by range and value iterators.
894
+ * Value iterators do not need to be strict in that the same value
895
+ * is allowed to occur more than once in the iterated sequence.
896
+ *
897
+ * The argument \a depends must be true, if the iterator
898
+ * passed as argument depends on the view on which the operation
899
+ * is invoked. In this case, the view is only updated after the
900
+ * iterator has been consumed. Otherwise, the domain might be updated
901
+ * concurrently while following the iterator.
902
+ *
903
+ */
904
+ //@{
905
+ /// Replace domain by ranges described by \a i
906
+ template<class I>
907
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
908
+ /// Intersect domain with ranges described by \a i
909
+ template<class I>
910
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
911
+ /// Remove from domain the ranges described by \a i
912
+ template<class I>
913
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
914
+ /// Replace domain by values described by \a i
915
+ template<class I>
916
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
917
+ /// Intersect domain with values described by \a i
918
+ template<class I>
919
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
920
+ /// Remove from domain the values described by \a i
921
+ template<class I>
922
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
923
+ //@}
924
+
925
+ /// \name Delta information for advisors
926
+ //@{
927
+ /// Return minimum value just pruned
928
+ int min(const Delta& d) const;
929
+ /// Return maximum value just pruned
930
+ int max(const Delta& d) const;
931
+ /// Test whether arbitrary values got pruned
932
+ bool any(const Delta& d) const;
933
+ //@}
934
+
935
+ /// \name Cloning
936
+ //@{
937
+ /// Update this view to be a clone of view \a y
938
+ void update(Space& home, bool share, ConstIntView& y);
939
+ //@}
940
+ };
941
+
942
+ /**
943
+ * \brief Print integer constant integer view
944
+ * \relates Gecode::Int::ConstIntView
945
+ */
946
+ template<class Char, class Traits>
947
+ std::basic_ostream<Char,Traits>&
948
+ operator <<(std::basic_ostream<Char,Traits>& os, const ConstIntView& x);
949
+
950
+ /**
951
+ * \name View comparison
952
+ * \relates Gecode::Int::ConstIntView
953
+ */
954
+ //@{
955
+ /// Test whether views \a x and \a y are the same
956
+ bool same(const ConstIntView& x, const ConstIntView& y);
957
+ /// Test whether view \a x is before \a y (arbitrary order)
958
+ bool before(const ConstIntView& x, const ConstIntView& y);
959
+ //@}
960
+
961
+
962
+ /**
963
+ * \brief Zero integer view
964
+ *
965
+ * A zero integer view \f$x\f$ for provides
966
+ * operations such that \f$x\f$ behaves as a view assigned to \f$0\f$.
967
+ * \ingroup TaskActorIntView
968
+ */
969
+ class ZeroIntView : public ConstView<IntView> {
970
+ public:
971
+ /// \name Constructors and initialization
972
+ //@{
973
+ /// Default constructor
974
+ ZeroIntView(void);
975
+ //@}
976
+
977
+ /// \name Value access
978
+ //@{
979
+ /// Return minimum of domain
980
+ int min(void) const;
981
+ /// Return maximum of domain
982
+ int max(void) const;
983
+ /// Return median of domain (greatest element not greater than the median)
984
+ int med(void) const;
985
+ /// Return assigned value (only if assigned)
986
+ int val(void) const;
987
+
988
+ /// Return size (cardinality) of domain
989
+ unsigned int size(void) const;
990
+ /// Return width of domain (distance between maximum and minimum)
991
+ unsigned int width(void) const;
992
+ /// Return regret of domain minimum (distance to next larger value)
993
+ unsigned int regret_min(void) const;
994
+ /// Return regret of domain maximum (distance to next smaller value)
995
+ unsigned int regret_max(void) const;
996
+ //@}
997
+
998
+ /// \name Domain tests
999
+ //@{
1000
+ /// Test whether domain is a range
1001
+ bool range(void) const;
1002
+ /// Test whether \a n is contained in domain
1003
+ bool in(int n) const;
1004
+ /// Test whether \a n is contained in domain
1005
+ bool in(double n) const;
1006
+ //@}
1007
+
1008
+ /// \name Domain update by value
1009
+ //@{
1010
+ /// Restrict domain values to be less or equal than \a n
1011
+ ModEvent lq(Space& home, int n);
1012
+ /// Restrict domain values to be less or equal than \a n
1013
+ ModEvent lq(Space& home, double n);
1014
+ /// Restrict domain values to be less than \a n
1015
+ ModEvent le(Space& home, int n);
1016
+ /// Restrict domain values to be less than \a n
1017
+ ModEvent le(Space& home, double n);
1018
+ /// Restrict domain values to be greater or equal than \a n
1019
+ ModEvent gq(Space& home, int n);
1020
+ /// Restrict domain values to be greater or equal than \a n
1021
+ ModEvent gq(Space& home, double n);
1022
+ /// Restrict domain values to be greater than \a n
1023
+ ModEvent gr(Space& home, int n);
1024
+ /// Restrict domain values to be greater than \a n
1025
+ ModEvent gr(Space& home, double n);
1026
+ /// Restrict domain values to be different from \a n
1027
+ ModEvent nq(Space& home, int n);
1028
+ /// Restrict domain values to be different from \a n
1029
+ ModEvent nq(Space& home, double n);
1030
+ /// Restrict domain values to be equal to \a n
1031
+ ModEvent eq(Space& home, int n);
1032
+ /// Restrict domain values to be equal to \a n
1033
+ ModEvent eq(Space& home, double n);
1034
+ //@}
1035
+
1036
+ /**
1037
+ * \name Domain update by iterator
1038
+ *
1039
+ * Views can be both updated by range and value iterators.
1040
+ * Value iterators do not need to be strict in that the same value
1041
+ * is allowed to occur more than once in the iterated sequence.
1042
+ *
1043
+ * The argument \a depends must be true, if the iterator
1044
+ * passed as argument depends on the view on which the operation
1045
+ * is invoked. In this case, the view is only updated after the
1046
+ * iterator has been consumed. Otherwise, the domain might be updated
1047
+ * concurrently while following the iterator.
1048
+ *
1049
+ */
1050
+ //@{
1051
+ /// Replace domain by ranges described by \a i
1052
+ template<class I>
1053
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
1054
+ /// Intersect domain with ranges described by \a i
1055
+ template<class I>
1056
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
1057
+ /// Remove from domain the ranges described by \a i
1058
+ template<class I>
1059
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
1060
+ /// Replace domain by values described by \a i
1061
+ template<class I>
1062
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
1063
+ /// Intersect domain with values described by \a i
1064
+ template<class I>
1065
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
1066
+ /// Remove from domain the values described by \a i
1067
+ template<class I>
1068
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
1069
+ //@}
1070
+
1071
+ /// \name Delta information for advisors
1072
+ //@{
1073
+ /// Return minimum value just pruned
1074
+ int min(const Delta& d) const;
1075
+ /// Return maximum value just pruned
1076
+ int max(const Delta& d) const;
1077
+ /// Test whether arbitrary values got pruned
1078
+ bool any(const Delta& d) const;
1079
+ //@}
1080
+ };
1081
+
1082
+ /**
1083
+ * \brief Print integer zero view
1084
+ * \relates Gecode::Int::ZeroView
1085
+ */
1086
+ template<class Char, class Traits>
1087
+ std::basic_ostream<Char,Traits>&
1088
+ operator <<(std::basic_ostream<Char,Traits>& os, const ZeroIntView& x);
1089
+
1090
+ /**
1091
+ * \name View comparison
1092
+ * \relates Gecode::Int::ZeroIntView
1093
+ */
1094
+ //@{
1095
+ /// Test whether views \a x and \a y are the same
1096
+ bool same(const ZeroIntView& x, const ZeroIntView& y);
1097
+ //@}
1098
+
1099
+ template<class View> class ViewDiffRanges;
1100
+
1101
+ /**
1102
+ * \brief Cached integer view
1103
+ *
1104
+ * A cached integer view \f$c\f$ for an integer view \f$x\f$ adds operations
1105
+ * for cacheing the current domain of \f$x\f$ and comparing the current
1106
+ * domain to the cached domain. Cached views make it easy to implement
1107
+ * incremental propagation algorithms.
1108
+ *
1109
+ * \ingroup TaskActorIntView
1110
+ */
1111
+ template<class View>
1112
+ class CachedView : public DerivedView<View> {
1113
+ friend class ViewDiffRanges<View>;
1114
+ protected:
1115
+ using DerivedView<View>::x;
1116
+ /// First cached range
1117
+ RangeList* _firstRange;
1118
+ /// Last cached range
1119
+ RangeList* _lastRange;
1120
+ /// Size of cached domain
1121
+ unsigned int _size;
1122
+ public:
1123
+ /// \name Constructors and initialization
1124
+ //@{
1125
+ /// Default constructor
1126
+ CachedView(void);
1127
+ /// Initialize with integer view \a y
1128
+ explicit CachedView(const View& y);
1129
+ //@}
1130
+
1131
+ /// \name Value access
1132
+ //@{
1133
+ /// Return minimum of domain
1134
+ int min(void) const;
1135
+ /// Return maximum of domain
1136
+ int max(void) const;
1137
+ /// Return median of domain (greatest element not greater than the median)
1138
+ int med(void) const;
1139
+ /// Return assigned value (only if assigned)
1140
+ int val(void) const;
1141
+
1142
+ /// Return size (cardinality) of domain
1143
+ unsigned int size(void) const;
1144
+ /// Return width of domain (distance between maximum and minimum)
1145
+ unsigned int width(void) const;
1146
+ /// Return regret of domain minimum (distance to next larger value)
1147
+ unsigned int regret_min(void) const;
1148
+ /// Return regret of domain maximum (distance to next smaller value)
1149
+ unsigned int regret_max(void) const;
1150
+ //@}
1151
+
1152
+ /// \name Domain tests
1153
+ //@{
1154
+ /// Test whether domain is a range
1155
+ bool range(void) const;
1156
+
1157
+ /// Test whether \a n is contained in domain
1158
+ bool in(int n) const;
1159
+ /// Test whether \a n is contained in domain
1160
+ bool in(double n) const;
1161
+ //@}
1162
+
1163
+ /// \name Domain update by value
1164
+ //@{
1165
+ /// Restrict domain values to be less or equal than \a n
1166
+ ModEvent lq(Space& home, int n);
1167
+ /// Restrict domain values to be less or equal than \a n
1168
+ ModEvent lq(Space& home, double n);
1169
+ /// Restrict domain values to be less than \a n
1170
+ ModEvent le(Space& home, int n);
1171
+ /// Restrict domain values to be less than \a n
1172
+ ModEvent le(Space& home, double n);
1173
+ /// Restrict domain values to be greater or equal than \a n
1174
+ ModEvent gq(Space& home, int n);
1175
+ /// Restrict domain values to be greater or equal than \a n
1176
+ ModEvent gq(Space& home, double n);
1177
+ /// Restrict domain values to be greater than \a n
1178
+ ModEvent gr(Space& home, int n);
1179
+ /// Restrict domain values to be greater than \a n
1180
+ ModEvent gr(Space& home, double n);
1181
+ /// Restrict domain values to be different from \a n
1182
+ ModEvent nq(Space& home, int n);
1183
+ /// Restrict domain values to be different from \a n
1184
+ ModEvent nq(Space& home, double n);
1185
+ /// Restrict domain values to be equal to \a n
1186
+ ModEvent eq(Space& home, int n);
1187
+ /// Restrict domain values to be equal to \a n
1188
+ ModEvent eq(Space& home, double n);
1189
+ //@}
1190
+
1191
+ /**
1192
+ * \name Domain update by iterator
1193
+ *
1194
+ * Views can be both updated by range and value iterators.
1195
+ * Value iterators do not need to be strict in that the same value
1196
+ * is allowed to occur more than once in the iterated sequence.
1197
+ *
1198
+ * The argument \a depends must be true, if the iterator
1199
+ * passed as argument depends on the view on which the operation
1200
+ * is invoked. In this case, the view is only updated after the
1201
+ * iterator has been consumed. Otherwise, the domain might be updated
1202
+ * concurrently while following the iterator.
1203
+ *
1204
+ */
1205
+ //@{
1206
+ /// Replace domain by ranges described by \a i
1207
+ template<class I>
1208
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
1209
+ /// Intersect domain with ranges described by \a i
1210
+ template<class I>
1211
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
1212
+ /// Remove from domain the ranges described by \a i
1213
+ template<class I>
1214
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
1215
+ /// Replace domain by values described by \a i
1216
+ template<class I>
1217
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
1218
+ /// Intersect domain with values described by \a i
1219
+ template<class I>
1220
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
1221
+ /// Remove from domain the values described by \a i
1222
+ template<class I>
1223
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
1224
+ //@}
1225
+
1226
+ /// \name View-dependent propagator support
1227
+ //@{
1228
+ /// Translate modification event \a me to modification event delta for view
1229
+ static ModEventDelta med(ModEvent me);
1230
+ //@}
1231
+
1232
+ /// \name Delta information for advisors
1233
+ //@{
1234
+ /// Return minimum value just pruned
1235
+ int min(const Delta& d) const;
1236
+ /// Return maximum value just pruned
1237
+ int max(const Delta& d) const;
1238
+ /// Test whether arbitrary values got pruned
1239
+ bool any(const Delta& d) const;
1240
+ //@}
1241
+
1242
+ /// \name Domain cache operations
1243
+ //@{
1244
+ /// Initialize cache to set \a s
1245
+ void initCache(Space& home, const IntSet& s);
1246
+ /// Update cache to current domain
1247
+ void cache(Space& home);
1248
+ /// Check whether cache differs from current domain
1249
+ bool modified(void) const;
1250
+ //@}
1251
+
1252
+ /// \name Cloning
1253
+ //@{
1254
+ /// Update this view to be a clone of view \a y
1255
+ void update(Space& home, bool share, CachedView<View>& y);
1256
+ //@}
1257
+ };
1258
+
1259
+ /**
1260
+ * \brief Print integer offset view
1261
+ * \relates Gecode::Int::CachedView
1262
+ */
1263
+ template<class Char, class Traits, class View>
1264
+ std::basic_ostream<Char,Traits>&
1265
+ operator <<(std::basic_ostream<Char,Traits>& os, const CachedView<View>& x);
1266
+
1267
+ /** \name View comparison
1268
+ * \relates Gecode::Int::CachedView
1269
+ */
1270
+ //@{
1271
+ /// Test whether views \a x and \a y are the same
1272
+ template<class View>
1273
+ bool same(const CachedView<View>& x, const CachedView<View>& y);
1274
+ /// Test whether view \a x comes before \a y (arbitrary order)
1275
+ template<class View>
1276
+ bool before(const CachedView<View>& x, const CachedView<View>& y);
1277
+ //@}
1278
+
1279
+ /**
1280
+ * \brief %Range iterator for cached integer views
1281
+ *
1282
+ * This iterator iterates the difference between the cached domain
1283
+ * and the current domain of an integer view.
1284
+ *
1285
+ * \ingroup TaskActorInt
1286
+ */
1287
+ template<class View>
1288
+ class ViewDiffRanges
1289
+ : public Iter::Ranges::Diff<Iter::Ranges::RangeList,ViewRanges<View> > {
1290
+ typedef Iter::Ranges::Diff<Iter::Ranges::RangeList,ViewRanges<View> >
1291
+ Super;
1292
+ protected:
1293
+ /// Cached domain iterator
1294
+ Iter::Ranges::RangeList cr;
1295
+ /// Current domain iterator
1296
+ ViewRanges<View> dr;
1297
+ public:
1298
+ /// \name Constructors and initialization
1299
+ //@{
1300
+ /// Default constructor
1301
+ ViewDiffRanges(void);
1302
+ /// Initialize with ranges for view \a x
1303
+ ViewDiffRanges(const CachedView<View>& x);
1304
+ /// Initialize with ranges for view \a x
1305
+ void init(const CachedView<View>& x);
1306
+ //@}
1307
+ };
1308
+
1309
+ /**
1310
+ * \brief Boolean view for Boolean variables
1311
+ *
1312
+ * Provides convenient and efficient operations for Boolean views.
1313
+ * \ingroup TaskActorIntView
1314
+ */
1315
+ class BoolView : public VarImpView<BoolVar> {
1316
+ protected:
1317
+ using VarImpView<BoolVar>::x;
1318
+ public:
1319
+ /// \name Constructors and initialization
1320
+ //@{
1321
+ /// Default constructor
1322
+ BoolView(void);
1323
+ /// Initialize from Boolean variable \a y
1324
+ BoolView(const BoolVar& y);
1325
+ /// Initialize from Boolean variable implementation \a y
1326
+ BoolView(BoolVarImp* y);
1327
+ //@}
1328
+
1329
+ /// \name Domain status access
1330
+ //@{
1331
+ /// How many bits does the status have
1332
+ static const int BITS = BoolVarImp::BITS;
1333
+ /// Status of domain assigned to zero
1334
+ static const BoolStatus ZERO = BoolVarImp::ZERO;
1335
+ /// Status of domain assigned to one
1336
+ static const BoolStatus ONE = BoolVarImp::ONE;
1337
+ /// Status of domain not yet assigned
1338
+ static const BoolStatus NONE = BoolVarImp::NONE;
1339
+ /// Return current domain status
1340
+ BoolStatus status(void) const;
1341
+ //@}
1342
+
1343
+ /// \name Value access
1344
+ //@{
1345
+ /// Return minimum of domain
1346
+ int min(void) const;
1347
+ /// Return maximum of domain
1348
+ int max(void) const;
1349
+ /// Return median of domain (greatest element not greater than the median)
1350
+ int med(void) const;
1351
+ /// Return assigned value (only if assigned)
1352
+ int val(void) const;
1353
+
1354
+ /// Return size (cardinality) of domain
1355
+ unsigned int size(void) const;
1356
+ /// Return width of domain (distance between maximum and minimum)
1357
+ unsigned int width(void) const;
1358
+ /// Return regret of domain minimum (distance to next larger value)
1359
+ unsigned int regret_min(void) const;
1360
+ /// Return regret of domain maximum (distance to next smaller value)
1361
+ unsigned int regret_max(void) const;
1362
+ //@}
1363
+
1364
+ /// \name Domain tests
1365
+ //@{
1366
+ /// Test whether domain is a range
1367
+ bool range(void) const;
1368
+ /// Test whether \a n is contained in domain
1369
+ bool in(int n) const;
1370
+ /// Test whether \a n is contained in domain
1371
+ bool in(double n) const;
1372
+ //@}
1373
+
1374
+ /// \name Boolean domain tests
1375
+ //@{
1376
+ /// Test whether view is assigned to be zero
1377
+ bool zero(void) const;
1378
+ /// Test whether view is assigned to be one
1379
+ bool one(void) const;
1380
+ /// Test whether view is not yet assigned
1381
+ bool none(void) const;
1382
+ //@}
1383
+
1384
+ /// \name Boolean assignment operations
1385
+ //@{
1386
+ /// Try to assign view to one
1387
+ ModEvent one(Space& home);
1388
+ /// Try to assign view to zero
1389
+ ModEvent zero(Space& home);
1390
+ /// Assign not yet assigned view to one
1391
+ ModEvent one_none(Space& home);
1392
+ /// Assign not yet assigned view to zero
1393
+ ModEvent zero_none(Space& home);
1394
+ //@}
1395
+
1396
+ /// \name Domain update by value
1397
+ //@{
1398
+ /// Restrict domain values to be less or equal than \a n
1399
+ ModEvent lq(Space& home, int n);
1400
+ /// Restrict domain values to be less or equal than \a n
1401
+ ModEvent lq(Space& home, double n);
1402
+
1403
+ /// Restrict domain values to be less than \a n
1404
+ ModEvent le(Space& home, int n);
1405
+ /// Restrict domain values to be less than \a n
1406
+ ModEvent le(Space& home, double n);
1407
+
1408
+ /// Restrict domain values to be greater or equal than \a n
1409
+ ModEvent gq(Space& home, int n);
1410
+ /// Restrict domain values to be greater or equal than \a n
1411
+ ModEvent gq(Space& home, double n);
1412
+
1413
+ /// Restrict domain values to be greater than \a n
1414
+ ModEvent gr(Space& home, int n);
1415
+ /// Restrict domain values to be greater than \a n
1416
+ ModEvent gr(Space& home, double n);
1417
+
1418
+ /// Restrict domain values to be different from \a n
1419
+ ModEvent nq(Space& home, int n);
1420
+ /// Restrict domain values to be different from \a n
1421
+ ModEvent nq(Space& home, double n);
1422
+
1423
+ /// Restrict domain values to be equal to \a n
1424
+ ModEvent eq(Space& home, int n);
1425
+ /// Restrict domain values to be equal to \a n
1426
+ ModEvent eq(Space& home, double n);
1427
+ //@}
1428
+
1429
+ /**
1430
+ * \name Domain update by iterator
1431
+ *
1432
+ * Views can be both updated by range and value iterators.
1433
+ * Value iterators do not need to be strict in that the same value
1434
+ * is allowed to occur more than once in the iterated sequence.
1435
+ *
1436
+ * The argument \a depends must be true, if the iterator
1437
+ * passed as argument depends on the view on which the operation
1438
+ * is invoked. In this case, the view is only updated after the
1439
+ * iterator has been consumed. Otherwise, the domain might be updated
1440
+ * concurrently while following the iterator.
1441
+ *
1442
+ */
1443
+ //@{
1444
+ /// Replace domain by ranges described by \a i
1445
+ template<class I>
1446
+ ModEvent narrow_r(Space& home, I& i, bool depends=true);
1447
+ /// Intersect domain with ranges described by \a i
1448
+ template<class I>
1449
+ ModEvent inter_r(Space& home, I& i, bool depends=true);
1450
+ /// Remove from domain the ranges described by \a i
1451
+ template<class I>
1452
+ ModEvent minus_r(Space& home, I& i, bool depends=true);
1453
+ /// Replace domain by values described by \a i
1454
+ template<class I>
1455
+ ModEvent narrow_v(Space& home, I& i, bool depends=true);
1456
+ /// Intersect domain with values described by \a i
1457
+ template<class I>
1458
+ ModEvent inter_v(Space& home, I& i, bool depends=true);
1459
+ /// Remove from domain the values described by \a i
1460
+ template<class I>
1461
+ ModEvent minus_v(Space& home, I& i, bool depends=true);
1462
+ //@}
1463
+
1464
+ /// \name Delta information for advisors
1465
+ //@{
1466
+ /// Return minimum value just pruned
1467
+ int min(const Delta& d) const;
1468
+ /// Return maximum value just pruned
1469
+ int max(const Delta& d) const;
1470
+ /// Test whether arbitrary values got pruned
1471
+ bool any(const Delta& d) const;
1472
+ /// Test whether a view has been assigned to zero
1473
+ static bool zero(const Delta& d);
1474
+ /// Test whether a view has been assigned to one
1475
+ static bool one(const Delta& d);
1476
+ //@}
1477
+
1478
+ /// \name View-dependent propagator support
1479
+ //@{
1480
+ /// Translate modification event \a me to modification event delta for view
1481
+ static ModEventDelta med(ModEvent me);
1482
+ //@}
1483
+ };
1484
+
1485
+ /**
1486
+ * \brief Print Boolean view
1487
+ * \relates Gecode::Int::BoolView
1488
+ */
1489
+ template<class Char, class Traits>
1490
+ std::basic_ostream<Char,Traits>&
1491
+ operator <<(std::basic_ostream<Char,Traits>& os, const BoolView& x);
1492
+
1493
+
1494
+
1495
+ /**
1496
+ * \brief Negated Boolean view
1497
+ *
1498
+ * A negated Boolean view \f$n\f$ for a Boolean view \f$b\f$
1499
+ * provides operations such that \f$n\f$
1500
+ * behaves as \f$\neg b\f$.
1501
+ * \ingroup TaskActorIntView
1502
+ */
1503
+ class NegBoolView : public DerivedView<BoolView> {
1504
+ protected:
1505
+ using DerivedView<BoolView>::x;
1506
+ public:
1507
+ /// \name Constructors and initialization
1508
+ //@{
1509
+ /// Default constructor
1510
+ NegBoolView(void);
1511
+ /// Initialize with Boolean view \a y
1512
+ explicit NegBoolView(const BoolView& y);
1513
+ //@}
1514
+
1515
+ /// \name Domain status access
1516
+ //@{
1517
+ /// How many bits does the status have
1518
+ static const int BITS = BoolView::BITS;
1519
+ /// Status of domain assigned to zero
1520
+ static const BoolStatus ZERO = BoolView::ONE;
1521
+ /// Status of domain assigned to one
1522
+ static const BoolStatus ONE = BoolView::ZERO;
1523
+ /// Status of domain not yet assigned
1524
+ static const BoolStatus NONE = BoolView::NONE;
1525
+ /// Return current domain status
1526
+ BoolStatus status(void) const;
1527
+ //@}
1528
+
1529
+ /// \name Boolean domain tests
1530
+ //@{
1531
+ /// Test whether view is assigned to be zero
1532
+ bool zero(void) const;
1533
+ /// Test whether view is assigned to be one
1534
+ bool one(void) const;
1535
+ /// Test whether view is not yet assigned
1536
+ bool none(void) const;
1537
+ //@}
1538
+
1539
+ /// \name Boolean assignment operations
1540
+ //@{
1541
+ /// Try to assign view to one
1542
+ ModEvent one(Space& home);
1543
+ /// Try to assign view to zero
1544
+ ModEvent zero(Space& home);
1545
+ /// Assign not yet assigned view to one
1546
+ ModEvent one_none(Space& home);
1547
+ /// Assign not yet assigned view to zero
1548
+ ModEvent zero_none(Space& home);
1549
+ //@}
1550
+
1551
+ /// \name Value access
1552
+ //@{
1553
+ /// Return minimum of domain
1554
+ int min(void) const;
1555
+ /// Return maximum of domain
1556
+ int max(void) const;
1557
+ /// Return assigned value (only if assigned)
1558
+ int val(void) const;
1559
+ //@}
1560
+
1561
+ /// \name Delta information for advisors
1562
+ //@{
1563
+ /// Return minimum value just pruned
1564
+ int min(const Delta& d) const;
1565
+ /// Return maximum value just pruned
1566
+ int max(const Delta& d) const;
1567
+ /// Test whether arbitrary values got pruned
1568
+ bool any(const Delta& d) const;
1569
+ /// Test whether a view has been assigned to zero
1570
+ static bool zero(const Delta& d);
1571
+ /// Test whether a view has been assigned to one
1572
+ static bool one(const Delta& d);
1573
+ //@}
1574
+ };
1575
+
1576
+ /**
1577
+ * \brief Print negated Boolean view
1578
+ * \relates Gecode::Int::NegBoolView
1579
+ */
1580
+ template<class Char, class Traits>
1581
+ std::basic_ostream<Char,Traits>&
1582
+ operator <<(std::basic_ostream<Char,Traits>& os, const NegBoolView& x);
1583
+
1584
+ }}
1585
+
1586
+ #include <gecode/int/var/int.hpp>
1587
+ #include <gecode/int/var/bool.hpp>
1588
+
1589
+ #include <gecode/int/view/int.hpp>
1590
+
1591
+ #include <gecode/int/view/constint.hpp>
1592
+ #include <gecode/int/view/zero.hpp>
1593
+ #include <gecode/int/view/minus.hpp>
1594
+ #include <gecode/int/view/offset.hpp>
1595
+ #include <gecode/int/view/scale.hpp>
1596
+ #include <gecode/int/view/cached.hpp>
1597
+
1598
+ #include <gecode/int/view/bool.hpp>
1599
+
1600
+ #include <gecode/int/view/neg-bool.hpp>
1601
+
1602
+ #include <gecode/int/view/print.hpp>
1603
+ #include <gecode/int/var/print.hpp>
1604
+
1605
+ namespace Gecode { namespace Int {
1606
+
1607
+ /**
1608
+ * \defgroup TaskActorIntTest Testing relations between integer views
1609
+ * \ingroup TaskActorInt
1610
+ */
1611
+
1612
+ //@{
1613
+ /// Result of testing relation
1614
+ enum RelTest {
1615
+ RT_FALSE = 0, ///< Relation does not hold
1616
+ RT_MAYBE = 1, ///< Relation may hold or not
1617
+ RT_TRUE = 2 ///< Relation does hold
1618
+ };
1619
+
1620
+ /// Test whether views \a x and \a y are equal (use bounds information)
1621
+ template<class View> RelTest rtest_eq_bnd(View x, View y);
1622
+ /// Test whether views \a x and \a y are equal (use full domain information)
1623
+ template<class View> RelTest rtest_eq_dom(View x, View y);
1624
+ /// Test whether view \a x and integer \a n are equal (use bounds information)
1625
+ template<class View> RelTest rtest_eq_bnd(View x, int n);
1626
+ /// Test whether view \a x and integer \a n are equal (use full domain information)
1627
+ template<class View> RelTest rtest_eq_dom(View x, int n);
1628
+
1629
+ /// Test whether views \a x and \a y are different (use bounds information)
1630
+ template<class View> RelTest rtest_nq_bnd(View x, View y);
1631
+ /// Test whether views \a x and \a y are different (use full domain information)
1632
+ template<class View> RelTest rtest_nq_dom(View x, View y);
1633
+ /// Test whether view \a x and integer \a n are different (use bounds information)
1634
+ template<class View> RelTest rtest_nq_bnd(View x, int n);
1635
+ /// Test whether view \a x and integer \a n are different (use full domain information)
1636
+ template<class View> RelTest rtest_nq_dom(View x, int n);
1637
+
1638
+ /// Test whether view \a x is less or equal than view \a y
1639
+ template<class View> RelTest rtest_lq(View x, View y);
1640
+ /// Test whether view \a x is less or equal than integer \a n
1641
+ template<class View> RelTest rtest_lq(View x, int n);
1642
+
1643
+ /// Test whether view \a x is less than view \a y
1644
+ template<class View> RelTest rtest_le(View x, View y);
1645
+ /// Test whether view \a x is less than integer \a n
1646
+ template<class View> RelTest rtest_le(View x, int n);
1647
+
1648
+ /// Test whether view \a x is greater or equal than view \a y
1649
+ template<class View> RelTest rtest_gq(View x, View y);
1650
+ /// Test whether view \a x is greater or equal than integer \a n
1651
+ template<class View> RelTest rtest_gq(View x, int n);
1652
+
1653
+ /// Test whether view \a x is greater than view \a y
1654
+ template<class View> RelTest rtest_gr(View x, View y);
1655
+ /// Test whether view \a x is greater than integer \a n
1656
+ template<class View> RelTest rtest_gr(View x, int n);
1657
+ //@}
1658
+
1659
+
1660
+ /**
1661
+ * \brief Boolean tests
1662
+ *
1663
+ */
1664
+ enum BoolTest {
1665
+ BT_NONE, ///< No sharing
1666
+ BT_SAME, ///< Same variable
1667
+ BT_COMP ///< Same variable but complement
1668
+ };
1669
+
1670
+ /**
1671
+ * \name Test sharing between Boolean and negated Boolean views
1672
+ * \relates BoolView NegBoolView
1673
+ */
1674
+ //@{
1675
+ /// Test whether views \a b0 and \a b1 are the same
1676
+ BoolTest bool_test(const BoolView& b0, const BoolView& b1);
1677
+ /// Test whether views \a b0 and \a b1 are complementary
1678
+ BoolTest bool_test(const BoolView& b0, const NegBoolView& b1);
1679
+ /// Test whether views \a b0 and \a b1 are complementary
1680
+ BoolTest bool_test(const NegBoolView& b0, const BoolView& b1);
1681
+ /// Test whether views \a b0 and \a b1 are the same
1682
+ BoolTest bool_test(const NegBoolView& b0, const NegBoolView& b1);
1683
+ //@}
1684
+
1685
+ }}
1686
+
1687
+ #include <gecode/int/view/rel-test.hpp>
1688
+ #include <gecode/int/view/bool-test.hpp>
1689
+
1690
+ // STATISTICS: int-var