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,121 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Copyright:
|
|
8
|
+
* Christian Schulte, 2008
|
|
9
|
+
* Mikael Lagerkvist, 2008
|
|
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
|
+
#include <gecode/kernel.hh>
|
|
41
|
+
|
|
42
|
+
namespace Gecode {
|
|
43
|
+
|
|
44
|
+
const VarBranchOptions VarBranchOptions::def;
|
|
45
|
+
|
|
46
|
+
const ValBranchOptions ValBranchOptions::def;
|
|
47
|
+
|
|
48
|
+
const TieBreakVarBranchOptions TieBreakVarBranchOptions::def;
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
/*
|
|
52
|
+
* Function brancher
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/// %Brancher for calling a function
|
|
56
|
+
class GECODE_KERNEL_EXPORT FunctionBranch : public Brancher {
|
|
57
|
+
protected:
|
|
58
|
+
/// Minimal brancher description storing no information
|
|
59
|
+
class GECODE_KERNEL_EXPORT Description : public Choice {
|
|
60
|
+
public:
|
|
61
|
+
/// Initialize description for brancher \a b, number of alternatives \a a.
|
|
62
|
+
Description(const Brancher& b, unsigned int a) : Choice(b,a) {}
|
|
63
|
+
/// Report size occupied
|
|
64
|
+
virtual size_t size(void) const { return sizeof(Description); }
|
|
65
|
+
/// Archive into \a e
|
|
66
|
+
virtual void archive(Archive& e) const {
|
|
67
|
+
Choice::archive(e);
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
/// Function to call
|
|
71
|
+
void (*f)(Space&);
|
|
72
|
+
/// Call function just once
|
|
73
|
+
bool done;
|
|
74
|
+
/// Construct brancher
|
|
75
|
+
FunctionBranch(Home home, void (*f0)(Space&))
|
|
76
|
+
: Brancher(home), f(f0), done(false) {}
|
|
77
|
+
/// Copy constructor
|
|
78
|
+
FunctionBranch(Space& home, bool share, FunctionBranch& b)
|
|
79
|
+
: Brancher(home,share,b), f(b.f), done(b.done) {}
|
|
80
|
+
public:
|
|
81
|
+
/// Check status of brancher, return true if alternatives left
|
|
82
|
+
virtual bool status(const Space&) const {
|
|
83
|
+
return !done;
|
|
84
|
+
}
|
|
85
|
+
/// Return choice
|
|
86
|
+
virtual const Choice* choice(Space&) {
|
|
87
|
+
assert(!done);
|
|
88
|
+
return new Description(*this,1);
|
|
89
|
+
}
|
|
90
|
+
/// Return choice
|
|
91
|
+
virtual const Choice* choice(const Space&, Archive&) {
|
|
92
|
+
return new Description(*this,1);
|
|
93
|
+
}
|
|
94
|
+
/// Perform commit
|
|
95
|
+
virtual ExecStatus
|
|
96
|
+
commit(Space& home, const Choice&, unsigned int) {
|
|
97
|
+
done = true;
|
|
98
|
+
f(home);
|
|
99
|
+
return home.failed() ? ES_FAILED : ES_OK;
|
|
100
|
+
}
|
|
101
|
+
/// Copy brancher
|
|
102
|
+
virtual Actor* copy(Space& home, bool share) {
|
|
103
|
+
return new (home) FunctionBranch(home,share,*this);
|
|
104
|
+
}
|
|
105
|
+
/// Post brancher
|
|
106
|
+
static void post(Home home, void (*f)(Space&)) {
|
|
107
|
+
(void) new (home) FunctionBranch(home,f);
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
void
|
|
113
|
+
branch(Home home, void (*f)(Space& home)) {
|
|
114
|
+
if (home.failed())
|
|
115
|
+
return;
|
|
116
|
+
FunctionBranch::post(home,f);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// STATISTICS: kernel-branch
|
|
@@ -0,0 +1,254 @@
|
|
|
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, 2008
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2010-09-03 18:30:37 +1000 (Fri, 03 Sep 2010) $ by $Author: schulte $
|
|
11
|
+
* $Revision: 11386 $
|
|
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 <ctime>
|
|
39
|
+
|
|
40
|
+
namespace Gecode {
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* \defgroup TaskModelBranch Generic branching support
|
|
44
|
+
*
|
|
45
|
+
* Support for options to branchings, tie-breaking, filter functions,
|
|
46
|
+
* and branchings that are independent of a particular variable domain.
|
|
47
|
+
*
|
|
48
|
+
* \ingroup TaskModel
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
/** \brief Branch filter function type
|
|
52
|
+
* \ingroup TaskModelBranch
|
|
53
|
+
*/
|
|
54
|
+
typedef bool (*BranchFilter)(const Space& home, int i, const Var& x);
|
|
55
|
+
|
|
56
|
+
/** \brief Variable branch options
|
|
57
|
+
* \ingroup TaskModelBranch
|
|
58
|
+
*/
|
|
59
|
+
class VarBranchOptions {
|
|
60
|
+
public:
|
|
61
|
+
/// Branch filter function
|
|
62
|
+
BranchFilter bf;
|
|
63
|
+
/// Seed for random variable selection
|
|
64
|
+
unsigned int seed;
|
|
65
|
+
/// Default options
|
|
66
|
+
GECODE_KERNEL_EXPORT static const VarBranchOptions def;
|
|
67
|
+
/// Initialize with default values
|
|
68
|
+
VarBranchOptions(BranchFilter bf0=NULL);
|
|
69
|
+
/// Return object with time-based seed value
|
|
70
|
+
static VarBranchOptions time(BranchFilter bf=NULL);
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
/** \brief Value branch options
|
|
74
|
+
* \ingroup TaskModelBranch
|
|
75
|
+
*/
|
|
76
|
+
class ValBranchOptions {
|
|
77
|
+
public:
|
|
78
|
+
/// Seed for random value selection
|
|
79
|
+
unsigned int seed;
|
|
80
|
+
/// Default options
|
|
81
|
+
GECODE_KERNEL_EXPORT static const ValBranchOptions def;
|
|
82
|
+
/// Initialize with default values
|
|
83
|
+
ValBranchOptions(void);
|
|
84
|
+
/// Return object with time-based seed value
|
|
85
|
+
static ValBranchOptions time(void);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/// Combine variable selection criteria for tie-breaking
|
|
90
|
+
template<class VarBranch>
|
|
91
|
+
class TieBreakVarBranch {
|
|
92
|
+
public:
|
|
93
|
+
/// Branching criteria to try in order
|
|
94
|
+
VarBranch a, b, c, d;
|
|
95
|
+
/// Initialize with variable selection criteria
|
|
96
|
+
TieBreakVarBranch(VarBranch a0 = static_cast<VarBranch>(0),
|
|
97
|
+
VarBranch b0 = static_cast<VarBranch>(0),
|
|
98
|
+
VarBranch c0 = static_cast<VarBranch>(0),
|
|
99
|
+
VarBranch d0 = static_cast<VarBranch>(0));
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/// Combine variable branch options for tie-breaking
|
|
103
|
+
class TieBreakVarBranchOptions {
|
|
104
|
+
public:
|
|
105
|
+
/// Options for branching criteria to try in order
|
|
106
|
+
VarBranchOptions a, b, c, d;
|
|
107
|
+
/// Default options
|
|
108
|
+
GECODE_KERNEL_EXPORT static const TieBreakVarBranchOptions def;
|
|
109
|
+
/// Initialize with variable selection criteria
|
|
110
|
+
TieBreakVarBranchOptions(const VarBranchOptions& a0
|
|
111
|
+
= VarBranchOptions::def,
|
|
112
|
+
const VarBranchOptions& b0
|
|
113
|
+
= VarBranchOptions::def,
|
|
114
|
+
const VarBranchOptions& c0
|
|
115
|
+
= VarBranchOptions::def,
|
|
116
|
+
const VarBranchOptions& d0
|
|
117
|
+
= VarBranchOptions::def);
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* \defgroup TaskModelBranchTieBreak Tie-breaking for variable selection
|
|
122
|
+
*
|
|
123
|
+
* \ingroup TaskModelBranch
|
|
124
|
+
*/
|
|
125
|
+
//@{
|
|
126
|
+
/// Combine variable selection criteria \a a and \a b for tie-breaking
|
|
127
|
+
template<class VarBranch>
|
|
128
|
+
TieBreakVarBranch<VarBranch>
|
|
129
|
+
tiebreak(VarBranch a, VarBranch b);
|
|
130
|
+
/// Combine variable selection criteria \a a, \a b, and \a c for tie-breaking
|
|
131
|
+
template<class VarBranch>
|
|
132
|
+
TieBreakVarBranch<VarBranch>
|
|
133
|
+
tiebreak(VarBranch a, VarBranch b, VarBranch c);
|
|
134
|
+
/// Combine variable selection criteria \a a, \a b, \a c, and \a d for tie-breaking
|
|
135
|
+
template<class VarBranch>
|
|
136
|
+
TieBreakVarBranch<VarBranch>
|
|
137
|
+
tiebreak(VarBranch a, VarBranch b, VarBranch c, VarBranch d);
|
|
138
|
+
/// Combine variable branch options \a a and \a b for tie-breaking
|
|
139
|
+
TieBreakVarBranchOptions
|
|
140
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b);
|
|
141
|
+
/// Combine variable branch options \a a, \a b, and \a c for tie-breaking
|
|
142
|
+
TieBreakVarBranchOptions
|
|
143
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b, VarBranchOptions c);
|
|
144
|
+
/// Combine variable branch options \a a, \a b, \a c, and \a d for tie-breaking
|
|
145
|
+
TieBreakVarBranchOptions
|
|
146
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b, VarBranchOptions c,
|
|
147
|
+
VarBranchOptions d);
|
|
148
|
+
//@}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* \defgroup TaskModelBranchExec Branch with a function
|
|
152
|
+
*
|
|
153
|
+
* This does not really branch (it just offers a single alternative) but
|
|
154
|
+
* executes a single function during branching. A typical
|
|
155
|
+
* application is to post more constraints after another brancher
|
|
156
|
+
* has finished.
|
|
157
|
+
*
|
|
158
|
+
* \ingroup TaskModelBranch
|
|
159
|
+
*/
|
|
160
|
+
//@{
|
|
161
|
+
/// Call the function \a f (with the current space as argument) for branching
|
|
162
|
+
GECODE_KERNEL_EXPORT void
|
|
163
|
+
branch(Home home, void (*f)(Space& home));
|
|
164
|
+
//@}
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
// Variable branch options
|
|
168
|
+
forceinline
|
|
169
|
+
VarBranchOptions::VarBranchOptions(BranchFilter bf0)
|
|
170
|
+
: bf(bf0), seed(0) {}
|
|
171
|
+
|
|
172
|
+
forceinline VarBranchOptions
|
|
173
|
+
VarBranchOptions::time(BranchFilter bf) {
|
|
174
|
+
VarBranchOptions o(bf);
|
|
175
|
+
o.seed=static_cast<unsigned int>(::time(NULL));
|
|
176
|
+
return o;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// Value branch options
|
|
180
|
+
forceinline
|
|
181
|
+
ValBranchOptions::ValBranchOptions(void) : seed(0) {}
|
|
182
|
+
|
|
183
|
+
forceinline ValBranchOptions
|
|
184
|
+
ValBranchOptions::time(void) {
|
|
185
|
+
ValBranchOptions o; o.seed=static_cast<unsigned int>(::time(NULL));
|
|
186
|
+
return o;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
/*
|
|
191
|
+
* Combine variable selection criteria for tie-breaking
|
|
192
|
+
*/
|
|
193
|
+
template<class VarBranch>
|
|
194
|
+
forceinline
|
|
195
|
+
TieBreakVarBranch<VarBranch>::TieBreakVarBranch(VarBranch a0,
|
|
196
|
+
VarBranch b0,
|
|
197
|
+
VarBranch c0,
|
|
198
|
+
VarBranch d0)
|
|
199
|
+
: a(a0), b(b0), c(c0), d(d0) {}
|
|
200
|
+
|
|
201
|
+
template<class VarBranch>
|
|
202
|
+
forceinline TieBreakVarBranch<VarBranch>
|
|
203
|
+
tiebreak(VarBranch a, VarBranch b) {
|
|
204
|
+
TieBreakVarBranch<VarBranch> ab(a,b);
|
|
205
|
+
return ab;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
template<class VarBranch>
|
|
209
|
+
forceinline TieBreakVarBranch<VarBranch>
|
|
210
|
+
tiebreak(VarBranch a, VarBranch b, VarBranch c) {
|
|
211
|
+
TieBreakVarBranch<VarBranch> abc(a,b,c);
|
|
212
|
+
return abc;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
template<class VarBranch>
|
|
216
|
+
forceinline TieBreakVarBranch<VarBranch>
|
|
217
|
+
tiebreak(VarBranch a, VarBranch b, VarBranch c, VarBranch d) {
|
|
218
|
+
TieBreakVarBranch<VarBranch> abcd(a,b,c,d);
|
|
219
|
+
return abcd;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
/*
|
|
223
|
+
* Combine branch options for tie-breaking
|
|
224
|
+
*/
|
|
225
|
+
forceinline
|
|
226
|
+
TieBreakVarBranchOptions::
|
|
227
|
+
TieBreakVarBranchOptions(const VarBranchOptions& a0,
|
|
228
|
+
const VarBranchOptions& b0,
|
|
229
|
+
const VarBranchOptions& c0,
|
|
230
|
+
const VarBranchOptions& d0)
|
|
231
|
+
: a(a0), b(b0), c(c0), d(d0) {}
|
|
232
|
+
|
|
233
|
+
forceinline TieBreakVarBranchOptions
|
|
234
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b) {
|
|
235
|
+
TieBreakVarBranchOptions ab(a,b);
|
|
236
|
+
return ab;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
forceinline TieBreakVarBranchOptions
|
|
240
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b, VarBranchOptions c) {
|
|
241
|
+
TieBreakVarBranchOptions abc(a,b,c);
|
|
242
|
+
return abc;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
forceinline TieBreakVarBranchOptions
|
|
246
|
+
tiebreak(VarBranchOptions a, VarBranchOptions b, VarBranchOptions c,
|
|
247
|
+
VarBranchOptions d) {
|
|
248
|
+
TieBreakVarBranchOptions abcd(a,b,c,d);
|
|
249
|
+
return abcd;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
// STATISTICS: kernel-branch
|
|
@@ -0,0 +1,615 @@
|
|
|
1
|
+
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Main author:
|
|
4
|
+
* Christian Schulte <schulte@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2008
|
|
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
|
+
namespace Gecode {
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* \defgroup TaskBranchTieBreak Generic view tie-breaking for brancher based on view and value selection
|
|
42
|
+
*
|
|
43
|
+
* \ingroup TaskBranchViewVal
|
|
44
|
+
*/
|
|
45
|
+
//@{
|
|
46
|
+
/**
|
|
47
|
+
* \brief View selection class for static tie breaking
|
|
48
|
+
*/
|
|
49
|
+
template<class A, class B>
|
|
50
|
+
class ViewSelTieBreakStatic {
|
|
51
|
+
protected:
|
|
52
|
+
/// First selection class
|
|
53
|
+
A a;
|
|
54
|
+
/// Second selection class
|
|
55
|
+
B b;
|
|
56
|
+
public:
|
|
57
|
+
/// View type
|
|
58
|
+
typedef typename A::View View;
|
|
59
|
+
/// View selection choice
|
|
60
|
+
class Choice {
|
|
61
|
+
public:
|
|
62
|
+
/// First choice
|
|
63
|
+
typename A::Choice a;
|
|
64
|
+
/// Second choice
|
|
65
|
+
typename B::Choice b;
|
|
66
|
+
/// Constructor
|
|
67
|
+
Choice(const typename A::Choice& a, const typename B::Choice& b);
|
|
68
|
+
/// Report size occupied
|
|
69
|
+
size_t size(void) const;
|
|
70
|
+
/// Archive into \a e
|
|
71
|
+
void archive(Archive& e) const;
|
|
72
|
+
};
|
|
73
|
+
/// Default constructor
|
|
74
|
+
ViewSelTieBreakStatic(void);
|
|
75
|
+
/// Constructor for initialization
|
|
76
|
+
ViewSelTieBreakStatic(Space& home, A& a, B& b);
|
|
77
|
+
/// Intialize with view \a x
|
|
78
|
+
ViewSelStatus init(Space& home, typename A::View x);
|
|
79
|
+
/// Possibly select better view \a x
|
|
80
|
+
ViewSelStatus select(Space& home, typename A::View x);
|
|
81
|
+
/// Return choice
|
|
82
|
+
Choice choice(Space& home);
|
|
83
|
+
/// Return choice
|
|
84
|
+
Choice choice(const Space& home, Archive& e);
|
|
85
|
+
/// Commit to choice
|
|
86
|
+
void commit(Space& home, const Choice& c, unsigned int a);
|
|
87
|
+
/// Updating during cloning
|
|
88
|
+
void update(Space& home, bool share, ViewSelTieBreakStatic& vs);
|
|
89
|
+
/// Delete view selection
|
|
90
|
+
void dispose(Space& home);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* \brief Virtualized choice baseclass
|
|
95
|
+
*/
|
|
96
|
+
class ChoiceVirtualBase {
|
|
97
|
+
public:
|
|
98
|
+
/// Create copy
|
|
99
|
+
virtual ChoiceVirtualBase* copy(void) const = 0;
|
|
100
|
+
/// Report size required
|
|
101
|
+
virtual size_t size(void) const = 0;
|
|
102
|
+
/// Destructor
|
|
103
|
+
GECODE_KERNEL_EXPORT virtual ~ChoiceVirtualBase(void);
|
|
104
|
+
/// Archive into \a e
|
|
105
|
+
virtual void archive(Archive& e) const = 0;
|
|
106
|
+
/// \name Memory management
|
|
107
|
+
//@{
|
|
108
|
+
/// Allocate memory
|
|
109
|
+
static void* operator new(size_t s);
|
|
110
|
+
/// Delete memory
|
|
111
|
+
static void operator delete(void*);
|
|
112
|
+
//@}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* \brief Virtualized view selection base class
|
|
117
|
+
*/
|
|
118
|
+
template<class View>
|
|
119
|
+
class ViewSelVirtualBase {
|
|
120
|
+
public:
|
|
121
|
+
/// Intialize with view \a x
|
|
122
|
+
virtual ViewSelStatus init(Space& home, View x) = 0;
|
|
123
|
+
/// Possibly select better view \a x
|
|
124
|
+
virtual ViewSelStatus select(Space& home, View x) = 0;
|
|
125
|
+
/// Return choice
|
|
126
|
+
virtual ChoiceVirtualBase* choice(Space& home) = 0;
|
|
127
|
+
/// Return choice
|
|
128
|
+
virtual ChoiceVirtualBase* choice(const Space& home, Archive& e) = 0;
|
|
129
|
+
/// Commit to choice
|
|
130
|
+
virtual void commit(Space& home, const ChoiceVirtualBase* c,
|
|
131
|
+
unsigned int a) = 0;
|
|
132
|
+
/// Create copy
|
|
133
|
+
virtual ViewSelVirtualBase<View>* copy(Space& home, bool share) = 0;
|
|
134
|
+
/// Delete view selection and return its size
|
|
135
|
+
virtual size_t dispose(Space& home) = 0;
|
|
136
|
+
/// \name Memory management
|
|
137
|
+
//@{
|
|
138
|
+
/// Allocate memory from space
|
|
139
|
+
static void* operator new(size_t s, Space& home);
|
|
140
|
+
/// No-op for exceptions
|
|
141
|
+
static void operator delete(void* p, Space& home);
|
|
142
|
+
/// Needed for exceptions
|
|
143
|
+
static void operator delete(void*);
|
|
144
|
+
//@}
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* \brief Virtualized choice
|
|
149
|
+
*/
|
|
150
|
+
template<class Choice>
|
|
151
|
+
class ChoiceVirtual : public ChoiceVirtualBase {
|
|
152
|
+
public:
|
|
153
|
+
/// Static choice object
|
|
154
|
+
Choice choice;
|
|
155
|
+
/// Constructor for initialization
|
|
156
|
+
ChoiceVirtual(const Choice& c);
|
|
157
|
+
/// Create copy
|
|
158
|
+
virtual ChoiceVirtualBase* copy(void) const;
|
|
159
|
+
/// Report size required
|
|
160
|
+
virtual size_t size(void) const;
|
|
161
|
+
/// Destructor
|
|
162
|
+
virtual ~ChoiceVirtual(void);
|
|
163
|
+
/// Archive into \a e
|
|
164
|
+
virtual void archive(Archive& e) const;
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* \brief Virtualized view selection
|
|
169
|
+
*/
|
|
170
|
+
template<class ViewSel>
|
|
171
|
+
class ViewSelVirtual : public ViewSelVirtualBase<typename ViewSel::View> {
|
|
172
|
+
protected:
|
|
173
|
+
/// Static view selection object
|
|
174
|
+
ViewSel viewsel;
|
|
175
|
+
public:
|
|
176
|
+
/// Constructor for initialization
|
|
177
|
+
ViewSelVirtual(Space& home, const VarBranchOptions& vbo);
|
|
178
|
+
/// Constructor for cloning \a vsv
|
|
179
|
+
ViewSelVirtual(Space& home, bool share, ViewSelVirtual& vsv);
|
|
180
|
+
/// Intialize with view \a x
|
|
181
|
+
virtual ViewSelStatus init(Space& home, typename ViewSel::View x);
|
|
182
|
+
/// Possibly select better view \a x
|
|
183
|
+
virtual ViewSelStatus select(Space& home, typename ViewSel::View x);
|
|
184
|
+
/// Return choice
|
|
185
|
+
virtual ChoiceVirtualBase* choice(Space& home);
|
|
186
|
+
/// Return choice
|
|
187
|
+
virtual ChoiceVirtualBase* choice(const Space& home, Archive& e);
|
|
188
|
+
/// Commit to choice
|
|
189
|
+
virtual void commit(Space& home, const ChoiceVirtualBase* d,
|
|
190
|
+
unsigned int a);
|
|
191
|
+
/// Create copy during cloning
|
|
192
|
+
virtual ViewSelVirtualBase<typename ViewSel::View>*
|
|
193
|
+
copy(Space& home, bool share);
|
|
194
|
+
/// Delete view selection and returns its size
|
|
195
|
+
virtual size_t dispose(Space& home);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* \brief View selection class for dynamic tie breaking
|
|
200
|
+
*/
|
|
201
|
+
template<class _View>
|
|
202
|
+
class ViewSelTieBreakDynamic {
|
|
203
|
+
protected:
|
|
204
|
+
/// Number of tie breakers
|
|
205
|
+
int n;
|
|
206
|
+
/// Tie breakers
|
|
207
|
+
ViewSelVirtualBase<_View>** tb;
|
|
208
|
+
public:
|
|
209
|
+
/// View type
|
|
210
|
+
typedef _View View;
|
|
211
|
+
/// %Choice for tie breakers
|
|
212
|
+
class Choice {
|
|
213
|
+
public:
|
|
214
|
+
/// Number of choices
|
|
215
|
+
int n;
|
|
216
|
+
/// Choices
|
|
217
|
+
ChoiceVirtualBase** c;
|
|
218
|
+
/// Constructor
|
|
219
|
+
Choice(Space& home, ViewSelVirtualBase<_View>** tb, int n0);
|
|
220
|
+
/// Constructor
|
|
221
|
+
Choice(const Space& home, Archive& e,
|
|
222
|
+
ViewSelVirtualBase<_View>** tb, int n0);
|
|
223
|
+
/// Copy constructor
|
|
224
|
+
Choice(const Choice& ce);
|
|
225
|
+
/// Assignment operator
|
|
226
|
+
const Choice& operator =(const Choice& ce);
|
|
227
|
+
/// Perform commit
|
|
228
|
+
void commit(Space& home, unsigned int a,
|
|
229
|
+
ViewSelVirtualBase<_View>** tb) const;
|
|
230
|
+
/// Report size occupied
|
|
231
|
+
size_t size(void) const;
|
|
232
|
+
/// Destructor
|
|
233
|
+
~Choice(void);
|
|
234
|
+
/// Archive into \a e
|
|
235
|
+
void archive(Archive& e) const;
|
|
236
|
+
};
|
|
237
|
+
/// Default constructor
|
|
238
|
+
ViewSelTieBreakDynamic(void);
|
|
239
|
+
/// Constructor for initialization
|
|
240
|
+
ViewSelTieBreakDynamic(Space& home, ViewSelVirtualBase<_View>** vsv,
|
|
241
|
+
int n);
|
|
242
|
+
/// Intialize with view \a x
|
|
243
|
+
ViewSelStatus init(Space& home, _View x);
|
|
244
|
+
/// Possibly select better view \a x
|
|
245
|
+
ViewSelStatus select(Space& home, _View x);
|
|
246
|
+
/// Return choice
|
|
247
|
+
Choice choice(Space& home);
|
|
248
|
+
/// Return choice
|
|
249
|
+
Choice choice(const Space& home, Archive& e);
|
|
250
|
+
/// Commit to choice
|
|
251
|
+
void commit(Space& home,
|
|
252
|
+
const typename ViewSelTieBreakDynamic<_View>::Choice& c,
|
|
253
|
+
unsigned int a);
|
|
254
|
+
/// Updating during cloning
|
|
255
|
+
void update(Space& home, bool share, ViewSelTieBreakDynamic& vs);
|
|
256
|
+
/// Delete view selection
|
|
257
|
+
void dispose(Space& home);
|
|
258
|
+
};
|
|
259
|
+
//@}
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
// Select variable with static tie breaking
|
|
263
|
+
template<class A, class B>
|
|
264
|
+
forceinline
|
|
265
|
+
ViewSelTieBreakStatic<A,B>::Choice::Choice(const typename A::Choice& a0,
|
|
266
|
+
const typename B::Choice& b0)
|
|
267
|
+
: a(a0), b(b0) {}
|
|
268
|
+
template<class A, class B>
|
|
269
|
+
forceinline size_t
|
|
270
|
+
ViewSelTieBreakStatic<A,B>::Choice::size(void) const {
|
|
271
|
+
return a.size() + b.size();
|
|
272
|
+
}
|
|
273
|
+
template<class A, class B>
|
|
274
|
+
forceinline void
|
|
275
|
+
ViewSelTieBreakStatic<A,B>::Choice::archive(Archive& e) const {
|
|
276
|
+
a.archive(e);
|
|
277
|
+
b.archive(e);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
template<class A, class B>
|
|
281
|
+
forceinline
|
|
282
|
+
ViewSelTieBreakStatic<A,B>::ViewSelTieBreakStatic(void) {}
|
|
283
|
+
template<class A, class B>
|
|
284
|
+
forceinline
|
|
285
|
+
ViewSelTieBreakStatic<A,B>::
|
|
286
|
+
ViewSelTieBreakStatic(Space&, A& a0, B& b0)
|
|
287
|
+
: a(a0), b(b0) {}
|
|
288
|
+
template<class A, class B>
|
|
289
|
+
forceinline ViewSelStatus
|
|
290
|
+
ViewSelTieBreakStatic<A,B>::init(Space& home, typename A::View x) {
|
|
291
|
+
ViewSelStatus s = a.init(home,x);
|
|
292
|
+
return (b.init(home,x) != VSS_BEST) ? VSS_BETTER : s;
|
|
293
|
+
}
|
|
294
|
+
template<class A, class B>
|
|
295
|
+
forceinline ViewSelStatus
|
|
296
|
+
ViewSelTieBreakStatic<A,B>::select(Space& home, typename A::View x) {
|
|
297
|
+
switch (a.select(home,x)) {
|
|
298
|
+
case VSS_BEST:
|
|
299
|
+
return (b.init(home,x) != VSS_BEST) ? VSS_BETTER : VSS_BEST;
|
|
300
|
+
case VSS_BETTER:
|
|
301
|
+
(void) b.init(home,x);
|
|
302
|
+
return VSS_BETTER;
|
|
303
|
+
case VSS_WORSE:
|
|
304
|
+
return VSS_WORSE;
|
|
305
|
+
case VSS_TIE:
|
|
306
|
+
switch (b.select(home,x)) {
|
|
307
|
+
case VSS_BEST: return VSS_BETTER;
|
|
308
|
+
case VSS_BETTER: return VSS_BETTER;
|
|
309
|
+
case VSS_TIE: return VSS_TIE;
|
|
310
|
+
case VSS_WORSE: return VSS_WORSE;
|
|
311
|
+
default: GECODE_NEVER;
|
|
312
|
+
}
|
|
313
|
+
default: GECODE_NEVER;
|
|
314
|
+
return VSS_WORSE;
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
template<class A, class B>
|
|
318
|
+
inline typename ViewSelTieBreakStatic<A,B>::Choice
|
|
319
|
+
ViewSelTieBreakStatic<A,B>::choice(Space& home) {
|
|
320
|
+
typename ViewSelTieBreakStatic<A,B>::Choice c(a.choice(home),
|
|
321
|
+
b.choice(home));
|
|
322
|
+
return c;
|
|
323
|
+
}
|
|
324
|
+
template<class A, class B>
|
|
325
|
+
inline typename ViewSelTieBreakStatic<A,B>::Choice
|
|
326
|
+
ViewSelTieBreakStatic<A,B>::choice(const Space& home, Archive& e) {
|
|
327
|
+
typename ViewSelTieBreakStatic<A,B>::Choice c(a.choice(home,e),
|
|
328
|
+
b.choice(home,e));
|
|
329
|
+
return c;
|
|
330
|
+
}
|
|
331
|
+
template<class A, class B>
|
|
332
|
+
forceinline void
|
|
333
|
+
ViewSelTieBreakStatic<A,B>::commit(Space& home, const Choice& c,
|
|
334
|
+
unsigned int al) {
|
|
335
|
+
a.commit(home, c.a, al);
|
|
336
|
+
b.commit(home, c.b, al);
|
|
337
|
+
}
|
|
338
|
+
template<class A, class B>
|
|
339
|
+
forceinline void
|
|
340
|
+
ViewSelTieBreakStatic<A,B>::update(Space& home, bool share,
|
|
341
|
+
ViewSelTieBreakStatic<A,B>& vstb) {
|
|
342
|
+
a.update(home,share,vstb.a);
|
|
343
|
+
b.update(home,share,vstb.b);
|
|
344
|
+
}
|
|
345
|
+
template<class A, class B>
|
|
346
|
+
forceinline void
|
|
347
|
+
ViewSelTieBreakStatic<A,B>::dispose(Space& home) {
|
|
348
|
+
a.dispose(home);
|
|
349
|
+
b.dispose(home);
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
// Virtualized view selection
|
|
354
|
+
template<class View>
|
|
355
|
+
forceinline void
|
|
356
|
+
ViewSelVirtualBase<View>::operator delete(void*) {}
|
|
357
|
+
template<class View>
|
|
358
|
+
forceinline void
|
|
359
|
+
ViewSelVirtualBase<View>::operator delete(void*, Space&) {}
|
|
360
|
+
template<class View>
|
|
361
|
+
forceinline void*
|
|
362
|
+
ViewSelVirtualBase<View>::operator new(size_t s, Space& home) {
|
|
363
|
+
return home.ralloc(s);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Virtualized choice
|
|
367
|
+
forceinline void
|
|
368
|
+
ChoiceVirtualBase::operator delete(void* p) {
|
|
369
|
+
heap.rfree(p);
|
|
370
|
+
}
|
|
371
|
+
forceinline void*
|
|
372
|
+
ChoiceVirtualBase::operator new(size_t s) {
|
|
373
|
+
return heap.ralloc(s);
|
|
374
|
+
}
|
|
375
|
+
forceinline
|
|
376
|
+
ChoiceVirtualBase::~ChoiceVirtualBase(void) {
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
template<class Choice>
|
|
381
|
+
forceinline
|
|
382
|
+
ChoiceVirtual<Choice>::ChoiceVirtual(const Choice& c)
|
|
383
|
+
: choice(c) {}
|
|
384
|
+
template<class Choice>
|
|
385
|
+
forceinline ChoiceVirtualBase*
|
|
386
|
+
ChoiceVirtual<Choice>::copy(void) const {
|
|
387
|
+
return new ChoiceVirtual<Choice>(choice);
|
|
388
|
+
}
|
|
389
|
+
template<class Choice>
|
|
390
|
+
forceinline size_t
|
|
391
|
+
ChoiceVirtual<Choice>::size(void) const {
|
|
392
|
+
return sizeof(ChoiceVirtual<Choice>);
|
|
393
|
+
}
|
|
394
|
+
template<class Choice>
|
|
395
|
+
ChoiceVirtual<Choice>::~ChoiceVirtual(void) {}
|
|
396
|
+
template<class Choice> void
|
|
397
|
+
ChoiceVirtual<Choice>::archive(Archive& e) const {
|
|
398
|
+
choice.archive(e);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
template<class ViewSel>
|
|
402
|
+
forceinline
|
|
403
|
+
ViewSelVirtual<ViewSel>::ViewSelVirtual(Space& home,
|
|
404
|
+
const VarBranchOptions& vbo)
|
|
405
|
+
: viewsel(home,vbo) {}
|
|
406
|
+
template<class ViewSel>
|
|
407
|
+
forceinline
|
|
408
|
+
ViewSelVirtual<ViewSel>::ViewSelVirtual(Space& home, bool share,
|
|
409
|
+
ViewSelVirtual<ViewSel>& vsv) {
|
|
410
|
+
viewsel.update(home,share,vsv.viewsel);
|
|
411
|
+
}
|
|
412
|
+
template<class ViewSel>
|
|
413
|
+
ViewSelStatus
|
|
414
|
+
ViewSelVirtual<ViewSel>::init(Space& home, typename ViewSel::View x) {
|
|
415
|
+
return viewsel.init(home,x);
|
|
416
|
+
}
|
|
417
|
+
template<class ViewSel>
|
|
418
|
+
ViewSelStatus
|
|
419
|
+
ViewSelVirtual<ViewSel>::select(Space& home, typename ViewSel::View x) {
|
|
420
|
+
return viewsel.select(home,x);
|
|
421
|
+
}
|
|
422
|
+
template<class ViewSel>
|
|
423
|
+
ChoiceVirtualBase*
|
|
424
|
+
ViewSelVirtual<ViewSel>::choice(Space& home) {
|
|
425
|
+
return new ChoiceVirtual<typename ViewSel::Choice>(viewsel.choice(home));
|
|
426
|
+
}
|
|
427
|
+
template<class ViewSel>
|
|
428
|
+
ChoiceVirtualBase*
|
|
429
|
+
ViewSelVirtual<ViewSel>::choice(const Space& home, Archive& e) {
|
|
430
|
+
return new ChoiceVirtual<typename ViewSel::Choice>(viewsel.choice(home,e));
|
|
431
|
+
}
|
|
432
|
+
template<class ViewSel>
|
|
433
|
+
void
|
|
434
|
+
ViewSelVirtual<ViewSel>::commit(Space& home, const ChoiceVirtualBase* _c,
|
|
435
|
+
unsigned int a) {
|
|
436
|
+
const ChoiceVirtual<typename ViewSel::Choice>* c =
|
|
437
|
+
static_cast<const ChoiceVirtual<typename ViewSel::Choice>*>(_c);
|
|
438
|
+
viewsel.commit(home, c->choice, a);
|
|
439
|
+
}
|
|
440
|
+
template<class ViewSel>
|
|
441
|
+
ViewSelVirtualBase<typename ViewSel::View>*
|
|
442
|
+
ViewSelVirtual<ViewSel>::copy(Space& home, bool share) {
|
|
443
|
+
return new (home) ViewSelVirtual<ViewSel>(home,share,*this);
|
|
444
|
+
}
|
|
445
|
+
template<class ViewSel>
|
|
446
|
+
size_t
|
|
447
|
+
ViewSelVirtual<ViewSel>::dispose(Space& home) {
|
|
448
|
+
viewsel.dispose(home);
|
|
449
|
+
return sizeof(ViewSelVirtual<ViewSel>);
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
|
|
453
|
+
// Choice for dynamic tie breaking
|
|
454
|
+
template<class View>
|
|
455
|
+
forceinline
|
|
456
|
+
ViewSelTieBreakDynamic<View>::Choice::Choice
|
|
457
|
+
(Space& home, ViewSelVirtualBase<View>** tb, int n0)
|
|
458
|
+
: n(n0), c(heap.alloc<ChoiceVirtualBase*>(n)) {
|
|
459
|
+
for (int i=n; i--; )
|
|
460
|
+
c[i] = tb[i]->choice(home);
|
|
461
|
+
}
|
|
462
|
+
template<class View>
|
|
463
|
+
forceinline
|
|
464
|
+
ViewSelTieBreakDynamic<View>::Choice::Choice
|
|
465
|
+
(const Space& home, Archive& e, ViewSelVirtualBase<View>** tb,
|
|
466
|
+
int n0)
|
|
467
|
+
: n(n0), c(heap.alloc<ChoiceVirtualBase*>(n)) {
|
|
468
|
+
for (int i=n; i--; )
|
|
469
|
+
c[i] = tb[i]->choice(home,e);
|
|
470
|
+
}
|
|
471
|
+
template<class View>
|
|
472
|
+
forceinline
|
|
473
|
+
ViewSelTieBreakDynamic<View>::Choice::Choice(const Choice& ce)
|
|
474
|
+
: n(ce.n), c(heap.alloc<ChoiceVirtualBase*>(n)) {
|
|
475
|
+
for (int i=n; i--; )
|
|
476
|
+
c[i] = ce.c[i]->copy();
|
|
477
|
+
}
|
|
478
|
+
template<class View>
|
|
479
|
+
forceinline const typename ViewSelTieBreakDynamic<View>::Choice&
|
|
480
|
+
ViewSelTieBreakDynamic<View>::Choice::operator =(const Choice& ce) {
|
|
481
|
+
if (&ce != this) {
|
|
482
|
+
assert(ce.n == n);
|
|
483
|
+
for (int i=n; i--; ) {
|
|
484
|
+
delete c[i]; c[i] = ce.c[i]->copy();
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
return *this;
|
|
488
|
+
}
|
|
489
|
+
template<class View>
|
|
490
|
+
forceinline void
|
|
491
|
+
ViewSelTieBreakDynamic<View>::Choice::commit
|
|
492
|
+
(Space& home, unsigned int a, ViewSelVirtualBase<View>** tb) const {
|
|
493
|
+
for (int i=n; i--; )
|
|
494
|
+
tb[i]->commit(home, c[i], a);
|
|
495
|
+
}
|
|
496
|
+
template<class View>
|
|
497
|
+
forceinline size_t
|
|
498
|
+
ViewSelTieBreakDynamic<View>::Choice::size(void) const {
|
|
499
|
+
size_t s = (sizeof(typename ViewSelTieBreakDynamic<View>::Choice) +
|
|
500
|
+
n * sizeof(ChoiceVirtualBase*));
|
|
501
|
+
for (int i=n; i--; )
|
|
502
|
+
s += c[i]->size();
|
|
503
|
+
return s;
|
|
504
|
+
}
|
|
505
|
+
template<class View>
|
|
506
|
+
forceinline
|
|
507
|
+
ViewSelTieBreakDynamic<View>::Choice::~Choice(void) {
|
|
508
|
+
for (int i=n; i--; )
|
|
509
|
+
delete c[i];
|
|
510
|
+
heap.free(c,n);
|
|
511
|
+
}
|
|
512
|
+
template<class View>
|
|
513
|
+
forceinline void
|
|
514
|
+
ViewSelTieBreakDynamic<View>::Choice::archive(Archive& e) const
|
|
515
|
+
{
|
|
516
|
+
for (int i=0; i<n; i++)
|
|
517
|
+
c[i]->archive(e);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
// Select variable with dynamic tie breaking
|
|
522
|
+
template<class View>
|
|
523
|
+
forceinline
|
|
524
|
+
ViewSelTieBreakDynamic<View>::ViewSelTieBreakDynamic(void) {}
|
|
525
|
+
template<class View>
|
|
526
|
+
forceinline
|
|
527
|
+
ViewSelTieBreakDynamic<View>::
|
|
528
|
+
ViewSelTieBreakDynamic(Space& home, ViewSelVirtualBase<View>** vsv, int n0)
|
|
529
|
+
: n(n0), tb(home.alloc<ViewSelVirtualBase<View>*>(n)) {
|
|
530
|
+
for (int i=0; i<n; i++)
|
|
531
|
+
tb[i]=vsv[i];
|
|
532
|
+
assert(n > 0);
|
|
533
|
+
}
|
|
534
|
+
template<class View>
|
|
535
|
+
forceinline ViewSelStatus
|
|
536
|
+
ViewSelTieBreakDynamic<View>::init(Space& home, View x) {
|
|
537
|
+
ViewSelStatus s = VSS_BEST;
|
|
538
|
+
for (int i=0; i<n; i++)
|
|
539
|
+
if (tb[i]->init(home,x) != VSS_BEST)
|
|
540
|
+
s = VSS_BETTER;
|
|
541
|
+
return s;
|
|
542
|
+
}
|
|
543
|
+
template<class View>
|
|
544
|
+
forceinline ViewSelStatus
|
|
545
|
+
ViewSelTieBreakDynamic<View>::select(Space& home, View x) {
|
|
546
|
+
switch (tb[0]->select(home,x)) {
|
|
547
|
+
case VSS_BEST:
|
|
548
|
+
{
|
|
549
|
+
ViewSelStatus s = VSS_BEST;
|
|
550
|
+
for (int i=1; i<n; i++)
|
|
551
|
+
if (tb[i]->init(home,x) != VSS_BEST)
|
|
552
|
+
s = VSS_BETTER;
|
|
553
|
+
return s;
|
|
554
|
+
}
|
|
555
|
+
case VSS_BETTER:
|
|
556
|
+
for (int i=1; i<n; i++)
|
|
557
|
+
(void) tb[i]->init(home,x);
|
|
558
|
+
return VSS_BETTER;
|
|
559
|
+
case VSS_WORSE:
|
|
560
|
+
return VSS_WORSE;
|
|
561
|
+
case VSS_TIE:
|
|
562
|
+
for (int i=1; i<n; i++)
|
|
563
|
+
switch (tb[i]->select(home,x)) {
|
|
564
|
+
case VSS_BEST: case VSS_BETTER:
|
|
565
|
+
for (int j=i+1; j<n; j++)
|
|
566
|
+
(void) tb[j]->init(home,x);
|
|
567
|
+
return VSS_BETTER;
|
|
568
|
+
case VSS_TIE: break;
|
|
569
|
+
case VSS_WORSE: return VSS_WORSE;
|
|
570
|
+
default: GECODE_NEVER;
|
|
571
|
+
}
|
|
572
|
+
return VSS_TIE;
|
|
573
|
+
default: GECODE_NEVER;
|
|
574
|
+
return VSS_WORSE;
|
|
575
|
+
}
|
|
576
|
+
}
|
|
577
|
+
template<class _View>
|
|
578
|
+
inline typename ViewSelTieBreakDynamic<_View>::Choice
|
|
579
|
+
ViewSelTieBreakDynamic<_View>::choice(Space& home) {
|
|
580
|
+
Choice c(home,tb,n);
|
|
581
|
+
return c;
|
|
582
|
+
}
|
|
583
|
+
template<class _View>
|
|
584
|
+
inline typename ViewSelTieBreakDynamic<_View>::Choice
|
|
585
|
+
ViewSelTieBreakDynamic<_View>::choice(const Space& home, Archive& e) {
|
|
586
|
+
Choice c(home,e,tb,n);
|
|
587
|
+
return c;
|
|
588
|
+
}
|
|
589
|
+
template<class _View>
|
|
590
|
+
forceinline void
|
|
591
|
+
ViewSelTieBreakDynamic<_View>::commit
|
|
592
|
+
(Space& home, const typename ViewSelTieBreakDynamic<_View>::Choice& c,
|
|
593
|
+
unsigned int a) {
|
|
594
|
+
c.commit(home,a,tb);
|
|
595
|
+
}
|
|
596
|
+
template<class _View>
|
|
597
|
+
forceinline void
|
|
598
|
+
ViewSelTieBreakDynamic<_View>::update(Space& home, bool share,
|
|
599
|
+
ViewSelTieBreakDynamic<_View>& vstb) {
|
|
600
|
+
n = vstb.n;
|
|
601
|
+
tb = home.alloc<ViewSelVirtualBase<View>*>(n);
|
|
602
|
+
for (int i=0; i<n; i++)
|
|
603
|
+
tb[i] = vstb.tb[i]->copy(home,share);
|
|
604
|
+
}
|
|
605
|
+
template<class _View>
|
|
606
|
+
forceinline void
|
|
607
|
+
ViewSelTieBreakDynamic<_View>::dispose(Space& home) {
|
|
608
|
+
for (int i=0; i<n; i++)
|
|
609
|
+
home.rfree(tb[i],tb[i]->dispose(home));
|
|
610
|
+
home.free<ViewSelVirtualBase<_View>*>(tb,n);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
// STATISTICS: kernel-branch
|