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,346 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Zampelli St�phane <sz@info.ucl.ac.be>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Universit� catholique de Louvain, 2005
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date$
|
10
|
+
* $Revision$
|
11
|
+
*
|
12
|
+
* This file is part of CP(Map)
|
13
|
+
*
|
14
|
+
* See the file "LICENSE" for information on usage and
|
15
|
+
* redistribution of this file, and for a
|
16
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
17
|
+
*
|
18
|
+
*/
|
19
|
+
|
20
|
+
#include "int/count.hh" //for the count constraint
|
21
|
+
#include <iostream>
|
22
|
+
#include <map>
|
23
|
+
#include <vector>
|
24
|
+
|
25
|
+
/**
|
26
|
+
* \namespace Gecode::Map
|
27
|
+
* \brief Contains the MapVar declarations with propagator classes
|
28
|
+
*
|
29
|
+
*/
|
30
|
+
//@{
|
31
|
+
|
32
|
+
//#include "constraints.hh" //Declaration of FRIEND propagator functions in Gecode namespace
|
33
|
+
|
34
|
+
|
35
|
+
namespace Gecode { namespace Map {
|
36
|
+
|
37
|
+
/**
|
38
|
+
* \defgroup TaskActorMapMEPC Map modification events and propagation conditions
|
39
|
+
* \ingroup TaskActorMap
|
40
|
+
*/
|
41
|
+
|
42
|
+
//@{
|
43
|
+
|
44
|
+
/// Domain operation has resulted in failure
|
45
|
+
const ModEvent ME_MAP_FAILED = ME_GEN_FAILED;
|
46
|
+
/// Domain operation has not changed domain
|
47
|
+
const ModEvent ME_MAP_NONE = ME_GEN_NONE;
|
48
|
+
/// Domain operation has resulted in a value (assigned variable)
|
49
|
+
const ModEvent ME_MAP_VAL = ME_GEN_ASSIGNED;
|
50
|
+
|
51
|
+
|
52
|
+
/*ModEvents declaration*/
|
53
|
+
|
54
|
+
/**
|
55
|
+
* \brief Domain operation has changed the domain
|
56
|
+
*
|
57
|
+
* Note that this implies that the domain has not resulted in a value.
|
58
|
+
*/
|
59
|
+
const ModEvent ME_MAP_DOM = ME_MAP_VAL + 1;
|
60
|
+
/**
|
61
|
+
* \brief Domain operation has changed the codomain
|
62
|
+
*
|
63
|
+
* Note that this implies that the domain has not resulted in a value.
|
64
|
+
*/
|
65
|
+
const ModEvent ME_MAP_CODOM = ME_MAP_DOM + 1;
|
66
|
+
/**
|
67
|
+
* \brief Domain operation has changed both greatest domain and
|
68
|
+
* codomain
|
69
|
+
*
|
70
|
+
* Note that this implies that the domain has not resulted in a value.
|
71
|
+
*/
|
72
|
+
const ModEvent ME_MAP_ANY = ME_MAP_CODOM + 1;
|
73
|
+
|
74
|
+
/*Propagation conditions declaration*/
|
75
|
+
|
76
|
+
/**
|
77
|
+
* \brief Propagate when a view becomes assigned (single value)
|
78
|
+
*
|
79
|
+
* If a propagator \a p depends on a view \a x with propagation
|
80
|
+
* condition PC_MAP_VAL, then \a p is propagated when a domain
|
81
|
+
* update operation on \a x returns the modification event ME_MAP_VAL.
|
82
|
+
*/
|
83
|
+
const PropCond PC_MAP_VAL = PC_GEN_ASSIGNED;
|
84
|
+
/**
|
85
|
+
* \brief Propagate when the codomain changes
|
86
|
+
*
|
87
|
+
* If a propagator \a p depends on a view \a x with propagation
|
88
|
+
* condition PC_MAP_DOM, then \a p is propagated when a domain
|
89
|
+
* update operation on \a x returns the modification event ME_MAP_VAL,
|
90
|
+
* ME_MAP_DOM, ME_MAP_ANY
|
91
|
+
*/
|
92
|
+
const PropCond PC_MAP_DOM = PC_MAP_VAL + 1;
|
93
|
+
/**
|
94
|
+
* \brief Propagate when the codom changes
|
95
|
+
*
|
96
|
+
* If a propagator \a p depends on a view \a x with propagation
|
97
|
+
* condition PC_MAP_CODOM, then \a p is propagated when a domain
|
98
|
+
* update operation on \a x returns the modification event ME_MAP_VAL,
|
99
|
+
* ME_MAP_CODOM, ME_MAP_ANY
|
100
|
+
*/
|
101
|
+
const PropCond PC_MAP_CODOM = PC_MAP_DOM + 1;
|
102
|
+
/**
|
103
|
+
* \brief Propagate when the domain or/and the codomain changes
|
104
|
+
*
|
105
|
+
* If a propagator \a p depends on a view \a x with propagation
|
106
|
+
* condition PC_MAP_ANY, then \a p is propagated when a domain
|
107
|
+
* update operation on \a x returns any modification event but ME_MAP_FAILED
|
108
|
+
* and ME_MAP_NONE.
|
109
|
+
*/
|
110
|
+
const PropCond PC_MAP_ANY = PC_MAP_CODOM + 1;
|
111
|
+
//@}
|
112
|
+
}}
|
113
|
+
|
114
|
+
namespace Gecode { namespace Map {
|
115
|
+
class MapVar;
|
116
|
+
}}
|
117
|
+
|
118
|
+
namespace Gecode {void injective(Space *home, Gecode::Map::MapVar M);}
|
119
|
+
|
120
|
+
namespace Gecode { namespace Map {
|
121
|
+
|
122
|
+
/**
|
123
|
+
* \defgroup FIMV Finite Integer Map Variable
|
124
|
+
*
|
125
|
+
* This implementation uses an Array of IntView to represent the matching, together
|
126
|
+
* with one SetView for the domain and one SetView for the codomain.
|
127
|
+
*
|
128
|
+
* Reified propagators are posted to ensure coherence between the array and the Set variables.
|
129
|
+
*
|
130
|
+
*/
|
131
|
+
//@{
|
132
|
+
/**
|
133
|
+
* \brief Implementation of Finite Integer Map Variable
|
134
|
+
*
|
135
|
+
* This implementation uses an Array of IntView to represent the matching, together
|
136
|
+
* with one SetView for the domain and one SetView for the codomain.
|
137
|
+
*
|
138
|
+
* Reified propagators are posted to ensure coherence between the array and the Set variables.
|
139
|
+
*
|
140
|
+
*/
|
141
|
+
|
142
|
+
class MapVar
|
143
|
+
//: public Variable<VTI_MAP,PC_MAP_ANY>
|
144
|
+
{
|
145
|
+
public:
|
146
|
+
///Repesents the domain
|
147
|
+
Gecode::SetVar Domain;
|
148
|
+
///Represents the codomain
|
149
|
+
Gecode::SetVar Codomain;
|
150
|
+
///Represents the map
|
151
|
+
ViewArray<Gecode::Int::IntView> array;
|
152
|
+
///Size of the initial domain
|
153
|
+
int maxDomSize;
|
154
|
+
///Size of the initial codomain
|
155
|
+
int maxCodomSize;
|
156
|
+
///Stores the empty symbol for each IntVar (alldiff)
|
157
|
+
map < int, int > *e;
|
158
|
+
///Maps real domain values to technical \f$\{0,\ldots,n-1\}\f$ indexes
|
159
|
+
map < int,int > *index;
|
160
|
+
///Maps indexes to real domain values
|
161
|
+
map < int,int > *indexInv;
|
162
|
+
|
163
|
+
|
164
|
+
// /// Map variable processor for modified variables
|
165
|
+
// class Processor : public VarTypeProcessor<VTI_MAP,PC_MAP_ANY> {
|
166
|
+
// public:
|
167
|
+
// /// Initialize and register
|
168
|
+
// Processor(void);
|
169
|
+
// };
|
170
|
+
// /// The processor
|
171
|
+
// GECODE_MAP_EXPORT static Processor svp;
|
172
|
+
|
173
|
+
protected:
|
174
|
+
/// Constructor for cloning \a x
|
175
|
+
MapVar(Space* home, bool share, MapVar& x);
|
176
|
+
/// Destructor
|
177
|
+
//~MapVar();
|
178
|
+
public:
|
179
|
+
|
180
|
+
/// \name Constructors and initialization
|
181
|
+
//@{
|
182
|
+
MapVar(void);
|
183
|
+
|
184
|
+
// Initialize with empty lower and full upper bound
|
185
|
+
// MapVar(Space* home);
|
186
|
+
/// Initialize with a SetView Dom representing the domain and a SetView Codom representing the codomain.
|
187
|
+
MapVar(Space* home, SetVar Dom, SetVar Codom);
|
188
|
+
//@}
|
189
|
+
|
190
|
+
/// \name Value access
|
191
|
+
//@{
|
192
|
+
/// Return current domain cardinality minimum
|
193
|
+
unsigned int cardDomainMin(void) const;
|
194
|
+
/// Return current domain cardinality maximum
|
195
|
+
unsigned int cardDomainMax(void) const;
|
196
|
+
/// Return current codomain cardinality minimum
|
197
|
+
unsigned int cardCodomainMin(void) const;
|
198
|
+
/// Return current codomain cardinality maximum
|
199
|
+
unsigned int cardCodomainMax(void) const;
|
200
|
+
/// Return the \a n -th smallest element in the domain least upper bound
|
201
|
+
int domLubMinN(int n) const;
|
202
|
+
/// Return the \a n -th largest element in the domain least upper bound
|
203
|
+
int domLubMaxN(int n) const;
|
204
|
+
/// Return the smallest element in the domain greatest lower bound
|
205
|
+
int domGlbMin() const;
|
206
|
+
/// Return the largest element in the domain least upper bound
|
207
|
+
int domGlbMax() const;
|
208
|
+
/// Return the size of the domain least upper bound
|
209
|
+
unsigned int domLubSize(void) const;
|
210
|
+
/// Return the size of the domain greatest lower bound
|
211
|
+
unsigned int domGlbSize(void) const;
|
212
|
+
/// Return the \a n -th smallest element in the codomain least upper bound
|
213
|
+
int codomLubMinN(int n) const;
|
214
|
+
/// Return the \a n -th largest element in the codomain least upper bound
|
215
|
+
int codomLubMaxN(int n) const;
|
216
|
+
/// Return the smallest element in the codomain greatest lower bound
|
217
|
+
int codomGlbMin() const;
|
218
|
+
/// Return the largest element in the codomain greatest lower bound
|
219
|
+
int codomGlbMax() const;
|
220
|
+
/// Return the smallest element in the codomain least upper bound
|
221
|
+
int codomLubMin() const;
|
222
|
+
/// Return the largest element in the codomain least upper bound
|
223
|
+
int codomLubMax() const;
|
224
|
+
/// Return the size of the codomain least upper bound
|
225
|
+
unsigned int codomLubSize(void) const;
|
226
|
+
/// Return the size of the codomain greatest lower bound
|
227
|
+
unsigned int codomGlbSize(void) const;
|
228
|
+
/// Return the number of potential images of \f$f(i)\f$
|
229
|
+
unsigned int size(int i);
|
230
|
+
/// Return \f$f(i)\f$ (only if f(i) is mapped)
|
231
|
+
int MapVar::imageAssigned(int i);
|
232
|
+
/// Return the size of the initial upper bound of dom(f)
|
233
|
+
unsigned int maxInitDomSize(void) const;
|
234
|
+
//@}
|
235
|
+
|
236
|
+
/// \name Domain tests
|
237
|
+
//@{
|
238
|
+
///Test wether f(i) is mapped
|
239
|
+
bool mapped(int i) ;
|
240
|
+
/// Test whether variable is assigned
|
241
|
+
bool assigned(void) ;
|
242
|
+
/// Test whether \f$f(a)=b\f$
|
243
|
+
bool map(int a, int b);
|
244
|
+
///Test wether \f$ b \in f(a)\g$
|
245
|
+
bool imageIn(int a, int b);
|
246
|
+
///Test wether \f$b \notin f(a)\f$
|
247
|
+
bool imageOut(int a, int b);
|
248
|
+
///Test wether \a a has no image i.e. \f$ a \notin Dom(f)\f$
|
249
|
+
bool noImage(int a);
|
250
|
+
//
|
251
|
+
///Test wether \a f is in least upper bound
|
252
|
+
//bool knownOut(map<int,int> f);
|
253
|
+
///Test wether\a f is in grestest lower bound
|
254
|
+
//bool knownIn(map<int,int> f);
|
255
|
+
//@}
|
256
|
+
|
257
|
+
|
258
|
+
private:
|
259
|
+
/// Test whether glb is a subset of lub
|
260
|
+
//bool boundsConsistent(void) const;
|
261
|
+
public:
|
262
|
+
|
263
|
+
/// \name Domain update by value
|
264
|
+
//@{
|
265
|
+
|
266
|
+
/// Include \a n in domain
|
267
|
+
ModEvent includeDom(Space *home, int n);
|
268
|
+
/// Exclude \a n from domain
|
269
|
+
ModEvent excludeDom(Space *home, int n);
|
270
|
+
/// Include \a n in codomain
|
271
|
+
ModEvent includeCodom(Space *home, int n);
|
272
|
+
/// Exclude \a n from codomain
|
273
|
+
ModEvent excludeCodom(Space *home, int n);
|
274
|
+
|
275
|
+
/// Restrict domain cardinality to be at least n
|
276
|
+
ModEvent cardDomMin(Space *home, unsigned int n);
|
277
|
+
/// Restrict domain cardinality to be at most n
|
278
|
+
ModEvent cardDomMax(Space *home, unsigned int n);
|
279
|
+
/// Restrict codomain cardinality to be at least n
|
280
|
+
ModEvent cardCodomMin(Space *home, unsigned int n);
|
281
|
+
/// Restrict codomain cardinality to be at most n
|
282
|
+
ModEvent cardCodomMax(Space *home, unsigned int n);
|
283
|
+
|
284
|
+
/// f(i)=j
|
285
|
+
ModEvent map(Space *home, int i, int j);
|
286
|
+
/// f(i)\=j
|
287
|
+
ModEvent nomap(Space *home, int i, int j);
|
288
|
+
ExecStatus nomapB(Space *home, int i, int j);
|
289
|
+
//@}
|
290
|
+
|
291
|
+
/// \name Domain update by range iterator
|
292
|
+
//@{
|
293
|
+
/// Include set described by \a i in the greatest lower bound
|
294
|
+
//template <class I> ModEvent includeI(Space* home,I& i);
|
295
|
+
/// Exclude set described by \a i from the least upper bound
|
296
|
+
//template <class I> ModEvent excludeI(Space* home,I& i);
|
297
|
+
/// Exclude everything but set described by \a i from the least upper bound
|
298
|
+
//template <class I> ModEvent intersectI(Space* home,I& i);
|
299
|
+
//@}
|
300
|
+
|
301
|
+
typedef Iter::Ranges::ToValues<LubRanges<SetView> > CodomLubIterator ;
|
302
|
+
CodomLubIterator iter_codom_lub();
|
303
|
+
|
304
|
+
public:
|
305
|
+
/// \name Dependencies
|
306
|
+
//@{
|
307
|
+
/// Subscribe propagator \a p with propagation condition \a pc to variable
|
308
|
+
GECODE_MAP_EXPORT void subscribe(Space* home,Propagator* p,PropCond pc);
|
309
|
+
//@}
|
310
|
+
|
311
|
+
private:
|
312
|
+
/// Return copy of not-yet copied variable
|
313
|
+
GECODE_MAP_EXPORT MapVar* perform_copy(Space* home, bool share);
|
314
|
+
|
315
|
+
public:
|
316
|
+
/// \name Cloning
|
317
|
+
//@{
|
318
|
+
/// Return copy of this variable
|
319
|
+
MapVar* copy(Space* home, bool share);
|
320
|
+
/// Update this variable to be a clone of variable \a x
|
321
|
+
void update(Space* home, bool share, MapVar& x);
|
322
|
+
//@}
|
323
|
+
|
324
|
+
void print(void);
|
325
|
+
void print(int i);
|
326
|
+
|
327
|
+
//friend void Gecode::branch(Space *home, MapVar M, BvarSel vars, BvalSel vals);
|
328
|
+
//friend void Gecode::injective(Gecode::Space *, MapVar);
|
329
|
+
};
|
330
|
+
//a}
|
331
|
+
}
|
332
|
+
}
|
333
|
+
|
334
|
+
#include "var/imp.icc"
|
335
|
+
//@}
|
336
|
+
|
337
|
+
/**
|
338
|
+
* \brief Print set variable \a x
|
339
|
+
* \relates Gecode::MapVar
|
340
|
+
*/
|
341
|
+
GECODE_MAP_EXPORT std::ostream&
|
342
|
+
operator<<(std::ostream&, const Gecode::Map::MapVar& x);
|
343
|
+
|
344
|
+
//
|
345
|
+
// STATISTICS: set-var
|
346
|
+
//
|
@@ -0,0 +1,42 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Zampelli St�phane <sz@info.ucl.ac.be>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Universit� catholique de Louvain, 2005
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date$
|
10
|
+
* $Revision$
|
11
|
+
*
|
12
|
+
* This file is part of CP(Map)
|
13
|
+
*
|
14
|
+
* See the file "LICENSE" for information on usage and
|
15
|
+
* redistribution of this file, and for a
|
16
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
17
|
+
*
|
18
|
+
*/
|
19
|
+
|
20
|
+
|
21
|
+
#include "map.hh"
|
22
|
+
|
23
|
+
namespace Gecode { namespace Map {
|
24
|
+
|
25
|
+
/// Return copy of not-yet copied variable
|
26
|
+
GECODE_MAP_EXPORT MapVar* MapVar::perform_copy(Space* home, bool share)
|
27
|
+
{
|
28
|
+
return new (home) MapVar(home,share,*this);
|
29
|
+
}
|
30
|
+
}}
|
31
|
+
|
32
|
+
GECODE_MAP_EXPORT std::ostream&
|
33
|
+
operator<<(std::ostream& os, const Gecode::Map::MapVar& x)
|
34
|
+
{
|
35
|
+
for (int i=0; i<x.array.size(); i++) {
|
36
|
+
os << (x.array[i]) << endl;
|
37
|
+
};
|
38
|
+
|
39
|
+
return os;
|
40
|
+
}
|
41
|
+
|
42
|
+
|
@@ -0,0 +1,436 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Zampelli St�phane <sz@info.ucl.ac.be>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Universit� catholique de Louvain, 2005
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date$
|
10
|
+
* $Revision$
|
11
|
+
*
|
12
|
+
* This file is part of CP(Map)
|
13
|
+
*
|
14
|
+
* See the file "LICENSE" for information on usage and
|
15
|
+
* redistribution of this file, and for a
|
16
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
17
|
+
*
|
18
|
+
*/
|
19
|
+
|
20
|
+
|
21
|
+
#define CREATE(VY,VZ,C) \
|
22
|
+
if (C<IntView,VY,VZ,Count::RelEqDom<IntView>,true>::post(home,newarray,y,T,c) \
|
23
|
+
== ES_FAILED) \
|
24
|
+
home->fail(); \
|
25
|
+
|
26
|
+
namespace Gecode { namespace Map {
|
27
|
+
|
28
|
+
forceinline MapVar::MapVar(){};//: Variable<VTI_MAP,PC_MAP_ANY>(NULL) {};
|
29
|
+
|
30
|
+
forceinline MapVar::MapVar(Space* home, bool share, MapVar& x) :
|
31
|
+
//Variable<VTI_MAP,PC_MAP_ANY>(home,share,x),
|
32
|
+
Domain(x.Domain), Codomain(x.Codomain),
|
33
|
+
array(x.array), maxDomSize(x.maxDomSize), maxCodomSize(x.maxCodomSize),
|
34
|
+
e(x.e), index(x.index), indexInv(x.indexInv)
|
35
|
+
{};
|
36
|
+
|
37
|
+
forceinline MapVar::MapVar(Space* home, SetVar Dom, SetVar Codom)
|
38
|
+
: //Variable<VTI_MAP,PC_MAP_ANY>(home),
|
39
|
+
Domain(Dom), Codomain(Codom),
|
40
|
+
//This call array(...) only allocates space, does not create Views. ViewArrays are containers.
|
41
|
+
array(home, Dom.cardMax()),
|
42
|
+
maxDomSize(Dom.cardMax()), maxCodomSize(Codom.cardMax()), e(NULL),
|
43
|
+
index(NULL), indexInv(NULL)
|
44
|
+
{
|
45
|
+
//external pointers for private members
|
46
|
+
//they never change during search
|
47
|
+
e=new std::map<int,int>;
|
48
|
+
index=new std::map<int,int>;
|
49
|
+
indexInv=new std::map<int,int>;
|
50
|
+
|
51
|
+
//Create index and indexInv maps
|
52
|
+
LubRanges<SetView> DomUB(Dom);
|
53
|
+
Iter::Ranges::ToValues<LubRanges<SetView> > DomV(DomUB);
|
54
|
+
int i=0;
|
55
|
+
while (DomV()) {
|
56
|
+
(*index)[DomV.val()]=i;
|
57
|
+
(*indexInv)[i]=DomV.val();
|
58
|
+
++i;
|
59
|
+
++DomV;
|
60
|
+
}
|
61
|
+
|
62
|
+
//Fill r structure with Codomain UB
|
63
|
+
int *r=NULL;
|
64
|
+
r = new int[maxCodomSize+1]; //represent the domain of Codom plus empty symbol
|
65
|
+
LubRanges<SetView> CodomUB(Codom);
|
66
|
+
Iter::Ranges::ToValues<LubRanges<SetView> > CodomV(CodomUB);
|
67
|
+
i=0;
|
68
|
+
while (CodomV()) {
|
69
|
+
r[i]=CodomV.val();
|
70
|
+
++i;
|
71
|
+
++CodomV;
|
72
|
+
}
|
73
|
+
|
74
|
+
//Create suitable Views and insert them into array
|
75
|
+
for (int i=0; i<maxDomSize; i++)
|
76
|
+
{
|
77
|
+
(*e)[i]=Codom.lubMax()+i+1; //The empty symbol is stored
|
78
|
+
r[maxCodomSize]=(*e)[i];
|
79
|
+
IntSet is(r,maxCodomSize+1);
|
80
|
+
IntVar myvar(home, is);
|
81
|
+
IntView myview(myvar);
|
82
|
+
array[i]=myview;
|
83
|
+
};
|
84
|
+
|
85
|
+
delete [] r;
|
86
|
+
|
87
|
+
/*Post coherence constraints between array, S and T*/
|
88
|
+
for (int i=0; i<maxDomSize; i++)
|
89
|
+
{
|
90
|
+
BoolVar b1_; b1_.init(home,0,1);
|
91
|
+
BoolVar b1; b1.init(home,0,1);
|
92
|
+
|
93
|
+
eq(home, array[i], (*e)[i], b1_);
|
94
|
+
|
95
|
+
bool_not(home, b1, b1_);
|
96
|
+
//Image_i == e <-> i \notin S
|
97
|
+
dom(home, Dom, SRT_SUP, (*indexInv)[i], b1);
|
98
|
+
|
99
|
+
//Image_i == e <-> Image_i \notin T
|
100
|
+
rel(home, Codom, SRT_SUP, array[i], b1);
|
101
|
+
}
|
102
|
+
|
103
|
+
//Post 'Occurs' constraint to propagate upon UB(T)
|
104
|
+
|
105
|
+
//for all i in UB(Codom) : Occurs(array,i)=0 -> i \notin Codom
|
106
|
+
LubRanges<SetView> CodomUB2(Codom);
|
107
|
+
Iter::Ranges::ToValues<LubRanges<SetView> > CodomV2(CodomUB2);
|
108
|
+
while (CodomV2()) {
|
109
|
+
//IntVar T; T.init(home,0,maxDomSize);
|
110
|
+
IntVar T;T.init(home,0,maxDomSize);
|
111
|
+
BoolVar b1_; b1_.init(home,0,1);
|
112
|
+
BoolVar b2_; b2_.init(home,0,1);
|
113
|
+
|
114
|
+
ConstIntView y(CodomV2.val());
|
115
|
+
int c=0;
|
116
|
+
//Copy before posting, because Eq modify its own ViewArray
|
117
|
+
ViewArray<IntView> newarray(home,array);
|
118
|
+
//count(home, array, CodomV2.val(), IRT_EQ, T);
|
119
|
+
CREATE(ConstIntView,IntView,Count::Eq);
|
120
|
+
|
121
|
+
//b2_ <-> not(b1_) <-> T \= 0
|
122
|
+
eq(home, T, 0, b1_);
|
123
|
+
bool_not(home,b2_,b1_);
|
124
|
+
|
125
|
+
//T==0 <-> y \notin Codom
|
126
|
+
IntVar tmp(home,CodomV2.val(), CodomV2.val());
|
127
|
+
IntView tmp2(tmp);
|
128
|
+
rel(home, Codom, SRT_SUP, tmp2, b2_ );
|
129
|
+
|
130
|
+
++CodomV2;
|
131
|
+
}
|
132
|
+
|
133
|
+
};
|
134
|
+
|
135
|
+
// forceinline MapVar::Processor::Processor(void) {
|
136
|
+
//
|
137
|
+
// // Combination of modification events
|
138
|
+
// mec(ME_MAP_DOM, ME_MAP_CODOM, ME_MAP_ANY);
|
139
|
+
//
|
140
|
+
// // Mapping between modification events and propagation conditions
|
141
|
+
// mepc(ME_MAP_VAL, PC_MAP_VAL);
|
142
|
+
// mepc(ME_MAP_DOM, PC_MAP_DOM);
|
143
|
+
// mepc(ME_MAP_CODOM, PC_MAP_CODOM);
|
144
|
+
// mepc(ME_MAP_ANY, PC_MAP_ANY);
|
145
|
+
//
|
146
|
+
// // Transfer to kernel
|
147
|
+
// enter();
|
148
|
+
// }
|
149
|
+
|
150
|
+
/// Return current domain cardinality minimum
|
151
|
+
forceinline unsigned int MapVar::cardDomainMin(void) const {return Domain.cardMin();}
|
152
|
+
/// Return current domain cardinality maximum
|
153
|
+
forceinline unsigned int MapVar::cardDomainMax(void) const {return Domain.cardMax();}
|
154
|
+
/// Return current codomain cardinality minimum
|
155
|
+
forceinline unsigned int MapVar::cardCodomainMin(void) const {return Codomain.cardMin();}
|
156
|
+
/// Return current codomain cardinality maximum
|
157
|
+
forceinline unsigned int MapVar::cardCodomainMax(void) const {return Codomain.cardMax();}
|
158
|
+
/// Return the \a n -th smallest element in the domain least upper bound
|
159
|
+
forceinline int MapVar::domLubMinN(int n) const {
|
160
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
161
|
+
return DomainView.lubMinN(n);
|
162
|
+
}
|
163
|
+
/// Return the \a n -th largest element in the domain least upper bound
|
164
|
+
forceinline int MapVar::domLubMaxN(int n) const {
|
165
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
166
|
+
return DomainView.lubMaxN(n);
|
167
|
+
}
|
168
|
+
/// Return the size of the domain least upper bound
|
169
|
+
forceinline unsigned int MapVar::domLubSize(void) const {return Domain.lubSize();}
|
170
|
+
/// Return the size of the domain greatest lower bound
|
171
|
+
forceinline unsigned int MapVar::domGlbSize(void) const {return Domain.glbSize();}
|
172
|
+
|
173
|
+
forceinline int MapVar::domGlbMin(void) const {return Domain.glbMin();}
|
174
|
+
forceinline int MapVar::domGlbMax(void) const {return Domain.glbMax();}
|
175
|
+
|
176
|
+
|
177
|
+
/// Return the \a n -th smallest element in the codomain least upper bound
|
178
|
+
forceinline int MapVar::codomLubMinN(int n) const {
|
179
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
180
|
+
return CodomainView.lubMinN(n);
|
181
|
+
}
|
182
|
+
|
183
|
+
/// Return the \a n -th largest element in the codomain least upper bound
|
184
|
+
forceinline int MapVar::codomLubMaxN(int n) const {
|
185
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
186
|
+
return CodomainView.lubMaxN(n);};
|
187
|
+
|
188
|
+
forceinline int MapVar::codomGlbMin(void) const {return Codomain.glbMin();}
|
189
|
+
forceinline int MapVar::codomGlbMax(void) const {return Codomain.glbMax();}
|
190
|
+
forceinline int MapVar::codomLubMin(void) const {return Codomain.lubMin();}
|
191
|
+
forceinline int MapVar::codomLubMax(void) const {return Codomain.lubMax();}
|
192
|
+
|
193
|
+
/// Return the size of the codomain least upper bound
|
194
|
+
forceinline unsigned int MapVar::codomLubSize(void) const {return Codomain.lubSize();}
|
195
|
+
/// Return the size of the codomain greatest lower bound
|
196
|
+
forceinline unsigned int MapVar::codomGlbSize(void) const {return Codomain.glbSize();}
|
197
|
+
///Return the initial size of UB of dom(f)
|
198
|
+
forceinline unsigned int MapVar::maxInitDomSize(void) const {return array.size();}
|
199
|
+
///Returns the size of f(i)
|
200
|
+
forceinline unsigned int MapVar::size(int i) {return array[(*index)[i]].size();}
|
201
|
+
/// Test whether variable is assigned
|
202
|
+
forceinline bool MapVar::assigned(void)
|
203
|
+
{
|
204
|
+
bool assigned=(Domain.assigned() && Codomain.assigned());
|
205
|
+
if (assigned) {
|
206
|
+
for (int i=array.size(); i--; ) {
|
207
|
+
if ((array[i].assigned()) && (array[i].in((*e)[i]))) { assigned=false; break; }
|
208
|
+
}
|
209
|
+
}
|
210
|
+
return assigned;
|
211
|
+
}
|
212
|
+
|
213
|
+
/// Test whether f(a)=b
|
214
|
+
forceinline bool MapVar::map(int a, int b) {
|
215
|
+
if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) ) {
|
216
|
+
return ( array[(*index)[a]].assigned() && array[(*index)[a]].in(b) ); };
|
217
|
+
return false;
|
218
|
+
}
|
219
|
+
///Test wether b in f(a)
|
220
|
+
forceinline bool MapVar::imageIn(int a, int b) {
|
221
|
+
if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) && (*e)[(*index)[a]]!=b) {
|
222
|
+
return array[(*index)[a]].in(b); };
|
223
|
+
return false;
|
224
|
+
}
|
225
|
+
///Test wether b not in f(a)
|
226
|
+
forceinline bool MapVar::imageOut(int a, int b) {
|
227
|
+
if ( (!Domain.notContains(a)) && (!Codomain.notContains(b)) ) {
|
228
|
+
return !array[(*index)[a]].in(b) && (*e)[(*index)[a]]!=b; };
|
229
|
+
return false;
|
230
|
+
}
|
231
|
+
///Test wether \a a has no image i.e. \a a \notin Dom(f)
|
232
|
+
forceinline bool MapVar::noImage(int a) {
|
233
|
+
return array[(*index)[a]].assigned() && array[(*index)[a]].in((*e)[(*index)[a]]);
|
234
|
+
}
|
235
|
+
|
236
|
+
|
237
|
+
/// Test whether \a f is contained in greatest lower bound
|
238
|
+
//forceinline bool MapVar::knownIn(map<int,int> f);
|
239
|
+
/// Test whether \a f is contained in least upper bound
|
240
|
+
//forceinline bool MapVar::knownOut(map<int,int> f);
|
241
|
+
//@}
|
242
|
+
|
243
|
+
/// Include \a n in domain
|
244
|
+
forceinline ModEvent MapVar::includeDom(Space *home, int n)
|
245
|
+
{
|
246
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
247
|
+
ModEvent me = DomainView.include(home, n);
|
248
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
249
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
250
|
+
return ME_MAP_DOM;
|
251
|
+
}
|
252
|
+
/// Exclude \a n from domain
|
253
|
+
forceinline ModEvent MapVar::excludeDom(Space *home, int n)
|
254
|
+
{
|
255
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
256
|
+
ModEvent me = DomainView.exclude(home, n);
|
257
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
258
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
259
|
+
return ME_MAP_DOM;
|
260
|
+
}
|
261
|
+
/// Include \a n in codomain
|
262
|
+
forceinline ModEvent MapVar::includeCodom(Space *home, int n)
|
263
|
+
{
|
264
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
265
|
+
ModEvent me = CodomainView.include(home, n);
|
266
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
267
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
268
|
+
return ME_MAP_CODOM;
|
269
|
+
}
|
270
|
+
|
271
|
+
/// Exclude \a n from codomain
|
272
|
+
forceinline ModEvent MapVar::excludeCodom(Space *home, int n)
|
273
|
+
{
|
274
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
275
|
+
ModEvent me = CodomainView.exclude(home, n);
|
276
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
277
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
278
|
+
return ME_MAP_CODOM;
|
279
|
+
}
|
280
|
+
|
281
|
+
/// Restrict domain cardinality to be at least n
|
282
|
+
forceinline ModEvent MapVar::cardDomMin(Space *home, unsigned int n)
|
283
|
+
{
|
284
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
285
|
+
ModEvent me = DomainView.cardMin(home, n);
|
286
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
287
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
288
|
+
return ME_MAP_DOM;
|
289
|
+
}
|
290
|
+
/// Restrict domain cardinality to be at most n
|
291
|
+
forceinline ModEvent MapVar::cardDomMax(Space *home, unsigned int n)
|
292
|
+
{
|
293
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
294
|
+
ModEvent me = DomainView.cardMax(home, n);
|
295
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
296
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
297
|
+
return ME_MAP_DOM;
|
298
|
+
}
|
299
|
+
/// Restrict codomain cardinality to be at least n
|
300
|
+
forceinline ModEvent MapVar::cardCodomMin(Space *home, unsigned int n)
|
301
|
+
{
|
302
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
303
|
+
ModEvent me = CodomainView.cardMin(home, n);
|
304
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
305
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
306
|
+
return ME_MAP_CODOM;
|
307
|
+
}
|
308
|
+
|
309
|
+
/// Restrict codomain cardinality to be at most n
|
310
|
+
forceinline ModEvent MapVar::cardCodomMax(Space *home, unsigned int n)
|
311
|
+
{
|
312
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
313
|
+
ModEvent me = CodomainView.cardMax(home, n);
|
314
|
+
if (me == Gecode::Set::ME_SET_FAILED) {return ME_MAP_FAILED;};
|
315
|
+
if (me == Gecode::Set::ME_SET_NONE) {return ME_MAP_NONE;};
|
316
|
+
return ME_MAP_CODOM;
|
317
|
+
}
|
318
|
+
|
319
|
+
/// f(i)=j
|
320
|
+
forceinline ModEvent MapVar::map(Space *home, int i, int j)
|
321
|
+
{
|
322
|
+
if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
|
323
|
+
ModEvent me = array[(*index)[i]].eq(home, j);
|
324
|
+
if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
|
325
|
+
if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
|
326
|
+
return ME_MAP_ANY;
|
327
|
+
}
|
328
|
+
return ME_MAP_NONE;
|
329
|
+
}
|
330
|
+
|
331
|
+
/// f(i)\=j
|
332
|
+
forceinline ModEvent MapVar::nomap(Space *home, int i, int j)
|
333
|
+
{
|
334
|
+
if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
|
335
|
+
ModEvent me = array[(*index)[i]].nq(home, j);
|
336
|
+
if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
|
337
|
+
if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
|
338
|
+
return ME_MAP_ANY;
|
339
|
+
}
|
340
|
+
return ME_MAP_NONE;
|
341
|
+
|
342
|
+
}
|
343
|
+
|
344
|
+
/// f(i)\=j
|
345
|
+
forceinline ExecStatus MapVar::nomapB(Space *home, int i, int j)
|
346
|
+
{
|
347
|
+
if ((!Domain.notContains(i)) && (!Codomain.notContains(j))) {
|
348
|
+
return me_failed(array[(*index)[i]].nq(home,j)) ? ES_FAILED : ES_OK;
|
349
|
+
//if (me == Gecode::Int::ME_INT_FAILED) {return ME_MAP_FAILED;};
|
350
|
+
//if (me == Gecode::Int::ME_INT_NONE) {return ME_MAP_NONE;};
|
351
|
+
//return ME_MAP_ANY;
|
352
|
+
}
|
353
|
+
return ES_OK;
|
354
|
+
}
|
355
|
+
|
356
|
+
|
357
|
+
/// Subscribe propagator \a p with propagation condition \a pc to variable
|
358
|
+
forceinline
|
359
|
+
GECODE_MAP_EXPORT void MapVar::subscribe(Space* home,Propagator* p,PropCond pc)
|
360
|
+
{
|
361
|
+
//translate pc to pc of SetView and IntViewArray
|
362
|
+
if (pc == PC_MAP_DOM) {
|
363
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
364
|
+
DomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
|
365
|
+
}
|
366
|
+
|
367
|
+
if (pc == PC_MAP_CODOM) {
|
368
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
369
|
+
CodomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
|
370
|
+
}
|
371
|
+
|
372
|
+
if (pc == PC_MAP_ANY) {
|
373
|
+
|
374
|
+
SetView DomainView(Domain); //no cost thanks to compiler optimization
|
375
|
+
DomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
|
376
|
+
SetView CodomainView(Codomain); //no cost thanks to compiler optimization
|
377
|
+
CodomainView.subscribe(home, p, Gecode::Set::PC_SET_ANY);
|
378
|
+
array.subscribe(home, p, Gecode::Int::PC_INT_DOM);
|
379
|
+
}
|
380
|
+
|
381
|
+
}
|
382
|
+
|
383
|
+
// forceinline
|
384
|
+
// MapVar* MapVar::copy(Space* home, bool share)
|
385
|
+
// {
|
386
|
+
// if (copied()) {
|
387
|
+
// return static_cast<MapVar*>(forward());
|
388
|
+
// }
|
389
|
+
// perform_copy(home,share);
|
390
|
+
// }
|
391
|
+
|
392
|
+
forceinline
|
393
|
+
void MapVar::update(Space* home, bool share, MapVar& x)
|
394
|
+
{
|
395
|
+
Domain.update(home, share, x.Domain);
|
396
|
+
Codomain.update(home, share, x.Codomain);
|
397
|
+
array.update(home, share, x.array);
|
398
|
+
e = x.e;
|
399
|
+
index = x.index;
|
400
|
+
indexInv = x.indexInv;
|
401
|
+
maxDomSize = x.maxDomSize;
|
402
|
+
maxCodomSize = x.maxCodomSize;
|
403
|
+
}
|
404
|
+
|
405
|
+
/// Returns f(i) (only if f(i) is mapped)
|
406
|
+
forceinline int MapVar::imageAssigned(int i) {return array[(*index)[i]].val();};
|
407
|
+
|
408
|
+
///Test wether f(i) is mapped
|
409
|
+
forceinline bool MapVar::mapped(int i) {
|
410
|
+
return ((array[(*index)[i]].assigned()) && (array[(*index)[i]].in((*e)[(*index)[i]])==false));};
|
411
|
+
|
412
|
+
forceinline
|
413
|
+
void MapVar::print()
|
414
|
+
{
|
415
|
+
for (int s=0; s<array.size(); s++)
|
416
|
+
{
|
417
|
+
cout << "array[" << s << "] = " << array[s] << endl;
|
418
|
+
}
|
419
|
+
}
|
420
|
+
|
421
|
+
forceinline void MapVar::print(int i)
|
422
|
+
{
|
423
|
+
cout << "array[" << i << "] = " << array[i] << endl;
|
424
|
+
}
|
425
|
+
|
426
|
+
forceinline MapVar::CodomLubIterator MapVar::iter_codom_lub(void) {
|
427
|
+
LubRanges<SetView> CodomUB(Codomain);
|
428
|
+
Iter::Ranges::ToValues<LubRanges<SetView> > CodomV(CodomUB);
|
429
|
+
return CodomV;
|
430
|
+
}
|
431
|
+
|
432
|
+
|
433
|
+
|
434
|
+
}
|
435
|
+
}
|
436
|
+
|