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.
- checksums.yaml +7 -0
- data/.gitignore +26 -0
- data/Gemfile +3 -0
- data/LICENSE.txt +22 -0
- data/README.md +29 -0
- data/Rakefile +20 -0
- data/dep-selector-libgecode.gemspec +25 -0
- data/ext/libgecode3/Makefile +8 -0
- data/ext/libgecode3/extconf.rb +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/LICENSE +25 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.contribs +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.dep +11307 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/Makefile.in +1795 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/changelog.in +6132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure +13054 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac +356 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/configure.ac.in +352 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/README +26 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/AbstractWorker.hh +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Doxyfile +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Makefile.in.in +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.cc +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/OptVar.hh +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.cc +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCOPPlus.hh +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.cc +239 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/QCSPPlusUnblockable.hh +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/README +6 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.cc +253 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Strategy.hh +112 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/StrategyNode.hh +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableBranching.hh +34 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.cc +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/UnblockableViewValBranching.hh +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.cc +48 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Work.hh +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkComparators.hh +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.cc +376 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/WorkManager.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.cc +285 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/Worker.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/clean +5 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure +2637 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/configure.ac +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myDom.cc +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.cc +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/myspace.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qecode.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.cc +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_parallel.hh +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.cc +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcop.hh +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.cc +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_qcsp.hh +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.cc +423 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/qsolver_unblockable.hh +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/shortdesc.ac +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/contribs/qecode/vartype.hh +31 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.conf.in +1245 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/doxygen/doxygen.hh.in +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/all-interval.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/alpha.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bacp.cpp +596 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bibd.cpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/bin-packing.cpp +25363 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/black-hole.cpp +413 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/car-sequencing.cpp +653 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crew.cpp +269 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crossword.cpp +3954 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/crowded-chess.cpp +424 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/dominating-queens.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/domino.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/donald.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/efpa.cpp +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/eq20.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golf.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/golomb-ruler.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/graph-color.cpp +425 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/grocery.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/hamming.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ind-set.cpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/kakuro.cpp +627 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/knights.cpp +430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/langford-number.cpp +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/magic-square.cpp +141 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/minesweeper.cpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/money.cpp +132 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/nonogram.cpp +1215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/open-shop.cpp +412 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/ortho-latin.cpp +183 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/partition.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/pentominoes.cpp +952 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/perfect-square.cpp +317 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/photo.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queen-armies.cpp +335 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/queens.cpp +214 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/radiotherapy.cpp +943 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sat.cpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/schurs-lemma.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/scowl.hpp +14149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sports-league.cpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steel-mill.cpp +654 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/steiner.cpp +170 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/sudoku.cpp +2294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/tsp.cpp +339 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/warehouses.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/examples/word-square.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode.m4 +1272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver.hh +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.cpp +435 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/options.hpp +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/driver/script.hpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc.hh +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/CHANGES +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/ast.hh +492 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/conexpr.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.hh +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/myplugin.pro +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/exampleplugin/test_myplugin.fzn +1 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/flatzinc.cpp +1056 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.lxx +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/lexer.yy.cpp +2458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_different_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/all_equal_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/among.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_least_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/at_most_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_capa.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/bin_packing_load.mzn +45 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/circuit.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/count.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/cumulative.mzn +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/decreasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/diffn.mzn +44 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/disjoint.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/distribute.mzn +46 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_int.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/exactly_set.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/gecode.mzn +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality.mzn +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_closed.mzn +39 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/global_cardinality_low_up_closed.mzn +40 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/increasing_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/int_set_channel.mzn +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/inverse.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_less_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/lex_lesseq_int.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/link_set_to_booleans.mzn +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/maximum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_bool.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/member_int.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/minimum_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/nvalue.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/partition_set.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/precedence.mzn +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/range.mzn +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/redefinitions.mzn +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/regular.mzn +38 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/roots.mzn +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sort.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/sum_pred.mzn +42 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_bool.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/mznlib/table_int.mzn +37 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/option.hh +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.hh +265 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.cpp +3571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.tab.hh +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/parser.yxx +1604 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/plugin.hh +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.cpp +1812 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/registry.hh +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/symboltable.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/flatzinc/varspec.hh +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist.hh +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.cpp +288 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hh +110 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/drawingcursor.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.cpp +673 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gecodelogo.hh +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.cpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/gist.hpp +207 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hh +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/layoutcursor.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.cpp +341 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/mainwindow.hh +129 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/node.hpp +210 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hh +215 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodecursor.hpp +271 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodestats.hh +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodevisitor.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/nodewidget.hh +59 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/preferences.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.cpp +809 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/qtgist.hh +294 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.cpp +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hh +221 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/spacenode.hpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/mygist.cpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/standalone-example/standalone_example.pro +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.cpp +90 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/stopbrancher.hh +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.cpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/textoutput.hh +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.cpp +1430 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/treecanvas.hh +369 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.cpp +473 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hh +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/visualnode.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/gist/zoomToFitIcon.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int.hh +3477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.cpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic.hh +666 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/abs.hpp +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/divmod.hpp +350 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/max.hpp +398 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/mult.hpp +750 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqr.hpp +377 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/arithmetic/sqrt.hpp +217 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array-traits.hpp +147 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.cpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/array.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.cpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing.hh +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.cpp +388 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bin-packing/propagate.hpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.cpp +755 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool.hh +581 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/base.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/clause.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.cpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/eqv.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/lq.hpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/bool/or.hpp +850 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.cpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch.hh +607 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-bool.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-val-int.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-bool.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.bs +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/post-view-int.cpp +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-val.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-values.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/branch/select-view.hpp +364 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel.hh +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/base.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/dom.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-multi.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/link-single.hpp +71 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/channel/val.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.cpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit.hh +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/base.hpp +270 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/dom.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/circuit/val.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.cpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count.hh +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-base.hpp +80 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-eq.hpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-gq.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/int-lq.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/rel.hpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-base.hpp +131 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-eq.hpp +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-gq.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/count/view-lq.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.cpp +432 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative.hh +745 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/basic.hpp +211 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/edge-finding.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/man-prop.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/opt-prop.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/overload.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task-view.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/task.hpp +256 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulative/tree.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.cpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives.hh +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/cumulatives/val.hpp +380 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct.hh +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/bnd.hpp +444 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom-ctrl.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/dom.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/graph.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/ter-dom.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/distinct/val.hpp +185 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.cpp +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/range.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/dom/spec.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.cpp +190 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element.hh +384 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/int.hpp +443 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.cpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/pair.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/element/view.hpp +559 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exception.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec.hh +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.cpp +77 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/exec/when.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.cpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional.hh +508 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/base.hpp +163 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/basic.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.cpp +535 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/dfa.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/incremental.hpp +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/layered-graph.hpp +982 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.cpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/extensional/tuple-set.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.cpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc.hh +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd-sup.hpp +608 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/bnd.hpp +829 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom-sup.hpp +1777 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/dom.hpp +315 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/post.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/val.hpp +299 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/gcc/view.hpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-1.hpp +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set-2.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/int-set.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/limits.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-bool.cpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear-int.cpp +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear.hh +1560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-int.hpp +743 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-post.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-scale.hpp +695 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/bool-view.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-bin.hpp +439 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-dom.hpp +484 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-nary.hpp +864 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-noview.hpp +251 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-post.cpp +561 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/int-ter.hpp +273 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/linear/post.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member.hh +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/prop.hpp +175 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/member/re-prop.hpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.cpp +226 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap.hh +318 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/base.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/box.hpp +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/dim.hpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/man.hpp +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/no-overlap/opt.hpp +153 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.cpp +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues.hh +429 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-base.hpp +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-eq.hpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-gq.hpp +149 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/bool-lq.hpp +151 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/graph.hpp +283 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-base.hpp +347 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-eq.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-gq.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/int-lq.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/range-event.hpp +51 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/nvalues/sym-bit-matrix.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.cpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede.hh +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/precede/single.hpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/propagator.hpp +311 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.cpp +381 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel.hh +665 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/eq.hpp +676 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lex.hpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/lq-le.hpp +537 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/rel/nq.hpp +196 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.cpp +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/int.hpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/set-op.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/view.hpp +499 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sequence/violations.hpp +101 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/matching.hpp +173 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/narrowing.hpp +250 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/order.hpp +213 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/propagate.hpp +646 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/sorted/sortsup.hpp +564 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hh +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/support-values.hpp +187 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task.hh +454 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/array.hpp +179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/fwd-to-bwd.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/iter.hpp +92 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/man-to-opt.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/prop.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/purge.hpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/sort.hpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/task/tree.hpp +189 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.cpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary.hh +839 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/detectable.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/edge-finding.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/man-prop.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/not-first-not-last.hpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/opt-prop.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/overload.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/subsumption.hpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task-view.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/task.hpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unary/tree.hpp +229 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/unshare.cpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hh +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/val-set.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp.hpp +710 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/bool.vis +75 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/delta.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.cpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.hpp +1029 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var-imp/int.vis +117 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/bool.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/int.hpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/var/print.hpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph.hh +334 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/bi-link.hpp +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/comb-ptr-flag.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/edge.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/graph.hpp +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/iter-prune-val.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view-val-graph/node.hpp +171 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view.hpp +1690 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool-test.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/bool.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/cached.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/constint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/int.hpp +264 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/iter.hpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/minus.hpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/neg-bool.hpp +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/offset.hpp +303 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/print.hpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/rel-test.hpp +231 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/scale.hpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/int/view/zero.hpp +305 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter.hh +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-add.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-append.hpp +222 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-array.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-cache.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-compl.hpp +220 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-diff.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-empty.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-inter.hpp +309 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-list.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-map.hpp +260 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minmax.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-minus.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-negative.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-offset.hpp +127 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-operations.hpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-positive.hpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-rangelist.hpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-scale.hpp +238 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton-append.hpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-singleton.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-size.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-union.hpp +361 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/ranges-values.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-array.hpp +120 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-bitset.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-inter.hpp +130 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-list.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-map.hpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-minus.hpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-negative.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-offset.hpp +113 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-positive.hpp +123 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-ranges.hpp +106 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-singleton.hpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-union.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/iter/values-unique.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel.hh +194 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/advisor.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/allocators.hpp +476 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/archive.hpp +298 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/array.hpp +2133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.cpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/branch.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-tiebreak.hpp +615 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-val.hpp +126 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher-view.hpp +455 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/brancher.hpp +431 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.cpp +563 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/core.hpp +3668 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/exception.hpp +124 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/global-prop-info.hpp +258 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/macros.hpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-config.hpp +154 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.cpp +53 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/memory-manager.hpp +511 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/modevent.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/propagator.hpp +699 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/range-list.hpp +184 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.cpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/region.hpp +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/shared-array.hpp +345 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-imp.hpp +332 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var-type.hpp +767 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/var.hpp +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/view.hpp +715 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/kernel/wait.hh +244 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel.hh +1870 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/arithmetic.cpp +408 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.cpp +522 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/bool-expr.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/exception.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.cpp +594 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-expr.hpp +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.cpp +414 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/lin-rel.hpp +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/matrix.hpp +247 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/optimize.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.cpp +817 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/reg.hpp +94 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.cpp +704 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-expr.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.cpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/minimodel/set-rel.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search.hh +458 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/bab.hpp +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/dfs.hpp +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/options.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.cpp +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/bab.hh +203 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.cpp +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/dfs.hh +195 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.cpp +118 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/engine.hh +418 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/path.hh +477 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.cpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/parallel/restart.hh +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.cpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/restart.hpp +88 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/bab.hh +177 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/dfs.hh +176 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/path.hh +411 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/sequential/restart.hh +89 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/statistics.hpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.cpp +83 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/stop.hpp +137 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/support.hh +91 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/search/worker.hh +202 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set.hh +1144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array-traits.hpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.cpp +219 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/array.hpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.cpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch.hh +438 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-val.hpp +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.bs +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/post-view.cpp +370 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-val.hpp +204 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/branch/select-view.hpp +306 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/cardinality.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex.hh +107 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.cpp +97 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/conv.hpp +67 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/convex/hull.hpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.cpp +56 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct.hh +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.cpp +162 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/distinct/atmostOne.hpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/dom.cpp +300 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.cpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element.hh +218 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/disjoint.hpp +324 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/inter.hpp +308 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/union.hpp +342 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/element/unionConst.hpp +293 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exception.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/exec.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.cpp +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int.hh +459 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/card.hpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-bool.hpp +282 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/channel-int.hpp +158 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/match.hpp +199 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/minmax.hpp +645 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/int/weights.hpp +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/limits.hpp +62 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.cpp +74 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/precede/single.hpp +255 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvc.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-cvv.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcc.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vcv.cpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-const-vvc.cpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-singleton.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op-ternary.cpp +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.cpp +105 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op.hh +297 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/common.hpp +619 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/inter.hpp +389 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/partition.hpp +164 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvc.cpp +58 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl-vvc.cpp +57 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-compl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvc.cpp +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-cvv.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl-vvc.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post-nocompl.cpp +54 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/post.hpp +266 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/subofunion.hpp +166 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/superofinter.hpp +167 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel-op/union.hpp +319 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.cpp +232 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel.hh +322 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/common.hpp +125 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/eq.hpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/lq.hpp +417 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nosubset.hpp +104 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/nq.hpp +160 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-eq.hpp +152 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-lq.hpp +182 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/re-subset.hpp +146 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/rel/subset.hpp +96 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.cpp +64 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence.hh +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/common.hpp +100 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.cpp +145 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq-u.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.cpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/sequence/seq.hpp +69 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp.hpp +634 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/delta.hpp +78 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.cpp +348 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/integerset.hpp +426 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/iter.hpp +63 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.cpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.hpp +531 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var-imp/set.vis +197 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/print.hpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.cpp +111 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/var/set.hpp +254 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view.hpp +1142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/cached.hpp +399 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/complement.hpp +556 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/const.hpp +723 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/print.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/set.hpp +263 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/set/view/singleton.hpp +402 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support.hh +135 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/auto-link.hpp +73 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset-base.hpp +379 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/bitset.hpp +81 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/block-allocator.hpp +169 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/cast.hpp +52 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/config.hpp.in +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-array.hpp +140 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-queue.hpp +156 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/dynamic-stack.hpp +186 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.cpp +65 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/exception.hpp +102 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.cpp +49 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/heap.hpp +593 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/int-type.hpp +172 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/macros.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/marked-pointer.hpp +79 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/random.hpp +128 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/sort.hpp +268 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/static-stack.hpp +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread.hpp +272 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/none.hpp +87 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.cpp +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/pthreads.hpp +142 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/thread.hpp +114 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.cpp +68 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/thread/windows.hpp +108 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/gecode/support/timer.hpp +103 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/install-sh +323 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/allexamples.perl +60 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/back.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/footer.html +3 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/header.html +66 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/doxygen/stylesheet.css +468 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixautoheader.perl +55 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixmanifest.perl +84 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/fixproperties.sh +98 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gecode-logo.ico +0 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genbranch.perl +310 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genchangelog.perl +249 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gencurrentchangelog.perl +191 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlcovmakefile.perl +148 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genlicense.perl +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genrc.perl +236 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genstatistics.perl +178 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/gentxtchangelog.perl +198 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genvarimp.perl +877 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/genxcodeproj.perl +144 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/getrevision.perl +47 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/makedepend.perl +85 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore-root.txt +43 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/misc/svn-ignore.txt +18 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/afc.cpp +143 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/array.cpp +277 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.cpp +278 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/assign/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch.hh +119 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/bool.cpp +61 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/int.cpp +70 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/branch/set.cpp +72 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.cpp +655 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hh +353 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int.hpp +314 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/arithmetic.cpp +772 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/basic.cpp +82 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bin-packing.cpp +237 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/bool.cpp +500 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/channel.cpp +234 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/circuit.cpp +359 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/count.cpp +410 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulative.cpp +560 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/cumulatives.cpp +276 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/distinct.cpp +248 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/dom.cpp +174 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/element.cpp +602 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/exec.cpp +150 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/extensional.cpp +571 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/gcc.cpp +320 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/linear.cpp +394 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/member.cpp +138 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-arithmetic.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-bool.cpp +4344 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-count.cpp +295 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-lin.cpp +2179 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/mm-rel.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/no-overlap.cpp +259 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/nvalues.cpp +241 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/precede.cpp +115 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/rel.cpp +568 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sequence.cpp +168 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/sorted.cpp +165 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unary.cpp +327 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/int/unshare.cpp +109 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/search.cpp +487 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.cpp +638 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hh +362 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set.hpp +121 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/construct.cpp +225 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/convex.cpp +139 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/distinct.cpp +116 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/dom.cpp +346 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/element.cpp +397 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/exec.cpp +86 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/int.cpp +532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/mm-set.cpp +4532 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/precede.cpp +136 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op-const.cpp +368 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel-op.cpp +504 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/rel.cpp +157 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/set/sequence.cpp +133 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.cpp +281 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hh +161 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/test/test.hpp +76 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/fz.cpp +93 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.bat.in +41 -0
- data/ext/libgecode3/vendor/gecode-3.7.3/tools/flatzinc/mzn-gecode.in +41 -0
- data/lib/dep-selector-libgecode.rb +15 -0
- data/lib/dep-selector-libgecode/version.rb +3 -0
- metadata +878 -0
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
* Guido Tack <tack@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Copyright:
|
|
8
|
+
* Christian Schulte, 2004
|
|
9
|
+
* Guido Tack, 2004
|
|
10
|
+
*
|
|
11
|
+
* Last modified:
|
|
12
|
+
* $Date: 2011-05-11 20:44:17 +1000 (Wed, 11 May 2011) $ by $Author: tack $
|
|
13
|
+
* $Revision: 12001 $
|
|
14
|
+
*
|
|
15
|
+
* This file is part of Gecode, the generic constraint
|
|
16
|
+
* development environment:
|
|
17
|
+
* http://www.gecode.org
|
|
18
|
+
*
|
|
19
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
20
|
+
* a copy of this software and associated documentation files (the
|
|
21
|
+
* "Software"), to deal in the Software without restriction, including
|
|
22
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
23
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
24
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
25
|
+
* the following conditions:
|
|
26
|
+
*
|
|
27
|
+
* The above copyright notice and this permission notice shall be
|
|
28
|
+
* included in all copies or substantial portions of the Software.
|
|
29
|
+
*
|
|
30
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
31
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
32
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
33
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
34
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
35
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
36
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
namespace Gecode {
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* \defgroup TaskBranchViewVal Generic brancher based on view and value selection
|
|
44
|
+
*
|
|
45
|
+
* Implements view-based brancher for an array of views and value.
|
|
46
|
+
* \ingroup TaskActor
|
|
47
|
+
*/
|
|
48
|
+
|
|
49
|
+
//@{
|
|
50
|
+
/// Status returned by member functions of view selection class
|
|
51
|
+
enum ViewSelStatus {
|
|
52
|
+
VSS_BEST, ///< Current view is a best one
|
|
53
|
+
VSS_BETTER, ///< Current view is better
|
|
54
|
+
VSS_TIE, ///< Current view is as good as
|
|
55
|
+
VSS_WORSE ///< Current view is worse
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
/// Position information
|
|
59
|
+
class Pos {
|
|
60
|
+
public:
|
|
61
|
+
/// Position of view
|
|
62
|
+
const int pos;
|
|
63
|
+
/// Create position information
|
|
64
|
+
Pos(int p);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* \brief Generic brancher by view selection
|
|
69
|
+
*
|
|
70
|
+
* Implements a baseclass for view-based branching for an array of views
|
|
71
|
+
* (of type \a ViewSel::View). The behaviour is
|
|
72
|
+
* defined by the class \a ViewSel (which view is selected for branching).
|
|
73
|
+
*
|
|
74
|
+
*/
|
|
75
|
+
template<class ViewSel>
|
|
76
|
+
class ViewBrancher : public Brancher {
|
|
77
|
+
protected:
|
|
78
|
+
/// Views to branch on
|
|
79
|
+
ViewArray<typename ViewSel::View> x;
|
|
80
|
+
/// Unassigned views start at x[start]
|
|
81
|
+
mutable int start;
|
|
82
|
+
/// View selection object
|
|
83
|
+
ViewSel viewsel;
|
|
84
|
+
/// Branch filter function
|
|
85
|
+
BranchFilter bf;
|
|
86
|
+
/// Return position information
|
|
87
|
+
Pos pos(Space& home);
|
|
88
|
+
/// Return view according to position information \a p
|
|
89
|
+
typename ViewSel::View view(const Pos& p) const;
|
|
90
|
+
/// Constructor for cloning \a b
|
|
91
|
+
ViewBrancher(Space& home, bool share, ViewBrancher& b);
|
|
92
|
+
/// Constructor for creation
|
|
93
|
+
ViewBrancher(Home home, ViewArray<typename ViewSel::View>& x,
|
|
94
|
+
ViewSel& vi_s, BranchFilter bf0=NULL);
|
|
95
|
+
public:
|
|
96
|
+
/// Check status of brancher, return true if alternatives left
|
|
97
|
+
virtual bool status(const Space& home) const;
|
|
98
|
+
/// Delete brancher and return its size
|
|
99
|
+
virtual size_t dispose(Space& home);
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* \brief Generic brancher by view and value selection
|
|
105
|
+
*
|
|
106
|
+
* Implements view-based branching for an array of views (of type
|
|
107
|
+
* \a ViewSel::View) and value (of type \a ValSel::Val). The behaviour is
|
|
108
|
+
* defined by the class \a ViewSel (which view is selected for branching)
|
|
109
|
+
* and the class \a ValSel (which value is selected for branching).
|
|
110
|
+
*
|
|
111
|
+
*/
|
|
112
|
+
template<class ViewSel, class ValSel>
|
|
113
|
+
class ViewValBrancher : public ViewBrancher<ViewSel> {
|
|
114
|
+
protected:
|
|
115
|
+
using ViewBrancher<ViewSel>::viewsel;
|
|
116
|
+
using ViewBrancher<ViewSel>::x;
|
|
117
|
+
/// Value selection object
|
|
118
|
+
ValSel valsel;
|
|
119
|
+
/// Constructor for cloning \a b
|
|
120
|
+
ViewValBrancher(Space& home, bool share, ViewValBrancher& b);
|
|
121
|
+
/// Constructor for creation
|
|
122
|
+
ViewValBrancher(Home home, ViewArray<typename ViewSel::View>& x,
|
|
123
|
+
ViewSel& vi_s, ValSel& va_s, BranchFilter bf0);
|
|
124
|
+
public:
|
|
125
|
+
/// Return choice
|
|
126
|
+
virtual const Choice* choice(Space& home);
|
|
127
|
+
/// Return choice
|
|
128
|
+
virtual const Choice* choice(const Space& home, Archive& e);
|
|
129
|
+
/// Perform commit for choice \a c and alternative \a a
|
|
130
|
+
virtual ExecStatus commit(Space& home, const Choice& c, unsigned int a);
|
|
131
|
+
/// Perform cloning
|
|
132
|
+
virtual Actor* copy(Space& home, bool share);
|
|
133
|
+
/// Delete brancher and return its size
|
|
134
|
+
virtual size_t dispose(Space& home);
|
|
135
|
+
/// Brancher post function
|
|
136
|
+
static void post(Home home, ViewArray<typename ViewSel::View>& x,
|
|
137
|
+
ViewSel& vi_s, ValSel& va_s, BranchFilter bf=NULL);
|
|
138
|
+
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
/// %Choices storing position
|
|
143
|
+
template<class ViewSel>
|
|
144
|
+
class GECODE_VTABLE_EXPORT PosChoice : public Choice {
|
|
145
|
+
private:
|
|
146
|
+
/// Position information
|
|
147
|
+
const Pos _pos;
|
|
148
|
+
/// View selection choice to be stored
|
|
149
|
+
const typename ViewSel::Choice _viewchoice;
|
|
150
|
+
public:
|
|
151
|
+
/// Initialize choice for brancher \a b, number of alternatives \a a, position \a p, view selection choice \a viewc
|
|
152
|
+
PosChoice(const Brancher& b, unsigned int a, const Pos& p,
|
|
153
|
+
const typename ViewSel::Choice& viewc);
|
|
154
|
+
/// Return position in array
|
|
155
|
+
const Pos& pos(void) const;
|
|
156
|
+
/// Return view selection choice
|
|
157
|
+
const typename ViewSel::Choice& viewchoice(void) const;
|
|
158
|
+
/// Report size occupied
|
|
159
|
+
virtual size_t size(void) const;
|
|
160
|
+
/// Archive into \a e
|
|
161
|
+
virtual void archive(Archive& e) const;
|
|
162
|
+
};
|
|
163
|
+
|
|
164
|
+
/// %Choice storing position and value
|
|
165
|
+
template<class ViewSel, class ValSel>
|
|
166
|
+
class GECODE_VTABLE_EXPORT PosValChoice : public PosChoice<ViewSel> {
|
|
167
|
+
private:
|
|
168
|
+
/// Value choice to be stored
|
|
169
|
+
const typename ValSel::Choice _valchoice;
|
|
170
|
+
/// Value to assign to
|
|
171
|
+
const typename ValSel::Val _val;
|
|
172
|
+
public:
|
|
173
|
+
/// Initialize choice for brancher \a b, position \a p, view choice \a viewc, value choice \a valc, and value \a n
|
|
174
|
+
PosValChoice(const Brancher& b, const Pos& p,
|
|
175
|
+
const typename ViewSel::Choice& viewc,
|
|
176
|
+
const typename ValSel::Choice& valc,
|
|
177
|
+
const typename ValSel::Val& n);
|
|
178
|
+
/// Return stored choice
|
|
179
|
+
const typename ValSel::Choice& valchoice(void) const;
|
|
180
|
+
/// Return value to branch with
|
|
181
|
+
const typename ValSel::Val& val(void) const;
|
|
182
|
+
/// Report size occupied
|
|
183
|
+
virtual size_t size(void) const;
|
|
184
|
+
/// Archive into \a e
|
|
185
|
+
virtual void archive(Archive& e) const;
|
|
186
|
+
};
|
|
187
|
+
//@}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
/*
|
|
193
|
+
* Position information
|
|
194
|
+
*
|
|
195
|
+
*/
|
|
196
|
+
forceinline
|
|
197
|
+
Pos::Pos(int p) : pos(p) {}
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
/*
|
|
201
|
+
* Choice with position
|
|
202
|
+
*
|
|
203
|
+
*/
|
|
204
|
+
template<class ViewSel>
|
|
205
|
+
forceinline
|
|
206
|
+
PosChoice<ViewSel>::PosChoice(const Brancher& b, unsigned int a,
|
|
207
|
+
const Pos& p,
|
|
208
|
+
const typename ViewSel::Choice& viewc)
|
|
209
|
+
: Choice(b,a), _pos(p), _viewchoice(viewc) {}
|
|
210
|
+
template<class ViewSel>
|
|
211
|
+
forceinline const Pos&
|
|
212
|
+
PosChoice<ViewSel>::pos(void) const {
|
|
213
|
+
return _pos;
|
|
214
|
+
}
|
|
215
|
+
template<class ViewSel>
|
|
216
|
+
forceinline const typename ViewSel::Choice&
|
|
217
|
+
PosChoice<ViewSel>::viewchoice(void) const {
|
|
218
|
+
return _viewchoice;
|
|
219
|
+
}
|
|
220
|
+
template<class ViewSel>
|
|
221
|
+
forceinline size_t
|
|
222
|
+
PosChoice<ViewSel>::size(void) const {
|
|
223
|
+
return sizeof(PosChoice<ViewSel>) + _viewchoice.size();
|
|
224
|
+
}
|
|
225
|
+
template<class ViewSel>
|
|
226
|
+
forceinline void
|
|
227
|
+
PosChoice<ViewSel>::archive(Archive& e) const {
|
|
228
|
+
Choice::archive(e);
|
|
229
|
+
e << _pos.pos;
|
|
230
|
+
_viewchoice.archive(e);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
/*
|
|
234
|
+
* %Choice with position and value
|
|
235
|
+
*
|
|
236
|
+
*/
|
|
237
|
+
template<class ViewSel, class ValSel>
|
|
238
|
+
forceinline
|
|
239
|
+
PosValChoice<ViewSel,ValSel>
|
|
240
|
+
::PosValChoice(const Brancher& b, const Pos& p,
|
|
241
|
+
const typename ViewSel::Choice& viewc,
|
|
242
|
+
const typename ValSel::Choice& valc,
|
|
243
|
+
const typename ValSel::Val& n)
|
|
244
|
+
: PosChoice<ViewSel>(b,ValSel::alternatives,p,viewc),
|
|
245
|
+
_valchoice(valc), _val(n) {}
|
|
246
|
+
|
|
247
|
+
template<class ViewSel, class ValSel>
|
|
248
|
+
forceinline const typename ValSel::Choice&
|
|
249
|
+
PosValChoice<ViewSel,ValSel>::valchoice(void) const {
|
|
250
|
+
return _valchoice;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
template<class ViewSel, class ValSel>
|
|
254
|
+
forceinline const typename ValSel::Val&
|
|
255
|
+
PosValChoice<ViewSel,ValSel>::val(void) const {
|
|
256
|
+
return _val;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
template<class ViewSel, class ValSel>
|
|
260
|
+
forceinline size_t
|
|
261
|
+
PosValChoice<ViewSel, ValSel>::size(void) const {
|
|
262
|
+
return sizeof(PosValChoice<ViewSel,ValSel>) + _valchoice.size();
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
template<class ViewSel, class ValSel>
|
|
266
|
+
forceinline void
|
|
267
|
+
PosValChoice<ViewSel, ValSel>::archive(Archive& e) const {
|
|
268
|
+
PosChoice<ViewSel>::archive(e);
|
|
269
|
+
_valchoice.archive(e);
|
|
270
|
+
e << _val;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
/*
|
|
274
|
+
* Generic brancher based on view selection
|
|
275
|
+
*
|
|
276
|
+
*/
|
|
277
|
+
|
|
278
|
+
template<class ViewSel>
|
|
279
|
+
forceinline
|
|
280
|
+
ViewBrancher<ViewSel>::ViewBrancher(Home home,
|
|
281
|
+
ViewArray<typename ViewSel::View>& x0,
|
|
282
|
+
ViewSel& vi_s, BranchFilter bf0)
|
|
283
|
+
: Brancher(home), x(x0), start(0), viewsel(vi_s), bf(bf0) {}
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
template<class ViewSel>
|
|
287
|
+
forceinline
|
|
288
|
+
ViewBrancher<ViewSel>::ViewBrancher(Space& home, bool share,
|
|
289
|
+
ViewBrancher& b)
|
|
290
|
+
: Brancher(home,share,b), start(b.start), bf(b.bf) {
|
|
291
|
+
x.update(home,share,b.x);
|
|
292
|
+
viewsel.update(home,share,b.viewsel);
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
template<class ViewSel>
|
|
296
|
+
bool
|
|
297
|
+
ViewBrancher<ViewSel>::status(const Space& home) const {
|
|
298
|
+
if (bf == NULL) {
|
|
299
|
+
for (int i=start; i < x.size(); i++)
|
|
300
|
+
if (!x[i].assigned()) {
|
|
301
|
+
start = i;
|
|
302
|
+
return true;
|
|
303
|
+
}
|
|
304
|
+
} else {
|
|
305
|
+
for (int i=start; i < x.size(); i++) {
|
|
306
|
+
typename ViewSel::View::VarType y(x[i].varimp());
|
|
307
|
+
if (!x[i].assigned() && bf(home,i,y)) {
|
|
308
|
+
start = i;
|
|
309
|
+
return true;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
return false;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
template<class ViewSel>
|
|
317
|
+
forceinline Pos
|
|
318
|
+
ViewBrancher<ViewSel>::pos(Space& home) {
|
|
319
|
+
assert(!x[start].assigned());
|
|
320
|
+
int i = start;
|
|
321
|
+
int b = i++;
|
|
322
|
+
if (viewsel.init(home,x[b]) != VSS_BEST)
|
|
323
|
+
for (; i < x.size(); i++)
|
|
324
|
+
if (!x[i].assigned())
|
|
325
|
+
switch (viewsel.select(home,x[i])) {
|
|
326
|
+
case VSS_BETTER: b=i; break;
|
|
327
|
+
case VSS_BEST: b=i; goto create;
|
|
328
|
+
case VSS_TIE: case VSS_WORSE: break;
|
|
329
|
+
default: GECODE_NEVER;
|
|
330
|
+
}
|
|
331
|
+
create:
|
|
332
|
+
Pos p(b);
|
|
333
|
+
return p;
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
template<class ViewSel>
|
|
337
|
+
forceinline typename ViewSel::View
|
|
338
|
+
ViewBrancher<ViewSel>::view(const Pos& p) const {
|
|
339
|
+
return x[p.pos];
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
template<class ViewSel>
|
|
343
|
+
forceinline size_t
|
|
344
|
+
ViewBrancher<ViewSel>::dispose(Space& home) {
|
|
345
|
+
viewsel.dispose(home);
|
|
346
|
+
(void) Brancher::dispose(home);
|
|
347
|
+
return sizeof(ViewBrancher<ViewSel>);
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
/*
|
|
353
|
+
* Generic brancher based on variable/value selection
|
|
354
|
+
*
|
|
355
|
+
*/
|
|
356
|
+
|
|
357
|
+
template<class ViewSel, class ValSel>
|
|
358
|
+
forceinline
|
|
359
|
+
ViewValBrancher<ViewSel,ValSel>::
|
|
360
|
+
ViewValBrancher(Home home, ViewArray<typename ViewSel::View>& x,
|
|
361
|
+
ViewSel& vi_s, ValSel& va_s, BranchFilter bf)
|
|
362
|
+
: ViewBrancher<ViewSel>(home,x,vi_s,bf), valsel(va_s) {}
|
|
363
|
+
|
|
364
|
+
template<class ViewSel, class ValSel>
|
|
365
|
+
void
|
|
366
|
+
ViewValBrancher<ViewSel,ValSel>::
|
|
367
|
+
post(Home home, ViewArray<typename ViewSel::View>& x,
|
|
368
|
+
ViewSel& vi_s, ValSel& va_s, BranchFilter bf) {
|
|
369
|
+
(void) new (home) ViewValBrancher<ViewSel,ValSel>(home,x,vi_s,va_s,bf);
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
template<class ViewSel, class ValSel>
|
|
373
|
+
forceinline
|
|
374
|
+
ViewValBrancher<ViewSel,ValSel>::
|
|
375
|
+
ViewValBrancher(Space& home, bool share, ViewValBrancher& b)
|
|
376
|
+
: ViewBrancher<ViewSel>(home,share,b) {
|
|
377
|
+
valsel.update(home,share,b.valsel);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
template<class ViewSel, class ValSel>
|
|
381
|
+
Actor*
|
|
382
|
+
ViewValBrancher<ViewSel,ValSel>::copy(Space& home, bool share) {
|
|
383
|
+
return new (home)
|
|
384
|
+
ViewValBrancher<ViewSel,ValSel>(home,share,*this);
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
template<class ViewSel, class ValSel>
|
|
388
|
+
const Choice*
|
|
389
|
+
ViewValBrancher<ViewSel,ValSel>::choice(Space& home) {
|
|
390
|
+
Pos p = ViewBrancher<ViewSel>::pos(home);
|
|
391
|
+
typename ValSel::View v(ViewBrancher<ViewSel>::view(p).varimp());
|
|
392
|
+
typename ValSel::Val val(valsel.val(home,v));
|
|
393
|
+
return new PosValChoice<ViewSel,ValSel>
|
|
394
|
+
(*this,p,
|
|
395
|
+
viewsel.choice(home),valsel.choice(home),val);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
template<class ViewSel, class ValSel>
|
|
399
|
+
const Choice*
|
|
400
|
+
ViewValBrancher<ViewSel,ValSel>::choice(const Space& home, Archive& e) {
|
|
401
|
+
int p; e >> p;
|
|
402
|
+
typename ViewSel::Choice viewsc = viewsel.choice(home,e);
|
|
403
|
+
typename ValSel::Choice valsc = valsel.choice(home,e);
|
|
404
|
+
typename ValSel::Val val; e >> val;
|
|
405
|
+
return new PosValChoice<ViewSel,ValSel>(*this,p,viewsc,valsc,val);
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
template<class ViewSel, class ValSel>
|
|
409
|
+
ExecStatus
|
|
410
|
+
ViewValBrancher<ViewSel,ValSel>
|
|
411
|
+
::commit(Space& home, const Choice& c, unsigned int a) {
|
|
412
|
+
const PosValChoice<ViewSel,ValSel>& pvc
|
|
413
|
+
= static_cast<const PosValChoice<ViewSel,ValSel>&>(c);
|
|
414
|
+
typename ValSel::View
|
|
415
|
+
v(ViewBrancher<ViewSel>::view(pvc.pos()).varimp());
|
|
416
|
+
viewsel.commit(home, pvc.viewchoice(), a);
|
|
417
|
+
valsel.commit(home, pvc.valchoice(), a);
|
|
418
|
+
return me_failed(valsel.tell(home,a,v,pvc.val())) ? ES_FAILED : ES_OK;
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
template<class ViewSel, class ValSel>
|
|
422
|
+
forceinline size_t
|
|
423
|
+
ViewValBrancher<ViewSel,ValSel>::dispose(Space& home) {
|
|
424
|
+
valsel.dispose(home);
|
|
425
|
+
(void) ViewBrancher<ViewSel>::dispose(home);
|
|
426
|
+
return sizeof(ViewValBrancher<ViewSel,ValSel>);
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// STATISTICS: kernel-branch
|
|
@@ -0,0 +1,563 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2002
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2011-05-11 20:44:17 +1000 (Wed, 11 May 2011) $ by $Author: tack $
|
|
11
|
+
* $Revision: 12001 $
|
|
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/kernel.hh>
|
|
39
|
+
|
|
40
|
+
namespace Gecode {
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* Variable type disposer
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
void
|
|
47
|
+
VarImpDisposerBase::dispose(Space&,VarImpBase*) {}
|
|
48
|
+
|
|
49
|
+
VarImpDisposerBase::~VarImpDisposerBase(void) {}
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
/*
|
|
54
|
+
* Actor
|
|
55
|
+
*
|
|
56
|
+
*/
|
|
57
|
+
size_t
|
|
58
|
+
Actor::allocated(void) const {
|
|
59
|
+
return 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
#ifdef __GNUC__
|
|
63
|
+
/// To avoid warnings from GCC
|
|
64
|
+
Actor::~Actor(void) {}
|
|
65
|
+
#endif
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* Propagator
|
|
71
|
+
*
|
|
72
|
+
*/
|
|
73
|
+
ExecStatus
|
|
74
|
+
Propagator::advise(Space&, Advisor&, const Delta&) {
|
|
75
|
+
assert(false);
|
|
76
|
+
return ES_FAILED;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
/*
|
|
82
|
+
* Space: Misc
|
|
83
|
+
*
|
|
84
|
+
*/
|
|
85
|
+
unsigned long int Space::unused_uli;
|
|
86
|
+
bool Space::unused_b;
|
|
87
|
+
StatusStatistics Space::unused_status;
|
|
88
|
+
CloneStatistics Space::unused_clone;
|
|
89
|
+
CommitStatistics Space::unused_commit;
|
|
90
|
+
|
|
91
|
+
#ifdef GECODE_HAS_VAR_DISPOSE
|
|
92
|
+
VarImpDisposerBase* Space::vd[AllVarConf::idx_d];
|
|
93
|
+
#endif
|
|
94
|
+
|
|
95
|
+
Space::Space(void)
|
|
96
|
+
: sm(new SharedMemory), mm(sm), n_wmp(0) {
|
|
97
|
+
#ifdef GECODE_HAS_VAR_DISPOSE
|
|
98
|
+
for (int i=0; i<AllVarConf::idx_d; i++)
|
|
99
|
+
_vars_d[i] = NULL;
|
|
100
|
+
#endif
|
|
101
|
+
// Initialize propagator and brancher links
|
|
102
|
+
pl.init();
|
|
103
|
+
bl.init();
|
|
104
|
+
b_status = b_commit = Brancher::cast(&bl);
|
|
105
|
+
// Initialize array for forced deletion to be empty
|
|
106
|
+
d_fst = d_cur = d_lst = NULL;
|
|
107
|
+
// Initialize space as stable but not failed
|
|
108
|
+
pc.p.active = &pc.p.queue[0]-1;
|
|
109
|
+
// Initialize propagator queues
|
|
110
|
+
for (int i=0; i<=PropCost::AC_MAX; i++)
|
|
111
|
+
pc.p.queue[i].init();
|
|
112
|
+
pc.p.branch_id = 0;
|
|
113
|
+
pc.p.n_sub = 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
void
|
|
117
|
+
Space::d_resize(void) {
|
|
118
|
+
if (d_fst == NULL) {
|
|
119
|
+
// Create new array
|
|
120
|
+
d_fst = alloc<Actor*>(4);
|
|
121
|
+
d_cur = d_fst;
|
|
122
|
+
d_lst = d_fst+4;
|
|
123
|
+
} else {
|
|
124
|
+
// Resize existing array
|
|
125
|
+
unsigned int n = static_cast<unsigned int>(d_lst - d_fst);
|
|
126
|
+
assert(n != 0);
|
|
127
|
+
d_fst = realloc<Actor*>(d_fst,n,2*n);
|
|
128
|
+
d_cur = d_fst+n;
|
|
129
|
+
d_lst = d_fst+2*n;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
unsigned int
|
|
134
|
+
Space::propagators(void) const {
|
|
135
|
+
unsigned int n = 0;
|
|
136
|
+
for (Propagators p(*this); p(); ++p)
|
|
137
|
+
n++;
|
|
138
|
+
return n;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
unsigned int
|
|
142
|
+
Space::branchers(void) const {
|
|
143
|
+
unsigned int n = 0;
|
|
144
|
+
for (Branchers b(*this); b(); ++b)
|
|
145
|
+
n++;
|
|
146
|
+
return n;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
void
|
|
150
|
+
Space::flush(void) {
|
|
151
|
+
// Flush malloc cache
|
|
152
|
+
sm->flush();
|
|
153
|
+
// Flush AFC information
|
|
154
|
+
for (Propagators p(*this); p(); ++p)
|
|
155
|
+
p.propagator().pi.init();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
Space::~Space(void) {
|
|
159
|
+
// Mark space as failed
|
|
160
|
+
fail();
|
|
161
|
+
// Delete actors that must be deleted
|
|
162
|
+
{
|
|
163
|
+
Actor** a = d_fst;
|
|
164
|
+
Actor** e = d_cur;
|
|
165
|
+
// So that d_unforce knows that deletion is in progress
|
|
166
|
+
d_fst = NULL;
|
|
167
|
+
while (a < e) {
|
|
168
|
+
(void) (*a)->dispose(*this);
|
|
169
|
+
a++;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
#ifdef GECODE_HAS_VAR_DISPOSE
|
|
173
|
+
// Delete variables that were registered for disposal
|
|
174
|
+
for (int i=AllVarConf::idx_d; i--;)
|
|
175
|
+
if (_vars_d[i] != NULL)
|
|
176
|
+
vd[i]->dispose(*this, _vars_d[i]);
|
|
177
|
+
#endif
|
|
178
|
+
// Release memory from memory manager
|
|
179
|
+
mm.release(sm);
|
|
180
|
+
// Release shared memory
|
|
181
|
+
if (sm->release())
|
|
182
|
+
delete sm;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
/*
|
|
188
|
+
* Space: propagation
|
|
189
|
+
*
|
|
190
|
+
*/
|
|
191
|
+
|
|
192
|
+
SpaceStatus
|
|
193
|
+
Space::status(StatusStatistics& stat) {
|
|
194
|
+
SpaceStatus s = SS_FAILED;
|
|
195
|
+
// Check whether space is failed
|
|
196
|
+
if (failed()) {
|
|
197
|
+
s = SS_FAILED; goto exit;
|
|
198
|
+
}
|
|
199
|
+
assert(pc.p.active <= &pc.p.queue[PropCost::AC_MAX+1]);
|
|
200
|
+
// Check whether space is stable but not failed
|
|
201
|
+
if (pc.p.active >= &pc.p.queue[0]) {
|
|
202
|
+
Propagator* p;
|
|
203
|
+
ModEventDelta med_o;
|
|
204
|
+
goto unstable;
|
|
205
|
+
execute:
|
|
206
|
+
stat.propagate++;
|
|
207
|
+
// Keep old modification event delta
|
|
208
|
+
med_o = p->u.med;
|
|
209
|
+
// Clear med but leave propagator in queue
|
|
210
|
+
p->u.med = 0;
|
|
211
|
+
switch (p->propagate(*this,med_o)) {
|
|
212
|
+
case ES_FAILED:
|
|
213
|
+
// Count failure
|
|
214
|
+
p->pi.fail(gpi);
|
|
215
|
+
// Mark as failed
|
|
216
|
+
fail(); s = SS_FAILED; goto exit;
|
|
217
|
+
case ES_NOFIX:
|
|
218
|
+
// Find next, if possible
|
|
219
|
+
if (p->u.med != 0) {
|
|
220
|
+
unstable:
|
|
221
|
+
// There is at least one propagator in a queue
|
|
222
|
+
do {
|
|
223
|
+
assert(pc.p.active >= &pc.p.queue[0]);
|
|
224
|
+
// First propagator or link back to queue
|
|
225
|
+
ActorLink* fst = pc.p.active->next();
|
|
226
|
+
if (pc.p.active != fst) {
|
|
227
|
+
p = Propagator::cast(fst);
|
|
228
|
+
goto execute;
|
|
229
|
+
}
|
|
230
|
+
pc.p.active--;
|
|
231
|
+
} while (true);
|
|
232
|
+
GECODE_NEVER;
|
|
233
|
+
}
|
|
234
|
+
// Fall through
|
|
235
|
+
case ES_FIX:
|
|
236
|
+
// Clear med and put into idle queue
|
|
237
|
+
p->u.med = 0; p->unlink(); pl.head(p);
|
|
238
|
+
stable_or_unstable:
|
|
239
|
+
// There might be a propagator in the queue
|
|
240
|
+
do {
|
|
241
|
+
assert(pc.p.active >= &pc.p.queue[0]);
|
|
242
|
+
// First propagator or link back to queue
|
|
243
|
+
ActorLink* fst = pc.p.active->next();
|
|
244
|
+
if (pc.p.active != fst) {
|
|
245
|
+
p = Propagator::cast(fst);
|
|
246
|
+
goto execute;
|
|
247
|
+
}
|
|
248
|
+
} while (--pc.p.active >= &pc.p.queue[0]);
|
|
249
|
+
assert(pc.p.active < &pc.p.queue[0]);
|
|
250
|
+
goto stable;
|
|
251
|
+
case __ES_SUBSUMED:
|
|
252
|
+
p->unlink(); rfree(p,p->u.size);
|
|
253
|
+
goto stable_or_unstable;
|
|
254
|
+
case __ES_PARTIAL:
|
|
255
|
+
// Schedule propagator with specified propagator events
|
|
256
|
+
assert(p->u.med != 0);
|
|
257
|
+
enqueue(p);
|
|
258
|
+
goto unstable;
|
|
259
|
+
default:
|
|
260
|
+
GECODE_NEVER;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
stable:
|
|
264
|
+
/*
|
|
265
|
+
* Find the next brancher that has still alternatives left
|
|
266
|
+
*
|
|
267
|
+
* It is important to note that branchers reporting to have no more
|
|
268
|
+
* alternatives left cannot be deleted. They cannot be deleted
|
|
269
|
+
* as there might be choices to be used in commit
|
|
270
|
+
* that refer to one of these branchers. This e.g. happens when
|
|
271
|
+
* we combine branch-and-bound search with adaptive recomputation: during
|
|
272
|
+
* recomputation, a copy is constrained to be better than the currently
|
|
273
|
+
* best solution, then the first half of the choices are posted,
|
|
274
|
+
* and a fixpoint computed (for storing in the middle of the path). Then
|
|
275
|
+
* the remaining choices are posted, and because of the additional
|
|
276
|
+
* constraints that the space must be better than the previous solution,
|
|
277
|
+
* the corresponding Branchers may already have no alternatives left.
|
|
278
|
+
*
|
|
279
|
+
* The same situation may arise due to weakly monotonic propagators.
|
|
280
|
+
*
|
|
281
|
+
* A brancher reporting that no more alternatives exist is exhausted.
|
|
282
|
+
* All exhausted branchers will be left of the current pointer b_status.
|
|
283
|
+
* Only when it is known that no more choices
|
|
284
|
+
* can be used for commit an exhausted brancher can actually be deleted.
|
|
285
|
+
* This becomes known when choice is called.
|
|
286
|
+
*/
|
|
287
|
+
while (b_status != Brancher::cast(&bl))
|
|
288
|
+
if (b_status->status(*this)) {
|
|
289
|
+
// Brancher still has choices to generate
|
|
290
|
+
s = SS_BRANCH; goto exit;
|
|
291
|
+
} else {
|
|
292
|
+
// Brancher is exhausted
|
|
293
|
+
b_status = Brancher::cast(b_status->next());
|
|
294
|
+
}
|
|
295
|
+
// No brancher with alternatives left, space is solved
|
|
296
|
+
s = SS_SOLVED;
|
|
297
|
+
exit:
|
|
298
|
+
stat.wmp = (n_wmp > 0);
|
|
299
|
+
if (n_wmp == 1) n_wmp = 0;
|
|
300
|
+
return s;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
const Choice*
|
|
305
|
+
Space::choice(void) {
|
|
306
|
+
if (!stable())
|
|
307
|
+
throw SpaceNotStable("Space::choice");
|
|
308
|
+
if (failed() || (b_status == Brancher::cast(&bl))) {
|
|
309
|
+
// There are no more choices to be generated
|
|
310
|
+
// Delete all branchers
|
|
311
|
+
Brancher* b = Brancher::cast(bl.next());
|
|
312
|
+
while (b != Brancher::cast(&bl)) {
|
|
313
|
+
Brancher* d = b;
|
|
314
|
+
b = Brancher::cast(b->next());
|
|
315
|
+
rfree(d,d->dispose(*this));
|
|
316
|
+
}
|
|
317
|
+
bl.init();
|
|
318
|
+
b_status = b_commit = Brancher::cast(&bl);
|
|
319
|
+
return NULL;
|
|
320
|
+
}
|
|
321
|
+
/*
|
|
322
|
+
* The call to choice() says that no older choices
|
|
323
|
+
* can be used. Hence, all branchers that are exhausted can be deleted.
|
|
324
|
+
*/
|
|
325
|
+
Brancher* b = Brancher::cast(bl.next());
|
|
326
|
+
while (b != b_status) {
|
|
327
|
+
Brancher* d = b;
|
|
328
|
+
b = Brancher::cast(b->next());
|
|
329
|
+
d->unlink();
|
|
330
|
+
rfree(d,d->dispose(*this));
|
|
331
|
+
}
|
|
332
|
+
// Make sure that b_commit does not point to a deleted brancher!
|
|
333
|
+
b_commit = b_status;
|
|
334
|
+
return b_status->choice(*this);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
const Choice*
|
|
338
|
+
Space::choice(Archive& e) const {
|
|
339
|
+
unsigned int id; e >> id;
|
|
340
|
+
Brancher* b_cur = Brancher::cast(bl.next());
|
|
341
|
+
while (b_cur != Brancher::cast(&bl)) {
|
|
342
|
+
if (id == b_cur->id())
|
|
343
|
+
return b_cur->choice(*this,e);
|
|
344
|
+
b_cur = Brancher::cast(b_cur->next());
|
|
345
|
+
}
|
|
346
|
+
throw SpaceNoBrancher();
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
void
|
|
350
|
+
Space::_commit(const Choice& c, unsigned int a) {
|
|
351
|
+
if (a >= c.alternatives())
|
|
352
|
+
throw SpaceIllegalAlternative();
|
|
353
|
+
if (failed())
|
|
354
|
+
return;
|
|
355
|
+
/*
|
|
356
|
+
* Due to weakly monotonic propagators the following scenario might
|
|
357
|
+
* occur: a brancher has been committed with all its available
|
|
358
|
+
* choices. Then, propagation determines less information
|
|
359
|
+
* than before and the brancher now will create new choices.
|
|
360
|
+
* Later, during recomputation, all of these choices
|
|
361
|
+
* can be used together, possibly interleaved with
|
|
362
|
+
* choices for other branchers. That means all branchers
|
|
363
|
+
* must be scanned to find the matching brancher for the choice.
|
|
364
|
+
*
|
|
365
|
+
* b_commit tries to optimize scanning as it is most likely that
|
|
366
|
+
* recomputation does not generate new choices during recomputation
|
|
367
|
+
* and hence b_commit is moved from newer to older branchers.
|
|
368
|
+
*/
|
|
369
|
+
Brancher* b_old = b_commit;
|
|
370
|
+
// Try whether we are lucky
|
|
371
|
+
while (b_commit != Brancher::cast(&bl))
|
|
372
|
+
if (c._id != b_commit->id())
|
|
373
|
+
b_commit = Brancher::cast(b_commit->next());
|
|
374
|
+
else
|
|
375
|
+
goto found;
|
|
376
|
+
if (b_commit == Brancher::cast(&bl)) {
|
|
377
|
+
// We did not find the brancher, start at the beginning
|
|
378
|
+
b_commit = Brancher::cast(bl.next());
|
|
379
|
+
while (b_commit != b_old)
|
|
380
|
+
if (c._id != b_commit->id())
|
|
381
|
+
b_commit = Brancher::cast(b_commit->next());
|
|
382
|
+
else
|
|
383
|
+
goto found;
|
|
384
|
+
}
|
|
385
|
+
// There is no matching brancher!
|
|
386
|
+
throw SpaceNoBrancher();
|
|
387
|
+
found:
|
|
388
|
+
// There is a matching brancher
|
|
389
|
+
if (b_commit->commit(*this,c,a) == ES_FAILED)
|
|
390
|
+
fail();
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
/*
|
|
396
|
+
* Space cloning
|
|
397
|
+
*
|
|
398
|
+
* Cloning is performed in two steps:
|
|
399
|
+
* - The space itself is copied by the copy constructor. This
|
|
400
|
+
* also copies all propagators, branchers, and variables.
|
|
401
|
+
* The copied variables are recorded.
|
|
402
|
+
* - In the second step the dependency information of the recorded
|
|
403
|
+
* variables is updated and their forwarding information is reset.
|
|
404
|
+
*
|
|
405
|
+
*/
|
|
406
|
+
Space::Space(bool share, Space& s)
|
|
407
|
+
: sm(s.sm->copy(share)),
|
|
408
|
+
mm(sm,s.mm,s.pc.p.n_sub*sizeof(Propagator**)),
|
|
409
|
+
gpi(s.gpi),
|
|
410
|
+
n_wmp(s.n_wmp) {
|
|
411
|
+
#ifdef GECODE_HAS_VAR_DISPOSE
|
|
412
|
+
for (int i=0; i<AllVarConf::idx_d; i++)
|
|
413
|
+
_vars_d[i] = NULL;
|
|
414
|
+
#endif
|
|
415
|
+
for (int i=0; i<AllVarConf::idx_c; i++)
|
|
416
|
+
pc.c.vars_u[i] = NULL;
|
|
417
|
+
pc.c.vars_noidx = NULL;
|
|
418
|
+
pc.c.shared = NULL;
|
|
419
|
+
pc.c.local = NULL;
|
|
420
|
+
// Copy all propagators
|
|
421
|
+
{
|
|
422
|
+
ActorLink* p = &pl;
|
|
423
|
+
ActorLink* e = &s.pl;
|
|
424
|
+
for (ActorLink* a = e->next(); a != e; a = a->next()) {
|
|
425
|
+
Actor* c = Actor::cast(a)->copy(*this,share);
|
|
426
|
+
// Link copied actor
|
|
427
|
+
p->next(ActorLink::cast(c)); ActorLink::cast(c)->prev(p);
|
|
428
|
+
// Note that forwarding is done in the constructors
|
|
429
|
+
p = c;
|
|
430
|
+
}
|
|
431
|
+
// Link last actor
|
|
432
|
+
p->next(&pl); pl.prev(p);
|
|
433
|
+
}
|
|
434
|
+
// Copy all branchers
|
|
435
|
+
{
|
|
436
|
+
ActorLink* p = &bl;
|
|
437
|
+
ActorLink* e = &s.bl;
|
|
438
|
+
for (ActorLink* a = e->next(); a != e; a = a->next()) {
|
|
439
|
+
Actor* c = Actor::cast(a)->copy(*this,share);
|
|
440
|
+
// Link copied actor
|
|
441
|
+
p->next(ActorLink::cast(c)); ActorLink::cast(c)->prev(p);
|
|
442
|
+
// Note that forwarding is done in the constructors
|
|
443
|
+
p = c;
|
|
444
|
+
}
|
|
445
|
+
// Link last actor
|
|
446
|
+
p->next(&bl); bl.prev(p);
|
|
447
|
+
}
|
|
448
|
+
// Setup brancher pointers
|
|
449
|
+
if (s.b_status == &s.bl) {
|
|
450
|
+
b_status = Brancher::cast(&bl);
|
|
451
|
+
} else {
|
|
452
|
+
b_status = Brancher::cast(s.b_status->prev());
|
|
453
|
+
}
|
|
454
|
+
if (s.b_commit == &s.bl) {
|
|
455
|
+
b_commit = Brancher::cast(&bl);
|
|
456
|
+
} else {
|
|
457
|
+
b_commit = Brancher::cast(s.b_commit->prev());
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
Space*
|
|
462
|
+
Space::_clone(bool share) {
|
|
463
|
+
if (failed())
|
|
464
|
+
throw SpaceFailed("Space::clone");
|
|
465
|
+
if (!stable())
|
|
466
|
+
throw SpaceNotStable("Space::clone");
|
|
467
|
+
|
|
468
|
+
// Copy all data structures (which in turn will invoke the constructor)
|
|
469
|
+
Space* c = copy(share);
|
|
470
|
+
|
|
471
|
+
// Setup array for actor disposal in c
|
|
472
|
+
{
|
|
473
|
+
unsigned int n = static_cast<unsigned int>(d_cur - d_fst);
|
|
474
|
+
if (n == 0) {
|
|
475
|
+
// No actors
|
|
476
|
+
c->d_fst = c->d_cur = c->d_lst = NULL;
|
|
477
|
+
} else {
|
|
478
|
+
// Leave one entry free
|
|
479
|
+
c->d_fst = c->alloc<Actor*>(n+1);
|
|
480
|
+
c->d_cur = c->d_fst;
|
|
481
|
+
c->d_lst = c->d_fst+n+1;
|
|
482
|
+
for (Actor** d_fst_iter = d_fst; d_fst_iter != d_cur; d_fst_iter++) {
|
|
483
|
+
if ((*d_fst_iter)->prev())
|
|
484
|
+
*(c->d_cur++) = Actor::cast((*d_fst_iter)->prev());
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
|
|
489
|
+
// Update variables without indexing structure
|
|
490
|
+
VarImp<NoIdxVarImpConf>* x =
|
|
491
|
+
static_cast<VarImp<NoIdxVarImpConf>*>(c->pc.c.vars_noidx);
|
|
492
|
+
while (x != NULL) {
|
|
493
|
+
VarImp<NoIdxVarImpConf>* n = x->next();
|
|
494
|
+
x->b.base = NULL; x->u.idx[0] = 0;
|
|
495
|
+
x = n;
|
|
496
|
+
}
|
|
497
|
+
// Update variables with indexing structure
|
|
498
|
+
c->update(static_cast<ActorLink**>(c->mm.subscriptions()));
|
|
499
|
+
|
|
500
|
+
// Re-establish prev links (reset forwarding information)
|
|
501
|
+
{
|
|
502
|
+
ActorLink* p_a = &pl;
|
|
503
|
+
ActorLink* c_a = p_a->next();
|
|
504
|
+
// First update propagators and advisors
|
|
505
|
+
while (c_a != &pl) {
|
|
506
|
+
Propagator* p = Propagator::cast(c_a);
|
|
507
|
+
if (p->u.advisors != NULL) {
|
|
508
|
+
ActorLink* a = p->u.advisors;
|
|
509
|
+
p->u.advisors = NULL;
|
|
510
|
+
do {
|
|
511
|
+
a->prev(p); a = a->next();
|
|
512
|
+
} while (a != NULL);
|
|
513
|
+
}
|
|
514
|
+
c_a->prev(p_a); p_a = c_a; c_a = c_a->next();
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
{
|
|
518
|
+
ActorLink* p_a = &bl;
|
|
519
|
+
ActorLink* c_a = p_a->next();
|
|
520
|
+
// Update branchers
|
|
521
|
+
while (c_a != &bl) {
|
|
522
|
+
c_a->prev(p_a); p_a = c_a; c_a = c_a->next();
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// Reset links for shared objects
|
|
527
|
+
for (SharedHandle::Object* s = c->pc.c.shared; s != NULL; s = s->next)
|
|
528
|
+
s->fwd = NULL;
|
|
529
|
+
|
|
530
|
+
// Reset links for local objects
|
|
531
|
+
for (ActorLink* l = c->pc.c.local; l != NULL; l = l->next())
|
|
532
|
+
l->prev(NULL);
|
|
533
|
+
|
|
534
|
+
// Initialize propagator queue
|
|
535
|
+
c->pc.p.active = &c->pc.p.queue[0]-1;
|
|
536
|
+
for (int i=0; i<=PropCost::AC_MAX; i++)
|
|
537
|
+
c->pc.p.queue[i].init();
|
|
538
|
+
// Copy propagation only data
|
|
539
|
+
c->pc.p.n_sub = pc.p.n_sub;
|
|
540
|
+
c->pc.p.branch_id = pc.p.branch_id;
|
|
541
|
+
return c;
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
void
|
|
545
|
+
Space::constrain(const Space&) {
|
|
546
|
+
throw SpaceConstrainUndefined();
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
void
|
|
550
|
+
LocalObject::fwdcopy(Space& home, bool share) {
|
|
551
|
+
ActorLink::cast(this)->prev(copy(home,share));
|
|
552
|
+
next(home.pc.c.local);
|
|
553
|
+
home.pc.c.local = this;
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
void
|
|
557
|
+
Choice::archive(Archive& e) const {
|
|
558
|
+
e << id();
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// STATISTICS: kernel-core
|