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,198 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Main authors:
|
|
3
|
+
# Christian Schulte <schulte@gecode.org>
|
|
4
|
+
#
|
|
5
|
+
# Copyright:
|
|
6
|
+
# Christian Schulte, 2006
|
|
7
|
+
#
|
|
8
|
+
# Last modified:
|
|
9
|
+
# $Date: 2006-07-28 16:27:48 +0200 (Fri, 28 Jul 2006) $ by $Author: tack $
|
|
10
|
+
# $Revision: 3477 $
|
|
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
|
+
## Header of file to be generated
|
|
23
|
+
##
|
|
24
|
+
[Header]
|
|
25
|
+
|
|
26
|
+
namespace Gecode { namespace Int {
|
|
27
|
+
|
|
28
|
+
##
|
|
29
|
+
## General settings
|
|
30
|
+
##
|
|
31
|
+
## Defines the name (Name) and the variable type identifier (VTI) of the
|
|
32
|
+
## variable implementation to be generated.
|
|
33
|
+
##
|
|
34
|
+
## Export defines whether a special macro to be added in front
|
|
35
|
+
## of a definition that needs external linkage (can be omitted)
|
|
36
|
+
##
|
|
37
|
+
## Forceinline defines whether a special macro for inlining should
|
|
38
|
+
## be used. If it is omitted, inline will be used instead.
|
|
39
|
+
##
|
|
40
|
+
## Forcedispose defines whether this variable type provides a dispose
|
|
41
|
+
## function that must be called for all variables in a space when the
|
|
42
|
+
## space is destroyed. If it is omitted, false is assumed.
|
|
43
|
+
[General]
|
|
44
|
+
Name: Int
|
|
45
|
+
VTI: INT
|
|
46
|
+
Export: GECODE_INT_EXPORT
|
|
47
|
+
Forceinline: forceinline
|
|
48
|
+
|
|
49
|
+
##
|
|
50
|
+
## Definition of modification events
|
|
51
|
+
##
|
|
52
|
+
##
|
|
53
|
+
## ModEventHeader: give some text that precedes the definition
|
|
54
|
+
## of the modification events.
|
|
55
|
+
##
|
|
56
|
+
## ModEventFooter: give some text that comes after the definition
|
|
57
|
+
## of the modification events.
|
|
58
|
+
##
|
|
59
|
+
## ModEvent: defines a modification event
|
|
60
|
+
## The definition must always contain a Name line, either in the form
|
|
61
|
+
## Name: <name>
|
|
62
|
+
## or
|
|
63
|
+
## Name: <name> = <special>
|
|
64
|
+
## where <special> must be one of
|
|
65
|
+
## - FAILED: this is the modification event used when an operation
|
|
66
|
+
## resulted in failure.
|
|
67
|
+
## - NONE: this is the modification event used when an operation
|
|
68
|
+
## does nothing.
|
|
69
|
+
## - ASSIGNED: when the operation assigned the variable.
|
|
70
|
+
## - SUBSCRIBE: when a propagator subscribes to a variable, the
|
|
71
|
+
## propagator will be processed with that event initially.
|
|
72
|
+
##
|
|
73
|
+
## Note that at least the special cases "FAILED", "NONE", and "ASSIGNED"
|
|
74
|
+
## must be present. In case there are more events defined, then also
|
|
75
|
+
## "SUBSCRIBE" must be present.
|
|
76
|
+
##
|
|
77
|
+
## Additionally, for all modfication events but the special cases
|
|
78
|
+
## "FAILED" and "NONE" one needs to define the combination of
|
|
79
|
+
## modification events by
|
|
80
|
+
## Combine: <me1>=<me2>, ... (repeated)
|
|
81
|
+
## This means that the combination of the currently defined
|
|
82
|
+
## modification event together with <me1> results in <me2>.
|
|
83
|
+
##
|
|
84
|
+
[ModEventHeader]
|
|
85
|
+
/**
|
|
86
|
+
* \defgroup TaskActorIntMEPC Integer modification events and propagation conditions
|
|
87
|
+
* \ingroup TaskActorInt
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
//@{
|
|
91
|
+
[ModEvent]
|
|
92
|
+
Name: FAILED=FAILED
|
|
93
|
+
/// Domain operation has resulted in failure
|
|
94
|
+
[ModEvent]
|
|
95
|
+
Name: NONE=NONE
|
|
96
|
+
/// Domain operation has not changed domain
|
|
97
|
+
[ModEvent]
|
|
98
|
+
Name: VAL=ASSIGNED
|
|
99
|
+
Combine: VAL=VAL, BND=VAL, DOM=VAL
|
|
100
|
+
/// Domain operation has resulted in a value (assigned variable)
|
|
101
|
+
[ModEvent]
|
|
102
|
+
Name: BND=SUBSCRIBE
|
|
103
|
+
Combine: VAL=VAL, BND=BND, DOM=BND
|
|
104
|
+
/**
|
|
105
|
+
* \brief Domain operation has changed the minimum or maximum of the domain
|
|
106
|
+
*
|
|
107
|
+
* Note that this implies that the domain has not resulted in a value.
|
|
108
|
+
*
|
|
109
|
+
* If a propagator subscribes to this variable, it will be processed
|
|
110
|
+
* assuming a ME_INT_BND modification event.
|
|
111
|
+
*/
|
|
112
|
+
[ModEvent]
|
|
113
|
+
Name: DOM
|
|
114
|
+
Combine: VAL=VAL, BND=BND, DOM=DOM
|
|
115
|
+
/**
|
|
116
|
+
* \brief Domain operation has changed the domain
|
|
117
|
+
*
|
|
118
|
+
* Note that this implies that the domain has not resulted in a value
|
|
119
|
+
* and that also the minimum and maximum of the domain have not changed.
|
|
120
|
+
*/
|
|
121
|
+
# [ModEventFooter]: Nothing
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
##
|
|
125
|
+
## Definition of propagation conditions
|
|
126
|
+
##
|
|
127
|
+
##
|
|
128
|
+
## PropCondHeader: give some text that precedes the definition
|
|
129
|
+
## of the propagation conditions. One can rely on the fact that
|
|
130
|
+
## the definitions of the propgation conditions come immediately
|
|
131
|
+
## after the definitions of the modification events.
|
|
132
|
+
##
|
|
133
|
+
## PropCondFooter: give some text that comes after the definition
|
|
134
|
+
## of the propagation conditions.
|
|
135
|
+
##
|
|
136
|
+
## PropCond: defines a propagation condition
|
|
137
|
+
## The definition must always contain a Name line, either in the form
|
|
138
|
+
## Name: <name>
|
|
139
|
+
## or
|
|
140
|
+
## Name: <name> = <special>
|
|
141
|
+
## where <special> must be
|
|
142
|
+
## - ASSIGNED: the condition corresponding to executing a
|
|
143
|
+
## propagator when a variable becomes assigned.
|
|
144
|
+
##
|
|
145
|
+
## Note that this special case must be present!
|
|
146
|
+
##
|
|
147
|
+
## Additionally, for all propagation conditions one must define
|
|
148
|
+
## the modification events that trigger execution of a propagator
|
|
149
|
+
## with the defined propagation condition. This is done by:
|
|
150
|
+
## ModEvents: <me>, ... (repeeated)
|
|
151
|
+
##
|
|
152
|
+
# [PropCondHeader]: Nothing
|
|
153
|
+
[PropCond]
|
|
154
|
+
Name: VAL=ASSIGNED
|
|
155
|
+
ModEvents: VAL
|
|
156
|
+
/**
|
|
157
|
+
* \brief Propagate when a view becomes assigned (single value)
|
|
158
|
+
*
|
|
159
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
160
|
+
* condition PC_INT_VAL, then \a p is propagated when a domain
|
|
161
|
+
* update operation on \a x returns the modification event ME_INT_VAL.
|
|
162
|
+
*/
|
|
163
|
+
[PropCond]
|
|
164
|
+
Name: BND
|
|
165
|
+
ModEvents: VAL, BND
|
|
166
|
+
/**
|
|
167
|
+
* \brief Propagate when minimum or maximum of a view changes
|
|
168
|
+
*
|
|
169
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
170
|
+
* condition PC_INT_BND, then \a p is propagated when a domain
|
|
171
|
+
* update operation on \a x returns the modification events ME_INT_VAL
|
|
172
|
+
* or ME_INT_BND.
|
|
173
|
+
*/
|
|
174
|
+
[PropCond]
|
|
175
|
+
Name: DOM
|
|
176
|
+
ModEvents: VAL, BND, DOM
|
|
177
|
+
/**
|
|
178
|
+
* \brief Propagate when domain changes
|
|
179
|
+
*
|
|
180
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
181
|
+
* condition PC_INT_DOM, then \a p is propagated when a domain
|
|
182
|
+
* update operation on \a x returns the modification event ME_INT_VAL,
|
|
183
|
+
* ME_INT_BND, or ME_INT_DOM.
|
|
184
|
+
*/
|
|
185
|
+
[PropCondFooter]
|
|
186
|
+
//@}
|
|
187
|
+
##
|
|
188
|
+
## Footer of file to be generated
|
|
189
|
+
##
|
|
190
|
+
[Footer]
|
|
191
|
+
|
|
192
|
+
}}
|
|
193
|
+
|
|
194
|
+
// STATISTICS: int-var
|
|
195
|
+
##
|
|
196
|
+
## At the end of the file there must be an [End] section.
|
|
197
|
+
##
|
|
198
|
+
[End]
|
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Contributing authors:
|
|
6
|
+
* Guido Tack <tack@gecode.org>
|
|
7
|
+
*
|
|
8
|
+
* Copyright:
|
|
9
|
+
* Christian Schulte, 2002
|
|
10
|
+
* Guido Tack, 2004
|
|
11
|
+
*
|
|
12
|
+
* Last modified:
|
|
13
|
+
* $Date: 2006-09-21 11:35:18 +0200 (Thu, 21 Sep 2006) $ by $Author: schulte $
|
|
14
|
+
* $Revision: 3686 $
|
|
15
|
+
*
|
|
16
|
+
* This file is part of Gecode, the generic constraint
|
|
17
|
+
* development environment:
|
|
18
|
+
* http://www.gecode.org
|
|
19
|
+
*
|
|
20
|
+
* See the file "LICENSE" for information on usage and
|
|
21
|
+
* redistribution of this file, and for a
|
|
22
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
#include <cmath>
|
|
27
|
+
|
|
28
|
+
#include "gecode/int/var/imp-hdr.icc"
|
|
29
|
+
|
|
30
|
+
namespace Gecode { namespace Int {
|
|
31
|
+
|
|
32
|
+
class IntVarImpFwd;
|
|
33
|
+
class IntVarImpBwd;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* \brief Integer variable implementation
|
|
37
|
+
*
|
|
38
|
+
* \ingroup Other
|
|
39
|
+
*/
|
|
40
|
+
class IntVarImp : public IntVarImpBase {
|
|
41
|
+
friend class IntVarImpFwd;
|
|
42
|
+
friend class IntVarImpBwd;
|
|
43
|
+
protected:
|
|
44
|
+
/**
|
|
45
|
+
* \brief Lists of ranges (intervals)
|
|
46
|
+
*
|
|
47
|
+
* Range lists are doubly-linked storing the pointer to both
|
|
48
|
+
* the next and the previous element in a single pointer.
|
|
49
|
+
* That means that the next element is only available when
|
|
50
|
+
* the previous element is supplied as additional information.
|
|
51
|
+
* The same holds true for access to the previous element.
|
|
52
|
+
*/
|
|
53
|
+
class RangeList : public FreeList {
|
|
54
|
+
protected:
|
|
55
|
+
/// Minimum of range
|
|
56
|
+
int _min;
|
|
57
|
+
/// Maximum of range
|
|
58
|
+
int _max;
|
|
59
|
+
public:
|
|
60
|
+
/// \name Constructors
|
|
61
|
+
//@{
|
|
62
|
+
/// Default constructor (noop)
|
|
63
|
+
RangeList(void);
|
|
64
|
+
/// Initialize with minimum \a min and maximum \a max
|
|
65
|
+
RangeList(int min, int max);
|
|
66
|
+
/// Initialize with minimum \a min and maximum \a max and predecessor \a p and successor \a n
|
|
67
|
+
RangeList(int min, int max, RangeList* p, RangeList* n);
|
|
68
|
+
//@}
|
|
69
|
+
|
|
70
|
+
/// \name Access
|
|
71
|
+
//@{
|
|
72
|
+
/// Return minimum
|
|
73
|
+
int min(void) const;
|
|
74
|
+
/// Return maximum
|
|
75
|
+
int max(void) const;
|
|
76
|
+
/// Return width (distance between maximum and minimum)
|
|
77
|
+
unsigned int width(void) const;
|
|
78
|
+
|
|
79
|
+
/// Return next element (from previous \a p)
|
|
80
|
+
RangeList* next(const RangeList* p) const;
|
|
81
|
+
/// Return previous element (from next \a n)
|
|
82
|
+
RangeList* prev(const RangeList* n) const;
|
|
83
|
+
//@}
|
|
84
|
+
|
|
85
|
+
/// \name Update
|
|
86
|
+
//@{
|
|
87
|
+
/// Set minimum to \a n
|
|
88
|
+
void min(int n);
|
|
89
|
+
/// Set maximum to \a n
|
|
90
|
+
void max(int n);
|
|
91
|
+
|
|
92
|
+
/// Set previous element to \a p and next element to \a n
|
|
93
|
+
void prevnext(RangeList* p, RangeList* n);
|
|
94
|
+
/// Set next element from \a o to \a n
|
|
95
|
+
void next(RangeList* o, RangeList* n);
|
|
96
|
+
/// Set previous element from \a o to \a n
|
|
97
|
+
void prev(RangeList* o, RangeList* n);
|
|
98
|
+
/// Restore simple link to next element (so that it becomes a true free list)
|
|
99
|
+
void fix(RangeList* n);
|
|
100
|
+
//@}
|
|
101
|
+
|
|
102
|
+
/// \name Memory management
|
|
103
|
+
//@{
|
|
104
|
+
/**
|
|
105
|
+
* \brief Free memory for all elements between this and \a l (inclusive)
|
|
106
|
+
*
|
|
107
|
+
* \a p must be the pointer to the previous element of \c this.
|
|
108
|
+
*/
|
|
109
|
+
void dispose(Space* home, RangeList* p, RangeList* l);
|
|
110
|
+
/**
|
|
111
|
+
* \brief Free memory for all elements between this and \a l (inclusive)
|
|
112
|
+
*
|
|
113
|
+
* This routine assumes that the list has already been fixed.
|
|
114
|
+
*/
|
|
115
|
+
void dispose(Space* home, RangeList* l);
|
|
116
|
+
/// Free memory for this element
|
|
117
|
+
void dispose(Space* home);
|
|
118
|
+
|
|
119
|
+
/// Allocate memory from space
|
|
120
|
+
static void* operator new(size_t s, Space* home);
|
|
121
|
+
/// No-op (for exceptions)
|
|
122
|
+
static void operator delete(void*);
|
|
123
|
+
/// No-op (use dispose instead)
|
|
124
|
+
static void operator delete(void*, Space*);
|
|
125
|
+
//@}
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* \brief Domain information
|
|
130
|
+
*
|
|
131
|
+
* Provides fast access to minimum and maximum of the
|
|
132
|
+
* entire domain and links to the first element
|
|
133
|
+
* of a RangeList defining the domain.
|
|
134
|
+
*/
|
|
135
|
+
RangeList dom;
|
|
136
|
+
/// Link the last element
|
|
137
|
+
RangeList* _lst;
|
|
138
|
+
/// Return first element of rangelist
|
|
139
|
+
RangeList* fst(void) const;
|
|
140
|
+
/// Set first element of rangelist
|
|
141
|
+
void fst(RangeList* f);
|
|
142
|
+
/// Return last element of rangelist
|
|
143
|
+
RangeList* lst(void) const;
|
|
144
|
+
/// Set last element of rangelist
|
|
145
|
+
void lst(RangeList* l);
|
|
146
|
+
/// Size of holes in the domain
|
|
147
|
+
unsigned int holes;
|
|
148
|
+
|
|
149
|
+
protected:
|
|
150
|
+
/// Constructor for cloning \a x (\a is_bool whether this is a Boolean variable)
|
|
151
|
+
IntVarImp(Space* home, bool share, IntVarImp& x, bool is_bool);
|
|
152
|
+
public:
|
|
153
|
+
/// Initialize with range domain
|
|
154
|
+
IntVarImp(Space* home, int min, int max);
|
|
155
|
+
/// Initialize with domain specified by \a d
|
|
156
|
+
IntVarImp(Space* home, const IntSet& d);
|
|
157
|
+
|
|
158
|
+
/// \name Value access
|
|
159
|
+
//@{
|
|
160
|
+
/// Return minimum of domain
|
|
161
|
+
int min(void) const;
|
|
162
|
+
/// Return maximum of domain
|
|
163
|
+
int max(void) const;
|
|
164
|
+
/// Return assigned value (only if assigned)
|
|
165
|
+
int val(void) const;
|
|
166
|
+
/// Return median of domain
|
|
167
|
+
GECODE_INT_EXPORT int med(void) const;
|
|
168
|
+
|
|
169
|
+
/// Return size (cardinality) of domain
|
|
170
|
+
unsigned int size(void) const;
|
|
171
|
+
/// Return width of domain (distance between maximum and minimum)
|
|
172
|
+
unsigned int width(void) const;
|
|
173
|
+
/// Return regret of domain minimum (distance to next larger value)
|
|
174
|
+
unsigned int regret_min(void) const;
|
|
175
|
+
/// Return regret of domain maximum (distance to next smaller value)
|
|
176
|
+
unsigned int regret_max(void) const;
|
|
177
|
+
//@}
|
|
178
|
+
|
|
179
|
+
private:
|
|
180
|
+
/// Test whether \a n is contained in domain (full domain)
|
|
181
|
+
GECODE_INT_EXPORT bool in_full(int n) const;
|
|
182
|
+
|
|
183
|
+
public:
|
|
184
|
+
/// \name Domain tests
|
|
185
|
+
//@{
|
|
186
|
+
/// Test whether domain is a range
|
|
187
|
+
bool range(void) const;
|
|
188
|
+
/// Test whether variable is assigned
|
|
189
|
+
bool assigned(void) const;
|
|
190
|
+
|
|
191
|
+
/// Test whether \a n is contained in domain
|
|
192
|
+
bool in(int n) const;
|
|
193
|
+
/// Test whether \a n is contained in domain
|
|
194
|
+
bool in(double n) const;
|
|
195
|
+
//@}
|
|
196
|
+
|
|
197
|
+
protected:
|
|
198
|
+
/// \name Range list access for iteration
|
|
199
|
+
//@{
|
|
200
|
+
/// Return range list for forward iteration
|
|
201
|
+
const RangeList* ranges_fwd(void) const;
|
|
202
|
+
/// Return range list for backward iteration
|
|
203
|
+
const RangeList* ranges_bwd(void) const;
|
|
204
|
+
//@}
|
|
205
|
+
|
|
206
|
+
private:
|
|
207
|
+
/// Test whether \a n is closer to the minimum or maximum
|
|
208
|
+
bool closer_min(int b) const;
|
|
209
|
+
/// \name Domain update by value (full domain)
|
|
210
|
+
//@{
|
|
211
|
+
/// Restrict domain values to be less or equal than \a n
|
|
212
|
+
GECODE_INT_EXPORT void lq_full(Space* home, int n);
|
|
213
|
+
/// Restrict domain values to be greater or equal than \a n
|
|
214
|
+
GECODE_INT_EXPORT void gq_full(Space* home, int n);
|
|
215
|
+
/// Restrict domain values to be equal to \a n
|
|
216
|
+
GECODE_INT_EXPORT void eq_full(Space* home, int n);
|
|
217
|
+
/// Restrict domain values to be different from \a n
|
|
218
|
+
GECODE_INT_EXPORT ModEvent nq_full(Space* home, int n);
|
|
219
|
+
//@}
|
|
220
|
+
public:
|
|
221
|
+
/// \name Domain update by value
|
|
222
|
+
//@{
|
|
223
|
+
/// Restrict domain values to be less or equal than \a n
|
|
224
|
+
ModEvent lq(Space* home, int n);
|
|
225
|
+
/// Restrict domain values to be less or equal than \a n
|
|
226
|
+
ModEvent lq(Space* home, double n);
|
|
227
|
+
|
|
228
|
+
/// Restrict domain values to be greater or equal than \a n
|
|
229
|
+
ModEvent gq(Space* home, int n);
|
|
230
|
+
/// Restrict domain values to be greater or equal than \a n
|
|
231
|
+
ModEvent gq(Space* home, double n);
|
|
232
|
+
|
|
233
|
+
/// Restrict domain values to be different from \a n
|
|
234
|
+
ModEvent nq(Space* home, int n);
|
|
235
|
+
/// Restrict domain values to be different from \a n
|
|
236
|
+
ModEvent nq(Space* home, double n);
|
|
237
|
+
|
|
238
|
+
/// Restrict domain values to be equal to \a n
|
|
239
|
+
ModEvent eq(Space* home, int n);
|
|
240
|
+
/// Restrict domain values to be equal to \a n
|
|
241
|
+
ModEvent eq(Space* home, double n);
|
|
242
|
+
//@}
|
|
243
|
+
|
|
244
|
+
/// \name Domain update by range iterator
|
|
245
|
+
//@{
|
|
246
|
+
/// Replace domain by range sequence described by \a i
|
|
247
|
+
template <class I> ModEvent narrow(Space* home, I& i);
|
|
248
|
+
/// Intersect domain with range sequence described by \a i
|
|
249
|
+
template <class I> ModEvent inter(Space* home, I& i);
|
|
250
|
+
/// Remove from domain the range sequence described by \a i
|
|
251
|
+
template <class I> ModEvent minus(Space* home, I& i);
|
|
252
|
+
//@}
|
|
253
|
+
|
|
254
|
+
/// \name Boolean update operations
|
|
255
|
+
//@{
|
|
256
|
+
/// Assign unassigned variable to zero
|
|
257
|
+
void t_zero_none(Space* home);
|
|
258
|
+
/// Assign unassigned variable to one
|
|
259
|
+
void t_one_none(Space* home);
|
|
260
|
+
//@}
|
|
261
|
+
|
|
262
|
+
public:
|
|
263
|
+
/// \name Dependencies
|
|
264
|
+
//@{
|
|
265
|
+
/**
|
|
266
|
+
* \brief Subscribe propagator \a p with propagation condition \a pc to variable
|
|
267
|
+
*
|
|
268
|
+
* In case \a process is false, the propagator is just subscribed but
|
|
269
|
+
* not processed for execution (this must be used when creating
|
|
270
|
+
* subscriptions during propagation).
|
|
271
|
+
*
|
|
272
|
+
*/
|
|
273
|
+
void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
|
|
274
|
+
//@}
|
|
275
|
+
|
|
276
|
+
private:
|
|
277
|
+
/// Return copy of not-yet copied variable
|
|
278
|
+
GECODE_INT_EXPORT IntVarImp* perform_copy(Space* home, bool share);
|
|
279
|
+
/// Return copy of not-yet copied variable (Boolean)
|
|
280
|
+
GECODE_INT_EXPORT IntVarImp* perform_copy_bool(Space* home, bool share);
|
|
281
|
+
public:
|
|
282
|
+
/// \name Cloning
|
|
283
|
+
//@{
|
|
284
|
+
/// Return copy of this variable
|
|
285
|
+
IntVarImp* copy(Space* home, bool share);
|
|
286
|
+
/// Return copy of this variable (Boolean)
|
|
287
|
+
IntVarImp* copy_bool(Space* home, bool share);
|
|
288
|
+
//@}
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* \brief Range iterator for ranges of integer variable implementation
|
|
294
|
+
*
|
|
295
|
+
*/
|
|
296
|
+
class IntVarImpFwd {
|
|
297
|
+
private:
|
|
298
|
+
/// Previous range
|
|
299
|
+
const IntVarImp::RangeList* p;
|
|
300
|
+
/// Current range
|
|
301
|
+
const IntVarImp::RangeList* c;
|
|
302
|
+
public:
|
|
303
|
+
/// \name Constructors and initialization
|
|
304
|
+
//@{
|
|
305
|
+
/// Default constructor
|
|
306
|
+
IntVarImpFwd(void);
|
|
307
|
+
/// Initialize with ranges from variable implementation \a x
|
|
308
|
+
IntVarImpFwd(const IntVarImp* x);
|
|
309
|
+
/// Initialize with ranges from variable implementation \a x
|
|
310
|
+
void init(const IntVarImp* x);
|
|
311
|
+
//@}
|
|
312
|
+
|
|
313
|
+
/// \name Iteration control
|
|
314
|
+
//@{
|
|
315
|
+
/// Test whether iterator is still at a range or done
|
|
316
|
+
bool operator()(void) const;
|
|
317
|
+
/// Move iterator to next range (if possible)
|
|
318
|
+
void operator++(void);
|
|
319
|
+
//@}
|
|
320
|
+
|
|
321
|
+
/// \name Range access
|
|
322
|
+
//@{
|
|
323
|
+
/// Return smallest value of range
|
|
324
|
+
int min(void) const;
|
|
325
|
+
/// Return largest value of range
|
|
326
|
+
int max(void) const;
|
|
327
|
+
/// Return width of range (distance between minimum and maximum)
|
|
328
|
+
unsigned int width(void) const;
|
|
329
|
+
//@}
|
|
330
|
+
};
|
|
331
|
+
|
|
332
|
+
/**
|
|
333
|
+
* \brief Backward iterator for ranges of integer variable implementations
|
|
334
|
+
*
|
|
335
|
+
* Note that this iterator is not a range iterator as the ranges
|
|
336
|
+
* are not iterated in increasing but in decreasing order.
|
|
337
|
+
*
|
|
338
|
+
*/
|
|
339
|
+
class IntVarImpBwd {
|
|
340
|
+
private:
|
|
341
|
+
/// Next range
|
|
342
|
+
const IntVarImp::RangeList* n;
|
|
343
|
+
/// Current range
|
|
344
|
+
const IntVarImp::RangeList* c;
|
|
345
|
+
public:
|
|
346
|
+
/// \name Constructors and initialization
|
|
347
|
+
//@{
|
|
348
|
+
/// Default constructor
|
|
349
|
+
IntVarImpBwd(void);
|
|
350
|
+
/// Initialize with ranges from variable implementation \a x
|
|
351
|
+
IntVarImpBwd(const IntVarImp* x);
|
|
352
|
+
/// Initialize with ranges from variable implementation \a x
|
|
353
|
+
void init(const IntVarImp* x);
|
|
354
|
+
//@}
|
|
355
|
+
|
|
356
|
+
/// \name Iteration control
|
|
357
|
+
//@{
|
|
358
|
+
/// Test whether iterator is still at a range or done
|
|
359
|
+
bool operator()(void) const;
|
|
360
|
+
/// Move iterator to previous range (if possible)
|
|
361
|
+
void operator++(void);
|
|
362
|
+
//@}
|
|
363
|
+
|
|
364
|
+
/// \name Range access
|
|
365
|
+
//@{
|
|
366
|
+
/// Return smallest value of range
|
|
367
|
+
int min(void) const;
|
|
368
|
+
/// Return largest value of range
|
|
369
|
+
int max(void) const;
|
|
370
|
+
/// Return width of range (distance between minimum and maximum)
|
|
371
|
+
unsigned int width(void) const;
|
|
372
|
+
//@}
|
|
373
|
+
};
|
|
374
|
+
|
|
375
|
+
|
|
376
|
+
class IntView;
|
|
377
|
+
class BoolView;
|
|
378
|
+
|
|
379
|
+
}}
|
|
380
|
+
|
|
381
|
+
#include "gecode/int/var/imp.icc"
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
namespace Gecode {
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* \brief Integer variables
|
|
388
|
+
*
|
|
389
|
+
* \ingroup TaskIntIntVars
|
|
390
|
+
*/
|
|
391
|
+
class IntVar {
|
|
392
|
+
protected:
|
|
393
|
+
/// Integer variable implementation used
|
|
394
|
+
Int::IntVarImp* var;
|
|
395
|
+
public:
|
|
396
|
+
/// \name Constructors and initialization
|
|
397
|
+
//@{
|
|
398
|
+
/// Default constructor
|
|
399
|
+
IntVar(void);
|
|
400
|
+
/// Initialize from integer variable \a x
|
|
401
|
+
IntVar(const IntVar& x);
|
|
402
|
+
/// Initialize from integer view \a x
|
|
403
|
+
IntVar(const Int::IntView& x);
|
|
404
|
+
/**
|
|
405
|
+
* \brief Initialize variable with range domain
|
|
406
|
+
*
|
|
407
|
+
* The variable is created with a domain ranging from \a min
|
|
408
|
+
* to \a max. The following exceptions might be thrown:
|
|
409
|
+
* - If \a min is greater than \a max, an exception of type
|
|
410
|
+
* Gecode::Int::VariableEmptyDomain is thrown.
|
|
411
|
+
* - If \a min or \a max exceed the limits for integers as defined
|
|
412
|
+
* in Gecode::Limits::Int, an exception of type
|
|
413
|
+
* Gecode::Int::VariableOutOfDomain is thrown.
|
|
414
|
+
*/
|
|
415
|
+
GECODE_INT_EXPORT IntVar(Space* home, int min ,int max);
|
|
416
|
+
/**
|
|
417
|
+
* \brief Initialize variable with arbitrary domain
|
|
418
|
+
*
|
|
419
|
+
* The variable is created with a domain described by \a d.
|
|
420
|
+
* The following exceptions might be thrown:
|
|
421
|
+
* - If \a d is empty, an exception of type
|
|
422
|
+
* Gecode::Int::VariableEmptyDomain is thrown.
|
|
423
|
+
* - If \a d contains values that exceed the limits for integers
|
|
424
|
+
* as defined in Gecode::Limits::Int, an exception of type
|
|
425
|
+
* Gecode::Int::VariableOutOfDomain is thrown.
|
|
426
|
+
*/
|
|
427
|
+
GECODE_INT_EXPORT IntVar(Space* home, const IntSet& d);
|
|
428
|
+
/**
|
|
429
|
+
* \brief Initialize variable with range domain
|
|
430
|
+
*
|
|
431
|
+
* The variable is created with a domain ranging from \a min
|
|
432
|
+
* to \a max. The following exceptions might be thrown:
|
|
433
|
+
* - If \a min is greater than \a max, an exception of type
|
|
434
|
+
* Gecode::Int::VariableEmptyDomain is thrown.
|
|
435
|
+
* - If \a min or \a max exceed the limits for integers as defined
|
|
436
|
+
* in Gecode::Limits::Int, an exception of type
|
|
437
|
+
* Gecode::Int::VariableOutOfDomain is thrown.
|
|
438
|
+
*/
|
|
439
|
+
GECODE_INT_EXPORT void init(Space* home, int min, int max);
|
|
440
|
+
/**
|
|
441
|
+
* \brief Initialize variable with arbitrary domain
|
|
442
|
+
*
|
|
443
|
+
* The variable is created with a domain described by \a d.
|
|
444
|
+
* The following exceptions might be thrown:
|
|
445
|
+
* - If \a d is empty, an exception of type
|
|
446
|
+
* Gecode::Int::VariableEmptyDomain is thrown.
|
|
447
|
+
* - If \a d contains values that exceed the limits for integers
|
|
448
|
+
* as defined in Gecode::Limits::Int, an exception of type
|
|
449
|
+
* Gecode::Int::VariableOutOfDomain is thrown.
|
|
450
|
+
*/
|
|
451
|
+
GECODE_INT_EXPORT void init(Space* home, const IntSet& d);
|
|
452
|
+
//@}
|
|
453
|
+
|
|
454
|
+
/// \name Variable implementation access
|
|
455
|
+
//@{
|
|
456
|
+
/// Return integer variable implementation
|
|
457
|
+
Int::IntVarImp* variable(void) const;
|
|
458
|
+
//@}
|
|
459
|
+
|
|
460
|
+
/// \name Value access
|
|
461
|
+
//@{
|
|
462
|
+
/// Return minimum of domain
|
|
463
|
+
int min(void) const;
|
|
464
|
+
/// Return maximum of domain
|
|
465
|
+
int max(void) const;
|
|
466
|
+
/// Return median of domain
|
|
467
|
+
int med(void) const;
|
|
468
|
+
/// Return assigned value (only if assigned)
|
|
469
|
+
int val(void) const;
|
|
470
|
+
|
|
471
|
+
/// Return size (cardinality) of domain
|
|
472
|
+
unsigned int size(void) const;
|
|
473
|
+
/// Return width of domain (distance between maximum and minimum)
|
|
474
|
+
unsigned int width(void) const;
|
|
475
|
+
/// Return degree (number of subscribed propagators)
|
|
476
|
+
unsigned int degree(void) const;
|
|
477
|
+
//@}
|
|
478
|
+
|
|
479
|
+
/// \name Domain tests
|
|
480
|
+
//@{
|
|
481
|
+
/// Test whether domain is a range
|
|
482
|
+
bool range(void) const;
|
|
483
|
+
/// Test whether view is assigned
|
|
484
|
+
bool assigned(void) const;
|
|
485
|
+
|
|
486
|
+
/// Test whether \a n is contained in domain
|
|
487
|
+
bool in(int n) const;
|
|
488
|
+
//@}
|
|
489
|
+
|
|
490
|
+
/// \name Cloning
|
|
491
|
+
//@{
|
|
492
|
+
/// Update this variable to be a clone of variable \a x
|
|
493
|
+
void update(Space* home, bool share, IntVar& x);
|
|
494
|
+
//@}
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* \brief %Range iterator for integer variables
|
|
500
|
+
* \ingroup TaskIntIntVars
|
|
501
|
+
*/
|
|
502
|
+
class IntVarRanges : public Int::IntVarImpFwd {
|
|
503
|
+
public:
|
|
504
|
+
/// \name Constructors and initialization
|
|
505
|
+
//@{
|
|
506
|
+
/// Default constructor
|
|
507
|
+
IntVarRanges(void);
|
|
508
|
+
/// Initialize with ranges for integer variable \a x
|
|
509
|
+
IntVarRanges(const IntVar& x);
|
|
510
|
+
/// Initialize with ranges for integer variable \a x
|
|
511
|
+
void init(const IntVar& x);
|
|
512
|
+
//@}
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* \brief Value iterator for integer variables
|
|
517
|
+
* \ingroup TaskIntIntVars
|
|
518
|
+
*/
|
|
519
|
+
class IntVarValues
|
|
520
|
+
: public Iter::Ranges::ToValues<IntVarRanges> {
|
|
521
|
+
public:
|
|
522
|
+
/// \name Constructors and initialization
|
|
523
|
+
//@{
|
|
524
|
+
/// Default constructor
|
|
525
|
+
IntVarValues(void);
|
|
526
|
+
/// Initialize with values for \a x
|
|
527
|
+
IntVarValues(const IntVar& x);
|
|
528
|
+
/// Initialize with values \a x
|
|
529
|
+
void init(const IntVar& x);
|
|
530
|
+
//@}
|
|
531
|
+
};
|
|
532
|
+
|
|
533
|
+
/**
|
|
534
|
+
* \brief Boolean integer variables
|
|
535
|
+
*
|
|
536
|
+
* \ingroup TaskIntIntVars
|
|
537
|
+
*/
|
|
538
|
+
class BoolVar : public IntVar {
|
|
539
|
+
public:
|
|
540
|
+
/// \name Constructors and initialization
|
|
541
|
+
//@{
|
|
542
|
+
/// Default constructor
|
|
543
|
+
BoolVar(void);
|
|
544
|
+
/// Initialize from Boolean View \a x
|
|
545
|
+
BoolVar(const Int::BoolView& x);
|
|
546
|
+
/**
|
|
547
|
+
* \brief Initialize Boolean variable with range domain
|
|
548
|
+
*
|
|
549
|
+
* The variable is created with a domain ranging from \a min
|
|
550
|
+
* to \a max. The following exceptions might be thrown:
|
|
551
|
+
* - If \a min is greater than \a max, an exception of type
|
|
552
|
+
* Gecode::Int::VariableEmptyDomain is thrown.
|
|
553
|
+
* - If \a min is less than 0 or \a max is greater than 1,
|
|
554
|
+
* an exception of type
|
|
555
|
+
* Gecode::Int::VariableOutOfDomain is thrown.
|
|
556
|
+
*/
|
|
557
|
+
BoolVar(Space* home, int min, int max);
|
|
558
|
+
/**
|
|
559
|
+
* \brief Initialize Boolean variable from integer variable
|
|
560
|
+
*
|
|
561
|
+
* If \a x.min() is less than 0 or \a x.max() is greater than 1,
|
|
562
|
+
* an exception of type Gecode::Int::VariableOutOfDomain is thrown.
|
|
563
|
+
*/
|
|
564
|
+
explicit BoolVar(const IntVar& x);
|
|
565
|
+
//@}
|
|
566
|
+
|
|
567
|
+
/// \name Cloning
|
|
568
|
+
//@{
|
|
569
|
+
/// Update this variable to be a clone of variable \a x
|
|
570
|
+
void update(Space* home, bool share, BoolVar& x);
|
|
571
|
+
//@}
|
|
572
|
+
};
|
|
573
|
+
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* \brief Print integer variable \a x
|
|
578
|
+
* \relates Gecode::IntVar
|
|
579
|
+
*/
|
|
580
|
+
std::ostream&
|
|
581
|
+
operator<<(std::ostream&, const Gecode::IntVar& x);
|
|
582
|
+
|
|
583
|
+
/*
|
|
584
|
+
* For initialization, IntVar and IntView are mutually dependent.
|
|
585
|
+
* Therefore, the inclusion of the variable definition is in view.hh
|
|
586
|
+
*
|
|
587
|
+
*/
|
|
588
|
+
|
|
589
|
+
// STATISTICS: int-var
|
|
590
|
+
|