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,264 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2002
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-08-24 11:25:05 +0200 (Thu, 24 Aug 2006) $ by $Author: schulte $
|
|
10
|
+
* $Revision: 3559 $
|
|
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 {
|
|
23
|
+
|
|
24
|
+
namespace Int { namespace Linear {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* \brief No view serves as filler for empty view arrays
|
|
28
|
+
*
|
|
29
|
+
*/
|
|
30
|
+
class NoView : public ConstantViewBase {
|
|
31
|
+
public:
|
|
32
|
+
/// \name Constructors and initialization
|
|
33
|
+
//@{
|
|
34
|
+
/// Default constructor
|
|
35
|
+
NoView(void) {}
|
|
36
|
+
/// Initialize
|
|
37
|
+
void init(void) {}
|
|
38
|
+
//@}
|
|
39
|
+
|
|
40
|
+
/// \name Value access
|
|
41
|
+
//@{
|
|
42
|
+
/// Return minimum of domain
|
|
43
|
+
int min(void) const { return 0; }
|
|
44
|
+
/// Return maximum of domain
|
|
45
|
+
int max(void) const { return 0; }
|
|
46
|
+
/// Return median of domain
|
|
47
|
+
int med(void) const { return 0; }
|
|
48
|
+
/// Return assigned value (only if assigned)
|
|
49
|
+
int val(void) const { return 0; }
|
|
50
|
+
|
|
51
|
+
/// Return size (cardinality) of domain
|
|
52
|
+
unsigned int size(void) const { return 1; }
|
|
53
|
+
/// Return width of domain (distance between maximum and minimum)
|
|
54
|
+
unsigned int width(void) const { return 1; }
|
|
55
|
+
/// Return regret of domain minimum (distance to next larger value)
|
|
56
|
+
unsigned int regret_min(void) const { return 0; }
|
|
57
|
+
/// Return regret of domain maximum (distance to next smaller value)
|
|
58
|
+
unsigned int regret_max(void) const { return 0; }
|
|
59
|
+
//@}
|
|
60
|
+
|
|
61
|
+
/// \name Domain tests
|
|
62
|
+
//@{
|
|
63
|
+
/// Test whether domain is a range
|
|
64
|
+
bool range(void) const { return true; }
|
|
65
|
+
/// Test whether view is assigned
|
|
66
|
+
bool assigned(void) const { return true; }
|
|
67
|
+
|
|
68
|
+
/// Test whether \a n is contained in domain
|
|
69
|
+
bool in(int n) const { return false; }
|
|
70
|
+
/// Test whether \a n is contained in domain
|
|
71
|
+
bool in(double n) const { return false; }
|
|
72
|
+
//@}
|
|
73
|
+
|
|
74
|
+
/// \name Domain update by value
|
|
75
|
+
//@{
|
|
76
|
+
/// Restrict domain values to be less or equal than \a n
|
|
77
|
+
ModEvent lq(Space* home, int n) { return ME_INT_NONE; }
|
|
78
|
+
/// Restrict domain values to be less or equal than \a n
|
|
79
|
+
ModEvent lq(Space* home, double n) { return ME_INT_NONE; }
|
|
80
|
+
/// Restrict domain values to be less than \a n
|
|
81
|
+
ModEvent le(Space* home, int n) { return ME_INT_NONE; }
|
|
82
|
+
/// Restrict domain values to be less than \a n
|
|
83
|
+
ModEvent le(Space* home, double n) { return ME_INT_NONE; }
|
|
84
|
+
/// Restrict domain values to be greater or equal than \a n
|
|
85
|
+
ModEvent gq(Space* home, int n) { return ME_INT_NONE; }
|
|
86
|
+
/// Restrict domain values to be greater or equal than \a n
|
|
87
|
+
ModEvent gq(Space* home, double n) { return ME_INT_NONE; }
|
|
88
|
+
/// Restrict domain values to be greater than \a n
|
|
89
|
+
ModEvent gr(Space* home, int n) { return ME_INT_NONE; }
|
|
90
|
+
/// Restrict domain values to be greater than \a n
|
|
91
|
+
ModEvent gr(Space* home, double n) { return ME_INT_NONE; }
|
|
92
|
+
/// Restrict domain values to be different from \a n
|
|
93
|
+
ModEvent nq(Space* home, int n) { return ME_INT_NONE; }
|
|
94
|
+
/// Restrict domain values to be different from \a n
|
|
95
|
+
ModEvent nq(Space* home, double n) { return ME_INT_NONE; }
|
|
96
|
+
/// Restrict domain values to be equal to \a n
|
|
97
|
+
ModEvent eq(Space* home, int n) { return ME_INT_NONE; }
|
|
98
|
+
/// Restrict domain values to be equal to \a n
|
|
99
|
+
ModEvent eq(Space* home, double n) { return ME_INT_NONE; }
|
|
100
|
+
//@}
|
|
101
|
+
|
|
102
|
+
/// \name Propagator modification events
|
|
103
|
+
//@{
|
|
104
|
+
/// Return modification event of propagator \a p for view
|
|
105
|
+
static ModEvent pme(const Propagator* p) { return ME_INT_NONE; }
|
|
106
|
+
/// Translate modification event \a me to propagator modification event for view
|
|
107
|
+
static PropModEvent pme(ModEvent me) { return ME_INT_NONE; }
|
|
108
|
+
//@}
|
|
109
|
+
|
|
110
|
+
/// \name Dependencies
|
|
111
|
+
//@{
|
|
112
|
+
/// Subscribe propagator \a p with propagation condition \a pc to view
|
|
113
|
+
void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true) {}
|
|
114
|
+
/// Cancel subscription of propagator \a p with propagation condition \a pc to view
|
|
115
|
+
void cancel(Space* home, Propagator* p, PropCond pc) {}
|
|
116
|
+
//@}
|
|
117
|
+
|
|
118
|
+
/// \name Cloning
|
|
119
|
+
//@{
|
|
120
|
+
/// Update this view to be a clone of view \a x
|
|
121
|
+
void update(Space* home, bool share, NoView& x) {}
|
|
122
|
+
//@}
|
|
123
|
+
|
|
124
|
+
/// \name View comparison
|
|
125
|
+
//@{
|
|
126
|
+
/// Test whether this view is the same as \a x
|
|
127
|
+
bool operator ==(const NoView& x) const { return true; }
|
|
128
|
+
/// Test whether this view is not the same as \a x
|
|
129
|
+
bool operator !=(const NoView& x) const { return false; }
|
|
130
|
+
/// Test whether this view is smaller than \a x (arbitrary order)
|
|
131
|
+
bool operator < (const NoView& x) const { return false; }
|
|
132
|
+
/// Test whether this view is larger than \a x (arbitrary order)
|
|
133
|
+
bool operator > (const NoView& x) const { return false; }
|
|
134
|
+
//@}
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
}}
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* \brief View array for no view (empty)
|
|
142
|
+
*
|
|
143
|
+
*/
|
|
144
|
+
template <>
|
|
145
|
+
class ViewArray<Int::Linear::NoView> {
|
|
146
|
+
public:
|
|
147
|
+
/// \name Constructors and initialization
|
|
148
|
+
//@{
|
|
149
|
+
/// Default constructor (array of size 0)
|
|
150
|
+
ViewArray(void) {}
|
|
151
|
+
/// Allocate array with \a m variables
|
|
152
|
+
ViewArray(Space* home, int m) {}
|
|
153
|
+
/// Initialize
|
|
154
|
+
ViewArray(const ViewArray<Int::Linear::NoView>&) {}
|
|
155
|
+
/// Initialize
|
|
156
|
+
ViewArray(Space*, const ViewArray<Int::Linear::NoView>&) {}
|
|
157
|
+
/// Initialize
|
|
158
|
+
const ViewArray<Int::Linear::NoView>& operator=(const ViewArray<Int::Linear::NoView>&) { return *this; }
|
|
159
|
+
//@}
|
|
160
|
+
|
|
161
|
+
/// \name Array size
|
|
162
|
+
//@{
|
|
163
|
+
/// Return size of array (number of elements)
|
|
164
|
+
int size(void) const { return 0; }
|
|
165
|
+
/// Decrease size of array (number of elements)
|
|
166
|
+
void size(int n) {}
|
|
167
|
+
//@}
|
|
168
|
+
|
|
169
|
+
/// \name Array elements
|
|
170
|
+
//@{
|
|
171
|
+
/// Return view at position \a i
|
|
172
|
+
Int::Linear::NoView operator[](int i) { Int::Linear::NoView n; return n; }
|
|
173
|
+
//@}
|
|
174
|
+
|
|
175
|
+
/// \name Dependencies
|
|
176
|
+
//@{
|
|
177
|
+
/// Subscribe propagator \a p with propagation condition \a pc to all views
|
|
178
|
+
void subscribe(Space*, Propagator* p, PropCond pc, bool process=true) {}
|
|
179
|
+
/// Cancel subscription of propagator \a p with propagation condition \a pc to all views
|
|
180
|
+
void cancel(Space* home, Propagator* p, PropCond pc) {}
|
|
181
|
+
//@}
|
|
182
|
+
|
|
183
|
+
/// \name Cloning
|
|
184
|
+
//@{
|
|
185
|
+
/**
|
|
186
|
+
* \brief Update array to be a clone of array \a a
|
|
187
|
+
*
|
|
188
|
+
* If \a share is true, sharing is retained for all shared
|
|
189
|
+
* data structures. Otherwise, for each of them an independent
|
|
190
|
+
* copy is created.
|
|
191
|
+
*/
|
|
192
|
+
void update(Space*, bool share, ViewArray<Int::Linear::NoView>& a) {}
|
|
193
|
+
//@}
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
/// \name Moving elements
|
|
197
|
+
//@{
|
|
198
|
+
/// Move assigned view from position 0 to position \a i (shift elements to the left)
|
|
199
|
+
void move_fst(int i) {}
|
|
200
|
+
/// Move assigned view from position \c size()-1 to position \a i (truncate array by one)
|
|
201
|
+
void move_lst(int i) {}
|
|
202
|
+
/** \brief Move view from position 0 to position \a i (shift elements to the left)
|
|
203
|
+
*
|
|
204
|
+
* Before moving, cancel subscription of propagator \a p with
|
|
205
|
+
* propagation condition \a pc to view at position \a i.
|
|
206
|
+
*/
|
|
207
|
+
void move_fst(int i, Propagator* p, PropCond pc) {}
|
|
208
|
+
/** \brief Move view from position \c size()-1 to position \a i (truncate array by one)
|
|
209
|
+
*
|
|
210
|
+
* Before moving, cancel subscription of propagator \a p with
|
|
211
|
+
* propagation condition \a pc to view at position \a i.
|
|
212
|
+
*/
|
|
213
|
+
void move_lst(int i, Propagator* p, PropCond pc) {}
|
|
214
|
+
//@}
|
|
215
|
+
|
|
216
|
+
/// \name Dropping elements
|
|
217
|
+
//@{
|
|
218
|
+
/// Drop assigned views from positions 0 to \a i-1 from array
|
|
219
|
+
void drop_fst(int i);
|
|
220
|
+
/// Drop assigned views from positions \a i+1 to \c size()-1 from array
|
|
221
|
+
void drop_lst(int i);
|
|
222
|
+
/** \brief Drop views from positions 0 to \a i-1 from array
|
|
223
|
+
*
|
|
224
|
+
* Before moving, cancel subscription of propagator \a p with
|
|
225
|
+
* propagation condition \a pc to views at positions 0 to \a i-1.
|
|
226
|
+
*/
|
|
227
|
+
void drop_fst(int i, Propagator* p, PropCond pc) {}
|
|
228
|
+
/** \brief Drop assigned views from positions \a i+1 to \c size()-1 from array
|
|
229
|
+
*
|
|
230
|
+
* Before moving, cancel subscription of propagator \a p with
|
|
231
|
+
* propagation condition \a pc to views at positions \a i+1 to
|
|
232
|
+
* \c size()-1.
|
|
233
|
+
*/
|
|
234
|
+
void drop_lst(int i, Propagator* p, PropCond pc) {}
|
|
235
|
+
//@}
|
|
236
|
+
|
|
237
|
+
/// \name View equality
|
|
238
|
+
//@{
|
|
239
|
+
/// Test whether array has equal views
|
|
240
|
+
bool equal(void) const { return false; }
|
|
241
|
+
/// Test whether array contains view equal to \a y
|
|
242
|
+
bool equal(const Int::Linear::NoView& y) const {return false; }
|
|
243
|
+
/// Remove all duplicate views from array (changes element order)
|
|
244
|
+
void unique(void) {}
|
|
245
|
+
//@}
|
|
246
|
+
|
|
247
|
+
/// \name View sharing
|
|
248
|
+
//@{
|
|
249
|
+
/// Test whether array has shared views
|
|
250
|
+
bool shared(void) const { return false; }
|
|
251
|
+
/// Test whether array contains view shared with \a y
|
|
252
|
+
bool shared(const Int::Linear::NoView& y) const { return false; }
|
|
253
|
+
//@}
|
|
254
|
+
|
|
255
|
+
private:
|
|
256
|
+
static void* operator new(size_t);
|
|
257
|
+
static void operator delete(void*,size_t);
|
|
258
|
+
};
|
|
259
|
+
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
// STATISTICS: int-prop
|
|
264
|
+
|
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2002
|
|
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/rel.hh"
|
|
23
|
+
#include "gecode/int/linear.hh"
|
|
24
|
+
|
|
25
|
+
#include "gecode/support/sort.hh"
|
|
26
|
+
|
|
27
|
+
#include <climits>
|
|
28
|
+
#include <algorithm>
|
|
29
|
+
|
|
30
|
+
namespace Gecode { namespace Int { namespace Linear {
|
|
31
|
+
|
|
32
|
+
/// Sort linear terms by view
|
|
33
|
+
class TermLess {
|
|
34
|
+
public:
|
|
35
|
+
forceinline bool
|
|
36
|
+
operator()(const Term& a, const Term& b) {
|
|
37
|
+
return before(a.x,b.x);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
bool
|
|
42
|
+
preprocess(Term e[], int& n, IntRelType& r, int& c, int& n_p, int& n_n) {
|
|
43
|
+
if ((c < Limits::Int::int_min) || (c > Limits::Int::int_max))
|
|
44
|
+
throw NumericalOverflow("Int::linear");
|
|
45
|
+
/*
|
|
46
|
+
* Join coefficients for aliased variables:
|
|
47
|
+
*/
|
|
48
|
+
{
|
|
49
|
+
// Group same variables
|
|
50
|
+
TermLess el;
|
|
51
|
+
Support::quicksort<Term,TermLess>(e,n,el);
|
|
52
|
+
|
|
53
|
+
// Join adjacent variables
|
|
54
|
+
int i = 0;
|
|
55
|
+
int j = 0;
|
|
56
|
+
while (i < n) {
|
|
57
|
+
int a = e[i].a;
|
|
58
|
+
if ((a < Limits::Int::int_min) || (a > Limits::Int::int_max))
|
|
59
|
+
throw NumericalOverflow("Int::linear");
|
|
60
|
+
IntView x = e[i].x;
|
|
61
|
+
while ((++i < n) && same(e[i].x,x)) {
|
|
62
|
+
a += e[i].a;
|
|
63
|
+
if ((a < Limits::Int::int_min) || (a > Limits::Int::int_max))
|
|
64
|
+
throw NumericalOverflow("Int::linear");
|
|
65
|
+
}
|
|
66
|
+
if (a != 0) {
|
|
67
|
+
e[j].a = a; e[j].x = x; j++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
n = j;
|
|
71
|
+
}
|
|
72
|
+
/*
|
|
73
|
+
* All inequations in terms of <=
|
|
74
|
+
*/
|
|
75
|
+
switch (r) {
|
|
76
|
+
case IRT_EQ: case IRT_NQ: case IRT_LQ:
|
|
77
|
+
break;
|
|
78
|
+
case IRT_LE:
|
|
79
|
+
c--; r = IRT_LQ; break;
|
|
80
|
+
case IRT_GR:
|
|
81
|
+
c++; /* fall through */
|
|
82
|
+
case IRT_GQ:
|
|
83
|
+
r = IRT_LQ;
|
|
84
|
+
for (int i = n; i--; )
|
|
85
|
+
e[i].a = -e[i].a;
|
|
86
|
+
c = -c;
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
throw UnknownRelation("Int::linear");
|
|
90
|
+
}
|
|
91
|
+
/*
|
|
92
|
+
* Partition into positive/negative coefficents
|
|
93
|
+
*/
|
|
94
|
+
{
|
|
95
|
+
int i = 0;
|
|
96
|
+
int j = n-1;
|
|
97
|
+
while (true) {
|
|
98
|
+
while ((e[j].a < 0) && (--j >= 0)) ;
|
|
99
|
+
while ((e[i].a > 0) && (++i < n)) ;
|
|
100
|
+
if (j <= i) break;
|
|
101
|
+
std::swap(e[i],e[j]);
|
|
102
|
+
}
|
|
103
|
+
n_p = i;
|
|
104
|
+
n_n = n-n_p;
|
|
105
|
+
}
|
|
106
|
+
for (int i = n; i--; )
|
|
107
|
+
if ((e[i].a != 1) && (e[i].a != -1))
|
|
108
|
+
return false;
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
bool
|
|
113
|
+
int_precision(Term e[], int n, int c) {
|
|
114
|
+
// Decide the required precision
|
|
115
|
+
double sn = 0.0; double sp = 0.0;
|
|
116
|
+
|
|
117
|
+
for (int i = n; i--; ) {
|
|
118
|
+
const double l = e[i].a * static_cast<double>(e[i].x.min());
|
|
119
|
+
if (l < 0.0) sn += l; else sp += l;
|
|
120
|
+
const double u = e[i].a * static_cast<double>(e[i].x.max());
|
|
121
|
+
if (u < 0.0) sn += u; else sp += u;
|
|
122
|
+
}
|
|
123
|
+
double cp = (c<0) ? -c : c;
|
|
124
|
+
if ((sn-cp < Limits::Int::double_min) ||
|
|
125
|
+
(sp+cp > Limits::Int::double_max))
|
|
126
|
+
throw NumericalOverflow("Int::linear");
|
|
127
|
+
|
|
128
|
+
return ((sn >= Limits::Int::int_min) && (sn <= Limits::Int::int_max) &&
|
|
129
|
+
(sp >= Limits::Int::int_min) && (sp <= Limits::Int::int_max) &&
|
|
130
|
+
(sn-c >= Limits::Int::int_min) && (sn-c <= Limits::Int::int_max) &&
|
|
131
|
+
(sp-c >= Limits::Int::int_min) && (sp-c <= Limits::Int::int_max));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/*
|
|
135
|
+
* Posting plain propagators
|
|
136
|
+
*
|
|
137
|
+
*/
|
|
138
|
+
|
|
139
|
+
template <class Val, class View>
|
|
140
|
+
forceinline void
|
|
141
|
+
post_nary(Space* home,
|
|
142
|
+
ViewArray<View>& x, ViewArray<View>& y, IntRelType r, Val c) {
|
|
143
|
+
switch (r) {
|
|
144
|
+
case IRT_LQ:
|
|
145
|
+
if (Lq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
|
|
146
|
+
home->fail();
|
|
147
|
+
break;
|
|
148
|
+
case IRT_EQ:
|
|
149
|
+
if (Eq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
|
|
150
|
+
home->fail();
|
|
151
|
+
break;
|
|
152
|
+
case IRT_NQ:
|
|
153
|
+
if (Nq<Val,View,View >::post(home,x,y,c) == ES_FAILED)
|
|
154
|
+
home->fail();
|
|
155
|
+
break;
|
|
156
|
+
default: GECODE_NEVER;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
void
|
|
161
|
+
post(Space* home, Term e[], int n, IntRelType r, int c,
|
|
162
|
+
IntConLevel icl) {
|
|
163
|
+
int n_p, n_n;
|
|
164
|
+
bool is_unit = preprocess(e,n,r,c,n_p,n_n);
|
|
165
|
+
if (n == 0) {
|
|
166
|
+
switch (r) {
|
|
167
|
+
case IRT_EQ: if (c != 0) home->fail(); break;
|
|
168
|
+
case IRT_NQ: if (c == 0) home->fail(); break;
|
|
169
|
+
case IRT_LQ: if (0 > c) home->fail(); break;
|
|
170
|
+
default: GECODE_NEVER;
|
|
171
|
+
}
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (n == 1) {
|
|
175
|
+
if (e[0].a > 0) {
|
|
176
|
+
DoubleScaleView y(e[0].a,e[0].x);
|
|
177
|
+
switch (r) {
|
|
178
|
+
case IRT_EQ: GECODE_ME_FAIL(home,y.eq(home,c)); break;
|
|
179
|
+
case IRT_NQ: GECODE_ME_FAIL(home,y.nq(home,c)); break;
|
|
180
|
+
case IRT_LQ: GECODE_ME_FAIL(home,y.lq(home,c)); break;
|
|
181
|
+
default: GECODE_NEVER;
|
|
182
|
+
}
|
|
183
|
+
} else {
|
|
184
|
+
DoubleScaleView y(-e[0].a,e[0].x);
|
|
185
|
+
switch (r) {
|
|
186
|
+
case IRT_EQ: GECODE_ME_FAIL(home,y.eq(home,-c)); break;
|
|
187
|
+
case IRT_NQ: GECODE_ME_FAIL(home,y.nq(home,-c)); break;
|
|
188
|
+
case IRT_LQ: GECODE_ME_FAIL(home,y.gq(home,-c)); break;
|
|
189
|
+
default: GECODE_NEVER;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
bool is_ip = int_precision(e,n,c);
|
|
195
|
+
if (is_unit && is_ip && (icl != ICL_DOM)) {
|
|
196
|
+
if (n == 2) {
|
|
197
|
+
switch (r) {
|
|
198
|
+
case IRT_LQ:
|
|
199
|
+
switch (n_p) {
|
|
200
|
+
case 2:
|
|
201
|
+
if (LqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
|
|
202
|
+
== ES_FAILED) home->fail();
|
|
203
|
+
break;
|
|
204
|
+
case 1:
|
|
205
|
+
if (LqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
|
|
206
|
+
== ES_FAILED) home->fail();
|
|
207
|
+
break;
|
|
208
|
+
case 0:
|
|
209
|
+
if (LqBin<int,MinusView,MinusView>::post(home,e[0].x,e[1].x,c)
|
|
210
|
+
== ES_FAILED) home->fail();
|
|
211
|
+
break;
|
|
212
|
+
default: GECODE_NEVER;
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
case IRT_EQ:
|
|
216
|
+
switch (n_p) {
|
|
217
|
+
case 2:
|
|
218
|
+
if (EqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
|
|
219
|
+
== ES_FAILED) home->fail();
|
|
220
|
+
break;
|
|
221
|
+
case 1:
|
|
222
|
+
if (EqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
|
|
223
|
+
== ES_FAILED) home->fail();
|
|
224
|
+
break;
|
|
225
|
+
case 0:
|
|
226
|
+
if (EqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,-c)
|
|
227
|
+
== ES_FAILED) home->fail();
|
|
228
|
+
break;
|
|
229
|
+
default: GECODE_NEVER;
|
|
230
|
+
}
|
|
231
|
+
break;
|
|
232
|
+
case IRT_NQ:
|
|
233
|
+
switch (n_p) {
|
|
234
|
+
case 2:
|
|
235
|
+
if (NqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c)
|
|
236
|
+
== ES_FAILED) home->fail();
|
|
237
|
+
break;
|
|
238
|
+
case 1:
|
|
239
|
+
if (NqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c)
|
|
240
|
+
== ES_FAILED) home->fail();
|
|
241
|
+
break;
|
|
242
|
+
case 0:
|
|
243
|
+
if (NqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,-c)
|
|
244
|
+
== ES_FAILED) home->fail();
|
|
245
|
+
break;
|
|
246
|
+
default: GECODE_NEVER;
|
|
247
|
+
}
|
|
248
|
+
break;
|
|
249
|
+
default: GECODE_NEVER;
|
|
250
|
+
}
|
|
251
|
+
} else if (n == 3) {
|
|
252
|
+
switch (r) {
|
|
253
|
+
case IRT_LQ:
|
|
254
|
+
switch (n_p) {
|
|
255
|
+
case 3:
|
|
256
|
+
if (LqTer<int,IntView,IntView,IntView>::post
|
|
257
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
258
|
+
break;
|
|
259
|
+
case 2:
|
|
260
|
+
if (LqTer<int,IntView,IntView,MinusView>::post
|
|
261
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
262
|
+
break;
|
|
263
|
+
case 1:
|
|
264
|
+
if (LqTer<int,IntView,MinusView,MinusView>::post
|
|
265
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
266
|
+
break;
|
|
267
|
+
case 0:
|
|
268
|
+
if (LqTer<int,MinusView,MinusView,MinusView>::post
|
|
269
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
270
|
+
break;
|
|
271
|
+
default: GECODE_NEVER;
|
|
272
|
+
}
|
|
273
|
+
break;
|
|
274
|
+
case IRT_EQ:
|
|
275
|
+
switch (n_p) {
|
|
276
|
+
case 3:
|
|
277
|
+
if (EqTer<int,IntView,IntView,IntView>::post
|
|
278
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
279
|
+
break;
|
|
280
|
+
case 2:
|
|
281
|
+
if (EqTer<int,IntView,IntView,MinusView>::post
|
|
282
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
283
|
+
break;
|
|
284
|
+
case 1:
|
|
285
|
+
if (EqTer<int,IntView,IntView,MinusView>::post
|
|
286
|
+
(home,e[1].x,e[2].x,e[0].x,-c) == ES_FAILED) home->fail();
|
|
287
|
+
break;
|
|
288
|
+
case 0:
|
|
289
|
+
if (EqTer<int,IntView,IntView,IntView>::post
|
|
290
|
+
(home,e[0].x,e[1].x,e[2].x,-c) == ES_FAILED) home->fail();
|
|
291
|
+
break;
|
|
292
|
+
default: GECODE_NEVER;
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
case IRT_NQ:
|
|
296
|
+
switch (n_p) {
|
|
297
|
+
case 3:
|
|
298
|
+
if (NqTer<int,IntView,IntView,IntView>::post
|
|
299
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
300
|
+
break;
|
|
301
|
+
case 2:
|
|
302
|
+
if (NqTer<int,IntView,IntView,MinusView>::post
|
|
303
|
+
(home,e[0].x,e[1].x,e[2].x,c) == ES_FAILED) home->fail();
|
|
304
|
+
break;
|
|
305
|
+
case 1:
|
|
306
|
+
if (NqTer<int,IntView,IntView,MinusView>::post
|
|
307
|
+
(home,e[1].x,e[2].x,e[0].x,-c) == ES_FAILED) home->fail();
|
|
308
|
+
break;
|
|
309
|
+
case 0:
|
|
310
|
+
if (NqTer<int,IntView,IntView,IntView>::post
|
|
311
|
+
(home,e[0].x,e[1].x,e[2].x,-c) == ES_FAILED) home->fail();
|
|
312
|
+
break;
|
|
313
|
+
default: GECODE_NEVER;
|
|
314
|
+
}
|
|
315
|
+
break;
|
|
316
|
+
default: GECODE_NEVER;
|
|
317
|
+
}
|
|
318
|
+
} else {
|
|
319
|
+
ViewArray<IntView> x(home,n_p);
|
|
320
|
+
for (int i = n_p; i--; ) x[i] = e[i].x;
|
|
321
|
+
ViewArray<IntView> y(home,n_n);
|
|
322
|
+
for (int i = n_n; i--; ) y[i] = e[i+n_p].x;
|
|
323
|
+
post_nary<int,IntView>(home,x,y,r,c);
|
|
324
|
+
}
|
|
325
|
+
} else {
|
|
326
|
+
if (is_ip) {
|
|
327
|
+
ViewArray<IntScaleView> x(home,n_p);
|
|
328
|
+
for (int i = n_p; i--; )
|
|
329
|
+
x[i].init(e[i].a,e[i].x);
|
|
330
|
+
ViewArray<IntScaleView> y(home,n_n);
|
|
331
|
+
for (int i = n_n; i--; )
|
|
332
|
+
y[i].init(-e[i+n_p].a,e[i+n_p].x);
|
|
333
|
+
if ((icl == ICL_DOM) && (r == IRT_EQ)) {
|
|
334
|
+
if (DomEq<int,IntScaleView>::post(home,x,y,c) == ES_FAILED)
|
|
335
|
+
home->fail();
|
|
336
|
+
} else {
|
|
337
|
+
post_nary<int,IntScaleView>(home,x,y,r,c);
|
|
338
|
+
}
|
|
339
|
+
} else {
|
|
340
|
+
ViewArray<DoubleScaleView> x(home,n_p);
|
|
341
|
+
for (int i = n_p; i--; )
|
|
342
|
+
x[i].init(e[i].a,e[i].x);
|
|
343
|
+
ViewArray<DoubleScaleView> y(home,n_n);
|
|
344
|
+
for (int i = n_n; i--; )
|
|
345
|
+
y[i].init(-e[i+n_p].a,e[i+n_p].x);
|
|
346
|
+
if ((icl == ICL_DOM) && (r == IRT_EQ)) {
|
|
347
|
+
if (DomEq<double,DoubleScaleView>::post(home,x,y,c) == ES_FAILED)
|
|
348
|
+
home->fail();
|
|
349
|
+
} else {
|
|
350
|
+
post_nary<double,DoubleScaleView>(home,x,y,r,c);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
|
|
357
|
+
|
|
358
|
+
/*
|
|
359
|
+
* Posting reified propagators
|
|
360
|
+
*
|
|
361
|
+
*/
|
|
362
|
+
|
|
363
|
+
template <class Val, class View>
|
|
364
|
+
forceinline void
|
|
365
|
+
post_nary(Space* home,
|
|
366
|
+
ViewArray<View>& x, ViewArray<View>& y, IntRelType r, Val c, BoolView b) {
|
|
367
|
+
switch (r) {
|
|
368
|
+
case IRT_LQ:
|
|
369
|
+
if (ReLq<Val,View,View>::post(home,x,y,c,b) == ES_FAILED)
|
|
370
|
+
home->fail();
|
|
371
|
+
break;
|
|
372
|
+
case IRT_EQ:
|
|
373
|
+
if (ReEq<Val,View,View,BoolView>::post(home,x,y,c,b) == ES_FAILED)
|
|
374
|
+
home->fail();
|
|
375
|
+
break;
|
|
376
|
+
case IRT_NQ:
|
|
377
|
+
{
|
|
378
|
+
NegBoolView n(b);
|
|
379
|
+
if (ReEq<Val,View,View,NegBoolView>::post(home,x,y,c,n) == ES_FAILED)
|
|
380
|
+
home->fail();
|
|
381
|
+
}
|
|
382
|
+
break;
|
|
383
|
+
default: GECODE_NEVER;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
void
|
|
388
|
+
post(Space* home,
|
|
389
|
+
Term e[], int n, IntRelType r, int c, BoolView b) {
|
|
390
|
+
int n_p, n_n;
|
|
391
|
+
bool is_unit = preprocess(e,n,r,c,n_p,n_n);
|
|
392
|
+
if (n == 0) {
|
|
393
|
+
bool fail = false;
|
|
394
|
+
switch (r) {
|
|
395
|
+
case IRT_EQ: fail = (c != 0); break;
|
|
396
|
+
case IRT_NQ: fail = (c == 0); break;
|
|
397
|
+
case IRT_LQ: fail = (0 > c); break;
|
|
398
|
+
default: GECODE_NEVER;
|
|
399
|
+
}
|
|
400
|
+
if ((fail ? b.t_zero(home) : b.t_one(home)) == ME_INT_FAILED)
|
|
401
|
+
home->fail();
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
bool is_ip = int_precision(e,n,c);
|
|
405
|
+
if (is_unit && is_ip) {
|
|
406
|
+
if (n == 1) {
|
|
407
|
+
switch (r) {
|
|
408
|
+
case IRT_EQ:
|
|
409
|
+
if (e[0].a == 1) {
|
|
410
|
+
if (Rel::ReEqBndInt<IntView,BoolView>::post(home,e[0].x,c,b)
|
|
411
|
+
== ES_FAILED)
|
|
412
|
+
home->fail();
|
|
413
|
+
} else {
|
|
414
|
+
if (Rel::ReEqBndInt<IntView,BoolView>::post(home,e[0].x,-c,b)
|
|
415
|
+
== ES_FAILED)
|
|
416
|
+
home->fail();
|
|
417
|
+
}
|
|
418
|
+
break;
|
|
419
|
+
case IRT_NQ:
|
|
420
|
+
{
|
|
421
|
+
NegBoolView n(b);
|
|
422
|
+
if (e[0].a == 1) {
|
|
423
|
+
if (Rel::ReEqBndInt<IntView,NegBoolView>::post(home,e[0].x,c,n)
|
|
424
|
+
== ES_FAILED)
|
|
425
|
+
home->fail();
|
|
426
|
+
} else {
|
|
427
|
+
if (Rel::ReEqBndInt<IntView,NegBoolView>::post(home,e[0].x,-c,n)
|
|
428
|
+
== ES_FAILED)
|
|
429
|
+
home->fail();
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
break;
|
|
433
|
+
case IRT_LQ:
|
|
434
|
+
if (e[0].a == 1) {
|
|
435
|
+
if (Rel::ReLqInt<IntView,BoolView>::post(home,e[0].x,c,b)
|
|
436
|
+
== ES_FAILED)
|
|
437
|
+
home->fail();
|
|
438
|
+
} else {
|
|
439
|
+
NegBoolView n(b);
|
|
440
|
+
if (Rel::ReLqInt<IntView,NegBoolView>::post(home,e[0].x,-c-1,n)
|
|
441
|
+
== ES_FAILED)
|
|
442
|
+
home->fail();
|
|
443
|
+
}
|
|
444
|
+
break;
|
|
445
|
+
default: GECODE_NEVER;
|
|
446
|
+
}
|
|
447
|
+
} else if (n == 2) {
|
|
448
|
+
switch (r) {
|
|
449
|
+
case IRT_LQ:
|
|
450
|
+
switch (n_p) {
|
|
451
|
+
case 2:
|
|
452
|
+
if (ReLqBin<int,IntView,IntView>::post(home,e[0].x,e[1].x,c,b)
|
|
453
|
+
== ES_FAILED) home->fail();
|
|
454
|
+
break;
|
|
455
|
+
case 1:
|
|
456
|
+
if (ReLqBin<int,IntView,MinusView>::post(home,e[0].x,e[1].x,c,b)
|
|
457
|
+
== ES_FAILED) home->fail();
|
|
458
|
+
break;
|
|
459
|
+
case 0:
|
|
460
|
+
if (ReLqBin<int,MinusView,MinusView>::post(home,e[0].x,e[1].x,c,b)
|
|
461
|
+
== ES_FAILED) home->fail();
|
|
462
|
+
break;
|
|
463
|
+
default: GECODE_NEVER;
|
|
464
|
+
}
|
|
465
|
+
break;
|
|
466
|
+
case IRT_EQ:
|
|
467
|
+
switch (n_p) {
|
|
468
|
+
case 2:
|
|
469
|
+
if (ReEqBin<int,IntView,IntView,BoolView>::post
|
|
470
|
+
(home,e[0].x,e[1].x,c,b)
|
|
471
|
+
== ES_FAILED) home->fail();
|
|
472
|
+
break;
|
|
473
|
+
case 1:
|
|
474
|
+
if (ReEqBin<int,IntView,MinusView,BoolView>::post
|
|
475
|
+
(home,e[0].x,e[1].x,c,b)
|
|
476
|
+
== ES_FAILED) home->fail();
|
|
477
|
+
break;
|
|
478
|
+
case 0:
|
|
479
|
+
if (ReEqBin<int,IntView,IntView,BoolView>::post
|
|
480
|
+
(home,e[0].x,e[1].x,-c,b)
|
|
481
|
+
== ES_FAILED) home->fail();
|
|
482
|
+
break;
|
|
483
|
+
default: GECODE_NEVER;
|
|
484
|
+
}
|
|
485
|
+
break;
|
|
486
|
+
case IRT_NQ:
|
|
487
|
+
{
|
|
488
|
+
NegBoolView n(b);
|
|
489
|
+
switch (n_p) {
|
|
490
|
+
case 2:
|
|
491
|
+
if (ReEqBin<int,IntView,IntView,NegBoolView>::post
|
|
492
|
+
(home,e[0].x,e[1].x,c,n)
|
|
493
|
+
== ES_FAILED) home->fail();
|
|
494
|
+
break;
|
|
495
|
+
case 1:
|
|
496
|
+
if (ReEqBin<int,IntView,MinusView,NegBoolView>::post
|
|
497
|
+
(home,e[0].x,e[1].x,c,b)
|
|
498
|
+
== ES_FAILED) home->fail();
|
|
499
|
+
break;
|
|
500
|
+
case 0:
|
|
501
|
+
if (ReEqBin<int,IntView,IntView,NegBoolView>::post
|
|
502
|
+
(home,e[0].x,e[1].x,-c,b)
|
|
503
|
+
== ES_FAILED) home->fail();
|
|
504
|
+
break;
|
|
505
|
+
default: GECODE_NEVER;
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
break;
|
|
509
|
+
default: GECODE_NEVER;
|
|
510
|
+
}
|
|
511
|
+
} else {
|
|
512
|
+
ViewArray<IntView> x(home,n_p);
|
|
513
|
+
for (int i = n_p; i--; ) x[i] = e[i].x;
|
|
514
|
+
ViewArray<IntView> y(home,n_n);
|
|
515
|
+
for (int i = n_n; i--; ) y[i] = e[i+n_p].x;
|
|
516
|
+
post_nary<int,IntView>(home,x,y,r,c,b);
|
|
517
|
+
}
|
|
518
|
+
} else {
|
|
519
|
+
if (is_ip) {
|
|
520
|
+
ViewArray<IntScaleView> x(home,n_p);
|
|
521
|
+
for (int i = n_p; i--; )
|
|
522
|
+
x[i].init(e[i].a,e[i].x);
|
|
523
|
+
ViewArray<IntScaleView> y(home,n_n);
|
|
524
|
+
for (int i = n_n; i--; )
|
|
525
|
+
y[i].init(-e[i+n_p].a,e[i+n_p].x);
|
|
526
|
+
post_nary<int,IntScaleView>(home,x,y,r,c,b);
|
|
527
|
+
} else {
|
|
528
|
+
ViewArray<DoubleScaleView> x(home,n_p);
|
|
529
|
+
for (int i = n_p; i--; )
|
|
530
|
+
x[i].init(e[i].a,e[i].x);
|
|
531
|
+
ViewArray<DoubleScaleView> y(home,n_n);
|
|
532
|
+
for (int i = n_n; i--; )
|
|
533
|
+
y[i].init(-e[i+n_p].a,e[i+n_p].x);
|
|
534
|
+
post_nary<double,DoubleScaleView>(home,x,y,r,c,b);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
|
|
539
|
+
}}}
|
|
540
|
+
|
|
541
|
+
// STATISTICS: int-post
|
|
542
|
+
|