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,293 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Gabor Szokoli <szokoli@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2002
|
|
8
|
+
* Gabor Szokoli, 2003
|
|
9
|
+
*
|
|
10
|
+
* Last modified:
|
|
11
|
+
* $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
|
|
12
|
+
* $Revision: 3579 $
|
|
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/int/rel.hh"
|
|
25
|
+
|
|
26
|
+
#include <algorithm>
|
|
27
|
+
|
|
28
|
+
namespace Gecode {
|
|
29
|
+
|
|
30
|
+
using namespace Int;
|
|
31
|
+
|
|
32
|
+
void
|
|
33
|
+
rel(Space* home, IntVar x0, IntRelType r, int n, IntConLevel) {
|
|
34
|
+
if (home->failed()) return;
|
|
35
|
+
IntView x(x0);
|
|
36
|
+
switch (r) {
|
|
37
|
+
case IRT_EQ:
|
|
38
|
+
GECODE_ME_FAIL(home,x.eq(home,n)); break;
|
|
39
|
+
case IRT_NQ:
|
|
40
|
+
GECODE_ME_FAIL(home,x.nq(home,n)); break;
|
|
41
|
+
case IRT_LQ:
|
|
42
|
+
GECODE_ME_FAIL(home,x.lq(home,n)); break;
|
|
43
|
+
case IRT_LE:
|
|
44
|
+
GECODE_ME_FAIL(home,x.le(home,n)); break;
|
|
45
|
+
case IRT_GQ:
|
|
46
|
+
GECODE_ME_FAIL(home,x.gq(home,n)); break;
|
|
47
|
+
case IRT_GR:
|
|
48
|
+
GECODE_ME_FAIL(home,x.gr(home,n)); break;
|
|
49
|
+
default:
|
|
50
|
+
throw UnknownRelation("Int::rel");
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
void
|
|
55
|
+
rel(Space* home, IntVar x0, IntRelType r, IntVar x1, IntConLevel icl) {
|
|
56
|
+
if (home->failed()) return;
|
|
57
|
+
switch (r) {
|
|
58
|
+
case IRT_EQ:
|
|
59
|
+
if (icl == ICL_BND) {
|
|
60
|
+
GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>::post(home,x0,x1)));
|
|
61
|
+
} else {
|
|
62
|
+
GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>::post(home,x0,x1)));
|
|
63
|
+
}
|
|
64
|
+
break;
|
|
65
|
+
case IRT_NQ:
|
|
66
|
+
GECODE_ES_FAIL(home,Rel::Nq<IntView>::post(home,x0,x1)); break;
|
|
67
|
+
case IRT_GQ:
|
|
68
|
+
std::swap(x0,x1); // Fall through
|
|
69
|
+
case IRT_LQ:
|
|
70
|
+
GECODE_ES_FAIL(home,Rel::Lq<IntView>::post(home,x0,x1)); break;
|
|
71
|
+
case IRT_GR:
|
|
72
|
+
std::swap(x0,x1); // Fall through
|
|
73
|
+
case IRT_LE:
|
|
74
|
+
GECODE_ES_FAIL(home,Rel::Le<IntView>::post(home,x0,x1)); break;
|
|
75
|
+
default:
|
|
76
|
+
throw UnknownRelation("Int::rel");
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
void
|
|
82
|
+
rel(Space* home, IntVar x0, IntRelType r, IntVar x1, BoolVar b,
|
|
83
|
+
IntConLevel icl) {
|
|
84
|
+
if (home->failed()) return;
|
|
85
|
+
switch (r) {
|
|
86
|
+
case IRT_EQ:
|
|
87
|
+
if (icl == ICL_BND) {
|
|
88
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,BoolView>
|
|
89
|
+
::post(home,x0,x1,b)));
|
|
90
|
+
} else {
|
|
91
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,BoolView>
|
|
92
|
+
::post(home,x0,x1,b)));
|
|
93
|
+
}
|
|
94
|
+
break;
|
|
95
|
+
case IRT_NQ:
|
|
96
|
+
{
|
|
97
|
+
NegBoolView n(b);
|
|
98
|
+
if (icl == ICL_BND) {
|
|
99
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,NegBoolView>
|
|
100
|
+
::post(home,x0,x1,n)));
|
|
101
|
+
} else {
|
|
102
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,NegBoolView>
|
|
103
|
+
::post(home,x0,x1,n)));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
case IRT_GQ:
|
|
108
|
+
std::swap(x0,x1); // Fall through
|
|
109
|
+
case IRT_LQ:
|
|
110
|
+
GECODE_ES_FAIL(home,(Rel::ReLq<IntView,BoolView>::post(home,x0,x1,b)));
|
|
111
|
+
break;
|
|
112
|
+
case IRT_LE:
|
|
113
|
+
std::swap(x0,x1); // Fall through
|
|
114
|
+
case IRT_GR:
|
|
115
|
+
{
|
|
116
|
+
NegBoolView n(b);
|
|
117
|
+
GECODE_ES_FAIL(home,(Rel::ReLq<IntView,NegBoolView>::post(home,x0,x1,n)));
|
|
118
|
+
}
|
|
119
|
+
break;
|
|
120
|
+
default:
|
|
121
|
+
throw UnknownRelation("Int::rel");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
void
|
|
126
|
+
rel(Space* home, IntVar x, IntRelType r, int n, BoolVar b,
|
|
127
|
+
IntConLevel icl) {
|
|
128
|
+
if (home->failed()) return;
|
|
129
|
+
switch (r) {
|
|
130
|
+
case IRT_EQ:
|
|
131
|
+
if (icl == ICL_BND) {
|
|
132
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,BoolView>
|
|
133
|
+
::post(home,x,n,b)));
|
|
134
|
+
} else {
|
|
135
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,BoolView>
|
|
136
|
+
::post(home,x,n,b)));
|
|
137
|
+
}
|
|
138
|
+
break;
|
|
139
|
+
case IRT_NQ:
|
|
140
|
+
{
|
|
141
|
+
NegBoolView nb(b);
|
|
142
|
+
if (icl == ICL_BND) {
|
|
143
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,NegBoolView>
|
|
144
|
+
::post(home,x,n,nb)));
|
|
145
|
+
} else {
|
|
146
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,NegBoolView>
|
|
147
|
+
::post(home,x,n,nb)));
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
break;
|
|
151
|
+
case IRT_LE:
|
|
152
|
+
n--; // Fall through
|
|
153
|
+
case IRT_LQ:
|
|
154
|
+
GECODE_ES_FAIL(home,(Rel::ReLqInt<IntView,BoolView>
|
|
155
|
+
::post(home,x,n,b)));
|
|
156
|
+
break;
|
|
157
|
+
case IRT_GQ:
|
|
158
|
+
n--; // Fall through
|
|
159
|
+
case IRT_GR:
|
|
160
|
+
{
|
|
161
|
+
NegBoolView nb(b);
|
|
162
|
+
GECODE_ES_FAIL(home,(Rel::ReLqInt<IntView,NegBoolView>
|
|
163
|
+
::post(home,x,n,nb)));
|
|
164
|
+
}
|
|
165
|
+
break;
|
|
166
|
+
default:
|
|
167
|
+
throw UnknownRelation("Int::rel");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
void
|
|
172
|
+
eq(Space* home, IntVar x0, IntVar x1, IntConLevel icl) {
|
|
173
|
+
if (home->failed()) return;
|
|
174
|
+
if (icl == ICL_BND) {
|
|
175
|
+
GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>::post(home,x0,x1)));
|
|
176
|
+
} else {
|
|
177
|
+
GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>::post(home,x0,x1)));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
void
|
|
182
|
+
eq(Space* home, IntVar x0, int n, IntConLevel) {
|
|
183
|
+
if (home->failed()) return;
|
|
184
|
+
IntView x(x0);
|
|
185
|
+
GECODE_ME_FAIL(home,x.eq(home,n));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
void
|
|
189
|
+
eq(Space* home, IntVar x0, IntVar x1, BoolVar b, IntConLevel icl) {
|
|
190
|
+
if (home->failed()) return;
|
|
191
|
+
if (icl == ICL_BND) {
|
|
192
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBnd<IntView,BoolView>::post(home,x0,x1,b)));
|
|
193
|
+
} else {
|
|
194
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDom<IntView,BoolView>::post(home,x0,x1,b)));
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
void
|
|
199
|
+
eq(Space* home, IntVar x, int n, BoolVar b, IntConLevel icl) {
|
|
200
|
+
if (home->failed()) return;
|
|
201
|
+
if (icl == ICL_BND) {
|
|
202
|
+
GECODE_ES_FAIL(home,(Rel::ReEqBndInt<IntView,BoolView>::post(home,x,n,b)));
|
|
203
|
+
} else {
|
|
204
|
+
GECODE_ES_FAIL(home,(Rel::ReEqDomInt<IntView,BoolView>::post(home,x,n,b)));
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
void
|
|
209
|
+
eq(Space* home, const IntVarArgs& x, IntConLevel icl) {
|
|
210
|
+
if (home->failed()) return;
|
|
211
|
+
ViewArray<IntView> xv(home,x);
|
|
212
|
+
if (icl == ICL_BND) {
|
|
213
|
+
GECODE_ES_FAIL(home,Rel::NaryEqBnd<IntView>::post(home,xv));
|
|
214
|
+
} else {
|
|
215
|
+
GECODE_ES_FAIL(home,Rel::NaryEqDom<IntView>::post(home,xv));
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
void
|
|
221
|
+
rel(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
|
|
222
|
+
IntConLevel icl) {
|
|
223
|
+
if (x.size() != y.size())
|
|
224
|
+
throw ArgumentSizeMismatch("Int::rel");
|
|
225
|
+
if (home->failed()) return;
|
|
226
|
+
|
|
227
|
+
switch (r) {
|
|
228
|
+
case IRT_GR:
|
|
229
|
+
{
|
|
230
|
+
ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
|
|
231
|
+
for (int i = x.size(); i--; ) {
|
|
232
|
+
xy[i][0]=y[i]; xy[i][1]=x[i];
|
|
233
|
+
}
|
|
234
|
+
GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,true));
|
|
235
|
+
}
|
|
236
|
+
break;
|
|
237
|
+
case IRT_LE:
|
|
238
|
+
{
|
|
239
|
+
ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
|
|
240
|
+
for (int i = x.size(); i--; ) {
|
|
241
|
+
xy[i][0]=x[i]; xy[i][1]=y[i];
|
|
242
|
+
}
|
|
243
|
+
GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,true));
|
|
244
|
+
}
|
|
245
|
+
break;
|
|
246
|
+
case IRT_GQ:
|
|
247
|
+
{
|
|
248
|
+
ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
|
|
249
|
+
for (int i = x.size(); i--; ) {
|
|
250
|
+
xy[i][0]=y[i]; xy[i][1]=x[i];
|
|
251
|
+
}
|
|
252
|
+
GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,false));
|
|
253
|
+
}
|
|
254
|
+
break;
|
|
255
|
+
case IRT_LQ:
|
|
256
|
+
{
|
|
257
|
+
ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
|
|
258
|
+
for (int i = x.size(); i--; ) {
|
|
259
|
+
xy[i][0]=x[i]; xy[i][1]=y[i];
|
|
260
|
+
}
|
|
261
|
+
GECODE_ES_FAIL(home,Rel::Lex<IntView>::post(home,xy,false));
|
|
262
|
+
}
|
|
263
|
+
break;
|
|
264
|
+
case IRT_EQ:
|
|
265
|
+
if (icl == ICL_BND)
|
|
266
|
+
for (int i=x.size(); i--; ) {
|
|
267
|
+
GECODE_ES_FAIL(home,(Rel::EqBnd<IntView,IntView>
|
|
268
|
+
::post(home,x[i],y[i])));
|
|
269
|
+
}
|
|
270
|
+
else
|
|
271
|
+
for (int i=x.size(); i--; ) {
|
|
272
|
+
GECODE_ES_FAIL(home,(Rel::EqDom<IntView,IntView>
|
|
273
|
+
::post(home,x[i],y[i])));
|
|
274
|
+
}
|
|
275
|
+
break;
|
|
276
|
+
case IRT_NQ:
|
|
277
|
+
{
|
|
278
|
+
ViewArray<ViewTuple<IntView,2> > xy(home,x.size());
|
|
279
|
+
for (int i = x.size(); i--; ) {
|
|
280
|
+
xy[i][0]=x[i]; xy[i][1]=y[i];
|
|
281
|
+
}
|
|
282
|
+
GECODE_ES_FAIL(home,Rel::NaryNq<IntView>::post(home,xy));
|
|
283
|
+
}
|
|
284
|
+
break;
|
|
285
|
+
default:
|
|
286
|
+
throw UnknownRelation("Int::rel");
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// STATISTICS: int-post
|
|
293
|
+
|
|
@@ -0,0 +1,526 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Contributing authors:
|
|
7
|
+
* Gabor Szokoli <szokoli@gecode.org>
|
|
8
|
+
*
|
|
9
|
+
* Copyright:
|
|
10
|
+
* Christian Schulte, 2002
|
|
11
|
+
* Guido Tack, 2004
|
|
12
|
+
* Gabor Szokoli, 2003
|
|
13
|
+
*
|
|
14
|
+
* Last modified:
|
|
15
|
+
* $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
|
|
16
|
+
* $Revision: 3579 $
|
|
17
|
+
*
|
|
18
|
+
* This file is part of Gecode, the generic constraint
|
|
19
|
+
* development environment:
|
|
20
|
+
* http://www.gecode.org
|
|
21
|
+
*
|
|
22
|
+
* See the file "LICENSE" for information on usage and
|
|
23
|
+
* redistribution of this file, and for a
|
|
24
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#ifndef __GECODE_INT_REL_HH__
|
|
29
|
+
#define __GECODE_INT_REL_HH__
|
|
30
|
+
|
|
31
|
+
#include "gecode/int.hh"
|
|
32
|
+
|
|
33
|
+
#include "gecode/iter.hh"
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* \namespace Gecode::Int::Rel
|
|
37
|
+
* \brief Simple relation propagators
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
namespace Gecode { namespace Int { namespace Rel {
|
|
41
|
+
|
|
42
|
+
/*
|
|
43
|
+
* Equality propagators
|
|
44
|
+
*
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* \brief Binary domain-consistent equality propagator
|
|
49
|
+
*
|
|
50
|
+
* Uses staging by first performing bounds propagation and only
|
|
51
|
+
* then domain propagation.
|
|
52
|
+
*
|
|
53
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
54
|
+
* \ingroup FuncIntProp
|
|
55
|
+
*/
|
|
56
|
+
template <class View0,class View1>
|
|
57
|
+
class EqDom :
|
|
58
|
+
public InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM> {
|
|
59
|
+
protected:
|
|
60
|
+
using InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM>::x0;
|
|
61
|
+
using InhomBinaryPropagator<View0,PC_INT_DOM,View1,PC_INT_DOM>::x1;
|
|
62
|
+
|
|
63
|
+
/// Constructor for cloning \a p
|
|
64
|
+
EqDom(Space* home, bool share, EqDom<View0,View1>& p);
|
|
65
|
+
/// Constructor for posting
|
|
66
|
+
EqDom(Space* home, View0 x0, View1 x1);
|
|
67
|
+
public:
|
|
68
|
+
/// Copy propagator during cloning
|
|
69
|
+
virtual Actor* copy(Space* home, bool share);
|
|
70
|
+
/**
|
|
71
|
+
* \brief Cost function
|
|
72
|
+
*
|
|
73
|
+
* If a view has been assigned, the cost is PC_UNARY_LO.
|
|
74
|
+
* If in stage for bounds propagation, the cost is
|
|
75
|
+
* PC_BINARY_LO. Otherwise it is PC_BINARY_HI.
|
|
76
|
+
*/
|
|
77
|
+
virtual PropCost cost(void) const;
|
|
78
|
+
/// Perform propagation
|
|
79
|
+
virtual ExecStatus propagate(Space* home);
|
|
80
|
+
/// Post domain-consistent propagator \f$ x_0 = x_1\f$
|
|
81
|
+
static ExecStatus post(Space* home, View0 x0, View1 x1);
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* \brief Binary bounds-consistent equality propagator
|
|
86
|
+
*
|
|
87
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
88
|
+
* \ingroup FuncIntProp
|
|
89
|
+
*/
|
|
90
|
+
template <class View0, class View1>
|
|
91
|
+
class EqBnd :
|
|
92
|
+
public InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND> {
|
|
93
|
+
protected:
|
|
94
|
+
using InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND>::x0;
|
|
95
|
+
using InhomBinaryPropagator<View0,PC_INT_BND,View1,PC_INT_BND>::x1;
|
|
96
|
+
|
|
97
|
+
/// Constructor for cloning \a p
|
|
98
|
+
EqBnd(Space* home, bool share, EqBnd<View0,View1>& p);
|
|
99
|
+
/// Constructor for posting
|
|
100
|
+
EqBnd(Space* home, View0 x0, View1 x1);
|
|
101
|
+
public:
|
|
102
|
+
/// Constructor for rewriting \a p during cloning
|
|
103
|
+
EqBnd(Space* home, bool share, Propagator& p, View0 x0, View1 x1);
|
|
104
|
+
/// Copy propagator during cloning
|
|
105
|
+
virtual Actor* copy(Space* home, bool share);
|
|
106
|
+
/// Perform propagation
|
|
107
|
+
virtual ExecStatus propagate(Space* home);
|
|
108
|
+
/// Post bounds-consistent propagator \f$ x_0 = x_1\f$
|
|
109
|
+
static ExecStatus post(Space* home, View0 x0, View1 x1);
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* \brief n-ary domain-consistent equality propagator
|
|
114
|
+
*
|
|
115
|
+
* Uses staging by first performing bounds propagation and only
|
|
116
|
+
* then domain propagation.
|
|
117
|
+
*
|
|
118
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
119
|
+
* \ingroup FuncIntProp
|
|
120
|
+
*/
|
|
121
|
+
template <class View>
|
|
122
|
+
class NaryEqDom : public NaryPropagator<View,PC_INT_DOM> {
|
|
123
|
+
protected:
|
|
124
|
+
using NaryPropagator<View,PC_INT_DOM>::x;
|
|
125
|
+
|
|
126
|
+
/// Constructor for cloning \a p
|
|
127
|
+
NaryEqDom(Space* home, bool share, NaryEqDom<View>& p);
|
|
128
|
+
/// Constructor for posting
|
|
129
|
+
NaryEqDom(Space* home, ViewArray<View>&);
|
|
130
|
+
public:
|
|
131
|
+
/// Copy propagator during cloning
|
|
132
|
+
virtual Actor* copy(Space* home, bool share);
|
|
133
|
+
/**
|
|
134
|
+
* \brief Cost function
|
|
135
|
+
*
|
|
136
|
+
* If a view has been assigned, the cost is PC_UNARY_LO.
|
|
137
|
+
* If in stage for bounds propagation, the cost is dynamic
|
|
138
|
+
* PC_LINEAR_LO. Otherwise it is dynamic PC_LINEAR_HI.
|
|
139
|
+
*/
|
|
140
|
+
virtual PropCost cost(void) const;
|
|
141
|
+
/// Perform propagation
|
|
142
|
+
virtual ExecStatus propagate(Space* home);
|
|
143
|
+
/// Post domain-consistent propagator \f$ x_0 = x_1=\ldots =x_{|x|-1}\f$
|
|
144
|
+
static ExecStatus post(Space* home, ViewArray<View>& x);
|
|
145
|
+
};
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* \brief n-ary bounds-consistent equality propagator
|
|
149
|
+
*
|
|
150
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
151
|
+
* \ingroup FuncIntProp
|
|
152
|
+
*/
|
|
153
|
+
template <class View>
|
|
154
|
+
class NaryEqBnd : public NaryPropagator<View,PC_INT_BND> {
|
|
155
|
+
protected:
|
|
156
|
+
using NaryPropagator<View,PC_INT_BND>::x;
|
|
157
|
+
|
|
158
|
+
/// Constructor for cloning \a p
|
|
159
|
+
NaryEqBnd(Space* home, bool share, NaryEqBnd<View>& p);
|
|
160
|
+
/// Constructor for posting
|
|
161
|
+
NaryEqBnd(Space* home, ViewArray<View>&);
|
|
162
|
+
public:
|
|
163
|
+
/// Copy propagator during cloning
|
|
164
|
+
virtual Actor* copy(Space* home, bool share);
|
|
165
|
+
/**
|
|
166
|
+
* \brief Cost function
|
|
167
|
+
*
|
|
168
|
+
* If a view has been assigned, the cost is PC_UNARY_LO.
|
|
169
|
+
* Otherwise it is dynamic PC_LINEAR_HI.
|
|
170
|
+
*/
|
|
171
|
+
virtual PropCost cost(void) const;
|
|
172
|
+
/// Perform propagation
|
|
173
|
+
virtual ExecStatus propagate(Space* home);
|
|
174
|
+
/// Post bounds-consistent propagator \f$ x_0 = x_1=\ldots =x_{|x|-1}\f$
|
|
175
|
+
static ExecStatus post(Space* home, ViewArray<View>& x);
|
|
176
|
+
};
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* \brief Reified binary domain-consistent equality propagator
|
|
180
|
+
*
|
|
181
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
182
|
+
* \ingroup FuncIntProp
|
|
183
|
+
*/
|
|
184
|
+
template <class View, class CtrlView>
|
|
185
|
+
class ReEqDom : public ReBinaryPropagator<View,PC_INT_DOM,CtrlView> {
|
|
186
|
+
protected:
|
|
187
|
+
using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
|
|
188
|
+
using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::x1;
|
|
189
|
+
using ReBinaryPropagator<View,PC_INT_DOM,CtrlView>::b;
|
|
190
|
+
|
|
191
|
+
/// Constructor for cloning \a p
|
|
192
|
+
ReEqDom(Space* home, bool share, ReEqDom& p);
|
|
193
|
+
/// Constructor for posting
|
|
194
|
+
ReEqDom(Space* home, View x0, View x1, CtrlView b);
|
|
195
|
+
public:
|
|
196
|
+
/// Copy propagator during cloning
|
|
197
|
+
virtual Actor* copy(Space* home, bool share);
|
|
198
|
+
/// Perform propagation
|
|
199
|
+
virtual ExecStatus propagate(Space* home);
|
|
200
|
+
/// Post domain-consistent propagator \f$ (x_0 = x_1)\Leftrightarrow b\f$
|
|
201
|
+
static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* \brief Reified binary bounds-consistent equality propagator
|
|
206
|
+
*
|
|
207
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
208
|
+
* \ingroup FuncIntProp
|
|
209
|
+
*/
|
|
210
|
+
template <class View, class CtrlView>
|
|
211
|
+
class ReEqBnd : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
|
|
212
|
+
protected:
|
|
213
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
|
|
214
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
|
|
215
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
|
|
216
|
+
|
|
217
|
+
/// Constructor for cloning \a p
|
|
218
|
+
ReEqBnd(Space* home, bool share, ReEqBnd& p);
|
|
219
|
+
/// Constructor for posting
|
|
220
|
+
ReEqBnd(Space* home, View x0, View x1, CtrlView b);
|
|
221
|
+
public:
|
|
222
|
+
/// Copy propagator during cloning
|
|
223
|
+
virtual Actor* copy(Space* home, bool share);
|
|
224
|
+
/// Perform propagation
|
|
225
|
+
virtual ExecStatus propagate(Space* home);
|
|
226
|
+
/// Post bounds-consistent propagator \f$ (x_0 = x_1)\Leftrightarrow b\f$
|
|
227
|
+
static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* \brief Reified domain-consistent equality with integer propagator
|
|
232
|
+
*
|
|
233
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
234
|
+
* \ingroup FuncIntProp
|
|
235
|
+
*/
|
|
236
|
+
template <class View, class CtrlView>
|
|
237
|
+
class ReEqDomInt : public ReUnaryPropagator<View,PC_INT_DOM,CtrlView> {
|
|
238
|
+
protected:
|
|
239
|
+
using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::x0;
|
|
240
|
+
using ReUnaryPropagator<View,PC_INT_DOM,CtrlView>::b;
|
|
241
|
+
|
|
242
|
+
/// Integer constant to check
|
|
243
|
+
int c;
|
|
244
|
+
/// Constructor for cloning \a p
|
|
245
|
+
ReEqDomInt(Space* home, bool share, ReEqDomInt& p);
|
|
246
|
+
/// Constructor for posting
|
|
247
|
+
ReEqDomInt(Space* home, View x, int c, CtrlView b);
|
|
248
|
+
public:
|
|
249
|
+
/// Copy propagator during cloning
|
|
250
|
+
virtual Actor* copy(Space* home, bool share);
|
|
251
|
+
/// Perform propagation
|
|
252
|
+
virtual ExecStatus propagate(Space* home);
|
|
253
|
+
/// Post domain-consistent propagator \f$ (x = c)\Leftrightarrow b\f$
|
|
254
|
+
static ExecStatus post(Space* home, View x, int c, CtrlView b);
|
|
255
|
+
};
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* \brief Reified bounds-consistent equality with integer propagator
|
|
259
|
+
*
|
|
260
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
261
|
+
* \ingroup FuncIntProp
|
|
262
|
+
*/
|
|
263
|
+
template <class View, class CtrlView>
|
|
264
|
+
class ReEqBndInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
|
|
265
|
+
protected:
|
|
266
|
+
using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
|
|
267
|
+
using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
|
|
268
|
+
|
|
269
|
+
/// Integer constant to check
|
|
270
|
+
int c;
|
|
271
|
+
/// Constructor for cloning \a p
|
|
272
|
+
ReEqBndInt(Space* home, bool share, ReEqBndInt& p);
|
|
273
|
+
/// Constructor for posting
|
|
274
|
+
ReEqBndInt(Space* home, View x, int c, CtrlView b);
|
|
275
|
+
public:
|
|
276
|
+
/// Copy propagator during cloning
|
|
277
|
+
virtual Actor* copy(Space* home, bool share);
|
|
278
|
+
/// Perform propagation
|
|
279
|
+
virtual ExecStatus propagate(Space* home);
|
|
280
|
+
/// Post bounds-consistent propagator \f$ (x = c)\Leftrightarrow b\f$
|
|
281
|
+
static ExecStatus post(Space* home, View x, int c, CtrlView b);
|
|
282
|
+
};
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
/*
|
|
288
|
+
* Disequality propagators
|
|
289
|
+
*
|
|
290
|
+
*/
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* \brief Binary disequality propagator
|
|
294
|
+
*
|
|
295
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
296
|
+
* \ingroup FuncIntProp
|
|
297
|
+
*/
|
|
298
|
+
|
|
299
|
+
template <class View>
|
|
300
|
+
class Nq : public BinaryPropagator<View,PC_INT_VAL> {
|
|
301
|
+
protected:
|
|
302
|
+
using BinaryPropagator<View,PC_INT_VAL>::x0;
|
|
303
|
+
using BinaryPropagator<View,PC_INT_VAL>::x1;
|
|
304
|
+
|
|
305
|
+
/// Constructor for cloning \a p
|
|
306
|
+
Nq(Space* home, bool share, Nq<View>& p);
|
|
307
|
+
/// Constructor for posting
|
|
308
|
+
Nq(Space* home, View x0, View x1);
|
|
309
|
+
public:
|
|
310
|
+
/// Copy propagator during cloning
|
|
311
|
+
virtual Actor* copy(Space* home, bool share);
|
|
312
|
+
/// Cost function (defined as PC_UNARY_LO)
|
|
313
|
+
virtual PropCost cost(void) const;
|
|
314
|
+
/// Perform propagation
|
|
315
|
+
virtual ExecStatus propagate(Space* home);
|
|
316
|
+
/// Post propagator \f$x_0\neq x_1\f$
|
|
317
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
318
|
+
};
|
|
319
|
+
|
|
320
|
+
/*
|
|
321
|
+
* Order propagators
|
|
322
|
+
*
|
|
323
|
+
*/
|
|
324
|
+
|
|
325
|
+
/**
|
|
326
|
+
* \brief Less or equal propagator
|
|
327
|
+
*
|
|
328
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
329
|
+
* \ingroup FuncIntProp
|
|
330
|
+
*/
|
|
331
|
+
|
|
332
|
+
template <class View>
|
|
333
|
+
class Lq : public BinaryPropagator<View,PC_INT_BND> {
|
|
334
|
+
protected:
|
|
335
|
+
using BinaryPropagator<View,PC_INT_BND>::x0;
|
|
336
|
+
using BinaryPropagator<View,PC_INT_BND>::x1;
|
|
337
|
+
|
|
338
|
+
/// Constructor for cloning \a p
|
|
339
|
+
Lq(Space* home, bool share, Lq& p);
|
|
340
|
+
/// Constructor for posting
|
|
341
|
+
Lq(Space* home, View x0, View x1);
|
|
342
|
+
public:
|
|
343
|
+
/// Copy propagator during cloning
|
|
344
|
+
virtual Actor* copy(Space* home, bool share);
|
|
345
|
+
/// Perform propagation
|
|
346
|
+
virtual ExecStatus propagate(Space* home);
|
|
347
|
+
/// Post propagator \f$x_0 \leq x_1\f$
|
|
348
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
349
|
+
};
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* \brief Less propagator
|
|
353
|
+
*
|
|
354
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
355
|
+
* \ingroup FuncIntProp
|
|
356
|
+
*/
|
|
357
|
+
|
|
358
|
+
template <class View>
|
|
359
|
+
class Le : public BinaryPropagator<View,PC_INT_BND> {
|
|
360
|
+
protected:
|
|
361
|
+
using BinaryPropagator<View,PC_INT_BND>::x0;
|
|
362
|
+
using BinaryPropagator<View,PC_INT_BND>::x1;
|
|
363
|
+
|
|
364
|
+
/// Constructor for cloning \a p
|
|
365
|
+
Le(Space* home, bool share, Le& p);
|
|
366
|
+
/// Constructor for posting
|
|
367
|
+
Le(Space* home, View x0, View x1);
|
|
368
|
+
public:
|
|
369
|
+
/// Copy propagator during cloning
|
|
370
|
+
virtual Actor* copy(Space* home, bool share);
|
|
371
|
+
/// Perform propagation
|
|
372
|
+
virtual ExecStatus propagate(Space* home);
|
|
373
|
+
/// Post propagator \f$x_0 \le x_1\f$
|
|
374
|
+
static ExecStatus post(Space* home, View x0, View x1);
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
/*
|
|
380
|
+
* Reified order propagators
|
|
381
|
+
*
|
|
382
|
+
*/
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* \brief Reified less or equal propagator
|
|
386
|
+
*
|
|
387
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
388
|
+
* \ingroup FuncIntProp
|
|
389
|
+
*/
|
|
390
|
+
|
|
391
|
+
template <class View, class CtrlView>
|
|
392
|
+
class ReLq : public ReBinaryPropagator<View,PC_INT_BND,CtrlView> {
|
|
393
|
+
protected:
|
|
394
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x0;
|
|
395
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::x1;
|
|
396
|
+
using ReBinaryPropagator<View,PC_INT_BND,CtrlView>::b;
|
|
397
|
+
|
|
398
|
+
/// Constructor for cloning \a p
|
|
399
|
+
ReLq(Space* home, bool share, ReLq& p);
|
|
400
|
+
/// Constructor for posting
|
|
401
|
+
ReLq(Space* home, View x0, View x1, CtrlView b);
|
|
402
|
+
public:
|
|
403
|
+
/// Copy propagator during cloning
|
|
404
|
+
virtual Actor* copy(Space* home, bool share);
|
|
405
|
+
/// Perform propagation
|
|
406
|
+
virtual ExecStatus propagate(Space* home);
|
|
407
|
+
/// Post propagator for \f$ (x_0 \leq x_1)\Leftrightarrow b\f$
|
|
408
|
+
static ExecStatus post(Space* home, View x0, View x1, CtrlView b);
|
|
409
|
+
};
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* \brief Reified less or equal with integer propagator
|
|
413
|
+
*
|
|
414
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
415
|
+
* \ingroup FuncIntProp
|
|
416
|
+
*/
|
|
417
|
+
|
|
418
|
+
template <class View, class CtrlView>
|
|
419
|
+
class ReLqInt : public ReUnaryPropagator<View,PC_INT_BND,CtrlView> {
|
|
420
|
+
protected:
|
|
421
|
+
using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::x0;
|
|
422
|
+
using ReUnaryPropagator<View,PC_INT_BND,CtrlView>::b;
|
|
423
|
+
|
|
424
|
+
/// Integer constant to check
|
|
425
|
+
int c;
|
|
426
|
+
/// Constructor for cloning \a p
|
|
427
|
+
ReLqInt(Space* home, bool share, ReLqInt& p);
|
|
428
|
+
/// Constructor for posting
|
|
429
|
+
ReLqInt(Space* home, View x, int c, CtrlView b);
|
|
430
|
+
public:
|
|
431
|
+
/// Copy propagator during cloning
|
|
432
|
+
virtual Actor* copy(Space* home, bool share);
|
|
433
|
+
/// Perform propagation
|
|
434
|
+
virtual ExecStatus propagate(Space* home);
|
|
435
|
+
/// Post propagator for \f$ (x \leq c)\Leftrightarrow b\f$
|
|
436
|
+
static ExecStatus post(Space* home, View x, int c, CtrlView b);
|
|
437
|
+
};
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* \brief Lexical ordering propagator
|
|
445
|
+
*
|
|
446
|
+
* The propagator uses the algorithm (and also the automaton)
|
|
447
|
+
* from:
|
|
448
|
+
* Mats Carlsson, Nicolas Beldiceanu, Revisiting the
|
|
449
|
+
* Lexicographic Ordering Constraint. SICS Technical
|
|
450
|
+
* Report T2002:17, SICS, Sweden, 2002.
|
|
451
|
+
*
|
|
452
|
+
* It deviates in the following two main aspects:
|
|
453
|
+
* - Assigned variables are eagerly eliminated
|
|
454
|
+
* This yields the same incremental behaviour with
|
|
455
|
+
* respect to states 1 and 2 of the automaton.
|
|
456
|
+
* With respect to the values of \a q and \a r in the report:
|
|
457
|
+
* - \a q is always 0 after elimination
|
|
458
|
+
* - \a r is always 1 after elimination
|
|
459
|
+
*
|
|
460
|
+
* - It is not incremental with respect to states 3 and 4
|
|
461
|
+
* as no propagation event information is available
|
|
462
|
+
*
|
|
463
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
464
|
+
* \ingroup FuncIntProp
|
|
465
|
+
*/
|
|
466
|
+
template <class View>
|
|
467
|
+
class Lex : public NaryPropagator<ViewTuple<View,2>,PC_INT_BND> {
|
|
468
|
+
protected:
|
|
469
|
+
using NaryPropagator<ViewTuple<View,2>,PC_INT_BND>::x;
|
|
470
|
+
|
|
471
|
+
/// Determines whether propagator is strict or not
|
|
472
|
+
bool strict;
|
|
473
|
+
/// Constructor for cloning \a p
|
|
474
|
+
Lex(Space* home, bool share, Lex& p);
|
|
475
|
+
/// Constructor for posting
|
|
476
|
+
Lex(Space* home, ViewArray<ViewTuple<View,2> >& xy, bool strict);
|
|
477
|
+
public:
|
|
478
|
+
/// Copy propagator during cloning
|
|
479
|
+
virtual Actor* copy(Space* home, bool share);
|
|
480
|
+
/// Perform propagation
|
|
481
|
+
virtual ExecStatus propagate(Space* home);
|
|
482
|
+
/// Post propagator for lexical order on \a xy
|
|
483
|
+
static ExecStatus post(Space* home,
|
|
484
|
+
ViewArray<ViewTuple<View,2> >& xy, bool strict);
|
|
485
|
+
};
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* \brief %Propagator for n-ary disequlaity
|
|
490
|
+
*
|
|
491
|
+
* Requires \code #include "gecode/int/rel.hh" \endcode
|
|
492
|
+
* \ingroup FuncIntProp
|
|
493
|
+
*/
|
|
494
|
+
template<class View>
|
|
495
|
+
class NaryNq : public BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM> {
|
|
496
|
+
protected:
|
|
497
|
+
using BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM>::x0;
|
|
498
|
+
using BinaryPropagator<ViewTuple<View,2>,PC_INT_DOM>::x1;
|
|
499
|
+
/// Views not yet subscribed to
|
|
500
|
+
ViewArray<ViewTuple<View,2> > x;
|
|
501
|
+
/// Constructor for posting
|
|
502
|
+
NaryNq(Space* home, ViewArray<ViewTuple<View,2> >& x);
|
|
503
|
+
/// Constructor for cloning \a p
|
|
504
|
+
NaryNq(Space* home, bool share, NaryNq& p);
|
|
505
|
+
public:
|
|
506
|
+
/// Copy propagator during cloning
|
|
507
|
+
virtual Actor* copy(Space* home, bool share);
|
|
508
|
+
/// Perform propagation
|
|
509
|
+
virtual ExecStatus propagate(Space* home);
|
|
510
|
+
/// Post propagator for \f$\exists i\in\{0,\ldots,|x|-1\}:\;x_i\neq y_i\f$
|
|
511
|
+
static ExecStatus post(Space* home, ViewArray<ViewTuple<View,2> >& x);
|
|
512
|
+
};
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
}}}
|
|
516
|
+
|
|
517
|
+
#include "gecode/int/rel/eq.icc"
|
|
518
|
+
#include "gecode/int/rel/nq.icc"
|
|
519
|
+
#include "gecode/int/rel/lq-le.icc"
|
|
520
|
+
#include "gecode/int/rel/lex.icc"
|
|
521
|
+
|
|
522
|
+
#endif
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
// STATISTICS: int-prop
|
|
526
|
+
|