dep-selector-libgecode 1.0.0.alpha.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (806) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +20 -0
  7. data/dep-selector-libgecode.gemspec +25 -0
  8. data/ext/libgecode3/Makefile +8 -0
  9. data/ext/libgecode3/extconf.rb +57 -0
  10. data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
  11. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
  12. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
  13. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
  14. data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
  15. data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
  16. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
  17. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
  18. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
  19. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
  20. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
  21. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
  22. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
  23. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
  24. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
  25. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
  26. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
  27. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
  28. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
  29. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
  30. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
  31. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
  32. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
  33. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
  34. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
  35. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
  36. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
  37. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
  38. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
  39. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
  40. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
  41. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
  42. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
  43. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
  44. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
  45. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
  46. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
  47. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
  48. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
  49. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
  50. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
  51. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
  52. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
  53. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
  54. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
  55. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
  56. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
  57. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
  58. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
  59. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
  60. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
  61. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
  62. data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
  63. data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
  64. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
  65. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
  66. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
  67. data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
  68. data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
  69. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
  70. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
  71. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
  72. data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
  73. data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
  74. data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
  75. data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
  76. data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
  77. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
  78. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
  79. data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
  80. data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
  81. data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
  82. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
  83. data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
  84. data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
  85. data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
  86. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
  87. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
  88. data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
  89. data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
  90. data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
  91. data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
  92. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
  93. data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
  94. data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
  95. data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
  96. data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
  97. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
  98. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
  99. data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
  100. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
  101. data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
  102. data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
  103. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
  104. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
  105. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
  106. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
  107. data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
  108. data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
  109. data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
  110. data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
  111. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
  112. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
  113. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
  114. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
  115. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
  116. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
  117. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
  118. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
  119. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
  120. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
  121. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
  122. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
  123. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
  124. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
  125. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
  126. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
  127. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
  128. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
  129. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
  130. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
  131. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
  132. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
  133. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
  134. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
  135. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
  136. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
  137. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
  138. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
  139. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
  140. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
  141. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
  142. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
  143. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
  144. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
  145. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
  146. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
  147. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
  148. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
  149. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
  150. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
  151. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
  152. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
  153. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
  154. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
  155. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
  156. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
  157. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
  158. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
  159. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
  160. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
  161. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
  162. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
  163. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
  164. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
  165. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
  166. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
  167. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
  168. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
  169. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
  170. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
  171. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
  172. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
  173. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
  174. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
  175. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
  176. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
  177. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
  178. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
  179. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
  180. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
  181. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
  182. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
  183. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
  184. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
  185. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
  186. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
  187. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
  188. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
  189. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
  190. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
  191. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
  192. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
  193. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
  194. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
  195. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
  196. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
  197. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
  198. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
  199. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
  200. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
  201. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
  202. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
  203. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
  204. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
  205. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
  206. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
  207. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
  208. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
  209. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
  210. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
  211. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
  212. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
  213. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
  214. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
  215. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
  216. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
  217. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
  218. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
  219. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
  220. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
  221. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
  222. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
  223. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
  224. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
  225. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
  226. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
  227. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
  228. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
  229. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
  230. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
  231. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
  232. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
  233. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
  234. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
  235. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
  236. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
  237. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
  238. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
  239. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
  240. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
  241. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
  242. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
  243. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
  244. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
  245. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
  246. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
  247. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
  248. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
  249. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
  250. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
  251. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
  252. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
  253. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
  254. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
  255. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
  256. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
  257. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
  258. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
  259. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
  260. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
  261. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
  262. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
  263. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
  264. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
  265. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
  266. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
  267. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
  268. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
  269. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
  270. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
  271. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
  272. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
  273. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
  274. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
  275. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
  276. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
  277. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
  278. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
  279. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
  280. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
  281. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
  282. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
  283. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
  284. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
  285. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
  286. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
  287. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
  288. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
  289. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
  290. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
  291. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
  292. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
  293. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
  294. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
  295. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
  296. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
  297. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
  298. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
  299. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
  300. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
  301. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
  302. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
  303. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
  304. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
  305. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
  306. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
  307. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
  308. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
  309. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
  310. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
  311. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
  312. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
  313. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
  314. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
  315. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
  316. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
  317. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
  318. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
  319. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
  320. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
  321. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
  322. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
  323. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
  324. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
  325. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
  326. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
  327. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
  328. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
  329. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
  330. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
  331. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
  332. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
  333. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
  334. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
  335. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
  336. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
  337. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
  338. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
  339. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
  340. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
  341. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
  342. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
  343. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
  344. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
  345. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
  346. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
  347. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
  348. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
  349. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
  350. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
  351. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
  352. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
  353. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
  354. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
  355. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
  356. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
  357. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
  358. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
  359. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
  360. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
  361. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
  362. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
  363. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
  364. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
  365. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
  366. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
  367. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
  368. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
  369. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
  370. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
  371. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
  372. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
  373. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
  374. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
  375. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
  376. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
  377. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
  378. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
  379. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
  380. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
  381. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
  382. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
  383. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
  384. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
  385. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
  386. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
  387. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
  388. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
  389. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
  390. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
  391. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
  392. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
  393. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
  394. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
  395. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
  396. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
  397. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
  398. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
  399. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
  400. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
  401. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
  402. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
  403. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
  404. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
  405. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
  406. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
  407. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
  408. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
  409. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
  410. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
  411. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
  412. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
  413. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
  414. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
  415. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
  416. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
  417. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
  418. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
  419. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
  420. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
  421. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
  422. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
  423. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
  424. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
  425. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
  426. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
  427. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
  428. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
  429. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
  430. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
  431. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
  432. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
  433. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
  434. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
  435. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
  436. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
  437. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
  438. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
  439. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
  440. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
  441. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
  442. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
  443. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
  444. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
  445. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
  446. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
  447. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
  448. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
  449. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
  450. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
  451. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
  452. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
  453. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
  454. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
  455. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
  456. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
  457. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
  458. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
  459. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
  460. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
  461. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
  462. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
  463. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
  464. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
  465. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
  466. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
  467. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
  468. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
  469. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
  470. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
  471. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
  472. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
  473. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
  474. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
  475. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
  476. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
  477. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
  478. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
  479. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
  480. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
  481. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
  482. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
  483. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
  484. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
  485. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
  486. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
  487. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
  488. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
  489. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
  490. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
  491. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
  492. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
  493. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
  494. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
  495. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
  496. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
  497. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
  498. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
  499. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
  500. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
  501. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
  502. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
  503. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
  504. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
  505. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
  506. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
  507. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
  508. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
  509. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
  510. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
  511. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
  512. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
  513. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
  514. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
  515. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
  516. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
  517. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
  518. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
  519. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
  520. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
  521. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
  522. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
  523. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
  524. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
  525. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
  526. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
  527. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
  528. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
  529. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
  530. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
  531. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
  532. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
  533. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
  534. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
  535. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
  536. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
  537. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
  538. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
  539. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
  540. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
  541. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
  542. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
  543. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
  544. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
  545. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
  546. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
  547. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
  548. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
  549. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
  550. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
  551. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
  552. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
  553. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
  554. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
  555. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
  556. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
  557. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
  558. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
  559. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
  560. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
  561. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
  562. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
  563. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
  564. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
  565. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
  566. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
  567. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
  568. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
  569. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
  570. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
  571. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
  572. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
  573. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
  574. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
  575. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
  576. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
  577. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
  578. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
  579. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
  580. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
  581. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
  582. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
  583. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
  584. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
  585. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
  586. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
  587. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
  588. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
  589. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
  590. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
  591. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
  592. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
  593. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
  594. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
  595. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
  596. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
  597. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
  598. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
  599. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
  600. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
  601. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
  602. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
  603. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
  604. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
  605. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
  606. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
  607. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
  608. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
  609. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
  610. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
  611. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
  612. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
  613. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
  614. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
  615. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
  616. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
  617. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
  618. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
  619. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
  620. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
  621. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
  622. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
  623. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
  624. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
  625. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
  626. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
  627. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
  628. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
  629. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
  630. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
  631. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
  632. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
  633. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
  634. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
  635. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
  636. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
  637. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
  638. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
  639. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
  640. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
  641. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
  642. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
  643. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
  644. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
  645. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
  646. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
  647. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
  648. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
  649. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
  650. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
  651. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
  652. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
  653. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
  654. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
  655. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
  656. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
  657. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
  658. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
  659. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
  660. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
  661. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
  662. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
  663. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
  664. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
  665. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
  666. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
  667. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
  668. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
  669. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
  670. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
  671. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
  672. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
  673. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
  674. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
  675. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
  676. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
  677. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
  678. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
  679. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
  680. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
  681. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
  682. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
  683. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
  684. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
  685. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
  686. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
  687. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
  688. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
  689. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
  690. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
  691. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
  692. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
  693. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
  694. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
  695. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
  696. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
  697. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
  698. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
  699. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
  700. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
  701. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
  702. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
  703. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
  704. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
  705. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
  706. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
  707. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
  708. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
  709. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
  710. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
  711. data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
  712. data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
  713. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
  714. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
  715. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
  716. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
  717. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
  718. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
  719. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
  720. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
  721. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
  722. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
  723. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
  724. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
  725. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
  726. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
  727. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
  728. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
  729. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
  730. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
  731. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
  732. data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
  733. data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
  734. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
  735. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
  736. data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
  737. data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
  738. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
  739. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
  740. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
  741. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
  742. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
  743. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
  744. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
  745. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
  746. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
  747. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
  748. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
  749. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
  750. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
  751. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
  752. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
  753. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
  754. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
  755. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
  756. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
  757. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
  758. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
  759. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
  760. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
  761. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
  762. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
  763. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
  764. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
  765. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
  766. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
  767. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
  768. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
  769. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
  770. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
  771. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
  772. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
  773. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
  774. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
  775. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
  776. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
  777. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
  778. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
  779. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
  780. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
  781. data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
  782. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
  783. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
  784. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
  785. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
  786. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
  787. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
  788. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
  789. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
  790. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
  791. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
  792. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
  793. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
  794. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
  795. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
  796. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
  797. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
  798. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
  799. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
  800. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
  801. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
  802. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
  803. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
  804. data/lib/dep-selector-libgecode.rb +15 -0
  805. data/lib/dep-selector-libgecode/version.rb +3 -0
  806. metadata +878 -0
@@ -0,0 +1,82 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Guido Tack, 2007
8
+ *
9
+ * Last modified:
10
+ * $Date: 2011-08-23 16:45:41 +1000 (Tue, 23 Aug 2011) $ by $Author: tack $
11
+ * $Revision: 12336 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ #ifndef __GECODE_FLATZINC_CONEXPR_HH__
39
+ #define __GECODE_FLATZINC_CONEXPR_HH__
40
+
41
+ #include <string>
42
+ #include <gecode/flatzinc/ast.hh>
43
+
44
+ namespace Gecode { namespace FlatZinc {
45
+
46
+ /// Abstract representation of a constraint
47
+ class ConExpr {
48
+ public:
49
+ /// Identifier for the constraint
50
+ std::string id;
51
+ /// Constraint arguments
52
+ AST::Array* args;
53
+ /// Constructor
54
+ ConExpr(const std::string& id0, AST::Array* args0);
55
+ /// Return argument \a i
56
+ AST::Node* operator[](int i) const;
57
+ /// Return number of arguments
58
+ int size(void) const;
59
+ /// Destructor
60
+ ~ConExpr(void);
61
+ };
62
+
63
+ forceinline
64
+ ConExpr::ConExpr(const std::string& id0, AST::Array* args0)
65
+ : id(id0), args(args0) {}
66
+
67
+ forceinline AST::Node*
68
+ ConExpr::operator[](int i) const { return args->a[i]; }
69
+
70
+ forceinline int
71
+ ConExpr::size(void) const { return args->a.size(); }
72
+
73
+ forceinline
74
+ ConExpr::~ConExpr(void) {
75
+ delete args;
76
+ }
77
+
78
+ }}
79
+
80
+ #endif
81
+
82
+ // STATISTICS: flatzinc-any
@@ -0,0 +1,49 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Guido Tack, 2010
8
+ *
9
+ * Last modified:
10
+ * $Date: 2010-03-04 00:05:45 +1100 (Thu, 04 Mar 2010) $ by $Author: tack $
11
+ * $Revision: 10355 $
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 <QObject>
39
+
40
+ #include "myplugin.hh"
41
+
42
+ void MyPlugin::branch(Gecode::FlatZinc::FlatZincSpace& s,
43
+ Gecode::FlatZinc::AST::Call* c) {
44
+ std::cerr << "MyPlugin::branch ";
45
+ c->print(std::cerr);
46
+ std::cerr << std::endl;
47
+ }
48
+
49
+ Q_EXPORT_PLUGIN2(myplugin, MyPlugin)
@@ -0,0 +1,47 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Guido Tack, 2010
8
+ *
9
+ * Last modified:
10
+ * $Date: 2010-03-04 00:05:45 +1100 (Thu, 04 Mar 2010) $ by $Author: tack $
11
+ * $Revision: 10355 $
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 <gecode/flatzinc.hh>
39
+ #include <gecode/flatzinc/plugin.hh>
40
+
41
+ class MyPlugin : public QObject, public Gecode::FlatZinc::BranchPlugin {
42
+ public:
43
+ Q_OBJECT
44
+ Q_INTERFACES(Gecode::FlatZinc::BranchPlugin)
45
+ virtual void branch(Gecode::FlatZinc::FlatZincSpace& s,
46
+ Gecode::FlatZinc::AST::Call* c);
47
+ };
@@ -0,0 +1,51 @@
1
+ #
2
+ # Main authors:
3
+ # Guido Tack <tack@gecode.org>
4
+ #
5
+ # Copyright:
6
+ # Guido Tack, 2010
7
+ #
8
+ # Last modified:
9
+ # $Date: 2010-02-26 15:15:28 +0100 (Fri, 26 Feb 2010) $ by $Author: tack $
10
+ # $Revision: 10345 $
11
+ #
12
+ # This file is part of Gecode, the generic constraint
13
+ # development environment:
14
+ # http://www.gecode.org
15
+ #
16
+ # Permission is hereby granted, free of charge, to any person obtaining
17
+ # a copy of this software and associated documentation files (the
18
+ # "Software"), to deal in the Software without restriction, including
19
+ # without limitation the rights to use, copy, modify, merge, publish,
20
+ # distribute, sublicense, and/or sell copies of the Software, and to
21
+ # permit persons to whom the Software is furnished to do so, subject to
22
+ # the following conditions:
23
+ #
24
+ # The above copyright notice and this permission notice shall be
25
+ # included in all copies or substantial portions of the Software.
26
+ #
27
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
28
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
29
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
30
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
31
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
32
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
33
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
34
+ #
35
+ #
36
+
37
+ TEMPLATE = lib
38
+ CONFIG += plugin release x86_64
39
+ INCLUDEPATH += ../../..
40
+ HEADERS = myplugin.hh
41
+ SOURCES = myplugin.cpp
42
+ TARGET = myplugin
43
+ win32:DESTDIR = ./
44
+ LIBS += -L../../..
45
+ macx {
46
+ LIBS += -framework gecode
47
+ }
48
+ unix {
49
+ !macx {
50
+ LIBS += -lgecodekernel -lgecodesupport -lgecodeint -lgecodescheduling -lgecodegraph -lgecodeminimodel -lgecodedriver -lgecodesearch -lgecodeflatzinc
51
+ }}
@@ -0,0 +1 @@
1
+ solve ::gecode_search(myplugin(1,2,3)) satisfy;
@@ -0,0 +1,1056 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Guido Tack, 2007
8
+ *
9
+ * Last modified:
10
+ * $Date: 2012-03-21 16:25:08 +1100 (Wed, 21 Mar 2012) $ by $Author: tack $
11
+ * $Revision: 12605 $
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 <gecode/flatzinc.hh>
39
+ #include <gecode/flatzinc/registry.hh>
40
+ #include <gecode/flatzinc/plugin.hh>
41
+
42
+ #include <gecode/search.hh>
43
+
44
+ #include <vector>
45
+ #include <string>
46
+ using namespace std;
47
+
48
+ namespace Gecode { namespace FlatZinc {
49
+
50
+ IntSet vs2is(IntVarSpec* vs) {
51
+ if (vs->assigned) {
52
+ return IntSet(vs->i,vs->i);
53
+ }
54
+ if (vs->domain()) {
55
+ AST::SetLit* sl = vs->domain.some();
56
+ if (sl->interval) {
57
+ return IntSet(sl->min, sl->max);
58
+ } else {
59
+ int* newdom = heap.alloc<int>(static_cast<unsigned long int>(sl->s.size()));
60
+ for (int i=sl->s.size(); i--;)
61
+ newdom[i] = sl->s[i];
62
+ IntSet ret(newdom, sl->s.size());
63
+ heap.free(newdom, static_cast<unsigned long int>(sl->s.size()));
64
+ return ret;
65
+ }
66
+ }
67
+ return IntSet(Int::Limits::min, Int::Limits::max);
68
+ }
69
+
70
+ int vs2bsl(BoolVarSpec* bs) {
71
+ if (bs->assigned) {
72
+ return bs->i;
73
+ }
74
+ if (bs->domain()) {
75
+ AST::SetLit* sl = bs->domain.some();
76
+ assert(sl->interval);
77
+ return std::min(1, std::max(0, sl->min));
78
+ }
79
+ return 0;
80
+ }
81
+
82
+ int vs2bsh(BoolVarSpec* bs) {
83
+ if (bs->assigned) {
84
+ return bs->i;
85
+ }
86
+ if (bs->domain()) {
87
+ AST::SetLit* sl = bs->domain.some();
88
+ assert(sl->interval);
89
+ return std::max(0, std::min(1, sl->max));
90
+ }
91
+ return 1;
92
+ }
93
+
94
+ TieBreakVarBranch<IntVarBranch> ann2ivarsel(AST::Node* ann) {
95
+ if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) {
96
+ if (s->id == "input_order")
97
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_NONE);
98
+ if (s->id == "first_fail")
99
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_SIZE_MIN);
100
+ if (s->id == "anti_first_fail")
101
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_SIZE_MAX);
102
+ if (s->id == "smallest")
103
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_MIN_MIN);
104
+ if (s->id == "largest")
105
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_MAX_MAX);
106
+ if (s->id == "occurrence")
107
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_DEGREE_MAX);
108
+ if (s->id == "max_regret")
109
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_REGRET_MIN_MAX);
110
+ if (s->id == "most_constrained")
111
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_SIZE_MIN,
112
+ INT_VAR_DEGREE_MAX);
113
+ if (s->id == "random")
114
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_RND);
115
+ if (s->id == "afc_min")
116
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_AFC_MIN);
117
+ if (s->id == "afc_max")
118
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_AFC_MAX);
119
+ if (s->id == "size_afc_min")
120
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_SIZE_AFC_MIN);
121
+ if (s->id == "size_afc_max")
122
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_SIZE_AFC_MAX);
123
+ }
124
+ std::cerr << "Warning, ignored search annotation: ";
125
+ ann->print(std::cerr);
126
+ std::cerr << std::endl;
127
+ return TieBreakVarBranch<IntVarBranch>(INT_VAR_NONE);
128
+ }
129
+
130
+ IntValBranch ann2ivalsel(AST::Node* ann) {
131
+ if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) {
132
+ if (s->id == "indomain_min")
133
+ return INT_VAL_MIN;
134
+ if (s->id == "indomain_max")
135
+ return INT_VAL_MAX;
136
+ if (s->id == "indomain_median")
137
+ return INT_VAL_MED;
138
+ if (s->id == "indomain_split")
139
+ return INT_VAL_SPLIT_MIN;
140
+ if (s->id == "indomain_reverse_split")
141
+ return INT_VAL_SPLIT_MAX;
142
+ if (s->id == "indomain_random")
143
+ return INT_VAL_RND;
144
+ if (s->id == "indomain")
145
+ return INT_VALUES_MIN;
146
+ if (s->id == "indomain_middle") {
147
+ std::cerr << "Warning, replacing unsupported annotation "
148
+ << "indomain_middle with indomain_median" << std::endl;
149
+ return INT_VAL_MED;
150
+ }
151
+ if (s->id == "indomain_interval") {
152
+ std::cerr << "Warning, replacing unsupported annotation "
153
+ << "indomain_interval with indomain_split" << std::endl;
154
+ return INT_VAL_SPLIT_MIN;
155
+ }
156
+ }
157
+ std::cerr << "Warning, ignored search annotation: ";
158
+ ann->print(std::cerr);
159
+ std::cerr << std::endl;
160
+ return INT_VAL_MIN;
161
+ }
162
+
163
+ IntAssign ann2asnivalsel(AST::Node* ann) {
164
+ if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) {
165
+ if (s->id == "indomain_min")
166
+ return INT_ASSIGN_MIN;
167
+ if (s->id == "indomain_max")
168
+ return INT_ASSIGN_MAX;
169
+ if (s->id == "indomain_median")
170
+ return INT_ASSIGN_MED;
171
+ if (s->id == "indomain_random")
172
+ return INT_ASSIGN_RND;
173
+ }
174
+ std::cerr << "Warning, ignored search annotation: ";
175
+ ann->print(std::cerr);
176
+ std::cerr << std::endl;
177
+ return INT_ASSIGN_MIN;
178
+ }
179
+
180
+ #ifdef GECODE_HAS_SET_VARS
181
+ SetVarBranch ann2svarsel(AST::Node* ann) {
182
+ if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) {
183
+ if (s->id == "input_order")
184
+ return SET_VAR_NONE;
185
+ if (s->id == "first_fail")
186
+ return SET_VAR_SIZE_MIN;
187
+ if (s->id == "anti_first_fail")
188
+ return SET_VAR_SIZE_MAX;
189
+ if (s->id == "smallest")
190
+ return SET_VAR_MIN_MIN;
191
+ if (s->id == "largest")
192
+ return SET_VAR_MAX_MAX;
193
+ }
194
+ std::cerr << "Warning, ignored search annotation: ";
195
+ ann->print(std::cerr);
196
+ std::cerr << std::endl;
197
+ return SET_VAR_NONE;
198
+ }
199
+
200
+ SetValBranch ann2svalsel(AST::Node* ann) {
201
+ if (AST::Atom* s = dynamic_cast<AST::Atom*>(ann)) {
202
+ if (s->id == "indomain_min")
203
+ return SET_VAL_MIN_INC;
204
+ if (s->id == "indomain_max")
205
+ return SET_VAL_MAX_INC;
206
+ if (s->id == "outdomain_min")
207
+ return SET_VAL_MIN_EXC;
208
+ if (s->id == "outdomain_max")
209
+ return SET_VAL_MAX_EXC;
210
+ }
211
+ std::cerr << "Warning, ignored search annotation: ";
212
+ ann->print(std::cerr);
213
+ std::cerr << std::endl;
214
+ return SET_VAL_MIN_INC;
215
+ }
216
+ #endif
217
+
218
+ FlatZincSpace::FlatZincSpace(bool share, FlatZincSpace& f)
219
+ : Space(share, f), _solveAnnotations(NULL), iv_boolalias(NULL) {
220
+ _optVar = f._optVar;
221
+ _method = f._method;
222
+ iv.update(*this, share, f.iv);
223
+ intVarCount = f.intVarCount;
224
+ bv.update(*this, share, f.bv);
225
+ boolVarCount = f.boolVarCount;
226
+ #ifdef GECODE_HAS_SET_VARS
227
+ sv.update(*this, share, f.sv);
228
+ setVarCount = f.setVarCount;
229
+ #endif
230
+ }
231
+
232
+ FlatZincSpace::FlatZincSpace(void)
233
+ : intVarCount(-1), boolVarCount(-1), setVarCount(-1), _optVar(-1),
234
+ _solveAnnotations(NULL) {}
235
+
236
+ void
237
+ FlatZincSpace::init(int intVars, int boolVars,
238
+ #ifdef GECODE_HAS_SET_VARS
239
+ int setVars) {
240
+ #else
241
+ int) {
242
+ #endif
243
+ intVarCount = 0;
244
+ iv = IntVarArray(*this, intVars);
245
+ iv_introduced = std::vector<bool>(intVars);
246
+ iv_boolalias = alloc<int>(intVars+(intVars==0?1:0));
247
+ boolVarCount = 0;
248
+ bv = BoolVarArray(*this, boolVars);
249
+ bv_introduced = std::vector<bool>(boolVars);
250
+ #ifdef GECODE_HAS_SET_VARS
251
+ setVarCount = 0;
252
+ sv = SetVarArray(*this, setVars);
253
+ sv_introduced = std::vector<bool>(setVars);
254
+ #endif
255
+ }
256
+
257
+ void
258
+ FlatZincSpace::newIntVar(IntVarSpec* vs) {
259
+ if (vs->alias) {
260
+ iv[intVarCount++] = iv[vs->i];
261
+ } else {
262
+ IntSet dom(vs2is(vs));
263
+ if (dom.size()==0) {
264
+ fail();
265
+ return;
266
+ } else {
267
+ iv[intVarCount++] = IntVar(*this, dom);
268
+ }
269
+ }
270
+ iv_introduced[intVarCount-1] = vs->introduced;
271
+ iv_boolalias[intVarCount-1] = -1;
272
+ }
273
+
274
+ void
275
+ FlatZincSpace::aliasBool2Int(int iv, int bv) {
276
+ iv_boolalias[iv] = bv;
277
+ }
278
+ int
279
+ FlatZincSpace::aliasBool2Int(int iv) {
280
+ return iv_boolalias[iv];
281
+ }
282
+
283
+ void
284
+ FlatZincSpace::newBoolVar(BoolVarSpec* vs) {
285
+ if (vs->alias) {
286
+ bv[boolVarCount++] = bv[vs->i];
287
+ } else {
288
+ bv[boolVarCount++] = BoolVar(*this, vs2bsl(vs), vs2bsh(vs));
289
+ }
290
+ bv_introduced[boolVarCount-1] = vs->introduced;
291
+ }
292
+
293
+ #ifdef GECODE_HAS_SET_VARS
294
+ void
295
+ FlatZincSpace::newSetVar(SetVarSpec* vs) {
296
+ if (vs->alias) {
297
+ sv[setVarCount++] = sv[vs->i];
298
+ } else if (vs->assigned) {
299
+ assert(vs->upperBound());
300
+ AST::SetLit* vsv = vs->upperBound.some();
301
+ if (vsv->interval) {
302
+ IntSet d(vsv->min, vsv->max);
303
+ sv[setVarCount++] = SetVar(*this, d, d);
304
+ } else {
305
+ int* is = heap.alloc<int>(static_cast<unsigned long int>(vsv->s.size()));
306
+ for (int i=vsv->s.size(); i--; )
307
+ is[i] = vsv->s[i];
308
+ IntSet d(is, vsv->s.size());
309
+ heap.free(is,static_cast<unsigned long int>(vsv->s.size()));
310
+ sv[setVarCount++] = SetVar(*this, d, d);
311
+ }
312
+ } else if (vs->upperBound()) {
313
+ AST::SetLit* vsv = vs->upperBound.some();
314
+ if (vsv->interval) {
315
+ IntSet d(vsv->min, vsv->max);
316
+ sv[setVarCount++] = SetVar(*this, IntSet::empty, d);
317
+ } else {
318
+ int* is = heap.alloc<int>(static_cast<unsigned long int>(vsv->s.size()));
319
+ for (int i=vsv->s.size(); i--; )
320
+ is[i] = vsv->s[i];
321
+ IntSet d(is, vsv->s.size());
322
+ heap.free(is,static_cast<unsigned long int>(vsv->s.size()));
323
+ sv[setVarCount++] = SetVar(*this, IntSet::empty, d);
324
+ }
325
+ } else {
326
+ sv[setVarCount++] = SetVar(*this, IntSet::empty,
327
+ IntSet(Set::Limits::min,
328
+ Set::Limits::max));
329
+ }
330
+ sv_introduced[setVarCount-1] = vs->introduced;
331
+ }
332
+ #else
333
+ void
334
+ FlatZincSpace::newSetVar(SetVarSpec*) {
335
+ throw FlatZinc::Error("Gecode", "set variables not supported");
336
+ }
337
+ #endif
338
+
339
+ void
340
+ FlatZincSpace::postConstraint(const ConExpr& ce, AST::Node* ann) {
341
+ try {
342
+ registry().post(*this, ce, ann);
343
+ } catch (Gecode::Exception& e) {
344
+ throw FlatZinc::Error("Gecode", e.what());
345
+ } catch (AST::TypeError& e) {
346
+ throw FlatZinc::Error("Type error", e.what());
347
+ }
348
+ }
349
+
350
+ void flattenAnnotations(AST::Array* ann, std::vector<AST::Node*>& out) {
351
+ for (unsigned int i=0; i<ann->a.size(); i++) {
352
+ if (ann->a[i]->isCall("seq_search")) {
353
+ AST::Call* c = ann->a[i]->getCall();
354
+ if (c->args->isArray())
355
+ flattenAnnotations(c->args->getArray(), out);
356
+ else
357
+ out.push_back(c->args);
358
+ } else {
359
+ out.push_back(ann->a[i]);
360
+ }
361
+ }
362
+ }
363
+
364
+ void
365
+ FlatZincSpace::createBranchers(AST::Node* ann, int seed,
366
+ bool ignoreUnknown,
367
+ std::ostream& err) {
368
+ VarBranchOptions varbo;
369
+ varbo.seed = seed;
370
+ ValBranchOptions valbo;
371
+ valbo.seed = seed;
372
+ if (ann) {
373
+ std::vector<AST::Node*> flatAnn;
374
+ if (ann->isArray()) {
375
+ flattenAnnotations(ann->getArray() , flatAnn);
376
+ } else {
377
+ flatAnn.push_back(ann);
378
+ }
379
+
380
+ for (unsigned int i=0; i<flatAnn.size(); i++) {
381
+ if (flatAnn[i]->isCall("gecode_search")) {
382
+ AST::Call* c = flatAnn[i]->getCall();
383
+ branchWithPlugin(c->args);
384
+ } else try {
385
+ AST::Call *call = flatAnn[i]->getCall("int_search");
386
+ AST::Array *args = call->getArgs(4);
387
+ AST::Array *vars = args->a[0]->getArray();
388
+ int k=vars->a.size();
389
+ for (int i=vars->a.size(); i--;)
390
+ if (vars->a[i]->isInt())
391
+ k--;
392
+ IntVarArgs va(k);
393
+ k=0;
394
+ for (unsigned int i=0; i<vars->a.size(); i++) {
395
+ if (vars->a[i]->isInt())
396
+ continue;
397
+ va[k++] = iv[vars->a[i]->getIntVar()];
398
+ }
399
+ branch(*this, va, ann2ivarsel(args->a[1]), ann2ivalsel(args->a[2]),
400
+ varbo,valbo);
401
+ } catch (AST::TypeError& e) {
402
+ try {
403
+ AST::Call *call = flatAnn[i]->getCall("int_assign");
404
+ AST::Array *args = call->getArgs(2);
405
+ AST::Array *vars = args->a[0]->getArray();
406
+ int k=vars->a.size();
407
+ for (int i=vars->a.size(); i--;)
408
+ if (vars->a[i]->isInt())
409
+ k--;
410
+ IntVarArgs va(k);
411
+ k=0;
412
+ for (unsigned int i=0; i<vars->a.size(); i++) {
413
+ if (vars->a[i]->isInt())
414
+ continue;
415
+ va[k++] = iv[vars->a[i]->getIntVar()];
416
+ }
417
+ assign(*this, va, ann2asnivalsel(args->a[1]));
418
+ } catch (AST::TypeError& e) {
419
+ (void) e;
420
+ try {
421
+ AST::Call *call = flatAnn[i]->getCall("bool_search");
422
+ AST::Array *args = call->getArgs(4);
423
+ AST::Array *vars = args->a[0]->getArray();
424
+ int k=vars->a.size();
425
+ for (int i=vars->a.size(); i--;)
426
+ if (vars->a[i]->isBool())
427
+ k--;
428
+ BoolVarArgs va(k);
429
+ k=0;
430
+ for (unsigned int i=0; i<vars->a.size(); i++) {
431
+ if (vars->a[i]->isBool())
432
+ continue;
433
+ va[k++] = bv[vars->a[i]->getBoolVar()];
434
+ }
435
+ branch(*this, va, ann2ivarsel(args->a[1]),
436
+ ann2ivalsel(args->a[2]), varbo, valbo);
437
+ } catch (AST::TypeError& e) {
438
+ (void) e;
439
+ #ifdef GECODE_HAS_SET_VARS
440
+ try {
441
+ AST::Call *call = flatAnn[i]->getCall("set_search");
442
+ AST::Array *args = call->getArgs(4);
443
+ AST::Array *vars = args->a[0]->getArray();
444
+ int k=vars->a.size();
445
+ for (int i=vars->a.size(); i--;)
446
+ if (vars->a[i]->isSet())
447
+ k--;
448
+ SetVarArgs va(k);
449
+ k=0;
450
+ for (unsigned int i=0; i<vars->a.size(); i++) {
451
+ if (vars->a[i]->isSet())
452
+ continue;
453
+ va[k++] = sv[vars->a[i]->getSetVar()];
454
+ }
455
+ branch(*this, va, ann2svarsel(args->a[1]),
456
+ ann2svalsel(args->a[2]), varbo, valbo);
457
+ } catch (AST::TypeError& e) {
458
+ (void) e;
459
+ if (!ignoreUnknown) {
460
+ err << "Warning, ignored search annotation: ";
461
+ flatAnn[i]->print(err);
462
+ err << std::endl;
463
+ }
464
+ }
465
+ #else
466
+ if (!ignoreUnknown) {
467
+ err << "Warning, ignored search annotation: ";
468
+ flatAnn[i]->print(err);
469
+ err << std::endl;
470
+ }
471
+ #endif
472
+ }
473
+ }
474
+ }
475
+ }
476
+ }
477
+ int introduced = 0;
478
+ for (int i=iv.size(); i--;)
479
+ if (iv_introduced[i])
480
+ introduced++;
481
+ IntVarArgs iv_sol(iv.size()-introduced);
482
+ IntVarArgs iv_tmp(introduced);
483
+ for (int i=iv.size(), j=0, k=0; i--;)
484
+ if (iv_introduced[i])
485
+ iv_tmp[j++] = iv[i];
486
+ else
487
+ iv_sol[k++] = iv[i];
488
+
489
+ introduced = 0;
490
+ for (int i=bv.size(); i--;)
491
+ if (bv_introduced[i])
492
+ introduced++;
493
+ BoolVarArgs bv_sol(bv.size()-introduced);
494
+ BoolVarArgs bv_tmp(introduced);
495
+ for (int i=bv.size(), j=0, k=0; i--;)
496
+ if (bv_introduced[i])
497
+ bv_tmp[j++] = bv[i];
498
+ else
499
+ bv_sol[k++] = bv[i];
500
+
501
+ branch(*this, iv_sol, INT_VAR_SIZE_AFC_MIN, INT_VAL_MIN);
502
+ branch(*this, bv_sol, INT_VAR_AFC_MAX, INT_VAL_MIN);
503
+ #ifdef GECODE_HAS_SET_VARS
504
+ introduced = 0;
505
+ for (int i=sv.size(); i--;)
506
+ if (sv_introduced[i])
507
+ introduced++;
508
+ SetVarArgs sv_sol(sv.size()-introduced);
509
+ SetVarArgs sv_tmp(introduced);
510
+ for (int i=sv.size(), j=0, k=0; i--;)
511
+ if (sv_introduced[i])
512
+ sv_tmp[j++] = sv[i];
513
+ else
514
+ sv_sol[k++] = sv[i];
515
+ branch(*this, sv_sol, SET_VAR_SIZE_AFC_MIN, SET_VAL_MIN_INC);
516
+ #endif
517
+ branch(*this, iv_tmp, INT_VAR_SIZE_AFC_MIN, INT_VAL_MIN);
518
+ branch(*this, bv_tmp, INT_VAR_AFC_MAX, INT_VAL_MIN);
519
+ #ifdef GECODE_HAS_SET_VARS
520
+ branch(*this, sv_tmp, SET_VAR_SIZE_AFC_MIN, SET_VAL_MIN_INC);
521
+ #endif
522
+ }
523
+
524
+ AST::Array*
525
+ FlatZincSpace::solveAnnotations(void) const {
526
+ return _solveAnnotations;
527
+ }
528
+
529
+ void
530
+ FlatZincSpace::solve(AST::Array* ann) {
531
+ _method = SAT;
532
+ _solveAnnotations = ann;
533
+ }
534
+
535
+ void
536
+ FlatZincSpace::minimize(int var, AST::Array* ann) {
537
+ _method = MIN;
538
+ _optVar = var;
539
+ _solveAnnotations = ann;
540
+ // Branch on optimization variable to ensure that it is given a value.
541
+ AST::Array* args = new AST::Array(4);
542
+ args->a[0] = new AST::Array(new AST::IntVar(_optVar));
543
+ args->a[1] = new AST::Atom("input_order");
544
+ args->a[2] = new AST::Atom("indomain_min");
545
+ args->a[3] = new AST::Atom("complete");
546
+ AST::Call* c = new AST::Call("int_search", args);
547
+ if (!ann)
548
+ ann = new AST::Array(c);
549
+ else
550
+ ann->a.push_back(c);
551
+ }
552
+
553
+ void
554
+ FlatZincSpace::maximize(int var, AST::Array* ann) {
555
+ _method = MAX;
556
+ _optVar = var;
557
+ _solveAnnotations = ann;
558
+ // Branch on optimization variable to ensure that it is given a value.
559
+ AST::Array* args = new AST::Array(4);
560
+ args->a[0] = new AST::Array(new AST::IntVar(_optVar));
561
+ args->a[1] = new AST::Atom("input_order");
562
+ args->a[2] = new AST::Atom("indomain_min");
563
+ args->a[3] = new AST::Atom("complete");
564
+ AST::Call* c = new AST::Call("int_search", args);
565
+ if (!ann)
566
+ ann = new AST::Array(c);
567
+ else
568
+ ann->a.push_back(c);
569
+ }
570
+
571
+ FlatZincSpace::~FlatZincSpace(void) {
572
+ delete _solveAnnotations;
573
+ }
574
+
575
+ #ifdef GECODE_HAS_GIST
576
+
577
+ /**
578
+ * \brief Traits class for search engines
579
+ */
580
+ template<class Engine>
581
+ class GistEngine {
582
+ };
583
+
584
+ /// Specialization for DFS
585
+ template<typename S>
586
+ class GistEngine<DFS<S> > {
587
+ public:
588
+ static void explore(S* root, const FlatZincOptions& opt,
589
+ Gist::Inspector* i) {
590
+ Gecode::Gist::Options o;
591
+ o.c_d = opt.c_d(); o.a_d = opt.a_d();
592
+ o.inspect.click(i);
593
+ (void) Gecode::Gist::dfs(root, o);
594
+ }
595
+ };
596
+
597
+ /// Specialization for BAB
598
+ template<typename S>
599
+ class GistEngine<BAB<S> > {
600
+ public:
601
+ static void explore(S* root, const FlatZincOptions& opt,
602
+ Gist::Inspector* i) {
603
+ Gecode::Gist::Options o;
604
+ o.c_d = opt.c_d(); o.a_d = opt.a_d();
605
+ o.inspect.click(i);
606
+ (void) Gecode::Gist::bab(root, o);
607
+ }
608
+ };
609
+
610
+ /// Specialization for Restart
611
+ template<typename S>
612
+ class GistEngine<Restart<S> > {
613
+ public:
614
+ static void explore(S* root, const FlatZincOptions& opt,
615
+ Gist::Inspector* i) {
616
+ Gecode::Gist::Options o;
617
+ o.c_d = opt.c_d(); o.a_d = opt.a_d();
618
+ o.inspect.click(i);
619
+ (void) Gecode::Gist::bab(root, o);
620
+ }
621
+ };
622
+
623
+ /// \brief An inspector for printing simple text output
624
+ template<class S>
625
+ class FZPrintingInspector
626
+ : public Gecode::Gist::TextOutput, public Gecode::Gist::Inspector {
627
+ private:
628
+ const Printer& p;
629
+ public:
630
+ /// Constructor
631
+ FZPrintingInspector(const Printer& p0);
632
+ /// Use the print method of the template class S to print a space
633
+ virtual void inspect(const Space& node);
634
+ /// Finalize when Gist exits
635
+ virtual void finalize(void);
636
+ };
637
+
638
+ template<class S>
639
+ FZPrintingInspector<S>::FZPrintingInspector(const Printer& p0)
640
+ : TextOutput("Gecode/FlatZinc"), p(p0) {}
641
+
642
+ template<class S>
643
+ void
644
+ FZPrintingInspector<S>::inspect(const Space& node) {
645
+ init();
646
+ dynamic_cast<const S&>(node).print(getStream(), p);
647
+ getStream() << std::endl;
648
+ }
649
+
650
+ template<class S>
651
+ void
652
+ FZPrintingInspector<S>::finalize(void) {
653
+ Gecode::Gist::TextOutput::finalize();
654
+ }
655
+
656
+ #endif
657
+
658
+ template<template<class> class Engine>
659
+ void
660
+ FlatZincSpace::runEngine(std::ostream& out, const Printer& p,
661
+ const FlatZincOptions& opt, Support::Timer& t_total) {
662
+ #ifdef GECODE_HAS_GIST
663
+ if (opt.mode() == SM_GIST) {
664
+ FZPrintingInspector<FlatZincSpace> pi(p);
665
+ (void) GistEngine<Engine<FlatZincSpace> >::explore(this,opt,&pi);
666
+ return;
667
+ }
668
+ #endif
669
+ StatusStatistics sstat;
670
+ unsigned int n_p = 0;
671
+ Support::Timer t_solve;
672
+ t_solve.start();
673
+ if (status(sstat) != SS_FAILED) {
674
+ n_p = propagators();
675
+ }
676
+ Search::Options o;
677
+ o.stop = Driver::Cutoff::create(opt.node(), opt.fail(), opt.time(),
678
+ true);
679
+ o.c_d = opt.c_d();
680
+ o.a_d = opt.a_d();
681
+ o.threads = opt.threads();
682
+ Driver::Cutoff::installCtrlHandler(true);
683
+ Engine<FlatZincSpace> se(this,o);
684
+ int noOfSolutions = _method == SAT ? opt.solutions() : 0;
685
+ bool printAll = _method == SAT || opt.allSolutions();
686
+ int findSol = noOfSolutions;
687
+ FlatZincSpace* sol = NULL;
688
+ while (FlatZincSpace* next_sol = se.next()) {
689
+ delete sol;
690
+ sol = next_sol;
691
+ if (printAll) {
692
+ sol->print(out, p);
693
+ out << "----------" << std::endl;
694
+ }
695
+ if (--findSol==0)
696
+ goto stopped;
697
+ }
698
+ if (sol && !printAll) {
699
+ sol->print(out, p);
700
+ out << "----------" << std::endl;
701
+ }
702
+ if (!se.stopped()) {
703
+ if (sol) {
704
+ out << "==========" << endl;
705
+ } else {
706
+ out << "=====UNSATISFIABLE=====" << endl;
707
+ }
708
+ } else if (!sol) {
709
+ out << "=====UNKNOWN=====" << endl;
710
+ }
711
+ delete sol;
712
+ stopped:
713
+ Driver::Cutoff::installCtrlHandler(false);
714
+ if (opt.mode() == SM_STAT) {
715
+ Gecode::Search::Statistics stat = se.statistics();
716
+ out << endl
717
+ << "%% runtime: ";
718
+ Driver::stop(t_total,out);
719
+ out << endl
720
+ << "%% solvetime: ";
721
+ Driver::stop(t_solve,out);
722
+ out << endl
723
+ << "%% solutions: "
724
+ << std::abs(noOfSolutions - findSol) << endl
725
+ << "%% variables: "
726
+ << (intVarCount + boolVarCount + setVarCount) << endl
727
+ << "%% propagators: " << n_p << endl
728
+ << "%% propagations: " << sstat.propagate+stat.propagate << endl
729
+ << "%% nodes: " << stat.node << endl
730
+ << "%% failures: " << stat.fail << endl
731
+ << "%% peak depth: " << stat.depth << endl
732
+ << "%% peak memory: "
733
+ << static_cast<int>((stat.memory+1023) / 1024) << " KB"
734
+ << endl;
735
+ }
736
+ }
737
+
738
+ #ifdef GECODE_HAS_QT
739
+ void
740
+ FlatZincSpace::branchWithPlugin(AST::Node* ann) {
741
+ if (AST::Call* c = dynamic_cast<AST::Call*>(ann)) {
742
+ QString pluginName(c->id.c_str());
743
+ if (QLibrary::isLibrary(pluginName+".dll")) {
744
+ pluginName += ".dll";
745
+ } else if (QLibrary::isLibrary(pluginName+".dylib")) {
746
+ pluginName = "lib" + pluginName + ".dylib";
747
+ } else if (QLibrary::isLibrary(pluginName+".so")) {
748
+ // Must check .so after .dylib so that Mac OS uses .dylib
749
+ pluginName = "lib" + pluginName + ".so";
750
+ }
751
+ QPluginLoader pl(pluginName);
752
+ QObject* plugin_o = pl.instance();
753
+ if (!plugin_o) {
754
+ throw FlatZinc::Error("FlatZinc",
755
+ "Error loading plugin "+pluginName.toStdString()+
756
+ ": "+pl.errorString().toStdString());
757
+ }
758
+ BranchPlugin* pb = qobject_cast<BranchPlugin*>(plugin_o);
759
+ if (!pb) {
760
+ throw FlatZinc::Error("FlatZinc",
761
+ "Error loading plugin "+pluginName.toStdString()+
762
+ ": does not contain valid PluginBrancher");
763
+ }
764
+ pb->branch(*this, c);
765
+ }
766
+ }
767
+ #else
768
+ void
769
+ FlatZincSpace::branchWithPlugin(AST::Node* ann) {
770
+ throw FlatZinc::Error("FlatZinc",
771
+ "Branching with plugins not supported (requires Qt support)");
772
+ }
773
+ #endif
774
+
775
+ void
776
+ FlatZincSpace::run(std::ostream& out, const Printer& p,
777
+ const FlatZincOptions& opt, Support::Timer& t_total) {
778
+ switch (_method) {
779
+ case MIN:
780
+ case MAX:
781
+ if (opt.search() == FlatZincOptions::FZ_SEARCH_BAB)
782
+ runEngine<BAB>(out,p,opt,t_total);
783
+ else
784
+ runEngine<Restart>(out,p,opt,t_total);
785
+ break;
786
+ case SAT:
787
+ runEngine<DFS>(out,p,opt,t_total);
788
+ break;
789
+ }
790
+ }
791
+
792
+ void
793
+ FlatZincSpace::constrain(const Space& s) {
794
+ if (_method == MIN)
795
+ rel(*this, iv[_optVar], IRT_LE,
796
+ static_cast<const FlatZincSpace*>(&s)->iv[_optVar].val());
797
+ else if (_method == MAX)
798
+ rel(*this, iv[_optVar], IRT_GR,
799
+ static_cast<const FlatZincSpace*>(&s)->iv[_optVar].val());
800
+ }
801
+
802
+ Space*
803
+ FlatZincSpace::copy(bool share) {
804
+ return new FlatZincSpace(share, *this);
805
+ }
806
+
807
+ FlatZincSpace::Meth
808
+ FlatZincSpace::method(void) const {
809
+ return _method;
810
+ }
811
+
812
+ int
813
+ FlatZincSpace::optVar(void) const {
814
+ return _optVar;
815
+ }
816
+
817
+ void
818
+ FlatZincSpace::print(std::ostream& out, const Printer& p) const {
819
+ p.print(out, iv, bv
820
+ #ifdef GECODE_HAS_SET_VARS
821
+ , sv
822
+ #endif
823
+ );
824
+ }
825
+
826
+ void
827
+ FlatZincSpace::shrinkArrays(Printer& p) {
828
+ p.shrinkArrays(*this, _optVar, iv, bv
829
+ #ifdef GECODE_HAS_SET_VARS
830
+ , sv
831
+ #endif
832
+ );
833
+ }
834
+
835
+ void
836
+ Printer::init(AST::Array* output) {
837
+ _output = output;
838
+ }
839
+
840
+ void
841
+ Printer::printElem(std::ostream& out,
842
+ AST::Node* ai,
843
+ const Gecode::IntVarArray& iv,
844
+ const Gecode::BoolVarArray& bv
845
+ #ifdef GECODE_HAS_SET_VARS
846
+ , const Gecode::SetVarArray& sv
847
+ #endif
848
+ ) const {
849
+ int k;
850
+ if (ai->isInt(k)) {
851
+ out << k;
852
+ } else if (ai->isIntVar()) {
853
+ out << iv[ai->getIntVar()];
854
+ } else if (ai->isBoolVar()) {
855
+ if (bv[ai->getBoolVar()].min() == 1) {
856
+ out << "true";
857
+ } else if (bv[ai->getBoolVar()].max() == 0) {
858
+ out << "false";
859
+ } else {
860
+ out << "false..true";
861
+ }
862
+ #ifdef GECODE_HAS_SET_VARS
863
+ } else if (ai->isSetVar()) {
864
+ if (!sv[ai->getSetVar()].assigned()) {
865
+ out << sv[ai->getSetVar()];
866
+ return;
867
+ }
868
+ SetVarGlbRanges svr(sv[ai->getSetVar()]);
869
+ if (!svr()) {
870
+ out << "{}";
871
+ return;
872
+ }
873
+ int min = svr.min();
874
+ int max = svr.max();
875
+ ++svr;
876
+ if (svr()) {
877
+ SetVarGlbValues svv(sv[ai->getSetVar()]);
878
+ int i = svv.val();
879
+ out << "{" << i;
880
+ ++svv;
881
+ for (; svv(); ++svv)
882
+ out << ", " << svv.val();
883
+ out << "}";
884
+ } else {
885
+ out << min << ".." << max;
886
+ }
887
+ #endif
888
+ } else if (ai->isBool()) {
889
+ out << (ai->getBool() ? "true" : "false");
890
+ } else if (ai->isSet()) {
891
+ AST::SetLit* s = ai->getSet();
892
+ if (s->interval) {
893
+ out << s->min << ".." << s->max;
894
+ } else {
895
+ out << "{";
896
+ for (unsigned int i=0; i<s->s.size(); i++) {
897
+ out << s->s[i] << (i < s->s.size()-1 ? ", " : "}");
898
+ }
899
+ }
900
+ } else if (ai->isString()) {
901
+ std::string s = ai->getString();
902
+ for (unsigned int i=0; i<s.size(); i++) {
903
+ if (s[i] == '\\' && i<s.size()-1) {
904
+ switch (s[i+1]) {
905
+ case 'n': out << "\n"; break;
906
+ case '\\': out << "\\"; break;
907
+ case 't': out << "\t"; break;
908
+ default: out << "\\" << s[i+1];
909
+ }
910
+ i++;
911
+ } else {
912
+ out << s[i];
913
+ }
914
+ }
915
+ }
916
+ }
917
+
918
+ void
919
+ Printer::print(std::ostream& out,
920
+ const Gecode::IntVarArray& iv,
921
+ const Gecode::BoolVarArray& bv
922
+ #ifdef GECODE_HAS_SET_VARS
923
+ ,
924
+ const Gecode::SetVarArray& sv
925
+ #endif
926
+ ) const {
927
+ if (_output == NULL)
928
+ return;
929
+ for (unsigned int i=0; i< _output->a.size(); i++) {
930
+ AST::Node* ai = _output->a[i];
931
+ if (ai->isArray()) {
932
+ AST::Array* aia = ai->getArray();
933
+ int size = aia->a.size();
934
+ out << "[";
935
+ for (int j=0; j<size; j++) {
936
+ printElem(out,aia->a[j],iv,bv
937
+ #ifdef GECODE_HAS_SET_VARS
938
+ ,sv
939
+ #endif
940
+ );
941
+ if (j<size-1)
942
+ out << ", ";
943
+ }
944
+ out << "]";
945
+ } else {
946
+ printElem(out,ai,iv,bv
947
+ #ifdef GECODE_HAS_SET_VARS
948
+ ,sv
949
+ #endif
950
+ );
951
+ }
952
+ }
953
+ }
954
+
955
+ void
956
+ Printer::shrinkElement(AST::Node* node,
957
+ std::map<int,int>& iv, std::map<int,int>& bv,
958
+ std::map<int,int>& sv) {
959
+ if (node->isIntVar()) {
960
+ AST::IntVar* x = static_cast<AST::IntVar*>(node);
961
+ if (iv.find(x->i) == iv.end()) {
962
+ int newi = iv.size();
963
+ iv[x->i] = newi;
964
+ }
965
+ x->i = iv[x->i];
966
+ } else if (node->isBoolVar()) {
967
+ AST::BoolVar* x = static_cast<AST::BoolVar*>(node);
968
+ if (bv.find(x->i) == bv.end()) {
969
+ int newi = bv.size();
970
+ bv[x->i] = newi;
971
+ }
972
+ x->i = bv[x->i];
973
+ } else if (node->isSetVar()) {
974
+ AST::SetVar* x = static_cast<AST::SetVar*>(node);
975
+ if (sv.find(x->i) == sv.end()) {
976
+ int newi = sv.size();
977
+ sv[x->i] = newi;
978
+ }
979
+ x->i = sv[x->i];
980
+ }
981
+ }
982
+
983
+ void
984
+ Printer::shrinkArrays(Space& home,
985
+ int& optVar,
986
+ Gecode::IntVarArray& iv,
987
+ Gecode::BoolVarArray& bv
988
+ #ifdef GECODE_HAS_SET_VARS
989
+ ,
990
+ Gecode::SetVarArray& sv
991
+ #endif
992
+ ) {
993
+ if (_output == NULL) {
994
+ if (optVar == -1) {
995
+ iv = IntVarArray(home, 0);
996
+ } else {
997
+ IntVar ov = iv[optVar];
998
+ iv = IntVarArray(home, 1);
999
+ iv[0] = ov;
1000
+ optVar = 0;
1001
+ }
1002
+ bv = BoolVarArray(home, 0);
1003
+ #ifdef GECODE_HAS_SET_VARS
1004
+ sv = SetVarArray(home, 0);
1005
+ #endif
1006
+ return;
1007
+ }
1008
+ std::map<int,int> iv_new;
1009
+ std::map<int,int> bv_new;
1010
+ std::map<int,int> sv_new;
1011
+
1012
+ if (optVar != -1) {
1013
+ iv_new[optVar] = 0;
1014
+ optVar = 0;
1015
+ }
1016
+
1017
+ for (unsigned int i=0; i< _output->a.size(); i++) {
1018
+ AST::Node* ai = _output->a[i];
1019
+ if (ai->isArray()) {
1020
+ AST::Array* aia = ai->getArray();
1021
+ for (unsigned int j=0; j<aia->a.size(); j++) {
1022
+ shrinkElement(aia->a[j],iv_new,bv_new,sv_new);
1023
+ }
1024
+ } else {
1025
+ shrinkElement(ai,iv_new,bv_new,sv_new);
1026
+ }
1027
+ }
1028
+
1029
+ IntVarArgs iva(iv_new.size());
1030
+ for (map<int,int>::iterator i=iv_new.begin(); i != iv_new.end(); ++i) {
1031
+ iva[(*i).second] = iv[(*i).first];
1032
+ }
1033
+ iv = IntVarArray(home, iva);
1034
+
1035
+ BoolVarArgs bva(bv_new.size());
1036
+ for (map<int,int>::iterator i=bv_new.begin(); i != bv_new.end(); ++i) {
1037
+ bva[(*i).second] = bv[(*i).first];
1038
+ }
1039
+ bv = BoolVarArray(home, bva);
1040
+
1041
+ #ifdef GECODE_HAS_SET_VARS
1042
+ SetVarArgs sva(sv_new.size());
1043
+ for (map<int,int>::iterator i=sv_new.begin(); i != sv_new.end(); ++i) {
1044
+ sva[(*i).second] = sv[(*i).first];
1045
+ }
1046
+ sv = SetVarArray(home, sva);
1047
+ #endif
1048
+ }
1049
+
1050
+ Printer::~Printer(void) {
1051
+ delete _output;
1052
+ }
1053
+
1054
+ }}
1055
+
1056
+ // STATISTICS: flatzinc-any