dep-selector-libgecode 1.0.0.alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (806) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +26 -0
  3. data/Gemfile +3 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +29 -0
  6. data/Rakefile +20 -0
  7. data/dep-selector-libgecode.gemspec +25 -0
  8. data/ext/libgecode3/Makefile +8 -0
  9. data/ext/libgecode3/extconf.rb +57 -0
  10. data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
  11. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
  12. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
  13. data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
  14. data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
  15. data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
  16. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
  17. data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
  18. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
  19. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
  20. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
  21. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
  22. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
  23. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
  24. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
  25. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
  26. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
  27. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
  28. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
  29. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
  30. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
  31. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
  32. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
  33. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
  34. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
  35. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
  36. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
  37. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
  38. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
  39. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
  40. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
  41. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
  42. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
  43. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
  44. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
  45. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
  46. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
  47. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
  48. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
  49. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
  50. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
  51. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
  52. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
  53. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
  54. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
  55. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
  56. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
  57. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
  58. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
  59. data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
  60. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
  61. data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
  62. data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
  63. data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
  64. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
  65. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
  66. data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
  67. data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
  68. data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
  69. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
  70. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
  71. data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
  72. data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
  73. data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
  74. data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
  75. data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
  76. data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
  77. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
  78. data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
  79. data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
  80. data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
  81. data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
  82. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
  83. data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
  84. data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
  85. data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
  86. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
  87. data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
  88. data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
  89. data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
  90. data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
  91. data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
  92. data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
  93. data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
  94. data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
  95. data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
  96. data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
  97. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
  98. data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
  99. data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
  100. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
  101. data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
  102. data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
  103. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
  104. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
  105. data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
  106. data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
  107. data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
  108. data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
  109. data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
  110. data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
  111. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
  112. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
  113. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
  114. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
  115. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
  116. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
  117. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
  118. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
  119. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
  120. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
  121. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
  122. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
  123. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
  124. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
  125. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
  126. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
  127. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
  128. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
  129. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
  130. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
  131. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
  132. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
  133. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
  134. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
  135. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
  136. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
  137. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
  138. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
  139. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
  140. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
  141. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
  142. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
  143. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
  144. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
  145. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
  146. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
  147. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
  148. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
  149. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
  150. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
  151. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
  152. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
  153. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
  154. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
  155. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
  156. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
  157. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
  158. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
  159. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
  160. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
  161. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
  162. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
  163. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
  164. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
  165. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
  166. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
  167. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
  168. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
  169. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
  170. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
  171. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
  172. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
  173. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
  174. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
  175. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
  176. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
  177. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
  178. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
  179. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
  180. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
  181. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
  182. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
  183. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
  184. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
  185. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
  186. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
  187. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
  188. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
  189. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
  190. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
  191. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
  192. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
  193. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
  194. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
  195. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
  196. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
  197. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
  198. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
  199. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
  200. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
  201. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
  202. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
  203. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
  204. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
  205. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
  206. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
  207. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
  208. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
  209. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
  210. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
  211. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
  212. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
  213. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
  214. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
  215. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
  216. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
  217. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
  218. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
  219. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
  220. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
  221. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
  222. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
  223. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
  224. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
  225. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
  226. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
  227. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
  228. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
  229. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
  230. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
  231. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
  232. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
  233. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
  234. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
  235. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
  236. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
  237. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
  238. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
  239. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
  240. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
  241. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
  242. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
  243. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
  244. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
  245. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
  246. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
  247. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
  248. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
  249. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
  250. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
  251. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
  252. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
  253. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
  254. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
  255. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
  256. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
  257. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
  258. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
  259. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
  260. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
  261. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
  262. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
  263. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
  264. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
  265. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
  266. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
  267. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
  268. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
  269. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
  270. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
  271. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
  272. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
  273. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
  274. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
  275. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
  276. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
  277. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
  278. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
  279. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
  280. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
  281. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
  282. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
  283. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
  284. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
  285. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
  286. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
  287. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
  288. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
  289. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
  290. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
  291. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
  292. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
  293. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
  294. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
  295. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
  296. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
  297. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
  298. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
  299. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
  300. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
  301. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
  302. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
  303. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
  304. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
  305. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
  306. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
  307. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
  308. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
  309. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
  310. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
  311. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
  312. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
  313. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
  314. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
  315. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
  316. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
  317. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
  318. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
  319. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
  320. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
  321. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
  322. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
  323. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
  324. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
  325. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
  326. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
  327. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
  328. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
  329. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
  330. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
  331. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
  332. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
  333. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
  334. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
  335. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
  336. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
  337. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
  338. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
  339. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
  340. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
  341. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
  342. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
  343. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
  344. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
  345. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
  346. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
  347. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
  348. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
  349. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
  350. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
  351. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
  352. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
  353. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
  354. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
  355. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
  356. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
  357. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
  358. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
  359. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
  360. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
  361. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
  362. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
  363. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
  364. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
  365. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
  366. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
  367. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
  368. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
  369. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
  370. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
  371. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
  372. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
  373. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
  374. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
  375. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
  376. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
  377. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
  378. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
  379. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
  380. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
  381. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
  382. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
  383. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
  384. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
  385. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
  386. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
  387. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
  388. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
  389. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
  390. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
  391. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
  392. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
  393. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
  394. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
  395. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
  396. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
  397. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
  398. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
  399. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
  400. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
  401. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
  402. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
  403. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
  404. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
  405. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
  406. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
  407. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
  408. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
  409. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
  410. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
  411. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
  412. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
  413. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
  414. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
  415. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
  416. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
  417. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
  418. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
  419. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
  420. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
  421. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
  422. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
  423. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
  424. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
  425. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
  426. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
  427. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
  428. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
  429. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
  430. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
  431. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
  432. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
  433. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
  434. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
  435. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
  436. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
  437. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
  438. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
  439. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
  440. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
  441. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
  442. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
  443. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
  444. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
  445. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
  446. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
  447. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
  448. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
  449. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
  450. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
  451. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
  452. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
  453. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
  454. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
  455. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
  456. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
  457. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
  458. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
  459. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
  460. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
  461. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
  462. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
  463. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
  464. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
  465. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
  466. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
  467. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
  468. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
  469. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
  470. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
  471. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
  472. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
  473. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
  474. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
  475. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
  476. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
  477. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
  478. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
  479. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
  480. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
  481. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
  482. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
  483. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
  484. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
  485. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
  486. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
  487. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
  488. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
  489. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
  490. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
  491. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
  492. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
  493. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
  494. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
  495. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
  496. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
  497. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
  498. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
  499. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
  500. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
  501. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
  502. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
  503. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
  504. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
  505. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
  506. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
  507. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
  508. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
  509. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
  510. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
  511. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
  512. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
  513. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
  514. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
  515. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
  516. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
  517. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
  518. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
  519. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
  520. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
  521. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
  522. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
  523. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
  524. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
  525. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
  526. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
  527. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
  528. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
  529. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
  530. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
  531. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
  532. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
  533. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
  534. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
  535. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
  536. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
  537. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
  538. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
  539. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
  540. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
  541. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
  542. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
  543. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
  544. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
  545. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
  546. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
  547. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
  548. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
  549. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
  550. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
  551. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
  552. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
  553. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
  554. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
  555. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
  556. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
  557. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
  558. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
  559. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
  560. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
  561. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
  562. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
  563. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
  564. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
  565. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
  566. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
  567. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
  568. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
  569. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
  570. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
  571. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
  572. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
  573. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
  574. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
  575. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
  576. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
  577. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
  578. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
  579. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
  580. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
  581. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
  582. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
  583. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
  584. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
  585. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
  586. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
  587. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
  588. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
  589. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
  590. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
  591. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
  592. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
  593. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
  594. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
  595. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
  596. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
  597. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
  598. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
  599. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
  600. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
  601. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
  602. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
  603. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
  604. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
  605. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
  606. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
  607. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
  608. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
  609. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
  610. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
  611. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
  612. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
  613. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
  614. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
  615. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
  616. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
  617. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
  618. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
  619. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
  620. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
  621. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
  622. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
  623. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
  624. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
  625. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
  626. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
  627. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
  628. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
  629. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
  630. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
  631. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
  632. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
  633. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
  634. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
  635. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
  636. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
  637. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
  638. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
  639. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
  640. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
  641. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
  642. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
  643. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
  644. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
  645. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
  646. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
  647. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
  648. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
  649. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
  650. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
  651. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
  652. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
  653. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
  654. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
  655. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
  656. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
  657. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
  658. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
  659. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
  660. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
  661. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
  662. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
  663. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
  664. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
  665. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
  666. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
  667. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
  668. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
  669. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
  670. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
  671. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
  672. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
  673. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
  674. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
  675. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
  676. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
  677. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
  678. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
  679. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
  680. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
  681. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
  682. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
  683. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
  684. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
  685. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
  686. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
  687. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
  688. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
  689. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
  690. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
  691. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
  692. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
  693. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
  694. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
  695. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
  696. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
  697. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
  698. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
  699. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
  700. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
  701. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
  702. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
  703. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
  704. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
  705. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
  706. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
  707. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
  708. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
  709. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
  710. data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
  711. data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
  712. data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
  713. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
  714. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
  715. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
  716. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
  717. data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
  718. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
  719. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
  720. data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
  721. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
  722. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
  723. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
  724. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
  725. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
  726. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
  727. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
  728. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
  729. data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
  730. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
  731. data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
  732. data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
  733. data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
  734. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
  735. data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
  736. data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
  737. data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
  738. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
  739. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
  740. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
  741. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
  742. data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
  743. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
  744. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
  745. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
  746. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
  747. data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
  748. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
  749. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
  750. data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
  751. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
  752. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
  753. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
  754. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
  755. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
  756. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
  757. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
  758. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
  759. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
  760. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
  761. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
  762. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
  763. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
  764. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
  765. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
  766. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
  767. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
  768. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
  769. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
  770. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
  771. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
  772. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
  773. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
  774. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
  775. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
  776. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
  777. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
  778. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
  779. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
  780. data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
  781. data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
  782. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
  783. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
  784. data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
  785. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
  786. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
  787. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
  788. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
  789. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
  790. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
  791. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
  792. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
  793. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
  794. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
  795. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
  796. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
  797. data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
  798. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
  799. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
  800. data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
  801. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
  802. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
  803. data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
  804. data/lib/dep-selector-libgecode.rb +15 -0
  805. data/lib/dep-selector-libgecode/version.rb +3 -0
  806. metadata +878 -0
@@ -0,0 +1,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