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,62 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2006
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
10
|
+
* $Revision: 3512 $
|
|
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/channel.hh"
|
|
23
|
+
|
|
24
|
+
namespace Gecode {
|
|
25
|
+
|
|
26
|
+
using namespace Int;
|
|
27
|
+
|
|
28
|
+
void
|
|
29
|
+
channel(Space* home, const IntVarArgs& x, const IntVarArgs& y,
|
|
30
|
+
IntConLevel icl) {
|
|
31
|
+
using namespace Channel;
|
|
32
|
+
int n = x.size();
|
|
33
|
+
if (n != y.size())
|
|
34
|
+
throw ArgumentSizeMismatch("Int::channel");
|
|
35
|
+
if (x.same(y))
|
|
36
|
+
throw ArgumentSame("Int::channel");
|
|
37
|
+
if (home->failed()) return;
|
|
38
|
+
if (n == 0)
|
|
39
|
+
return;
|
|
40
|
+
|
|
41
|
+
if (icl == ICL_VAL) {
|
|
42
|
+
ValInfo<IntView>* vi
|
|
43
|
+
= ValInfo<IntView>::allocate(home,2*n);
|
|
44
|
+
for (int i=n; i--; ) {
|
|
45
|
+
vi[i ].init(x[i],n);
|
|
46
|
+
vi[i+n].init(y[i],n);
|
|
47
|
+
}
|
|
48
|
+
GECODE_ES_FAIL(home,Val<IntView>::post(home,n,vi));
|
|
49
|
+
} else {
|
|
50
|
+
DomInfo<IntView>* di
|
|
51
|
+
= DomInfo<IntView>::allocate(home,2*n);
|
|
52
|
+
for (int i=n; i--; ) {
|
|
53
|
+
di[i ].init(x[i],n);
|
|
54
|
+
di[i+n].init(y[i],n);
|
|
55
|
+
}
|
|
56
|
+
GECODE_ES_FAIL(home,Dom<IntView>::post(home,n,di));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
// STATISTICS: int-post
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2006
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-07-12 15:53:12 +0200 (Wed, 12 Jul 2006) $ by $Author: tack $
|
|
10
|
+
* $Revision: 3349 $
|
|
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
|
+
#ifndef __GECODE_INT_CHANNEL_HH__
|
|
23
|
+
#define __GECODE_INT_CHANNEL_HH__
|
|
24
|
+
|
|
25
|
+
#include "gecode/int.hh"
|
|
26
|
+
#include "gecode/int/distinct.hh"
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* \namespace Gecode::Int::Channel
|
|
30
|
+
* \brief %Channel propagators
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
namespace Gecode { namespace Int { namespace Channel {
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* \brief Base-class for channel propagators
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
template <class Info, PropCond pc>
|
|
40
|
+
class Base : public Propagator {
|
|
41
|
+
protected:
|
|
42
|
+
/// Number of views (actually twice as many for both x and y)
|
|
43
|
+
int n;
|
|
44
|
+
/// Total number of not assigned views (not known to be assigned)
|
|
45
|
+
int n_na;
|
|
46
|
+
/// View and information for both \a x and \a y
|
|
47
|
+
Info* xy;
|
|
48
|
+
/// Constructor for cloning \a p
|
|
49
|
+
Base(Space* home, bool share, Base<Info,pc>& p);
|
|
50
|
+
/// Constructor for posting
|
|
51
|
+
Base(Space* home, int n, Info* xy, bool fd=false);
|
|
52
|
+
public:
|
|
53
|
+
/// Propagation cost
|
|
54
|
+
virtual PropCost cost(void) const;
|
|
55
|
+
/// Delete propagator and return its size
|
|
56
|
+
virtual size_t dispose(Space* home);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* \brief Combine view with information for value propagation
|
|
62
|
+
*
|
|
63
|
+
*/
|
|
64
|
+
template <class View> class ValInfo;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* \brief Naive channel propagator
|
|
68
|
+
*
|
|
69
|
+
* Only propagates if views become assigned.
|
|
70
|
+
*
|
|
71
|
+
* Requires \code #include "gecode/int/channel.hh" \endcode
|
|
72
|
+
* \ingroup FuncIntProp
|
|
73
|
+
*/
|
|
74
|
+
template <class View>
|
|
75
|
+
class Val : public Base<ValInfo<View>,PC_INT_VAL> {
|
|
76
|
+
protected:
|
|
77
|
+
using Base<ValInfo<View>,PC_INT_VAL>::n;
|
|
78
|
+
using Base<ValInfo<View>,PC_INT_VAL>::n_na;
|
|
79
|
+
using Base<ValInfo<View>,PC_INT_VAL>::xy;
|
|
80
|
+
/// Constructor for cloning \a p
|
|
81
|
+
Val(Space* home, bool share, Val& p);
|
|
82
|
+
/// Constructor for posting
|
|
83
|
+
Val(Space* home, int n, ValInfo<View>* xy);
|
|
84
|
+
public:
|
|
85
|
+
/// Copy propagator during cloning
|
|
86
|
+
virtual Actor* copy(Space* home, bool share);
|
|
87
|
+
/// Perform propagation
|
|
88
|
+
virtual ExecStatus propagate(Space* home);
|
|
89
|
+
/// Post propagator for channeling on \a xy
|
|
90
|
+
static ExecStatus post(Space* home, int n, ValInfo<View>* xy);
|
|
91
|
+
};
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* \brief Combine view with information for domain propagation
|
|
95
|
+
*
|
|
96
|
+
*/
|
|
97
|
+
template <class View> class DomInfo;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* \brief Domain-consistent channel propagator
|
|
101
|
+
*
|
|
102
|
+
* Requires \code #include "gecode/int/channel.hh" \endcode
|
|
103
|
+
* \ingroup FuncIntProp
|
|
104
|
+
*/
|
|
105
|
+
template <class View>
|
|
106
|
+
class Dom : public Base<DomInfo<View>,PC_INT_DOM> {
|
|
107
|
+
protected:
|
|
108
|
+
using Base<DomInfo<View>,PC_INT_DOM>::n;
|
|
109
|
+
using Base<DomInfo<View>,PC_INT_DOM>::n_na;
|
|
110
|
+
using Base<DomInfo<View>,PC_INT_DOM>::xy;
|
|
111
|
+
/// Propagation controller for propagating distinct
|
|
112
|
+
Distinct::DomCtrl<View> dc;
|
|
113
|
+
/// Constructor for cloning \a p
|
|
114
|
+
Dom(Space* home, bool share, Dom& p);
|
|
115
|
+
/// Constructor for posting
|
|
116
|
+
Dom(Space* home, int n, DomInfo<View>* xy);
|
|
117
|
+
public:
|
|
118
|
+
/// Copy propagator during cloning
|
|
119
|
+
virtual Actor* copy(Space* home, bool share);
|
|
120
|
+
/// Propagation cost
|
|
121
|
+
virtual PropCost cost(void) const;
|
|
122
|
+
/// Perform propagation
|
|
123
|
+
virtual ExecStatus propagate(Space* home);
|
|
124
|
+
/// Post propagator for channeling on \a xy
|
|
125
|
+
static ExecStatus post(Space* home, int n, DomInfo<View>* xy);
|
|
126
|
+
/// Flush propagation controller
|
|
127
|
+
virtual void flush(void);
|
|
128
|
+
/// Returns size of propagation controller
|
|
129
|
+
virtual size_t size(void) const;
|
|
130
|
+
/// Delete propagator and return its size
|
|
131
|
+
virtual size_t dispose(Space* home);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
}}}
|
|
135
|
+
|
|
136
|
+
#include "gecode/int/channel/base.icc"
|
|
137
|
+
#include "gecode/int/channel/stack.icc"
|
|
138
|
+
#include "gecode/int/channel/val.icc"
|
|
139
|
+
#include "gecode/int/channel/dom.icc"
|
|
140
|
+
|
|
141
|
+
#endif
|
|
142
|
+
|
|
143
|
+
// STATISTICS: int-prop
|
|
144
|
+
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2006
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
10
|
+
* $Revision: 3512 $
|
|
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
|
+
namespace Gecode { namespace Int { namespace Channel {
|
|
23
|
+
|
|
24
|
+
template <class Info, PropCond pc>
|
|
25
|
+
forceinline
|
|
26
|
+
Base<Info,pc>::Base(Space* home, int n0, Info* xy0, bool fd)
|
|
27
|
+
: Propagator(home,fd), n(n0), n_na(2*n), xy(xy0) {
|
|
28
|
+
for (int i=2*n; i--; )
|
|
29
|
+
xy[i].view.subscribe(home,this,pc);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
template <class Info, PropCond pc>
|
|
33
|
+
forceinline
|
|
34
|
+
Base<Info,pc>::Base(Space* home, bool share, Base<Info,pc>& p)
|
|
35
|
+
: Propagator(home,share,p), n(p.n), n_na(p.n_na),
|
|
36
|
+
xy(Info::allocate(home,2*n)) {
|
|
37
|
+
for (int i=2*n; i--; )
|
|
38
|
+
xy[i].update(home,share,p.xy[i]);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
template <class Info, PropCond pc>
|
|
42
|
+
PropCost
|
|
43
|
+
Base<Info,pc>::cost(void) const {
|
|
44
|
+
return PC_QUADRATIC_LO;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
template <class Info, PropCond pc>
|
|
48
|
+
size_t
|
|
49
|
+
Base<Info,pc>::dispose(Space* home) {
|
|
50
|
+
if (!home->failed())
|
|
51
|
+
for (int i=2*n; i--; )
|
|
52
|
+
xy[i].view.cancel(home,this,pc);
|
|
53
|
+
(void) Propagator::dispose(home);
|
|
54
|
+
return sizeof(*this);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
}}}
|
|
58
|
+
|
|
59
|
+
// STATISTICS: int-prop
|
|
60
|
+
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Contributing authors:
|
|
6
|
+
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
|
7
|
+
*
|
|
8
|
+
* Copyright:
|
|
9
|
+
* Christian Schulte, 2006
|
|
10
|
+
* Mikael Lagerkvist, 2006
|
|
11
|
+
*
|
|
12
|
+
* Last modified:
|
|
13
|
+
* $Date: 2006-08-04 16:03:26 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
14
|
+
* $Revision: 3512 $
|
|
15
|
+
*
|
|
16
|
+
* This file is part of Gecode, the generic constraint
|
|
17
|
+
* development environment:
|
|
18
|
+
* http://www.gecode.org
|
|
19
|
+
*
|
|
20
|
+
* See the file "LICENSE" for information on usage and
|
|
21
|
+
* redistribution of this file, and for a
|
|
22
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#include "gecode/iter.hh"
|
|
27
|
+
|
|
28
|
+
namespace Gecode { namespace Int { namespace Channel {
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* \brief Combine view with information for domain propagation
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
template <class View>
|
|
35
|
+
class DomInfo {
|
|
36
|
+
public:
|
|
37
|
+
View view;
|
|
38
|
+
unsigned int card;
|
|
39
|
+
int min;
|
|
40
|
+
int max;
|
|
41
|
+
/// Allocate memory from space \a home for \a n elements
|
|
42
|
+
static DomInfo<View>* allocate(Space* home, int n);
|
|
43
|
+
/// Initialize
|
|
44
|
+
void init(View x, int n);
|
|
45
|
+
/// Update during cloning
|
|
46
|
+
void update(Space* home, bool share, DomInfo<View>& vcb);
|
|
47
|
+
/// Check whether propagation for assignment is to be done
|
|
48
|
+
bool doval(void) const;
|
|
49
|
+
/// Check whether propagation for domain is to be done
|
|
50
|
+
bool dodom(void) const;
|
|
51
|
+
/// Record that view got assigned
|
|
52
|
+
void assigned(void);
|
|
53
|
+
/// Record that one value got removed
|
|
54
|
+
void removed(int i);
|
|
55
|
+
/// Update the cardinality and bounds information after pruning
|
|
56
|
+
void done(void);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
template <class View>
|
|
60
|
+
forceinline DomInfo<View>*
|
|
61
|
+
DomInfo<View>::allocate(Space* home, int n) {
|
|
62
|
+
return reinterpret_cast<DomInfo<View>*>
|
|
63
|
+
(home->alloc(n*sizeof(DomInfo<View>)));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
template <class View>
|
|
67
|
+
forceinline void
|
|
68
|
+
DomInfo<View>::init(View x, int n) {
|
|
69
|
+
view = x;
|
|
70
|
+
card = static_cast<unsigned int>(n);
|
|
71
|
+
min = 0;
|
|
72
|
+
max = n-1;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
template <class View>
|
|
76
|
+
forceinline void
|
|
77
|
+
DomInfo<View>::update(Space* home, bool share, DomInfo<View>& di) {
|
|
78
|
+
view.update(home,share,di.view);
|
|
79
|
+
card = di.card;
|
|
80
|
+
min = di.min;
|
|
81
|
+
max = di.max;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
template <class View>
|
|
85
|
+
forceinline bool
|
|
86
|
+
DomInfo<View>::doval(void) const {
|
|
87
|
+
return (card != 1) && view.assigned();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
template <class View>
|
|
91
|
+
forceinline bool
|
|
92
|
+
DomInfo<View>::dodom(void) const {
|
|
93
|
+
return card != view.size();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
template <class View>
|
|
97
|
+
forceinline void
|
|
98
|
+
DomInfo<View>::assigned(void) {
|
|
99
|
+
card = 1;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
template <class View>
|
|
103
|
+
forceinline void
|
|
104
|
+
DomInfo<View>::removed(int i) {
|
|
105
|
+
card--;
|
|
106
|
+
if (i == min)
|
|
107
|
+
min++;
|
|
108
|
+
else if (i == max)
|
|
109
|
+
max--;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
template <class View>
|
|
113
|
+
forceinline void
|
|
114
|
+
DomInfo<View>::done(void) {
|
|
115
|
+
card = view.size();
|
|
116
|
+
min = view.min();
|
|
117
|
+
max = view.max();
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// Propagate domain information from x to y
|
|
121
|
+
template <class View>
|
|
122
|
+
ExecStatus
|
|
123
|
+
prop_dom(Space* home, int n, DomInfo<View>* x, DomInfo<View>* y,
|
|
124
|
+
ProcessStack& ya) {
|
|
125
|
+
for (int i = n; i--; )
|
|
126
|
+
// Only views with not yet propagated missing values
|
|
127
|
+
if (x[i].dodom()) {
|
|
128
|
+
// Iterate the values in the complement of x[i]
|
|
129
|
+
ViewRanges<IntView>
|
|
130
|
+
xir(x[i].view);
|
|
131
|
+
Iter::Ranges::ComplVal<ViewRanges<IntView> >
|
|
132
|
+
xirc(x[i].min,x[i].max,xir);
|
|
133
|
+
Iter::Ranges::ToValues<Iter::Ranges::ComplVal<ViewRanges<IntView> > >
|
|
134
|
+
jv(xirc);
|
|
135
|
+
while (jv()) {
|
|
136
|
+
// j is not in the domain of x[i], so prune i from y[j]
|
|
137
|
+
int j = jv.val();
|
|
138
|
+
ModEvent me = y[j].view.nq(home,i);
|
|
139
|
+
if (me_failed(me))
|
|
140
|
+
return ES_FAILED;
|
|
141
|
+
if (me_modified(me))
|
|
142
|
+
if (me == ME_INT_VAL) {
|
|
143
|
+
// Record that y[j] has been assigned and must be propagated
|
|
144
|
+
ya.push(j);
|
|
145
|
+
} else {
|
|
146
|
+
// Obvious as x[i] is different from j
|
|
147
|
+
y[j].removed(i);
|
|
148
|
+
}
|
|
149
|
+
++jv;
|
|
150
|
+
}
|
|
151
|
+
// Update which values have been propagated and what are the new bounds
|
|
152
|
+
x[i].done();
|
|
153
|
+
}
|
|
154
|
+
return ES_OK;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
/*
|
|
158
|
+
* The actual propagator
|
|
159
|
+
*
|
|
160
|
+
*/
|
|
161
|
+
template <class View>
|
|
162
|
+
forceinline
|
|
163
|
+
Dom<View>::Dom(Space* home, int n, DomInfo<View>* xy)
|
|
164
|
+
: Base<DomInfo<View>,PC_INT_DOM>(home,n,xy,true) {}
|
|
165
|
+
|
|
166
|
+
template <class View>
|
|
167
|
+
forceinline
|
|
168
|
+
Dom<View>::Dom(Space* home, bool share, Dom<View>& p)
|
|
169
|
+
: Base<DomInfo<View>,PC_INT_DOM>(home,share,p) {}
|
|
170
|
+
|
|
171
|
+
template <class View>
|
|
172
|
+
Actor*
|
|
173
|
+
Dom<View>::copy(Space* home, bool share) {
|
|
174
|
+
return new (home) Dom<View>(home,share,*this);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
template <class View>
|
|
178
|
+
PropCost
|
|
179
|
+
Dom<View>::cost(void) const {
|
|
180
|
+
return (View::pme(this) == ME_INT_VAL) ? PC_QUADRATIC_LO : PC_CUBIC_HI;
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
template <class View>
|
|
184
|
+
ExecStatus
|
|
185
|
+
Dom<View>::propagate(Space* home) {
|
|
186
|
+
GECODE_AUTOARRAY(int, __xa, n+1);
|
|
187
|
+
GECODE_AUTOARRAY(int, __ya, n+1);
|
|
188
|
+
ProcessStack xa(__xa);
|
|
189
|
+
ProcessStack ya(__ya);
|
|
190
|
+
|
|
191
|
+
DomInfo<View>* x = xy;
|
|
192
|
+
DomInfo<View>* y = xy+n;
|
|
193
|
+
|
|
194
|
+
if (View::pme(this) == ME_INT_VAL) {
|
|
195
|
+
// Scan x and y for assigned but not yet propagated views
|
|
196
|
+
for (int i = n; i--; ) {
|
|
197
|
+
if (x[i].doval()) xa.push(i);
|
|
198
|
+
if (y[i].doval()) ya.push(i);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
do {
|
|
202
|
+
// Propagate assigned views for x
|
|
203
|
+
if (prop_val<View,DomInfo<View> >(home,n,x,y,n_na,xa,ya) == ES_FAILED)
|
|
204
|
+
return ES_FAILED;
|
|
205
|
+
// Propagate assigned views for y
|
|
206
|
+
if (prop_val<View,DomInfo<View> >(home,n,y,x,n_na,ya,xa) == ES_FAILED)
|
|
207
|
+
return ES_FAILED;
|
|
208
|
+
assert(ya.empty());
|
|
209
|
+
} while (!xa.empty());
|
|
210
|
+
this->ES_FIX_PARTIAL(View::pme(ME_INT_DOM));
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// Process changed views for y
|
|
214
|
+
// This propagates from y to x and possibly records xs that
|
|
215
|
+
// got assigned
|
|
216
|
+
if (prop_dom(home,n,y,x,xa) == ES_FAILED)
|
|
217
|
+
return ES_FAILED;
|
|
218
|
+
|
|
219
|
+
// Process assigned views for x
|
|
220
|
+
if (prop_val<View,DomInfo<View> >(home,n,x,y,n_na,xa,ya) == ES_FAILED)
|
|
221
|
+
return ES_FAILED;
|
|
222
|
+
|
|
223
|
+
// Perform domain consistent propagation for distinct on the x views
|
|
224
|
+
if (dc.available()) {
|
|
225
|
+
GECODE_ES_CHECK(dc.sync());
|
|
226
|
+
} else {
|
|
227
|
+
GECODE_AUTOARRAY(View,xv,n);
|
|
228
|
+
for (int i=n; i--; )
|
|
229
|
+
xv[i] = x[i].view;
|
|
230
|
+
GECODE_ES_CHECK(dc.init(n,&xv[0]));
|
|
231
|
+
}
|
|
232
|
+
dc.propagate(home);
|
|
233
|
+
// This might assign some more views in x which goes unnoticed
|
|
234
|
+
// (that is, not recorded in xa). This must be checked and propagated
|
|
235
|
+
// to the y views, however the distinctness on x is already
|
|
236
|
+
// propagated.
|
|
237
|
+
for (int i=n; i--; )
|
|
238
|
+
if (x[i].doval()) {
|
|
239
|
+
int j = x[i].view.val();
|
|
240
|
+
// Assign the y variable to i (or test if already assigned!)
|
|
241
|
+
ModEvent me = y[j].view.eq(home,i);
|
|
242
|
+
if (me_failed(me))
|
|
243
|
+
return ES_FAILED;
|
|
244
|
+
if (me_modified(me)) {
|
|
245
|
+
// Record that y[j] has been assigned and must be propagated
|
|
246
|
+
assert(me == ME_INT_VAL);
|
|
247
|
+
// Otherwise the modification event would not be ME_INT_VAL
|
|
248
|
+
ya.push(j);
|
|
249
|
+
}
|
|
250
|
+
x[i].assigned(); n_na--;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// Process changed views for x
|
|
254
|
+
// This propagates from x to y and possibly records ys that
|
|
255
|
+
// got assigned
|
|
256
|
+
if (prop_dom(home,n,x,y,ya) == ES_FAILED)
|
|
257
|
+
return ES_FAILED;
|
|
258
|
+
|
|
259
|
+
// Process assigned view again (some might have been found above)
|
|
260
|
+
while (!xa.empty() || !ya.empty()) {
|
|
261
|
+
// Process assigned views for x
|
|
262
|
+
if (prop_val<View,DomInfo<View> >(home,n,x,y,n_na,xa,ya) == ES_FAILED)
|
|
263
|
+
return ES_FAILED;
|
|
264
|
+
// Process assigned views for y
|
|
265
|
+
if (prop_val<View,DomInfo<View> >(home,n,y,x,n_na,ya,xa) == ES_FAILED)
|
|
266
|
+
return ES_FAILED;
|
|
267
|
+
};
|
|
268
|
+
|
|
269
|
+
return (n_na == 0) ? ES_SUBSUMED : ES_FIX;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
template <class View>
|
|
273
|
+
ExecStatus
|
|
274
|
+
Dom<View>::post(Space* home, int n, DomInfo<View>* xy) {
|
|
275
|
+
assert(n > 0);
|
|
276
|
+
if (n == 1) {
|
|
277
|
+
GECODE_ME_CHECK(xy[0].view.eq(home,0));
|
|
278
|
+
GECODE_ME_CHECK(xy[1].view.eq(home,0));
|
|
279
|
+
return ES_OK;
|
|
280
|
+
}
|
|
281
|
+
for (int i=2*n; i--; ) {
|
|
282
|
+
GECODE_ME_CHECK(xy[i].view.gq(home,0));
|
|
283
|
+
GECODE_ME_CHECK(xy[i].view.le(home,n));
|
|
284
|
+
}
|
|
285
|
+
(void) new (home) Dom<View>(home,n,xy);
|
|
286
|
+
return ES_OK;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
template <class View>
|
|
290
|
+
void
|
|
291
|
+
Dom<View>::flush(void) {
|
|
292
|
+
dc.flush();
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
template <class View>
|
|
296
|
+
size_t
|
|
297
|
+
Dom<View>::size(void) const {
|
|
298
|
+
return dc.size();
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
template <class View>
|
|
302
|
+
size_t
|
|
303
|
+
Dom<View>::dispose(Space* home) {
|
|
304
|
+
dc.dispose();
|
|
305
|
+
(void) Base<DomInfo<View>,PC_INT_DOM>::dispose(home);
|
|
306
|
+
return sizeof(*this);
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
}}}
|
|
311
|
+
|
|
312
|
+
// STATISTICS: int-prop
|
|
313
|
+
|