gecoder-with-gecode 0.7.1
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.
- data/CHANGES +81 -0
- data/COPYING +17 -0
- data/LGPL-LICENSE +458 -0
- data/README +45 -0
- data/Rakefile +13 -0
- data/example/example_helper.rb +1 -0
- data/example/magic_sequence.rb +43 -0
- data/example/queens.rb +43 -0
- data/example/raw_bindings.rb +42 -0
- data/example/send_more_money.rb +43 -0
- data/example/send_most_money.rb +58 -0
- data/example/square_tiling.rb +84 -0
- data/example/sudoku-set.rb +110 -0
- data/example/sudoku.rb +61 -0
- data/ext/extconf.rb +29 -0
- data/ext/gecode-1.3.1/LICENSE +34 -0
- data/ext/gecode-1.3.1/Makefile.contribs +71 -0
- data/ext/gecode-1.3.1/Makefile.dep +3928 -0
- data/ext/gecode-1.3.1/Makefile.in +966 -0
- data/ext/gecode-1.3.1/changelog.in +1065 -0
- data/ext/gecode-1.3.1/configure +8590 -0
- data/ext/gecode-1.3.1/configure.ac +179 -0
- data/ext/gecode-1.3.1/configure.ac.in +175 -0
- data/ext/gecode-1.3.1/contribs/README +26 -0
- data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
- data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
- data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
- data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
- data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
- data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
- data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
- data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
- data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
- data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
- data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
- data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
- data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
- data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
- data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
- data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
- data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
- data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
- data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
- data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
- data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
- data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
- data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
- data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
- data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
- data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
- data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
- data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
- data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
- data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
- data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
- data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
- data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
- data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
- data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
- data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
- data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
- data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
- data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
- data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
- data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
- data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
- data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
- data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
- data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
- data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
- data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
- data/ext/gecode-1.3.1/examples/cars.cc +165 -0
- data/ext/gecode-1.3.1/examples/crew.cc +220 -0
- data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
- data/ext/gecode-1.3.1/examples/donald.cc +93 -0
- data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
- data/ext/gecode-1.3.1/examples/golf.cc +242 -0
- data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
- data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
- data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
- data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
- data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
- data/ext/gecode-1.3.1/examples/knights.cc +146 -0
- data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
- data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
- data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
- data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
- data/ext/gecode-1.3.1/examples/money.cc +92 -0
- data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
- data/ext/gecode-1.3.1/examples/packing.cc +211 -0
- data/ext/gecode-1.3.1/examples/partition.cc +126 -0
- data/ext/gecode-1.3.1/examples/photo.cc +155 -0
- data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
- data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
- data/ext/gecode-1.3.1/examples/queens.cc +99 -0
- data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
- data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
- data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
- data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
- data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
- data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
- data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
- data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
- data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
- data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
- data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
- data/ext/gecode-1.3.1/examples/support.cc +160 -0
- data/ext/gecode-1.3.1/examples/support.hh +98 -0
- data/ext/gecode-1.3.1/examples/support.icc +187 -0
- data/ext/gecode-1.3.1/examples/timer.cc +47 -0
- data/ext/gecode-1.3.1/examples/timer.hh +72 -0
- data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
- data/ext/gecode-1.3.1/extconf.rb +8 -0
- data/ext/gecode-1.3.1/gecode.m4 +736 -0
- data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
- data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
- data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
- data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
- data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
- data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
- data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
- data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
- data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
- data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
- data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
- data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
- data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
- data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
- data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
- data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
- data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
- data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
- data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
- data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
- data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
- data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
- data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
- data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
- data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
- data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
- data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
- data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
- data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
- data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
- data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
- data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
- data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
- data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
- data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
- data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
- data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
- data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
- data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
- data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
- data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
- data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
- data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
- data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
- data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
- data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
- data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
- data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
- data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
- data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
- data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
- data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
- data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
- data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
- data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
- data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
- data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
- data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
- data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
- data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
- data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
- data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
- data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
- data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
- data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
- data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
- data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
- data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
- data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
- data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
- data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
- data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
- data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
- data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
- data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
- data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
- data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
- data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
- data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
- data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
- data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
- data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
- data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
- data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
- data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
- data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
- data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
- data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
- data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
- data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
- data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
- data/ext/gecode-1.3.1/gecode/search.hh +745 -0
- data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
- data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
- data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
- data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
- data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
- data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
- data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
- data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
- data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
- data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
- data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
- data/ext/gecode-1.3.1/gecode/set.hh +419 -0
- data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
- data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
- data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
- data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
- data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
- data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
- data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
- data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
- data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
- data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
- data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
- data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
- data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
- data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
- data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
- data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
- data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
- data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
- data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
- data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
- data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
- data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
- data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
- data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
- data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
- data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
- data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
- data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
- data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
- data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
- data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
- data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
- data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
- data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
- data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
- data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
- data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
- data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
- data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
- data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
- data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
- data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
- data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
- data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
- data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
- data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
- data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
- data/ext/gecode-1.3.1/install-sh +323 -0
- data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
- data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
- data/ext/gecode-1.3.1/misc/debian/control +11 -0
- data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
- data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
- data/ext/gecode-1.3.1/misc/debian/rules +81 -0
- data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
- data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
- data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
- data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
- data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
- data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
- data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
- data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
- data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
- data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
- data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
- data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
- data/ext/gecode-1.3.1/test/int.cc +497 -0
- data/ext/gecode-1.3.1/test/int.hh +119 -0
- data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
- data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
- data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
- data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
- data/ext/gecode-1.3.1/test/int/count.cc +264 -0
- data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
- data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
- data/ext/gecode-1.3.1/test/int/element.cc +132 -0
- data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
- data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
- data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
- data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
- data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
- data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
- data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
- data/ext/gecode-1.3.1/test/intset.cc +40 -0
- data/ext/gecode-1.3.1/test/log.cc +515 -0
- data/ext/gecode-1.3.1/test/log.hh +68 -0
- data/ext/gecode-1.3.1/test/set.cc +542 -0
- data/ext/gecode-1.3.1/test/set.hh +152 -0
- data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
- data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
- data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
- data/ext/gecode-1.3.1/test/set/int.cc +249 -0
- data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
- data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
- data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
- data/ext/gecode-1.3.1/test/set/select.cc +108 -0
- data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
- data/ext/gecode-1.3.1/test/stress.cc +93 -0
- data/ext/gecode-1.3.1/test/stress.hh +74 -0
- data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
- data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
- data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
- data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
- data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
- data/ext/gecode-1.3.1/test/test.cc +215 -0
- data/ext/gecode-1.3.1/test/test.hh +107 -0
- data/ext/missing.cpp +328 -0
- data/ext/missing.h +120 -0
- data/ext/vararray.cpp +330 -0
- data/ext/vararray.h +149 -0
- data/lib/gecoder.rb +5 -0
- data/lib/gecoder/bindings.rb +34 -0
- data/lib/gecoder/bindings/bindings.rb +2209 -0
- data/lib/gecoder/interface.rb +8 -0
- data/lib/gecoder/interface/binding_changes.rb +313 -0
- data/lib/gecoder/interface/branch.rb +152 -0
- data/lib/gecoder/interface/constraints.rb +397 -0
- data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
- data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
- data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
- data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
- data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
- data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
- data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
- data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
- data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
- data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
- data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
- data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
- data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
- data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
- data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
- data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
- data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
- data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
- data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
- data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
- data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
- data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
- data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
- data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
- data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
- data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
- data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
- data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
- data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
- data/lib/gecoder/interface/enum_matrix.rb +64 -0
- data/lib/gecoder/interface/enum_wrapper.rb +153 -0
- data/lib/gecoder/interface/model.rb +251 -0
- data/lib/gecoder/interface/search.rb +123 -0
- data/lib/gecoder/interface/variables.rb +254 -0
- data/lib/gecoder/version.rb +4 -0
- data/specs/binding_changes.rb +76 -0
- data/specs/bool_var.rb +74 -0
- data/specs/branch.rb +170 -0
- data/specs/constraints/arithmetic.rb +266 -0
- data/specs/constraints/bool_enum.rb +140 -0
- data/specs/constraints/boolean.rb +232 -0
- data/specs/constraints/cardinality.rb +154 -0
- data/specs/constraints/channel.rb +126 -0
- data/specs/constraints/connection.rb +373 -0
- data/specs/constraints/constraint_helper.rb +180 -0
- data/specs/constraints/constraints.rb +74 -0
- data/specs/constraints/count.rb +139 -0
- data/specs/constraints/distinct.rb +218 -0
- data/specs/constraints/element.rb +106 -0
- data/specs/constraints/equality.rb +31 -0
- data/specs/constraints/int_domain.rb +69 -0
- data/specs/constraints/int_relation.rb +78 -0
- data/specs/constraints/linear.rb +332 -0
- data/specs/constraints/reification_sugar.rb +96 -0
- data/specs/constraints/selection.rb +292 -0
- data/specs/constraints/set_domain.rb +181 -0
- data/specs/constraints/set_operation.rb +285 -0
- data/specs/constraints/set_relation.rb +201 -0
- data/specs/constraints/sort.rb +175 -0
- data/specs/enum_matrix.rb +43 -0
- data/specs/enum_wrapper.rb +122 -0
- data/specs/int_var.rb +144 -0
- data/specs/logging.rb +24 -0
- data/specs/model.rb +190 -0
- data/specs/search.rb +246 -0
- data/specs/set_var.rb +68 -0
- data/specs/spec_helper.rb +93 -0
- data/tasks/all_tasks.rb +1 -0
- data/tasks/distribution.rake +129 -0
- data/tasks/rcov.rake +17 -0
- data/tasks/specs.rake +15 -0
- data/tasks/svn.rake +11 -0
- data/tasks/website.rake +51 -0
- data/vendor/rust/README +28 -0
- data/vendor/rust/bin/cxxgenerator.rb +93 -0
- data/vendor/rust/include/rust_checks.hh +115 -0
- data/vendor/rust/include/rust_conversions.hh +102 -0
- data/vendor/rust/rust.rb +67 -0
- data/vendor/rust/rust/attribute.rb +51 -0
- data/vendor/rust/rust/bindings.rb +172 -0
- data/vendor/rust/rust/class.rb +339 -0
- data/vendor/rust/rust/constants.rb +48 -0
- data/vendor/rust/rust/container.rb +110 -0
- data/vendor/rust/rust/cppifaceparser.rb +129 -0
- data/vendor/rust/rust/cwrapper.rb +72 -0
- data/vendor/rust/rust/cxxclass.rb +98 -0
- data/vendor/rust/rust/element.rb +81 -0
- data/vendor/rust/rust/enum.rb +63 -0
- data/vendor/rust/rust/function.rb +407 -0
- data/vendor/rust/rust/namespace.rb +61 -0
- data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
- data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
- data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
- data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
- data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
- data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
- data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
- data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
- data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
- data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
- data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
- data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
- data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
- data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
- data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
- data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
- data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
- data/vendor/rust/rust/type.rb +98 -0
- data/vendor/rust/test/Makefile +4 -0
- data/vendor/rust/test/constants.rb +36 -0
- data/vendor/rust/test/cppclass.cc +45 -0
- data/vendor/rust/test/cppclass.hh +67 -0
- data/vendor/rust/test/cppclass.rb +59 -0
- data/vendor/rust/test/cwrapper.c +74 -0
- data/vendor/rust/test/cwrapper.h +41 -0
- data/vendor/rust/test/cwrapper.rb +56 -0
- data/vendor/rust/test/dummyclass.hh +31 -0
- data/vendor/rust/test/lib/extension-test.rb +98 -0
- data/vendor/rust/test/operators.cc +41 -0
- data/vendor/rust/test/operators.hh +39 -0
- data/vendor/rust/test/operators.rb +39 -0
- data/vendor/rust/test/test-constants.rb +43 -0
- data/vendor/rust/test/test-cppclass.rb +82 -0
- data/vendor/rust/test/test-cwrapper.rb +80 -0
- data/vendor/rust/test/test-operators.rb +42 -0
- metadata +826 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2002
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-04-11 15:58:37 +0200 (Tue, 11 Apr 2006) $ by $Author: tack $
|
|
10
|
+
* $Revision: 3188 $
|
|
11
|
+
*
|
|
12
|
+
* This file is part of Gecode, the generic constraint
|
|
13
|
+
* development environment:
|
|
14
|
+
* http://www.gecode.org
|
|
15
|
+
*
|
|
16
|
+
* See the file "LICENSE" for information on usage and
|
|
17
|
+
* redistribution of this file, and for a
|
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "gecode/int/arithmetic.hh"
|
|
23
|
+
|
|
24
|
+
namespace Gecode {
|
|
25
|
+
|
|
26
|
+
using namespace Int;
|
|
27
|
+
|
|
28
|
+
void
|
|
29
|
+
abs(Space* home, IntVar x0, IntVar x1, IntConLevel cl) {
|
|
30
|
+
if (home->failed()) return;
|
|
31
|
+
switch (cl) {
|
|
32
|
+
case ICL_DOM:
|
|
33
|
+
GECODE_ES_FAIL(home,Arithmetic::AbsDom<IntView>::post(home,x0,x1));
|
|
34
|
+
break;
|
|
35
|
+
default:
|
|
36
|
+
GECODE_ES_FAIL(home,Arithmetic::AbsBnd<IntView>::post(home,x0,x1));
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
void
|
|
43
|
+
max(Space* home, IntVar x0, IntVar x1, IntVar x2, IntConLevel) {
|
|
44
|
+
if (home->failed()) return;
|
|
45
|
+
GECODE_ES_FAIL(home,Arithmetic::Max<IntView>::post(home,x0,x1,x2));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
void
|
|
49
|
+
max(Space* home, const IntVarArgs& x, IntVar y, IntConLevel) {
|
|
50
|
+
if (x.size() == 0)
|
|
51
|
+
throw ArgumentEmpty("Int::max");
|
|
52
|
+
if (home->failed()) return;
|
|
53
|
+
ViewArray<IntView> xv(home,x);
|
|
54
|
+
GECODE_ES_FAIL(home,Arithmetic::NaryMax<IntView>::post(home,xv,y));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
void
|
|
59
|
+
min(Space* home, IntVar x0, IntVar x1, IntVar x2, IntConLevel) {
|
|
60
|
+
if (home->failed()) return;
|
|
61
|
+
MinusView m0(x0); MinusView m1(x1); MinusView m2(x2);
|
|
62
|
+
GECODE_ES_FAIL(home,Arithmetic::Max<MinusView>::post(home,m0,m1,m2));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
void
|
|
66
|
+
min(Space* home, const IntVarArgs& x, IntVar y, IntConLevel) {
|
|
67
|
+
if (x.size() == 0)
|
|
68
|
+
throw ArgumentEmpty("Int::min");
|
|
69
|
+
if (home->failed()) return;
|
|
70
|
+
ViewArray<MinusView> m(home,x.size());
|
|
71
|
+
for (int i=x.size(); i--; )
|
|
72
|
+
m[i].init(x[i]);
|
|
73
|
+
MinusView my(y);
|
|
74
|
+
GECODE_ES_FAIL(home,Arithmetic::NaryMax<MinusView>::post(home,m,my));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
void
|
|
79
|
+
mult(Space* home, IntVar x0, IntVar x1, IntVar x2, IntConLevel) {
|
|
80
|
+
if (home->failed()) return;
|
|
81
|
+
GECODE_ES_FAIL(home,Arithmetic::Mult<IntView>::post(home,x0,x1,x2));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// STATISTICS: int-post
|
|
87
|
+
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2002
|
|
8
|
+
* Guido Tack, 2004
|
|
9
|
+
*
|
|
10
|
+
* Last modified:
|
|
11
|
+
* $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
12
|
+
* $Revision: 3512 $
|
|
13
|
+
*
|
|
14
|
+
* This file is part of Gecode, the generic constraint
|
|
15
|
+
* development environment:
|
|
16
|
+
* http://www.gecode.org
|
|
17
|
+
*
|
|
18
|
+
* See the file "LICENSE" for information on usage and
|
|
19
|
+
* redistribution of this file, and for a
|
|
20
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#ifndef __GECODE_INT_ARITHMETIC_HH__
|
|
25
|
+
#define __GECODE_INT_ARITHMETIC_HH__
|
|
26
|
+
|
|
27
|
+
#include "gecode/int.hh"
|
|
28
|
+
|
|
29
|
+
#include "gecode/int/rel.hh"
|
|
30
|
+
#include "gecode/int/linear.hh"
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* \namespace Gecode::Int::Arithmetic
|
|
34
|
+
* \brief Numerical (arithmetic) propagators
|
|
35
|
+
*/
|
|
36
|
+
|
|
37
|
+
namespace Gecode { namespace Int { namespace Arithmetic {
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* \brief Bounds-consistent absolute value propagator
|
|
41
|
+
*
|
|
42
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
43
|
+
* \ingroup FuncIntProp
|
|
44
|
+
*/
|
|
45
|
+
template <class View>
|
|
46
|
+
class AbsBnd : public BinaryPropagator<View,PC_INT_BND> {
|
|
47
|
+
protected:
|
|
48
|
+
using BinaryPropagator<View,PC_INT_BND>::x0;
|
|
49
|
+
using BinaryPropagator<View,PC_INT_BND>::x1;
|
|
50
|
+
|
|
51
|
+
/// Constructor for cloning \a p
|
|
52
|
+
AbsBnd(Space* home, bool share, AbsBnd& p);
|
|
53
|
+
/// Constructor for posting
|
|
54
|
+
AbsBnd(Space* home, View x0, View x1);
|
|
55
|
+
public:
|
|
56
|
+
|
|
57
|
+
/// Copy propagator during cloning
|
|
58
|
+
virtual Actor* copy(Space* home, bool share);
|
|
59
|
+
/**
|
|
60
|
+
* \brief Cost function
|
|
61
|
+
*
|
|
62
|
+
* If a view has been assigned, the cost is PC_UNARY_LO.
|
|
63
|
+
* Otherwise it is PC_BINARY_LO.
|
|
64
|
+
*/
|
|
65
|
+
virtual PropCost cost(void) const;
|
|
66
|
+
/// Perform propagation
|
|
67
|
+
virtual ExecStatus propagate(Space* home);
|
|
68
|
+
/// Post bounds-consistent propagator \f$ |x_0|=x_1\f$
|
|
69
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* \brief Perform bounds-consistent absolute value propagation
|
|
74
|
+
*
|
|
75
|
+
* This is actually the propagation algorithm for AbsBnd.
|
|
76
|
+
* It is available as separate function as it is reused for
|
|
77
|
+
* domain-consistent distinct propagators.
|
|
78
|
+
*/
|
|
79
|
+
template <class View>
|
|
80
|
+
ExecStatus prop_bnd(Space* home, ViewArray<View>&);
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* \brief Domain-consistent absolute value propagator
|
|
84
|
+
*
|
|
85
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
86
|
+
* \ingroup FuncIntProp
|
|
87
|
+
*/
|
|
88
|
+
template <class View>
|
|
89
|
+
class AbsDom : public BinaryPropagator<View,PC_INT_DOM> {
|
|
90
|
+
protected:
|
|
91
|
+
using BinaryPropagator<View,PC_INT_DOM>::x0;
|
|
92
|
+
using BinaryPropagator<View,PC_INT_DOM>::x1;
|
|
93
|
+
|
|
94
|
+
/// Constructor for cloning \a p
|
|
95
|
+
AbsDom(Space* home, bool share, AbsDom& p);
|
|
96
|
+
/// Constructor for posting
|
|
97
|
+
AbsDom(Space* home, View x0, View x1);
|
|
98
|
+
public:
|
|
99
|
+
/// Copy propagator during cloning
|
|
100
|
+
virtual Actor* copy(Space* home, bool share);
|
|
101
|
+
/**
|
|
102
|
+
* \brief Cost function
|
|
103
|
+
*
|
|
104
|
+
* If a view has been assigned, the cost is PC_UNARY_LO.
|
|
105
|
+
* If in stage for bounds propagation, the cost is
|
|
106
|
+
* PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
|
|
107
|
+
*/
|
|
108
|
+
virtual PropCost cost(void) const;
|
|
109
|
+
/// Perform propagation
|
|
110
|
+
virtual ExecStatus propagate(Space* home);
|
|
111
|
+
/// Post domain-consistent propagator \f$ |x_0|=x_1\f$
|
|
112
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* \brief Bounds-consistent ternary maximum propagator
|
|
117
|
+
*
|
|
118
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
119
|
+
* \ingroup FuncIntProp
|
|
120
|
+
*/
|
|
121
|
+
template <class View>
|
|
122
|
+
class Max : public TernaryPropagator<View,PC_INT_BND> {
|
|
123
|
+
protected:
|
|
124
|
+
using TernaryPropagator<View,PC_INT_BND>::x0;
|
|
125
|
+
using TernaryPropagator<View,PC_INT_BND>::x1;
|
|
126
|
+
using TernaryPropagator<View,PC_INT_BND>::x2;
|
|
127
|
+
|
|
128
|
+
/// Constructor for cloning \a p
|
|
129
|
+
Max(Space* home, bool share, Max& p);
|
|
130
|
+
/// Constructor for posting
|
|
131
|
+
Max(Space* home, View x0, View x1, View x2);
|
|
132
|
+
public:
|
|
133
|
+
/// Constructor for rewriting \a p during cloning
|
|
134
|
+
Max(Space* home, bool share, Propagator& p, View x0, View x1, View x2);
|
|
135
|
+
/// Copy propagator during cloning
|
|
136
|
+
virtual Actor* copy(Space* home, bool share);
|
|
137
|
+
/// Perform propagation
|
|
138
|
+
virtual ExecStatus propagate(Space* home);
|
|
139
|
+
/// Post propagator \f$ \max\{x_0,x_1\}=x_2\f$
|
|
140
|
+
static ExecStatus post(Space* home, View x0, View x1, View x2);
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* \brief Bounds-consistent n-ary maximum propagator
|
|
145
|
+
*
|
|
146
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
147
|
+
* \ingroup FuncIntProp
|
|
148
|
+
*/
|
|
149
|
+
template <class View>
|
|
150
|
+
class NaryMax : public NaryOnePropagator<View,PC_INT_BND> {
|
|
151
|
+
protected:
|
|
152
|
+
using NaryOnePropagator<View,PC_INT_BND>::x;
|
|
153
|
+
using NaryOnePropagator<View,PC_INT_BND>::y;
|
|
154
|
+
|
|
155
|
+
/// Constructor for cloning \a p
|
|
156
|
+
NaryMax(Space* home, bool share, NaryMax& p);
|
|
157
|
+
/// Constructor for posting
|
|
158
|
+
NaryMax(Space* home, ViewArray<View>& x, View y);
|
|
159
|
+
public:
|
|
160
|
+
/// Copy propagator during cloning
|
|
161
|
+
virtual Actor* copy(Space* home, bool share);
|
|
162
|
+
/// Perform propagation
|
|
163
|
+
virtual ExecStatus propagate(Space* home);
|
|
164
|
+
/// Post propagator \f$ \max x=y\f$
|
|
165
|
+
static ExecStatus post(Space* home, ViewArray<View>& x, View y);
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* \brief Bounds-consistent positive square propagator
|
|
173
|
+
*
|
|
174
|
+
* This propagator provides multiplication for positive views only.
|
|
175
|
+
*/
|
|
176
|
+
template <class VA, class VB>
|
|
177
|
+
class SquarePlus : public Propagator {
|
|
178
|
+
protected:
|
|
179
|
+
VA x0; VB x1;
|
|
180
|
+
public:
|
|
181
|
+
/// Constructor for posting
|
|
182
|
+
SquarePlus(Space* home, VA x0, VB x1);
|
|
183
|
+
/// Post propagator \f$x_0\cdot x_0=x_1\f$
|
|
184
|
+
static ExecStatus post(Space* home, VA x0, VB x1);
|
|
185
|
+
/// Constructor for cloning \a p
|
|
186
|
+
SquarePlus(Space* home, bool share, SquarePlus<VA,VB>& p);
|
|
187
|
+
/// Copy propagator during cloning
|
|
188
|
+
virtual Actor* copy(Space* home, bool share);
|
|
189
|
+
/// Perform propagation
|
|
190
|
+
virtual ExecStatus propagate(Space* home);
|
|
191
|
+
/// Cost function (defined as PC_TERNARY_HI)
|
|
192
|
+
virtual PropCost cost(void) const;
|
|
193
|
+
/// Delete propagator and return its size
|
|
194
|
+
virtual size_t dispose(Space* home);
|
|
195
|
+
};
|
|
196
|
+
|
|
197
|
+
/**
|
|
198
|
+
* \brief Bounds-consistent square propagator
|
|
199
|
+
*
|
|
200
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
201
|
+
* \ingroup FuncIntProp
|
|
202
|
+
*/
|
|
203
|
+
template <class View>
|
|
204
|
+
class Square : public BinaryPropagator<View,PC_INT_BND> {
|
|
205
|
+
protected:
|
|
206
|
+
using BinaryPropagator<View,PC_INT_BND>::x0;
|
|
207
|
+
using BinaryPropagator<View,PC_INT_BND>::x1;
|
|
208
|
+
|
|
209
|
+
/// Constructor for cloning \a p
|
|
210
|
+
Square(Space* home, bool share, Square<View>& p);
|
|
211
|
+
/// Constructor for posting
|
|
212
|
+
Square(Space* home, View x0, View x1);
|
|
213
|
+
public:
|
|
214
|
+
/// Copy propagator during cloning
|
|
215
|
+
virtual Actor* copy(Space* home, bool share);
|
|
216
|
+
/// Perform propagation
|
|
217
|
+
virtual ExecStatus propagate(Space* home);
|
|
218
|
+
/// Cost function (defined as PC_BINARY_HI)
|
|
219
|
+
virtual PropCost cost(void) const;
|
|
220
|
+
/// Post propagator \f$x_0\cdot x_0=x_1\f$
|
|
221
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
222
|
+
};
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* \brief Bounds-consistent positive multiplication propagator
|
|
226
|
+
*
|
|
227
|
+
* This propagator provides multiplication for positive views only.
|
|
228
|
+
*/
|
|
229
|
+
template <class VA, class VB, class VC>
|
|
230
|
+
class MultPlus : public Propagator {
|
|
231
|
+
protected:
|
|
232
|
+
VA x0; VB x1; VC x2;
|
|
233
|
+
public:
|
|
234
|
+
/// Constructor for posting
|
|
235
|
+
MultPlus(Space* home, VA x0, VB x1, VC x2);
|
|
236
|
+
/// Post propagator \f$x_0\cdot x_1=x_2\f$
|
|
237
|
+
static ExecStatus post(Space* home, VA x0, VB x1, VC x2);
|
|
238
|
+
/// Constructor for cloning \a p
|
|
239
|
+
MultPlus(Space* home, bool share, MultPlus<VA,VB,VC>& p);
|
|
240
|
+
/// Copy propagator during cloning
|
|
241
|
+
virtual Actor* copy(Space* home, bool share);
|
|
242
|
+
/// Perform propagation
|
|
243
|
+
virtual ExecStatus propagate(Space* home);
|
|
244
|
+
/// Cost function (defined as PC_TERNARY_HI)
|
|
245
|
+
virtual PropCost cost(void) const;
|
|
246
|
+
/// Delete propagator and return its size
|
|
247
|
+
virtual size_t dispose(Space* home);
|
|
248
|
+
};
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* \brief Bounds-consistent multiplication propagator
|
|
252
|
+
*
|
|
253
|
+
* Requires \code #include "gecode/int/arithmetic.hh" \endcode
|
|
254
|
+
*
|
|
255
|
+
* \todo Currently this propagator only works for \a View
|
|
256
|
+
* being IntView. This will change when integer views are
|
|
257
|
+
* available in fully generic form.
|
|
258
|
+
*
|
|
259
|
+
* \ingroup FuncIntProp
|
|
260
|
+
*/
|
|
261
|
+
template <class View>
|
|
262
|
+
class Mult : public TernaryPropagator<View,PC_INT_BND> {
|
|
263
|
+
protected:
|
|
264
|
+
using TernaryPropagator<View,PC_INT_BND>::x0;
|
|
265
|
+
using TernaryPropagator<View,PC_INT_BND>::x1;
|
|
266
|
+
using TernaryPropagator<View,PC_INT_BND>::x2;
|
|
267
|
+
|
|
268
|
+
/// Constructor for cloning \a p
|
|
269
|
+
Mult(Space* home, bool share, Mult<View>& p);
|
|
270
|
+
public:
|
|
271
|
+
/// Constructor for posting
|
|
272
|
+
Mult(Space* home, View x0, View x1, View x2);
|
|
273
|
+
/// Post propagator \f$x_0\cdot x_1=x_2\f$
|
|
274
|
+
static ExecStatus post(Space* home, View x0, View x1, View x2);
|
|
275
|
+
/// Copy propagator during cloning
|
|
276
|
+
virtual Actor* copy(Space* home, bool share);
|
|
277
|
+
/// Perform propagation
|
|
278
|
+
virtual ExecStatus propagate(Space* home);
|
|
279
|
+
/// Cost function (defined as PC_TERNARY_HI)
|
|
280
|
+
virtual PropCost cost(void) const;
|
|
281
|
+
};
|
|
282
|
+
|
|
283
|
+
}}}
|
|
284
|
+
|
|
285
|
+
#include "gecode/int/arithmetic/abs.icc"
|
|
286
|
+
#include "gecode/int/arithmetic/max.icc"
|
|
287
|
+
#include "gecode/int/arithmetic/mult.icc"
|
|
288
|
+
|
|
289
|
+
#endif
|
|
290
|
+
|
|
291
|
+
// STATISTICS: int-prop
|
|
292
|
+
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2004
|
|
8
|
+
* Guido Tack, 2006
|
|
9
|
+
*
|
|
10
|
+
* Last modified:
|
|
11
|
+
* $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
12
|
+
* $Revision: 3512 $
|
|
13
|
+
*
|
|
14
|
+
* This file is part of Gecode, the generic constraint
|
|
15
|
+
* development environment:
|
|
16
|
+
* http://www.gecode.org
|
|
17
|
+
*
|
|
18
|
+
* See the file "LICENSE" for information on usage and
|
|
19
|
+
* redistribution of this file, and for a
|
|
20
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#include "gecode/iter.hh"
|
|
25
|
+
#include <algorithm>
|
|
26
|
+
|
|
27
|
+
namespace Gecode { namespace Int { namespace Arithmetic {
|
|
28
|
+
|
|
29
|
+
template <class View, template <class View0,class View1> class Eq>
|
|
30
|
+
ExecStatus
|
|
31
|
+
prop_bnd(Space* home, View x0, View x1) {
|
|
32
|
+
if (x0.assigned()) {
|
|
33
|
+
GECODE_ME_CHECK(x1.eq(home,(x0.val() < 0) ? -x0.val() : x0.val()));
|
|
34
|
+
return ES_SUBSUMED;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (x1.assigned()) {
|
|
38
|
+
if (x0.min() >= 0) {
|
|
39
|
+
GECODE_ME_CHECK(x0.eq(home,x1.val()));
|
|
40
|
+
} else if (x0.max() <= 0) {
|
|
41
|
+
GECODE_ME_CHECK(x0.eq(home,-x1.val()));
|
|
42
|
+
} else if (x1.val() == 0) {
|
|
43
|
+
GECODE_ME_CHECK(x0.eq(home,0));
|
|
44
|
+
} else {
|
|
45
|
+
Iter::Ranges::Array::Range r[2]
|
|
46
|
+
= { {-x1.val(),-x1.val()}, {x1.val(),x1.val()} };
|
|
47
|
+
Iter::Ranges::Array i(r,2);
|
|
48
|
+
GECODE_ME_CHECK(x0.inter(home,i));
|
|
49
|
+
}
|
|
50
|
+
return ES_SUBSUMED;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (x0.min() >= 0) {
|
|
54
|
+
return (Eq<View,View>::post(home,x0,x1) == ES_FAILED)
|
|
55
|
+
? ES_FAILED : ES_SUBSUMED;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (x0.max() <= 0) {
|
|
59
|
+
MinusView mx0(x0);
|
|
60
|
+
return (Eq<MinusView,View>::post(home,mx0,x1) == ES_FAILED)
|
|
61
|
+
? ES_FAILED : ES_SUBSUMED;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
GECODE_ME_CHECK(x1.lq(home,std::max(x0.max(),-x0.min())));
|
|
65
|
+
GECODE_ME_CHECK(x0.lq(home,x1.max()));
|
|
66
|
+
GECODE_ME_CHECK(x0.gq(home,-x1.max()));
|
|
67
|
+
return ES_NOFIX;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
template <class View>
|
|
71
|
+
forceinline
|
|
72
|
+
AbsBnd<View>::AbsBnd(Space* home, View x0, View x1)
|
|
73
|
+
: BinaryPropagator<View,PC_INT_BND>(home,x0,x1) {}
|
|
74
|
+
|
|
75
|
+
template <class View>
|
|
76
|
+
ExecStatus
|
|
77
|
+
AbsBnd<View>::post(Space* home, View x0, View x1) {
|
|
78
|
+
GECODE_ME_CHECK(x1.gq(home,0));
|
|
79
|
+
if (!same(x0,x1)) {
|
|
80
|
+
(void) new (home) AbsBnd<View>(home,x0,x1);
|
|
81
|
+
}
|
|
82
|
+
return ES_OK;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
template <class View>
|
|
87
|
+
forceinline
|
|
88
|
+
AbsBnd<View>::AbsBnd(Space* home, bool share, AbsBnd<View>& p)
|
|
89
|
+
: BinaryPropagator<View,PC_INT_BND>(home,share,p) {}
|
|
90
|
+
|
|
91
|
+
template <class View>
|
|
92
|
+
Actor*
|
|
93
|
+
AbsBnd<View>::copy(Space* home,bool share) {
|
|
94
|
+
return new (home) AbsBnd<View>(home,share,*this);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
template <class View>
|
|
98
|
+
PropCost
|
|
99
|
+
AbsBnd<View>::cost(void) const {
|
|
100
|
+
if (View::pme(this) == ME_INT_VAL)
|
|
101
|
+
return PC_UNARY_LO;
|
|
102
|
+
return PC_BINARY_LO;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
template <class View>
|
|
106
|
+
ExecStatus
|
|
107
|
+
AbsBnd<View>::propagate(Space* home) {
|
|
108
|
+
return prop_bnd<View,Rel::EqBnd>(home, x0, x1);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
template <class View>
|
|
112
|
+
forceinline
|
|
113
|
+
AbsDom<View>::AbsDom(Space* home, View x0, View x1)
|
|
114
|
+
: BinaryPropagator<View,PC_INT_DOM>(home,x0,x1) {}
|
|
115
|
+
|
|
116
|
+
template <class View>
|
|
117
|
+
ExecStatus
|
|
118
|
+
AbsDom<View>::post(Space* home, View x0, View x1) {
|
|
119
|
+
if (x0.min() >= 0) {
|
|
120
|
+
return Rel::EqDom<View,View>::post(home,x0,x1);
|
|
121
|
+
} else if (x0.max() <= 0) {
|
|
122
|
+
MinusView mx0(x0);
|
|
123
|
+
return Rel::EqDom<MinusView,View>::post(home,mx0,x1);
|
|
124
|
+
}
|
|
125
|
+
GECODE_ME_CHECK(x1.gq(home,0));
|
|
126
|
+
if (!same(x0,x1)) {
|
|
127
|
+
(void) new (home) AbsDom<View>(home,x0,x1);
|
|
128
|
+
}
|
|
129
|
+
return ES_OK;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <class View>
|
|
133
|
+
forceinline
|
|
134
|
+
AbsDom<View>::AbsDom(Space* home, bool share, AbsDom<View>& p)
|
|
135
|
+
: BinaryPropagator<View,PC_INT_DOM>(home,share,p) {}
|
|
136
|
+
|
|
137
|
+
template <class View>
|
|
138
|
+
Actor*
|
|
139
|
+
AbsDom<View>::copy(Space* home,bool share) {
|
|
140
|
+
return new (home) AbsDom<View>(home,share,*this);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
template <class View>
|
|
144
|
+
PropCost
|
|
145
|
+
AbsDom<View>::cost(void) const {
|
|
146
|
+
if (View::pme(this) == ME_INT_VAL)
|
|
147
|
+
return PC_UNARY_LO;
|
|
148
|
+
if (View::pme(this) == ME_INT_DOM)
|
|
149
|
+
return PC_BINARY_HI;
|
|
150
|
+
return PC_BINARY_LO;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
template <class View>
|
|
154
|
+
ExecStatus
|
|
155
|
+
AbsDom<View>::propagate(Space* home) {
|
|
156
|
+
|
|
157
|
+
if (View::pme(this) != ME_INT_DOM) {
|
|
158
|
+
ExecStatus es = prop_bnd<View,Rel::EqDom>(home, x0, x1);
|
|
159
|
+
if (es != ES_NOFIX)
|
|
160
|
+
return es;
|
|
161
|
+
return this->ES_NOFIX_PARTIAL(View::pme(ME_INT_DOM));
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
Iter::Ranges::Singleton positive(0, Limits::Int::int_max);
|
|
165
|
+
Iter::Ranges::Singleton negative(Limits::Int::int_min, 0);
|
|
166
|
+
|
|
167
|
+
IntVarRanges xr1(x0);
|
|
168
|
+
IntVarRanges xr2(x0);
|
|
169
|
+
|
|
170
|
+
Iter::Ranges::Inter<Iter::Ranges::Singleton,
|
|
171
|
+
IntVarRanges> posInter(positive, xr1);
|
|
172
|
+
Iter::Ranges::Inter<Iter::Ranges::Singleton,
|
|
173
|
+
IntVarRanges> negInter(negative, xr2);
|
|
174
|
+
Iter::Ranges::Minus<Iter::Ranges::Inter<Iter::Ranges::Singleton,
|
|
175
|
+
IntVarRanges> > mneg(negInter);
|
|
176
|
+
Iter::Ranges::Union<Iter::Ranges::Inter<Iter::Ranges::Singleton,
|
|
177
|
+
IntVarRanges>,
|
|
178
|
+
Iter::Ranges::Minus<Iter::Ranges::Inter<
|
|
179
|
+
Iter::Ranges::Singleton,
|
|
180
|
+
IntVarRanges> > >
|
|
181
|
+
u(posInter, mneg);
|
|
182
|
+
|
|
183
|
+
GECODE_ME_CHECK(x1.inter(home, u));
|
|
184
|
+
|
|
185
|
+
IntVarRanges x1r1(x1);
|
|
186
|
+
IntVarRanges x1r2(x1);
|
|
187
|
+
|
|
188
|
+
Iter::Ranges::Minus<IntVarRanges> x1m(x1r2);
|
|
189
|
+
Iter::Ranges::Union<IntVarRanges,
|
|
190
|
+
Iter::Ranges::Minus<IntVarRanges> > u2(x1r1,x1m);
|
|
191
|
+
GECODE_ME_CHECK(x0.inter(home, u2));
|
|
192
|
+
|
|
193
|
+
if (x1.assigned())
|
|
194
|
+
return ES_SUBSUMED;
|
|
195
|
+
|
|
196
|
+
if (x0.min() >= 0) {
|
|
197
|
+
return (Rel::EqDom<View,View>::post(home,x0,x1) == ES_FAILED)
|
|
198
|
+
? ES_FAILED : ES_SUBSUMED;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
if (x0.max() <= 0) {
|
|
202
|
+
MinusView mx0(x0);
|
|
203
|
+
return (Rel::EqDom<MinusView,View>::post(home,mx0,x1) == ES_FAILED)
|
|
204
|
+
? ES_FAILED : ES_SUBSUMED;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
return ES_FIX;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
}}}
|
|
211
|
+
|
|
212
|
+
// STATISTICS: int-prop
|
|
213
|
+
|