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,87 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2005
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-08-04 16:06:38 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
|
10
|
+
* $Revision: 3516 $
|
|
11
|
+
*
|
|
12
|
+
* This file is part of Gecode, the generic constraint
|
|
13
|
+
* development environment:
|
|
14
|
+
* http://www.gecode.org
|
|
15
|
+
*
|
|
16
|
+
* See the file "LICENSE" for information on usage and
|
|
17
|
+
* redistribution of this file, and for a
|
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#ifndef __GECODE_LIMITS_HH__
|
|
23
|
+
#define __GECODE_LIMITS_HH__
|
|
24
|
+
|
|
25
|
+
#include <climits>
|
|
26
|
+
#include <cfloat>
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Numerical limits
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
namespace Gecode { namespace Limits {
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* \namespace Gecode::Limits
|
|
37
|
+
* \brief Numerical limits
|
|
38
|
+
*
|
|
39
|
+
* Contains constants describing numerical limits
|
|
40
|
+
* for numbers contained in integer and set variables.
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
namespace Int {
|
|
45
|
+
/**
|
|
46
|
+
* \namespace Gecode::Limits::Int
|
|
47
|
+
* \brief Numerical limits for integer variables
|
|
48
|
+
*
|
|
49
|
+
* The integer limits are chosen such that addition and subtraction
|
|
50
|
+
* of two values within the limits can be done safely without
|
|
51
|
+
* numerical overflow. Also, changing the sign is always possible
|
|
52
|
+
* without overflow.
|
|
53
|
+
*
|
|
54
|
+
*/
|
|
55
|
+
|
|
56
|
+
/// Largest allowed integer value
|
|
57
|
+
const int int_max = ((INT_MAX)>>1) - 1;
|
|
58
|
+
/// Smallest allowed integer value
|
|
59
|
+
const int int_min = -int_max;
|
|
60
|
+
|
|
61
|
+
/// Largest double that can exactly be represented
|
|
62
|
+
const double double_max = 9007199254740991.0;
|
|
63
|
+
/// Smallest double that can exactly be represented
|
|
64
|
+
const double double_min = -9007199254740991.0;
|
|
65
|
+
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
namespace Set {
|
|
69
|
+
/**
|
|
70
|
+
* \namespace Gecode::Limits::Set
|
|
71
|
+
* \brief Numerical limits for set variables
|
|
72
|
+
*
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
/// Largest allowed integer in integer set
|
|
76
|
+
const int int_max = ((INT_MAX)>>2) - 1;
|
|
77
|
+
/// Smallest allowed integer in integer set
|
|
78
|
+
const int int_min = -int_max;
|
|
79
|
+
/// Maximum cardinality of an integer set
|
|
80
|
+
const unsigned int card_max = int_max-int_min+1;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
}}
|
|
84
|
+
|
|
85
|
+
#endif
|
|
86
|
+
|
|
87
|
+
// STATISTICS: kernel-other
|
|
@@ -0,0 +1,942 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
* Mikael Lagerkvist <lagerkvist@gecode.org>
|
|
6
|
+
*
|
|
7
|
+
* Copyright:
|
|
8
|
+
* Christian Schulte, 2004
|
|
9
|
+
* Guido Tack, 2004
|
|
10
|
+
* Mikael Lagerkvist, 2005
|
|
11
|
+
*
|
|
12
|
+
* Last modified:
|
|
13
|
+
* $Date: 2006-08-31 17:36:38 +0200 (Thu, 31 Aug 2006) $ by $Author: schulte $
|
|
14
|
+
* $Revision: 3579 $
|
|
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
|
+
#ifndef __GECODE_MINIMODEL_HH__
|
|
27
|
+
#define __GECODE_MINIMODEL_HH__
|
|
28
|
+
|
|
29
|
+
#include "gecode/kernel.hh"
|
|
30
|
+
#include "gecode/int.hh"
|
|
31
|
+
#include "gecode/int/linear.hh"
|
|
32
|
+
|
|
33
|
+
#include "gecode/minimodel/exception.icc"
|
|
34
|
+
|
|
35
|
+
#include <iostream>
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* Support for DLLs under Windows
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
#if !defined(GECODE_STATIC_LIBS) && \
|
|
43
|
+
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
|
44
|
+
|
|
45
|
+
#ifdef GECODE_BUILD_MINIMODEL
|
|
46
|
+
#define GECODE_MINIMODEL_EXPORT __declspec( dllexport )
|
|
47
|
+
#else
|
|
48
|
+
#define GECODE_MINIMODEL_EXPORT __declspec( dllimport )
|
|
49
|
+
#endif
|
|
50
|
+
|
|
51
|
+
#else
|
|
52
|
+
|
|
53
|
+
#ifdef GCC_HASCLASSVISIBILITY
|
|
54
|
+
|
|
55
|
+
#define GECODE_MINIMODEL_EXPORT __attribute__ ((visibility("default")))
|
|
56
|
+
|
|
57
|
+
#else
|
|
58
|
+
|
|
59
|
+
#define GECODE_MINIMODEL_EXPORT
|
|
60
|
+
|
|
61
|
+
#endif
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
namespace Gecode {
|
|
65
|
+
|
|
66
|
+
/// Minimal modelling support
|
|
67
|
+
namespace MiniModel {
|
|
68
|
+
|
|
69
|
+
/// Linear expressions
|
|
70
|
+
class LinExpr {
|
|
71
|
+
private:
|
|
72
|
+
/// Nodes for linear expressions
|
|
73
|
+
class Node {
|
|
74
|
+
private:
|
|
75
|
+
/// Nodes are reference counted
|
|
76
|
+
unsigned int use;
|
|
77
|
+
/// Left and right subtrees
|
|
78
|
+
Node *left, *right;
|
|
79
|
+
/// Left and right signs for entire subtress
|
|
80
|
+
int signLeft, signRight;
|
|
81
|
+
/// Coefficient
|
|
82
|
+
int a;
|
|
83
|
+
/// Variable
|
|
84
|
+
IntVar x;
|
|
85
|
+
public:
|
|
86
|
+
/// Construct node for \a a multiplied with \a x
|
|
87
|
+
Node(int a, const IntVar& x);
|
|
88
|
+
/// Construct node from nodes \a n0 and \a n1 with signs \a s0 and \a s1
|
|
89
|
+
Node(Node* n0, int s0, Node* n1, int s1);
|
|
90
|
+
|
|
91
|
+
/// Increment reference count
|
|
92
|
+
void increment(void);
|
|
93
|
+
/// Decrement reference count and possibly free memory
|
|
94
|
+
GECODE_MINIMODEL_EXPORT bool decrement(void);
|
|
95
|
+
|
|
96
|
+
/// Fill in array of linear terms based on this node
|
|
97
|
+
GECODE_MINIMODEL_EXPORT int
|
|
98
|
+
fill(Int::Linear::Term t[], int i, int s) const;
|
|
99
|
+
|
|
100
|
+
/// Memory management
|
|
101
|
+
static void* operator new(size_t size);
|
|
102
|
+
/// Memory management
|
|
103
|
+
static void operator delete(void* p,size_t size);
|
|
104
|
+
};
|
|
105
|
+
Node* ax; ///< Node for expression
|
|
106
|
+
public:
|
|
107
|
+
unsigned int n; ///< Number of variables in sub terms
|
|
108
|
+
int c; ///< Constant for expression
|
|
109
|
+
int sign; ///< Sign for expression
|
|
110
|
+
/// Default constructor
|
|
111
|
+
LinExpr(void);
|
|
112
|
+
/// Copy constructor
|
|
113
|
+
LinExpr(const LinExpr& e);
|
|
114
|
+
/// Create expression \f$a\cdot x+c\f$
|
|
115
|
+
LinExpr(const IntVar& x, int a=1, int c=0);
|
|
116
|
+
/// Create expression \f$e_0+s\cdot e_1\f$ (where \a s is the sign)
|
|
117
|
+
LinExpr(const LinExpr& e0, const LinExpr& e1, int s);
|
|
118
|
+
/// Create expression \f$s\cdot e+c\f$ (where \a s is the sign)
|
|
119
|
+
LinExpr(const LinExpr& e, int c, int s);
|
|
120
|
+
/// Create expression \f$a\cdot e\f$
|
|
121
|
+
LinExpr(int a, const LinExpr& e);
|
|
122
|
+
/// Assignment operator
|
|
123
|
+
const LinExpr& operator=(const LinExpr& e);
|
|
124
|
+
/// Post propagator
|
|
125
|
+
GECODE_MINIMODEL_EXPORT
|
|
126
|
+
void post(Space* home, IntRelType irt, IntConLevel icl) const;
|
|
127
|
+
/// Post reified propagator
|
|
128
|
+
GECODE_MINIMODEL_EXPORT
|
|
129
|
+
void post(Space* home, IntRelType irt, const BoolVar& b) const;
|
|
130
|
+
/// Post propagator and return variable for value
|
|
131
|
+
GECODE_MINIMODEL_EXPORT
|
|
132
|
+
IntVar post(Space* home, IntConLevel icl) const;
|
|
133
|
+
/// Destructor
|
|
134
|
+
~LinExpr(void);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/// Linear relations
|
|
138
|
+
class LinRel {
|
|
139
|
+
private:
|
|
140
|
+
/// Linear expression describing the entire relation
|
|
141
|
+
LinExpr e;
|
|
142
|
+
/// Which relation
|
|
143
|
+
IntRelType irt;
|
|
144
|
+
/// Negate relation type
|
|
145
|
+
static IntRelType neg(IntRelType irt);
|
|
146
|
+
public:
|
|
147
|
+
/// Default constructor
|
|
148
|
+
LinRel(void);
|
|
149
|
+
/// Create linear relation for expressions \a l and \a r
|
|
150
|
+
LinRel(const LinExpr& l, IntRelType irt, const LinExpr& r);
|
|
151
|
+
/// Create linear relation for expression \a l and integer \a r
|
|
152
|
+
LinRel(const LinExpr& l, IntRelType irt, int r);
|
|
153
|
+
/// Create linear relation for integer \a l and expression \a r
|
|
154
|
+
LinRel(int l, IntRelType irt, const LinExpr& r);
|
|
155
|
+
/// Post propagator for relation (if \a t is false for negated relation)
|
|
156
|
+
void post(Space* home, bool t, IntConLevel icl) const;
|
|
157
|
+
/// Post refied propagator for relation
|
|
158
|
+
void post(Space* home, const BoolVar& b) const;
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* \defgroup TaskMiniModelLin Linear expressions and relations
|
|
167
|
+
*
|
|
168
|
+
* Linear expressions can be freely composed of sums and differences of
|
|
169
|
+
* integer variables (Gecode::IntVar) possibly with integer coefficients
|
|
170
|
+
* and integer constants.
|
|
171
|
+
*
|
|
172
|
+
* Note that integer variables are automatically available as linear
|
|
173
|
+
* expressions.
|
|
174
|
+
*
|
|
175
|
+
* Linear relations are obtained from linear expressions with the normal
|
|
176
|
+
* relation operators.
|
|
177
|
+
*
|
|
178
|
+
* \ingroup TaskMiniModel
|
|
179
|
+
*/
|
|
180
|
+
|
|
181
|
+
//@{
|
|
182
|
+
|
|
183
|
+
/// Construct linear expression as sum of linear expression and integer
|
|
184
|
+
Gecode::MiniModel::LinExpr
|
|
185
|
+
operator+(int,
|
|
186
|
+
const Gecode::MiniModel::LinExpr&);
|
|
187
|
+
/// Construct linear expression as sum of integer and linear expression
|
|
188
|
+
Gecode::MiniModel::LinExpr
|
|
189
|
+
operator+(const Gecode::MiniModel::LinExpr&,
|
|
190
|
+
int);
|
|
191
|
+
/// Construct linear expression as sum of linear expressions
|
|
192
|
+
Gecode::MiniModel::LinExpr
|
|
193
|
+
operator+(const Gecode::MiniModel::LinExpr&,
|
|
194
|
+
const Gecode::MiniModel::LinExpr&);
|
|
195
|
+
|
|
196
|
+
/// Construct linear expression as difference of linear expression and integer
|
|
197
|
+
Gecode::MiniModel::LinExpr
|
|
198
|
+
operator-(int,
|
|
199
|
+
const Gecode::MiniModel::LinExpr&);
|
|
200
|
+
/// Construct linear expression as difference of integer and linear expression
|
|
201
|
+
Gecode::MiniModel::LinExpr
|
|
202
|
+
operator-(const Gecode::MiniModel::LinExpr&,
|
|
203
|
+
int);
|
|
204
|
+
/// Construct linear expression as difference of linear expressions
|
|
205
|
+
Gecode::MiniModel::LinExpr
|
|
206
|
+
operator-(const Gecode::MiniModel::LinExpr&,
|
|
207
|
+
const Gecode::MiniModel::LinExpr&);
|
|
208
|
+
|
|
209
|
+
/// Construct linear expression as negative of linear expression
|
|
210
|
+
Gecode::MiniModel::LinExpr
|
|
211
|
+
operator-(const Gecode::MiniModel::LinExpr&);
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
/// Construct linear expression as product of integer coefficient and integer variable
|
|
215
|
+
Gecode::MiniModel::LinExpr
|
|
216
|
+
operator*(int, const Gecode::IntVar&);
|
|
217
|
+
/// Construct linear expression as product of integer coefficient and integer variable
|
|
218
|
+
Gecode::MiniModel::LinExpr
|
|
219
|
+
operator*(const Gecode::IntVar&, int);
|
|
220
|
+
/// Construct linear expression as product of integer coefficient and linear expression
|
|
221
|
+
Gecode::MiniModel::LinExpr
|
|
222
|
+
operator*(const Gecode::MiniModel::LinExpr&, int);
|
|
223
|
+
/// Construct linear expression as product of integer coefficient and linear expression
|
|
224
|
+
Gecode::MiniModel::LinExpr
|
|
225
|
+
operator*(int, const Gecode::MiniModel::LinExpr&);
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
/// Construct linear equality relation
|
|
229
|
+
Gecode::MiniModel::LinRel
|
|
230
|
+
operator==(int l,
|
|
231
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
232
|
+
/// Construct linear equality relation
|
|
233
|
+
Gecode::MiniModel::LinRel
|
|
234
|
+
operator==(const Gecode::MiniModel::LinExpr& l,
|
|
235
|
+
int r);
|
|
236
|
+
/// Construct linear equality relation
|
|
237
|
+
Gecode::MiniModel::LinRel
|
|
238
|
+
operator==(const Gecode::MiniModel::LinExpr& l,
|
|
239
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
240
|
+
|
|
241
|
+
/// Construct linear disequality relation
|
|
242
|
+
Gecode::MiniModel::LinRel
|
|
243
|
+
operator!=(int l,
|
|
244
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
245
|
+
/// Construct linear disequality relation
|
|
246
|
+
Gecode::MiniModel::LinRel
|
|
247
|
+
operator!=(const Gecode::MiniModel::LinExpr& l,
|
|
248
|
+
int r);
|
|
249
|
+
/// Construct linear disequality relation
|
|
250
|
+
Gecode::MiniModel::LinRel
|
|
251
|
+
operator!=(const Gecode::MiniModel::LinExpr& l,
|
|
252
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
253
|
+
|
|
254
|
+
/// Construct linear inequality relation
|
|
255
|
+
Gecode::MiniModel::LinRel
|
|
256
|
+
operator<(int l,
|
|
257
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
258
|
+
/// Construct linear inequality relation
|
|
259
|
+
Gecode::MiniModel::LinRel
|
|
260
|
+
operator<(const Gecode::MiniModel::LinExpr& l,
|
|
261
|
+
int r);
|
|
262
|
+
/// Construct linear inequality relation
|
|
263
|
+
Gecode::MiniModel::LinRel
|
|
264
|
+
operator<(const Gecode::MiniModel::LinExpr& l,
|
|
265
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
266
|
+
|
|
267
|
+
/// Construct linear inequality relation
|
|
268
|
+
Gecode::MiniModel::LinRel
|
|
269
|
+
operator<=(int l,
|
|
270
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
271
|
+
/// Construct linear inequality relation
|
|
272
|
+
Gecode::MiniModel::LinRel
|
|
273
|
+
operator<=(const Gecode::MiniModel::LinExpr& l,
|
|
274
|
+
int r);
|
|
275
|
+
/// Construct linear inequality relation
|
|
276
|
+
Gecode::MiniModel::LinRel
|
|
277
|
+
operator<=(const Gecode::MiniModel::LinExpr& l,
|
|
278
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
279
|
+
|
|
280
|
+
/// Construct linear inequality relation
|
|
281
|
+
Gecode::MiniModel::LinRel
|
|
282
|
+
operator>(int l,
|
|
283
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
284
|
+
/// Construct linear inequality relation
|
|
285
|
+
Gecode::MiniModel::LinRel
|
|
286
|
+
operator>(const Gecode::MiniModel::LinExpr& l,
|
|
287
|
+
int r);
|
|
288
|
+
/// Construct linear inequality relation
|
|
289
|
+
Gecode::MiniModel::LinRel
|
|
290
|
+
operator>(const Gecode::MiniModel::LinExpr& l,
|
|
291
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
292
|
+
|
|
293
|
+
/// Construct linear inequality relation
|
|
294
|
+
Gecode::MiniModel::LinRel
|
|
295
|
+
operator>=(int l,
|
|
296
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
297
|
+
/// Construct linear inequality relation
|
|
298
|
+
Gecode::MiniModel::LinRel
|
|
299
|
+
operator>=(const Gecode::MiniModel::LinExpr& l,
|
|
300
|
+
int r);
|
|
301
|
+
/// Construct linear inequality relation
|
|
302
|
+
Gecode::MiniModel::LinRel
|
|
303
|
+
operator>=(const Gecode::MiniModel::LinExpr& l,
|
|
304
|
+
const Gecode::MiniModel::LinExpr& r);
|
|
305
|
+
|
|
306
|
+
//@}
|
|
307
|
+
|
|
308
|
+
namespace Gecode {
|
|
309
|
+
|
|
310
|
+
namespace MiniModel {
|
|
311
|
+
|
|
312
|
+
/// Boolean expressions
|
|
313
|
+
class BoolExpr {
|
|
314
|
+
public:
|
|
315
|
+
/// Type of Boolean expression
|
|
316
|
+
enum NodeType {
|
|
317
|
+
BT_VAR, ///< Variable
|
|
318
|
+
BT_NOT, ///< Negation
|
|
319
|
+
BT_AND, ///< Conjunction
|
|
320
|
+
BT_OR, ///< Disjunction
|
|
321
|
+
BT_IMP, ///< Implication
|
|
322
|
+
BT_XOR, ///< Exclusive or
|
|
323
|
+
BT_EQV, ///< Equivalence
|
|
324
|
+
BT_RLIN ///< Reified linear relation
|
|
325
|
+
};
|
|
326
|
+
/// Node for Boolean expression
|
|
327
|
+
class Node {
|
|
328
|
+
public:
|
|
329
|
+
/// Nodes are reference counted
|
|
330
|
+
unsigned int use;
|
|
331
|
+
/// Number of variables in subtree with same type (for AND and OR)
|
|
332
|
+
unsigned int same;
|
|
333
|
+
/// Type of expression
|
|
334
|
+
NodeType t;
|
|
335
|
+
/// Subexpressions
|
|
336
|
+
Node *l, *r;
|
|
337
|
+
/// Possibly a variable
|
|
338
|
+
BoolVar x;
|
|
339
|
+
/// Possibly a reified linear relation
|
|
340
|
+
LinRel rl;
|
|
341
|
+
|
|
342
|
+
/// Default constructor
|
|
343
|
+
Node(void);
|
|
344
|
+
/// Decrement reference count and possibly free memory
|
|
345
|
+
GECODE_MINIMODEL_EXPORT bool decrement(void);
|
|
346
|
+
/// Post propagators for nested conjunctive and disjunctive expression
|
|
347
|
+
GECODE_MINIMODEL_EXPORT int post(Space* home, NodeType t,
|
|
348
|
+
BoolVarArgs& b, int i) const;
|
|
349
|
+
/// Post propagators for expression
|
|
350
|
+
GECODE_MINIMODEL_EXPORT void post(Space* home, BoolVar b) const;
|
|
351
|
+
/// Post propagators for expression
|
|
352
|
+
GECODE_MINIMODEL_EXPORT BoolVar post(Space* home) const;
|
|
353
|
+
/// Post propagators for relation
|
|
354
|
+
GECODE_MINIMODEL_EXPORT void post(Space* home, bool t) const;
|
|
355
|
+
|
|
356
|
+
/// Memory management
|
|
357
|
+
static void* operator new(size_t size);
|
|
358
|
+
/// Memory management
|
|
359
|
+
static void operator delete(void* p,size_t size);
|
|
360
|
+
};
|
|
361
|
+
private:
|
|
362
|
+
/// Pointer to node for expression
|
|
363
|
+
Node* n;
|
|
364
|
+
public:
|
|
365
|
+
/// Copy constructor
|
|
366
|
+
BoolExpr(const BoolExpr& e);
|
|
367
|
+
/// Construct expression for type and subexpresssions
|
|
368
|
+
BoolExpr(const BoolExpr& l, NodeType t, const BoolExpr& r);
|
|
369
|
+
/// Construct expression for variable
|
|
370
|
+
BoolExpr(const BoolVar& x);
|
|
371
|
+
/// Construct expression for negation
|
|
372
|
+
BoolExpr(const BoolExpr& e, NodeType t);
|
|
373
|
+
/// Construct expression for reified linear relation
|
|
374
|
+
BoolExpr(const LinRel& rl);
|
|
375
|
+
/// Post propagators for expression
|
|
376
|
+
BoolVar post(Space* home) const;
|
|
377
|
+
/// Post propagators for relation
|
|
378
|
+
void post(Space* home, bool t) const;
|
|
379
|
+
|
|
380
|
+
/// Assignment operator
|
|
381
|
+
const BoolExpr& operator=(const BoolExpr& e);
|
|
382
|
+
/// Destructor
|
|
383
|
+
~BoolExpr(void);
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
/// Boolean relations
|
|
387
|
+
class BoolRel {
|
|
388
|
+
private:
|
|
389
|
+
/// Expression
|
|
390
|
+
BoolExpr e;
|
|
391
|
+
/// Whether expression is true or false
|
|
392
|
+
bool t;
|
|
393
|
+
public:
|
|
394
|
+
/// Constructor
|
|
395
|
+
BoolRel(const BoolExpr& e, bool t);
|
|
396
|
+
/// Post propagators for relation
|
|
397
|
+
void post(Space* home) const;
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
/**
|
|
404
|
+
* \defgroup TaskMiniModelBool Boolean expressions and relations
|
|
405
|
+
*
|
|
406
|
+
* Boolean expressions can be freely composed of variables with
|
|
407
|
+
* the usual connectives and reified linear expressions.
|
|
408
|
+
*
|
|
409
|
+
* Boolean relations are obtained from Boolean expressions with
|
|
410
|
+
* functions \a tt (stating that the expression must be true)
|
|
411
|
+
* and \a ff (stating that the expression must be false).
|
|
412
|
+
*
|
|
413
|
+
* \ingroup TaskMiniModel
|
|
414
|
+
*/
|
|
415
|
+
|
|
416
|
+
//@{
|
|
417
|
+
|
|
418
|
+
/// Negated Boolean expression
|
|
419
|
+
Gecode::MiniModel::BoolExpr
|
|
420
|
+
operator!(const Gecode::MiniModel::BoolExpr&);
|
|
421
|
+
|
|
422
|
+
/// Conjunction of Boolean expressions
|
|
423
|
+
Gecode::MiniModel::BoolExpr
|
|
424
|
+
operator&&(const Gecode::MiniModel::BoolExpr&,
|
|
425
|
+
const Gecode::MiniModel::BoolExpr&);
|
|
426
|
+
|
|
427
|
+
/// Disjunction of Boolean expressions
|
|
428
|
+
Gecode::MiniModel::BoolExpr
|
|
429
|
+
operator||(const Gecode::MiniModel::BoolExpr&,
|
|
430
|
+
const Gecode::MiniModel::BoolExpr&);
|
|
431
|
+
|
|
432
|
+
/// Exclusive-or of Boolean expressions
|
|
433
|
+
Gecode::MiniModel::BoolExpr
|
|
434
|
+
operator^(const Gecode::MiniModel::BoolExpr&,
|
|
435
|
+
const Gecode::MiniModel::BoolExpr&);
|
|
436
|
+
|
|
437
|
+
/// Reification of linear expression
|
|
438
|
+
Gecode::MiniModel::BoolExpr
|
|
439
|
+
operator~(const Gecode::MiniModel::LinExpr&);
|
|
440
|
+
|
|
441
|
+
namespace Gecode {
|
|
442
|
+
|
|
443
|
+
/// Equivalence of Boolean expressions
|
|
444
|
+
MiniModel::BoolExpr
|
|
445
|
+
eqv(const MiniModel::BoolExpr&,
|
|
446
|
+
const MiniModel::BoolExpr&);
|
|
447
|
+
/// Implication of Boolean expressions
|
|
448
|
+
MiniModel::BoolExpr
|
|
449
|
+
imp(const MiniModel::BoolExpr&,
|
|
450
|
+
const MiniModel::BoolExpr&);
|
|
451
|
+
|
|
452
|
+
/// State that Boolean expression must be true
|
|
453
|
+
MiniModel::BoolRel
|
|
454
|
+
tt(const MiniModel::BoolExpr&);
|
|
455
|
+
|
|
456
|
+
/// State that Boolean expression must be false
|
|
457
|
+
MiniModel::BoolRel
|
|
458
|
+
ff(const MiniModel::BoolExpr&);
|
|
459
|
+
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
//@}
|
|
463
|
+
|
|
464
|
+
namespace Gecode {
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* \defgroup TaskMiniModelPost Posting of expressions and relations
|
|
468
|
+
*
|
|
469
|
+
* \ingroup TaskMiniModel
|
|
470
|
+
*/
|
|
471
|
+
//@{
|
|
472
|
+
/// Post linear expression and return its value
|
|
473
|
+
IntVar post(Space* home, const MiniModel::LinExpr& e,
|
|
474
|
+
IntConLevel icl=ICL_DEF);
|
|
475
|
+
/// Post linear expression (special case for variable) and return its value
|
|
476
|
+
IntVar post(Space* home, const IntVar& x,
|
|
477
|
+
IntConLevel icl=ICL_DEF);
|
|
478
|
+
/// Post linear expression (special case for constant) and return its value
|
|
479
|
+
IntVar post(Space* home, int n,
|
|
480
|
+
IntConLevel icl=ICL_DEF);
|
|
481
|
+
|
|
482
|
+
/// Post linear relation
|
|
483
|
+
void post(Space* home, const MiniModel::LinRel& r,
|
|
484
|
+
IntConLevel icl=ICL_DEF);
|
|
485
|
+
/// Make it work for special integer only-case
|
|
486
|
+
void post(Space* home, bool r,
|
|
487
|
+
IntConLevel icl=ICL_DEF);
|
|
488
|
+
|
|
489
|
+
/// Post Boolean expression and return its value
|
|
490
|
+
BoolVar post(Space* home, const MiniModel::BoolExpr& e,
|
|
491
|
+
IntConLevel icl=ICL_DEF);
|
|
492
|
+
/// Post Boolean expression (special case for variable) and return its value
|
|
493
|
+
BoolVar post(Space* home, const BoolVar& b,
|
|
494
|
+
IntConLevel icl=ICL_DEF);
|
|
495
|
+
/// Post Boolean relation
|
|
496
|
+
void post(Space* home, const MiniModel::BoolRel& r,
|
|
497
|
+
IntConLevel icl=ICL_DEF);
|
|
498
|
+
//@}
|
|
499
|
+
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
#include "gecode/minimodel/lin-expr.icc"
|
|
503
|
+
#include "gecode/minimodel/lin-rel.icc"
|
|
504
|
+
#include "gecode/minimodel/bool-expr.icc"
|
|
505
|
+
#include "gecode/minimodel/bool-rel.icc"
|
|
506
|
+
|
|
507
|
+
namespace Gecode {
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* \defgroup TaskMiniModelArith Arithmetic functions
|
|
511
|
+
*
|
|
512
|
+
* \ingroup TaskMiniModel
|
|
513
|
+
*/
|
|
514
|
+
//@{
|
|
515
|
+
/// Return variable constrained to \f$|x|\f$
|
|
516
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
517
|
+
abs(Space* home, IntVar x, IntConLevel icl=ICL_DEF);
|
|
518
|
+
/// Return variable constrained to \f$\min(x,y)\f$
|
|
519
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
520
|
+
min(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
|
|
521
|
+
/// Return variable constrained to \f$\min(x)\f$
|
|
522
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
523
|
+
min(Space* home, const IntVarArgs& x, IntConLevel icl=ICL_DEF);
|
|
524
|
+
/// Return variable constrained to \f$\max(x,y)\f$
|
|
525
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
526
|
+
max(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
|
|
527
|
+
/// Return variable constrained to \f$\max(x)\f$
|
|
528
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
529
|
+
max(Space* home, const IntVarArgs& x, IntConLevel icl=ICL_DEF);
|
|
530
|
+
/// Return variable constrained to \f$x\cdot y\f$
|
|
531
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
532
|
+
mult(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
|
|
533
|
+
/// Return variable constrained to \f$x^2\f$
|
|
534
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
535
|
+
sqr(Space* home, IntVar x, IntConLevel icl=ICL_DEF);
|
|
536
|
+
/// Return variable constrained to \f$x+y\f$
|
|
537
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
538
|
+
plus(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
|
|
539
|
+
/// Return variable constrained to \f$x-y\f$
|
|
540
|
+
GECODE_MINIMODEL_EXPORT IntVar
|
|
541
|
+
minus(Space* home, IntVar x, IntVar y, IntConLevel icl=ICL_DEF);
|
|
542
|
+
//@}
|
|
543
|
+
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
namespace Gecode {
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* \defgroup TaskMiniModelIntAlias Aliases for integer constraints
|
|
550
|
+
*
|
|
551
|
+
* Contains definitions of common constraints which have different
|
|
552
|
+
* names in Gecode.
|
|
553
|
+
*
|
|
554
|
+
* \ingroup TaskMiniModel
|
|
555
|
+
*/
|
|
556
|
+
|
|
557
|
+
//@{
|
|
558
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\leq m\f$
|
|
559
|
+
*
|
|
560
|
+
* Supports domain-consistent propagation only.
|
|
561
|
+
*/
|
|
562
|
+
inline void
|
|
563
|
+
atmost(Space* home, const IntVarArgs& x, int n, int m,
|
|
564
|
+
IntConLevel icl=ICL_DEF) {
|
|
565
|
+
count(home,x,n,IRT_LQ,m,icl);
|
|
566
|
+
}
|
|
567
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\leq m\f$
|
|
568
|
+
*
|
|
569
|
+
* Supports domain-consistent propagation only.
|
|
570
|
+
*/
|
|
571
|
+
inline void
|
|
572
|
+
atmost(Space* home, const IntVarArgs& x, IntVar y, int m,
|
|
573
|
+
IntConLevel icl=ICL_DEF) {
|
|
574
|
+
count(home,x,y,IRT_LQ,m,icl);
|
|
575
|
+
}
|
|
576
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\leq z\f$
|
|
577
|
+
*
|
|
578
|
+
* Supports domain-consistent propagation only.
|
|
579
|
+
*/
|
|
580
|
+
inline void
|
|
581
|
+
atmost(Space* home, const IntVarArgs& x, int n, IntVar z,
|
|
582
|
+
IntConLevel icl=ICL_DEF) {
|
|
583
|
+
count(home,x,n,IRT_LQ,z,icl);
|
|
584
|
+
}
|
|
585
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\leq z\f$
|
|
586
|
+
*
|
|
587
|
+
* Supports domain-consistent propagation only.
|
|
588
|
+
*/
|
|
589
|
+
inline void
|
|
590
|
+
atmost(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
|
|
591
|
+
IntConLevel icl=ICL_DEF) {
|
|
592
|
+
count(home,x,y,IRT_LQ,z,icl);
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\geq m\f$
|
|
596
|
+
*
|
|
597
|
+
* Supports domain-consistent propagation only.
|
|
598
|
+
*/
|
|
599
|
+
inline void
|
|
600
|
+
atleast(Space* home, const IntVarArgs& x, int n, int m,
|
|
601
|
+
IntConLevel icl=ICL_DEF) {
|
|
602
|
+
count(home,x,n,IRT_GQ,m,icl);
|
|
603
|
+
}
|
|
604
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\geq m\f$
|
|
605
|
+
*
|
|
606
|
+
* Supports domain-consistent propagation only.
|
|
607
|
+
*/
|
|
608
|
+
inline void
|
|
609
|
+
atleast(Space* home, const IntVarArgs& x, IntVar y, int m,
|
|
610
|
+
IntConLevel icl=ICL_DEF) {
|
|
611
|
+
count(home,x,y,IRT_GQ,m,icl);
|
|
612
|
+
}
|
|
613
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}\geq z\f$
|
|
614
|
+
*
|
|
615
|
+
* Supports domain-consistent propagation only.
|
|
616
|
+
*/
|
|
617
|
+
inline void
|
|
618
|
+
atleast(Space* home, const IntVarArgs& x, int n, IntVar z,
|
|
619
|
+
IntConLevel icl=ICL_DEF) {
|
|
620
|
+
count(home,x,n,IRT_GQ,z,icl);
|
|
621
|
+
}
|
|
622
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}\geq z\f$
|
|
623
|
+
*
|
|
624
|
+
* Supports domain-consistent propagation only.
|
|
625
|
+
*/
|
|
626
|
+
inline void
|
|
627
|
+
atleast(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
|
|
628
|
+
IntConLevel icl=ICL_DEF) {
|
|
629
|
+
count(home,x,y,IRT_GQ,z,icl);
|
|
630
|
+
}
|
|
631
|
+
|
|
632
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}=m\f$
|
|
633
|
+
*
|
|
634
|
+
* Supports domain-consistent propagation only.
|
|
635
|
+
*/
|
|
636
|
+
inline void
|
|
637
|
+
exactly(Space* home, const IntVarArgs& x, int n, int m,
|
|
638
|
+
IntConLevel icl=ICL_DEF) {
|
|
639
|
+
count(home,x,n,IRT_EQ,m,icl);
|
|
640
|
+
}
|
|
641
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}=m\f$
|
|
642
|
+
*
|
|
643
|
+
* Supports domain-consistent propagation only.
|
|
644
|
+
*/
|
|
645
|
+
inline void
|
|
646
|
+
exactly(Space* home, const IntVarArgs& x, IntVar y, int m,
|
|
647
|
+
IntConLevel icl=ICL_DEF) {
|
|
648
|
+
count(home,x,y,IRT_EQ,m,icl);
|
|
649
|
+
}
|
|
650
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=n\}=z\f$
|
|
651
|
+
*
|
|
652
|
+
* Supports domain-consistent propagation only.
|
|
653
|
+
*/
|
|
654
|
+
inline void
|
|
655
|
+
exactly(Space* home, const IntVarArgs& x, int n, IntVar z,
|
|
656
|
+
IntConLevel icl=ICL_DEF) {
|
|
657
|
+
count(home,x,n,IRT_EQ,z,icl);
|
|
658
|
+
}
|
|
659
|
+
/** \brief Post propagator for \f$\#\{i\in\{0,\ldots,|x|-1\}\;|\;x_i=y\}=z\f$
|
|
660
|
+
*
|
|
661
|
+
* Supports domain-consistent propagation only.
|
|
662
|
+
*/
|
|
663
|
+
inline void
|
|
664
|
+
exactly(Space* home, const IntVarArgs& x, IntVar y, IntVar z,
|
|
665
|
+
IntConLevel icl=ICL_DEF) {
|
|
666
|
+
count(home,x,y,IRT_EQ,z,icl);
|
|
667
|
+
}
|
|
668
|
+
/** \brief Post propagator for lexical order between \a x and \a y.
|
|
669
|
+
*
|
|
670
|
+
* - Throws an exception of type Int::ArgumentSizeMismatch, if
|
|
671
|
+
* \a x and \a y are of different size.
|
|
672
|
+
*/
|
|
673
|
+
inline void
|
|
674
|
+
lex(Space* home, const IntVarArgs& x, IntRelType r, const IntVarArgs& y,
|
|
675
|
+
IntConLevel icl=ICL_DEF) {
|
|
676
|
+
rel(home,x,r,y,icl);
|
|
677
|
+
}
|
|
678
|
+
|
|
679
|
+
//@}
|
|
680
|
+
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
namespace Gecode {
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* \defgroup TaskMiniModelScheduling Alternative interfaces to scheduling constraints
|
|
687
|
+
*
|
|
688
|
+
* \ingroup TaskMiniModel
|
|
689
|
+
*/
|
|
690
|
+
|
|
691
|
+
//@{
|
|
692
|
+
/** \brief Creates propagator for a producer-consumer constraint.
|
|
693
|
+
*
|
|
694
|
+
* This function will create a propagator that models a
|
|
695
|
+
* producer-consumer constraint, using the translation of such
|
|
696
|
+
* constraints into cumulatives due to Helmut Simoni and Trijntje
|
|
697
|
+
* Cornelissens ("Modelling Producer/Consumer Constraints",
|
|
698
|
+
* Principles and Practice of Constraint Progamming 1995, Cassis,
|
|
699
|
+
* France).
|
|
700
|
+
*
|
|
701
|
+
* \param produce_date \f$ produce\_date_i \f$ is the date of event
|
|
702
|
+
* \f$ i \f$.
|
|
703
|
+
* \param produce_amount \f$ produce\_amount_i \f$ is the amount
|
|
704
|
+
* produced by event \f$ i \f$.
|
|
705
|
+
* \param consume_date \f$ consume\_date_j \f$ is the date of event
|
|
706
|
+
* \f$ j \f$.
|
|
707
|
+
* \param consume_amount \f$ consume\_amount_j \f$ is the amount
|
|
708
|
+
* produced by event \f$ j \f$.
|
|
709
|
+
* \param initial is the amount available at the start
|
|
710
|
+
* \param icl Supports value consistency only (\c cl = ICL_VAL, default)
|
|
711
|
+
*
|
|
712
|
+
* \todo Make amounts variable, requires changes to cumulatives.
|
|
713
|
+
*
|
|
714
|
+
* \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
|
|
715
|
+
* representing producer events or the sizes of the arguments
|
|
716
|
+
* representing consumer events does not match.
|
|
717
|
+
* \exception Int::NumericalOverflow Raised if any numerical argument is
|
|
718
|
+
* larger than Limits::Int::int_max or less than
|
|
719
|
+
* Limits::Int::int_min.
|
|
720
|
+
*/
|
|
721
|
+
GECODE_MINIMODEL_EXPORT void
|
|
722
|
+
producer_consumer(Space *home,
|
|
723
|
+
const IntVarArgs& produce_date, const IntArgs& produce_amount,
|
|
724
|
+
const IntVarArgs& consume_date, const IntArgs& consume_amount,
|
|
725
|
+
int initial, IntConLevel icl=ICL_DEF);
|
|
726
|
+
|
|
727
|
+
|
|
728
|
+
/** \brief Creates propagator for the cumulative constraint.
|
|
729
|
+
*
|
|
730
|
+
* This function will create a propagator for the cumulative constraint, by
|
|
731
|
+
* translating it into a cumulatives constraint.
|
|
732
|
+
*
|
|
733
|
+
* \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
|
|
734
|
+
* \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
|
|
735
|
+
* \param height \f$ height_i \f$ is the height is the amount of resources
|
|
736
|
+
* consumed by task \f$ i \f$
|
|
737
|
+
* \param limit \c limit_r is the amount of resource available
|
|
738
|
+
* \param at_most tells if the amount of resources used for a machine
|
|
739
|
+
* should be less than the limit (\c at_most = true, default) or
|
|
740
|
+
* greater than the limit (\c at_most = false)
|
|
741
|
+
* \param icl Supports value-consistency only (\c cl = ICL_VAL, default).
|
|
742
|
+
*
|
|
743
|
+
* \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
|
|
744
|
+
* representing tasks does not match.
|
|
745
|
+
* \exception Int::NumericalOverflow Raised if any numerical argument is
|
|
746
|
+
* larger than Limits::Int::int_max or less than
|
|
747
|
+
* Limits::Int::int_min.
|
|
748
|
+
*
|
|
749
|
+
*/
|
|
750
|
+
GECODE_MINIMODEL_EXPORT void
|
|
751
|
+
cumulative(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
|
|
752
|
+
const IntVarArgs& height, int limit, bool at_most = true,
|
|
753
|
+
IntConLevel cl=ICL_DEF);
|
|
754
|
+
|
|
755
|
+
/** \brief Creates propagator for the cumulative constraint.
|
|
756
|
+
*
|
|
757
|
+
* \copydoc cumulative()
|
|
758
|
+
*/
|
|
759
|
+
GECODE_MINIMODEL_EXPORT void
|
|
760
|
+
cumulative(Space *home, const IntVarArgs& start, const IntArgs& duration,
|
|
761
|
+
const IntVarArgs& height, int limit, bool at_most = true,
|
|
762
|
+
IntConLevel cl=ICL_DEF);
|
|
763
|
+
|
|
764
|
+
/** \brief Creates propagator for the cumulative constraint.
|
|
765
|
+
*
|
|
766
|
+
* \copydoc cumulative()
|
|
767
|
+
*/
|
|
768
|
+
GECODE_MINIMODEL_EXPORT void
|
|
769
|
+
cumulative(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
|
|
770
|
+
const IntArgs& height, int limit, bool at_most = true,
|
|
771
|
+
IntConLevel cl=ICL_DEF);
|
|
772
|
+
|
|
773
|
+
/** \brief Creates propagator for the cumulative constraint.
|
|
774
|
+
*
|
|
775
|
+
* \copydoc cumulative()
|
|
776
|
+
*/
|
|
777
|
+
GECODE_MINIMODEL_EXPORT void
|
|
778
|
+
cumulative(Space *home, const IntVarArgs& start, const IntArgs& duration,
|
|
779
|
+
const IntArgs& height, int limit, bool at_most = true,
|
|
780
|
+
IntConLevel cl=ICL_DEF);
|
|
781
|
+
|
|
782
|
+
/** \brief Creates propagator for the serialized constraint.
|
|
783
|
+
*
|
|
784
|
+
* This function will create a propagator for the serialized constraint, by
|
|
785
|
+
* translating it into a cumulative constraint.
|
|
786
|
+
*
|
|
787
|
+
* \param start \f$ start_i \f$ is the start date assigned to task \f$ i \f$
|
|
788
|
+
* \param duration \f$ duration_i \f$ is the duration of task \f$ i \f$
|
|
789
|
+
* \param icl Supports value-consistency only (\c cl = ICL_VAL, default).
|
|
790
|
+
*
|
|
791
|
+
* \exception Int::ArgumentSizeMismatch Raised if the sizes of the arguments
|
|
792
|
+
* representing tasks does not match.
|
|
793
|
+
* \exception Int::NumericalOverflow Raised if any numerical argument is
|
|
794
|
+
* larger than Limits::Int::int_max or less than
|
|
795
|
+
* Limits::Int::int_min.
|
|
796
|
+
*
|
|
797
|
+
*/
|
|
798
|
+
GECODE_MINIMODEL_EXPORT void
|
|
799
|
+
serialized(Space *home, const IntVarArgs& start, const IntVarArgs& duration,
|
|
800
|
+
IntConLevel cl=ICL_DEF);
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
/** \brief Creates propagator for the serialized constraint.
|
|
804
|
+
*
|
|
805
|
+
* \copydoc serialized()
|
|
806
|
+
*/
|
|
807
|
+
GECODE_MINIMODEL_EXPORT void
|
|
808
|
+
serialized(Space *home, const IntVarArgs& start, const IntArgs& duration,
|
|
809
|
+
IntConLevel cl=ICL_DEF);
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
//@}
|
|
813
|
+
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
/**
|
|
817
|
+
* \addtogroup TaskMiniModelMatrix Matrix interface for arrays
|
|
818
|
+
*
|
|
819
|
+
* Wrapper for arrays to act as a two-dimensional matrix.
|
|
820
|
+
*
|
|
821
|
+
* \ingroup TaskMiniModel
|
|
822
|
+
*/
|
|
823
|
+
//@{
|
|
824
|
+
namespace Gecode { namespace MiniModel {
|
|
825
|
+
|
|
826
|
+
/** \brief Matrix-interface for arrays
|
|
827
|
+
*
|
|
828
|
+
* This class allows for wrapping some array and accessing it as a
|
|
829
|
+
* matrix.
|
|
830
|
+
*
|
|
831
|
+
* \note This is a light-weight wrapper, and is not intended for
|
|
832
|
+
* storing variables directly instead of in an array.
|
|
833
|
+
*
|
|
834
|
+
* \ingroup TaskMiniModelMatrix
|
|
835
|
+
*/
|
|
836
|
+
template <class A>
|
|
837
|
+
class Matrix {
|
|
838
|
+
public:
|
|
839
|
+
/// The type of elements of this array
|
|
840
|
+
typedef typename ArrayTraits<A>::value_type value_type;
|
|
841
|
+
/// The type of the Args-array type for value_type values.
|
|
842
|
+
typedef typename ArrayTraits<A>::args_type args_type;
|
|
843
|
+
|
|
844
|
+
/** \brief A slice of a matrix.
|
|
845
|
+
*
|
|
846
|
+
* This class represents a slice of the matrix. It is used to get
|
|
847
|
+
* context-dependent behaviour. The slice will be automatically
|
|
848
|
+
* converted to an args_type Args-array or to a Matrix<args_type>
|
|
849
|
+
* depending on the context where it is used.
|
|
850
|
+
*/
|
|
851
|
+
class Slice {
|
|
852
|
+
args_type _r; ///< The elements of the slice
|
|
853
|
+
unsigned int _fc, ///< From column
|
|
854
|
+
_tc, ///< To column
|
|
855
|
+
_fr, ///< From row
|
|
856
|
+
_tr; ///< To row
|
|
857
|
+
public:
|
|
858
|
+
Slice(Matrix<A>& a,
|
|
859
|
+
unsigned int fc, unsigned int tc,
|
|
860
|
+
unsigned int fr, unsigned int tr);
|
|
861
|
+
|
|
862
|
+
operator args_type(void);
|
|
863
|
+
operator Matrix<args_type>(void);
|
|
864
|
+
};
|
|
865
|
+
|
|
866
|
+
private:
|
|
867
|
+
/// The type of storage for this array
|
|
868
|
+
typedef typename ArrayTraits<A>::storage_type storage_type;
|
|
869
|
+
storage_type _a; ///< The array wrapped
|
|
870
|
+
unsigned int _w, ///< The width of the matrix
|
|
871
|
+
_h; ///< The height of the matrix
|
|
872
|
+
|
|
873
|
+
public:
|
|
874
|
+
/** \brief Basic constructor
|
|
875
|
+
*
|
|
876
|
+
* Constructs a Matrix from the array \a a, using \a w and \a h as
|
|
877
|
+
* the width and height of the matrix.
|
|
878
|
+
*
|
|
879
|
+
* The elements in the wrapped array \a a are accessed in
|
|
880
|
+
* row-major order.
|
|
881
|
+
*
|
|
882
|
+
* \exception MiniModel::ArgumentSizeMismatch Raised if the
|
|
883
|
+
* parameters \a w and \a h doesn't match the size
|
|
884
|
+
* of the array \a a.
|
|
885
|
+
*/
|
|
886
|
+
Matrix(A a, unsigned int w, unsigned int h);
|
|
887
|
+
|
|
888
|
+
/** \brief Basic constructor
|
|
889
|
+
*
|
|
890
|
+
* Constructs a square Matrix from the array \a a, using \a n as
|
|
891
|
+
* the length of the sides.
|
|
892
|
+
*
|
|
893
|
+
* The elements in the wrapped array \a a are accessed in
|
|
894
|
+
* row-major order.
|
|
895
|
+
*
|
|
896
|
+
* \exception MiniModel::ArgumentSizeMismatch Raised if the
|
|
897
|
+
* parameter \a n doesn't match the size
|
|
898
|
+
* of the array \a a.
|
|
899
|
+
*/
|
|
900
|
+
Matrix(A a, unsigned int n);
|
|
901
|
+
|
|
902
|
+
/// Return the width of the matrix
|
|
903
|
+
unsigned int width(void) const;
|
|
904
|
+
/// Return the height of the matrix
|
|
905
|
+
unsigned int height(void) const;
|
|
906
|
+
/// Return an Args-array of the contents of the matrix
|
|
907
|
+
args_type const get_array(void);
|
|
908
|
+
|
|
909
|
+
/** \brief Access element (\a c, \a r) of the matrix
|
|
910
|
+
*
|
|
911
|
+
* \exception MiniModel::ArgumentOutOfRange Raised if \a c or \a r
|
|
912
|
+
* are out of range.
|
|
913
|
+
*/
|
|
914
|
+
value_type& operator()(unsigned int c, unsigned int r);
|
|
915
|
+
|
|
916
|
+
/** \brief Access slice of the matrix
|
|
917
|
+
*
|
|
918
|
+
* This function allows accessing a slice of the matrix, located at
|
|
919
|
+
* columns \f$[fc,tc)\f$ and rows \f$[fr,tr)\f$. The result of this
|
|
920
|
+
* function is an object that can be converted into either a
|
|
921
|
+
* Matrix<args_type> or into args_type.
|
|
922
|
+
*
|
|
923
|
+
* For further information, see Slice.
|
|
924
|
+
*/
|
|
925
|
+
Slice slice(unsigned int fc, unsigned int tc,
|
|
926
|
+
unsigned int fr, unsigned int tr);
|
|
927
|
+
|
|
928
|
+
/// Access row \a r.
|
|
929
|
+
args_type row(int r);
|
|
930
|
+
|
|
931
|
+
/// Access column \a c.
|
|
932
|
+
args_type col(int c);
|
|
933
|
+
};
|
|
934
|
+
}}
|
|
935
|
+
|
|
936
|
+
#include "gecode/minimodel/matrix.icc"
|
|
937
|
+
//@}
|
|
938
|
+
|
|
939
|
+
#endif
|
|
940
|
+
|
|
941
|
+
// STATISTICS: minimodel-any
|
|
942
|
+
|