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,233 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
* Guido Tack <tack@gecode.org>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Christian Schulte, 2004
|
|
8
|
+
* Guido Tack, 2004
|
|
9
|
+
*
|
|
10
|
+
* Last modified:
|
|
11
|
+
* $Date: 2006-10-25 10:39:24 +0200 (Wed, 25 Oct 2006) $ by $Author: tack $
|
|
12
|
+
* $Revision: 3784 $
|
|
13
|
+
*
|
|
14
|
+
* This file is part of Gecode, the generic constraint
|
|
15
|
+
* development environment:
|
|
16
|
+
* http://www.gecode.org
|
|
17
|
+
*
|
|
18
|
+
* See the file "LICENSE" for information on usage and
|
|
19
|
+
* redistribution of this file, and for a
|
|
20
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
21
|
+
*
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
namespace Gecode {
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* \defgroup TaskBranchViewVal Generic branching based on view and value selection
|
|
28
|
+
*
|
|
29
|
+
* Implements view-based branching for an array of views and value.
|
|
30
|
+
* \ingroup TaskActor
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
//@{
|
|
34
|
+
/// Status returned by member functions of view selection class
|
|
35
|
+
enum ViewSelStatus {
|
|
36
|
+
VSS_NONE, ///< Current view is not better
|
|
37
|
+
VSS_SELECT, ///< Current view is better
|
|
38
|
+
VSS_COMMIT ///< Current view is known to be a best one
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* \brief Generic branching
|
|
43
|
+
*
|
|
44
|
+
* Implements view-based branching for an array of views (of type
|
|
45
|
+
* \a View) and value (of type \a Val). The behaviour is defined by
|
|
46
|
+
* the class \a ViewSel (which view is selected for branching)
|
|
47
|
+
* and the class \a ValSel (which value is selected for branching).
|
|
48
|
+
*
|
|
49
|
+
* The class \a ViewSel must implement two member functions:
|
|
50
|
+
* - Gecode::ViewSelStatus init(const Space* \a home, \a View \a x)
|
|
51
|
+
* Initializes view selection with the \a View \x. If \a x
|
|
52
|
+
* is known to be a best one, VSS_COMMIT should be returned.
|
|
53
|
+
* Otherwise, either VSS_NONE or VSS_SELECT should be returned.
|
|
54
|
+
* - Gecode::ViewSelStatus select(const Space* \a home, \a View \a x)
|
|
55
|
+
* If \a x is not better than the previously selected view,
|
|
56
|
+
* return VSS_NONE. If it is better, return VSS_SELECT. If
|
|
57
|
+
* it is a best view, return VSS_COMMIT.
|
|
58
|
+
*
|
|
59
|
+
* The class \a VarSel must implement two member functions:
|
|
60
|
+
* - \a Val val(const Space* \a home, View \a x) const
|
|
61
|
+
* returns the value (most likely determined by \a x) to branch with.
|
|
62
|
+
* - Gecode::ModEvent tell(Space* \a home, unsigned int \a a, \a View \a x, \a Val \a n)
|
|
63
|
+
* performs a tell for alternative \a a on \a x with value \a n.
|
|
64
|
+
*
|
|
65
|
+
* For examples, see \link int/branch.hh integer branchings \endlink.
|
|
66
|
+
*/
|
|
67
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
68
|
+
class ViewValBranching : public Branching {
|
|
69
|
+
protected:
|
|
70
|
+
ViewArray<View> x; ///< Views to branch on
|
|
71
|
+
mutable int start; ///< Unassigned views start at x[start]
|
|
72
|
+
/// Constructor for cloning \a b
|
|
73
|
+
ViewValBranching(Space* home, bool share, ViewValBranching& b);
|
|
74
|
+
public:
|
|
75
|
+
/// Constructor for creation
|
|
76
|
+
ViewValBranching(Space* home, ViewArray<View>& x);
|
|
77
|
+
/// Check status of branching, return true if alternatives left
|
|
78
|
+
virtual bool status(const Space* home) const;
|
|
79
|
+
/// Return branching description (of type Gecode::PosValDesc)
|
|
80
|
+
virtual const BranchingDesc* description(const Space* home) const;
|
|
81
|
+
/// Perform commit for branching description \a d and alternative \a a
|
|
82
|
+
virtual ExecStatus commit(Space* home, const BranchingDesc* d,
|
|
83
|
+
unsigned int a);
|
|
84
|
+
/// Perform cloning
|
|
85
|
+
virtual Actor* copy(Space* home, bool share);
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* \brief %Branching descriptions storing position and value
|
|
90
|
+
*
|
|
91
|
+
*/
|
|
92
|
+
template <class Val>
|
|
93
|
+
class PosValDesc : public BranchingDesc {
|
|
94
|
+
protected:
|
|
95
|
+
const int _pos;
|
|
96
|
+
const Val _val;
|
|
97
|
+
const int _start;
|
|
98
|
+
public:
|
|
99
|
+
/** \brief Initialize description for branching \a b, position \a p, value \a n, and start position \a s.
|
|
100
|
+
*
|
|
101
|
+
* The start position can be used in the commit function to eliminate
|
|
102
|
+
* assigned variables from the array.
|
|
103
|
+
*/
|
|
104
|
+
PosValDesc(const Branching* b, const int p, const Val& n, const int s=0);
|
|
105
|
+
/// Return position in array
|
|
106
|
+
int pos(void) const;
|
|
107
|
+
/// Return value to branch with
|
|
108
|
+
Val val(void) const;
|
|
109
|
+
/// Return the start index in the array
|
|
110
|
+
int start(void) const;
|
|
111
|
+
/// Report size occupied
|
|
112
|
+
virtual size_t size(void) const;
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
//@}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
/*
|
|
123
|
+
* Branching descriptions with position and value
|
|
124
|
+
*
|
|
125
|
+
*/
|
|
126
|
+
|
|
127
|
+
template <class Val>
|
|
128
|
+
forceinline
|
|
129
|
+
PosValDesc<Val>::PosValDesc(const Branching* b, const int p, const Val& n,
|
|
130
|
+
const int s)
|
|
131
|
+
: BranchingDesc(b,2), _pos(p), _val(n), _start(s) {}
|
|
132
|
+
|
|
133
|
+
template <class Val>
|
|
134
|
+
forceinline int
|
|
135
|
+
PosValDesc<Val>::pos(void) const {
|
|
136
|
+
return _pos;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
template <class Val>
|
|
140
|
+
forceinline Val
|
|
141
|
+
PosValDesc<Val>::val(void) const {
|
|
142
|
+
return _val;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
template <class Val>
|
|
146
|
+
forceinline int
|
|
147
|
+
PosValDesc<Val>::start(void) const {
|
|
148
|
+
return _start;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
template <class Val>
|
|
152
|
+
size_t
|
|
153
|
+
PosValDesc<Val>::size(void) const {
|
|
154
|
+
return sizeof(PosValDesc<Val>);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
/*
|
|
159
|
+
* Generic branching based on variable/value selection
|
|
160
|
+
*
|
|
161
|
+
*/
|
|
162
|
+
|
|
163
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
164
|
+
forceinline
|
|
165
|
+
ViewValBranching<View,Val,ViewSel,ValSel>
|
|
166
|
+
::ViewValBranching(Space* home, ViewArray<View>& x0)
|
|
167
|
+
: Branching(home), x(x0), start(0) {}
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
171
|
+
forceinline
|
|
172
|
+
ViewValBranching<View,Val,ViewSel,ValSel>
|
|
173
|
+
::ViewValBranching(Space* home, bool share, ViewValBranching& b)
|
|
174
|
+
: Branching(home,share,b), start(b.start) {
|
|
175
|
+
x.update(home,share,b.x);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
179
|
+
Actor*
|
|
180
|
+
ViewValBranching<View,Val,ViewSel,ValSel>::copy(Space* home, bool share) {
|
|
181
|
+
return new (home)
|
|
182
|
+
ViewValBranching<View,Val,ViewSel,ValSel>(home,share,*this);
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
186
|
+
bool
|
|
187
|
+
ViewValBranching<View,Val,ViewSel,ValSel>
|
|
188
|
+
::status(const Space*) const {
|
|
189
|
+
for (int i=start; i < x.size(); i++)
|
|
190
|
+
if (!x[i].assigned()) {
|
|
191
|
+
start = i;
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
198
|
+
const BranchingDesc*
|
|
199
|
+
ViewValBranching<View,Val,ViewSel,ValSel>
|
|
200
|
+
::description(const Space* home) const {
|
|
201
|
+
assert(!x[start].assigned());
|
|
202
|
+
ViewSel vs; // For view selection
|
|
203
|
+
ValSel vl; // For value selection
|
|
204
|
+
int i = start;
|
|
205
|
+
int b = i++;
|
|
206
|
+
if (vs.init(home,x[b]) != VSS_COMMIT)
|
|
207
|
+
for (; i < x.size(); i++)
|
|
208
|
+
if (!x[i].assigned())
|
|
209
|
+
switch (vs.select(home,x[i])) {
|
|
210
|
+
case VSS_SELECT: b=i; break;
|
|
211
|
+
case VSS_COMMIT: b=i; goto create;
|
|
212
|
+
case VSS_NONE: break;
|
|
213
|
+
default: GECODE_NEVER;
|
|
214
|
+
}
|
|
215
|
+
create:
|
|
216
|
+
return new PosValDesc<Val>(this,b-start,vl.val(home,x[b]),start);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
template <class View, class Val, class ViewSel, class ValSel>
|
|
220
|
+
ExecStatus
|
|
221
|
+
ViewValBranching<View,Val,ViewSel,ValSel>
|
|
222
|
+
::commit(Space* home, const BranchingDesc* d, unsigned int a) {
|
|
223
|
+
const PosValDesc<Val>* pvd = static_cast<const PosValDesc<Val>*>(d);
|
|
224
|
+
// Eliminate views from x[0] ... x[d->start()-1]
|
|
225
|
+
x.drop_fst(pvd->start()); start = 0;
|
|
226
|
+
ValSel vs;
|
|
227
|
+
return me_failed(vs.tell(home,a,x[pvd->pos()],pvd->val()))
|
|
228
|
+
? ES_FAILED : ES_OK;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// STATISTICS: kernel-other
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Christian Schulte, 2002
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-08-21 11:34:39 +0200 (Mon, 21 Aug 2006) $ by $Author: tack $
|
|
10
|
+
* $Revision: 3550 $
|
|
11
|
+
*
|
|
12
|
+
* This file is part of Gecode, the generic constraint
|
|
13
|
+
* development environment:
|
|
14
|
+
* http://www.gecode.org
|
|
15
|
+
*
|
|
16
|
+
* See the file "LICENSE" for information on usage and
|
|
17
|
+
* redistribution of this file, and for a
|
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "gecode/kernel.hh"
|
|
23
|
+
|
|
24
|
+
namespace Gecode {
|
|
25
|
+
|
|
26
|
+
unsigned long int Space::unused_uli;
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Spaces
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
VarTypeProcessorBase* Space::vtp[VTI_LAST];
|
|
34
|
+
|
|
35
|
+
VarTypeProcessorBase::~VarTypeProcessorBase(void) {}
|
|
36
|
+
|
|
37
|
+
Space::Space(void) {
|
|
38
|
+
// Initialize variable entry points
|
|
39
|
+
for (int i=0; i<VTI_LAST; i++) {
|
|
40
|
+
vars[i]=NULL;
|
|
41
|
+
vars_dispose[i]=NULL;
|
|
42
|
+
}
|
|
43
|
+
vars_noidx = NULL;
|
|
44
|
+
// Initialize propagator pool
|
|
45
|
+
pool_next = 0;
|
|
46
|
+
for (int i=0; i<=PC_MAX; i++)
|
|
47
|
+
pool[i].init();
|
|
48
|
+
// Initialize actor and branching links
|
|
49
|
+
a_actors.init();
|
|
50
|
+
a_actors.init_delete();
|
|
51
|
+
b_status = static_cast<Branching*>(&a_actors);
|
|
52
|
+
b_commit = static_cast<Branching*>(&a_actors);
|
|
53
|
+
n_sub = 0;
|
|
54
|
+
sub = NULL;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Space deletion
|
|
61
|
+
*
|
|
62
|
+
*/
|
|
63
|
+
|
|
64
|
+
void
|
|
65
|
+
Actor::flush(void) {}
|
|
66
|
+
|
|
67
|
+
size_t
|
|
68
|
+
Actor::cached(void) const {
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
void
|
|
73
|
+
Space::flush(void) {
|
|
74
|
+
// Flush actors registered for deletion
|
|
75
|
+
ActorDeleteLink* e = &a_actors;
|
|
76
|
+
ActorDeleteLink* a = e->next_delete();
|
|
77
|
+
while (a != e) {
|
|
78
|
+
static_cast<Actor*>(a)->flush(); a = a->next_delete();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
size_t
|
|
83
|
+
Space::cached(void) const {
|
|
84
|
+
size_t s = 0;
|
|
85
|
+
const ActorDeleteLink* e = &a_actors;
|
|
86
|
+
const ActorDeleteLink* a = e->next_delete();
|
|
87
|
+
while (a != e) {
|
|
88
|
+
s += static_cast<const Actor*>(a)->cached();
|
|
89
|
+
a = a->next_delete();
|
|
90
|
+
}
|
|
91
|
+
return s;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
Space::~Space(void) {
|
|
95
|
+
// Mark space as failed
|
|
96
|
+
fail();
|
|
97
|
+
// Delete actors that must be deleted
|
|
98
|
+
ActorDeleteLink* e = &a_actors;
|
|
99
|
+
ActorDeleteLink* a = e->next_delete();
|
|
100
|
+
while (a != e) {
|
|
101
|
+
Actor* d = static_cast<Actor*>(a);
|
|
102
|
+
a = a->next_delete();
|
|
103
|
+
d->dispose(this);
|
|
104
|
+
}
|
|
105
|
+
// Delete variables that were registered for deletion
|
|
106
|
+
for (int vti=VTI_LAST; vti--;)
|
|
107
|
+
if (vars_dispose[vti] != NULL)
|
|
108
|
+
vtp[vti]->dispose(this, vars_dispose[vti]);
|
|
109
|
+
if (sub != NULL)
|
|
110
|
+
Memory::free(sub);
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
/*
|
|
115
|
+
* Performing propagation
|
|
116
|
+
*
|
|
117
|
+
*/
|
|
118
|
+
|
|
119
|
+
forceinline void
|
|
120
|
+
Space::process(void) {
|
|
121
|
+
for (int vti=VTI_LAST; vti--; ) {
|
|
122
|
+
VarBase* vs = vars[vti];
|
|
123
|
+
if (vs != NULL) {
|
|
124
|
+
vars[vti] = NULL; vtp[vti]->process(this,vs);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
forceinline bool
|
|
130
|
+
Space::pool_get(Propagator*& p) {
|
|
131
|
+
for (int c = pool_next+1; c--; ) {
|
|
132
|
+
// Head of the queue
|
|
133
|
+
ActorLink* lnk = &pool[c];
|
|
134
|
+
// First propagator or link back to queue
|
|
135
|
+
ActorLink* fst = lnk->next();
|
|
136
|
+
if (lnk != fst) {
|
|
137
|
+
pool_next = c;
|
|
138
|
+
// Unlink first propagator from queue
|
|
139
|
+
ActorLink* snd = fst->next();
|
|
140
|
+
lnk->next(snd); snd->prev(lnk);
|
|
141
|
+
p = static_cast<Propagator*>(fst);
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
pool_next = 0;
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
unsigned long int
|
|
150
|
+
Space::propagate(void) {
|
|
151
|
+
if (failed())
|
|
152
|
+
return 0;
|
|
153
|
+
const PropModEvent PME_NONE = 0;
|
|
154
|
+
const PropModEvent PME_ASSIGNED =
|
|
155
|
+
((ME_GEN_ASSIGNED << 0) | (ME_GEN_ASSIGNED << 4) |
|
|
156
|
+
(ME_GEN_ASSIGNED << 8) | (ME_GEN_ASSIGNED << 12) |
|
|
157
|
+
(ME_GEN_ASSIGNED << 16) | (ME_GEN_ASSIGNED << 20) |
|
|
158
|
+
(ME_GEN_ASSIGNED << 24) | (ME_GEN_ASSIGNED << 28));
|
|
159
|
+
/*
|
|
160
|
+
* Count the number of propagation steps performed
|
|
161
|
+
*
|
|
162
|
+
*/
|
|
163
|
+
unsigned long int pn = 0;
|
|
164
|
+
/*
|
|
165
|
+
* Process modified variables, there might be modified variables
|
|
166
|
+
* either from initializing the space or from a commit operation
|
|
167
|
+
*
|
|
168
|
+
*/
|
|
169
|
+
process();
|
|
170
|
+
Propagator* p;
|
|
171
|
+
while (pool_get(p)) {
|
|
172
|
+
pn++;
|
|
173
|
+
switch (p->propagate(this)) {
|
|
174
|
+
case ES_FAILED:
|
|
175
|
+
fail();
|
|
176
|
+
return pn;
|
|
177
|
+
case ES_FIX:
|
|
178
|
+
{
|
|
179
|
+
// Put propagator in idle queue
|
|
180
|
+
propagator(p);
|
|
181
|
+
// Prevent that propagator gets rescheduled (turn on all events)
|
|
182
|
+
p->pme = PME_ASSIGNED;
|
|
183
|
+
process();
|
|
184
|
+
p->pme = PME_NONE;
|
|
185
|
+
}
|
|
186
|
+
break;
|
|
187
|
+
case ES_NOFIX:
|
|
188
|
+
{
|
|
189
|
+
// Propagator is currently in no queue, put in into idle
|
|
190
|
+
propagator(p);
|
|
191
|
+
p->pme = PME_NONE;
|
|
192
|
+
process();
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
case ES_SUBSUMED:
|
|
196
|
+
{
|
|
197
|
+
// Prevent that propagator gets rescheduled (turn on all events)
|
|
198
|
+
p->pme = PME_ASSIGNED;
|
|
199
|
+
process();
|
|
200
|
+
p->destruct(this);
|
|
201
|
+
}
|
|
202
|
+
break;
|
|
203
|
+
case __ES_FIX_PARTIAL:
|
|
204
|
+
{
|
|
205
|
+
// Remember the event set to be kept after processing
|
|
206
|
+
PropModEvent keep = p->pme;
|
|
207
|
+
// Prevent that propagator gets rescheduled (turn on all events)
|
|
208
|
+
p->pme = PME_ASSIGNED;
|
|
209
|
+
process();
|
|
210
|
+
p->pme = keep;
|
|
211
|
+
assert(p->pme);
|
|
212
|
+
pool_put(p);
|
|
213
|
+
}
|
|
214
|
+
break;
|
|
215
|
+
case __ES_NOFIX_PARTIAL:
|
|
216
|
+
{
|
|
217
|
+
// Start from the specified propagator events
|
|
218
|
+
pool_put(p);
|
|
219
|
+
process();
|
|
220
|
+
}
|
|
221
|
+
break;
|
|
222
|
+
default:
|
|
223
|
+
GECODE_NEVER;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return pn;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
void
|
|
230
|
+
Space::commit(const BranchingDesc* d, unsigned int a) {
|
|
231
|
+
if (failed())
|
|
232
|
+
return;
|
|
233
|
+
/*
|
|
234
|
+
* This relies on the fact that branching descriptions must be
|
|
235
|
+
* used in the order of creation. If a branching description
|
|
236
|
+
* with an id different from the id of the current branching
|
|
237
|
+
* is used, it is clear that the current branching can be discarded
|
|
238
|
+
* as all of its descriptions must have been used already.
|
|
239
|
+
*
|
|
240
|
+
*/
|
|
241
|
+
while ((b_commit != &a_actors) && (d->id != b_commit->id)) {
|
|
242
|
+
Branching* b = b_commit;
|
|
243
|
+
b_commit = static_cast<Branching*>(b_commit->next());
|
|
244
|
+
if (b == b_status)
|
|
245
|
+
b_status = b_commit;
|
|
246
|
+
b->unlink(); b->destruct(this);
|
|
247
|
+
}
|
|
248
|
+
if (b_commit == &a_actors)
|
|
249
|
+
throw SpaceNoBranching();
|
|
250
|
+
if (a >= d->alternatives())
|
|
251
|
+
throw SpaceIllegalAlternative();
|
|
252
|
+
if (b_commit->commit(this,d,a) == ES_FAILED)
|
|
253
|
+
fail();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/*
|
|
257
|
+
* Space cloning
|
|
258
|
+
*
|
|
259
|
+
* Cloning is performed in two steps:
|
|
260
|
+
* - The space itself is copied by the copy constructor. This
|
|
261
|
+
* also copies all propagators, branchings, and variables.
|
|
262
|
+
* The copied variables are recorded by the variable processor.
|
|
263
|
+
* - In the second step the dependency information of the recorded
|
|
264
|
+
* variables is updated and their forwarding information is reset.
|
|
265
|
+
*
|
|
266
|
+
*/
|
|
267
|
+
|
|
268
|
+
Space::Space(bool share, Space& s) : mm(s.mm) {
|
|
269
|
+
// Initialize variable entry points
|
|
270
|
+
for (int i=0; i<VTI_LAST; i++) {
|
|
271
|
+
vars[i]=NULL;
|
|
272
|
+
vars_dispose[i]=NULL;
|
|
273
|
+
}
|
|
274
|
+
vars_noidx = NULL;
|
|
275
|
+
// Initialize propagator pool
|
|
276
|
+
pool_next = 0;
|
|
277
|
+
for (int i=0; i<=PC_MAX; i++)
|
|
278
|
+
pool[i].init();
|
|
279
|
+
// Copy all actors
|
|
280
|
+
{
|
|
281
|
+
ActorLink* p = &a_actors;
|
|
282
|
+
ActorLink* e = &s.a_actors;
|
|
283
|
+
for (ActorLink* a = e->next(); a != e; a = a->next()) {
|
|
284
|
+
ActorLink* c = static_cast<Actor*>(a)->copy(this,share);
|
|
285
|
+
// Link copied actor
|
|
286
|
+
p->next(c); c->prev(p);
|
|
287
|
+
// Forward
|
|
288
|
+
a->prev(c);
|
|
289
|
+
//
|
|
290
|
+
static_cast<ActorDeleteLink*>(c)->init_delete();
|
|
291
|
+
p = c;
|
|
292
|
+
}
|
|
293
|
+
// Link last actor
|
|
294
|
+
p->next(&a_actors); a_actors.prev(p);
|
|
295
|
+
}
|
|
296
|
+
// Setup delete links
|
|
297
|
+
{
|
|
298
|
+
ActorDeleteLink* p = &a_actors;
|
|
299
|
+
ActorDeleteLink* e = &s.a_actors;
|
|
300
|
+
for (ActorDeleteLink* a = e->next_delete(); a != e;
|
|
301
|
+
a = a->next_delete()) {
|
|
302
|
+
ActorDeleteLink* c = static_cast<ActorDeleteLink*>(a->prev());
|
|
303
|
+
// Link copied actor
|
|
304
|
+
p->next_delete(c); c->prev_delete(p);
|
|
305
|
+
// Forward
|
|
306
|
+
p = c;
|
|
307
|
+
}
|
|
308
|
+
// Link last actor
|
|
309
|
+
p->next_delete(&a_actors); a_actors.prev_delete(p);
|
|
310
|
+
}
|
|
311
|
+
// Setup branching pointers
|
|
312
|
+
if (s.b_status == &s.a_actors) {
|
|
313
|
+
b_status = static_cast<Branching*>(&a_actors);
|
|
314
|
+
} else {
|
|
315
|
+
b_status = static_cast<Branching*>(s.b_status->prev());
|
|
316
|
+
}
|
|
317
|
+
if (s.b_commit == &s.a_actors) {
|
|
318
|
+
b_commit = static_cast<Branching*>(&a_actors);
|
|
319
|
+
} else {
|
|
320
|
+
b_commit = static_cast<Branching*>(s.b_commit->prev());
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
/*
|
|
326
|
+
* Stage 2: updating variables
|
|
327
|
+
*
|
|
328
|
+
*/
|
|
329
|
+
|
|
330
|
+
/// A fake combination class
|
|
331
|
+
class __Combine {
|
|
332
|
+
public:
|
|
333
|
+
ModEvent operator()(ModEvent,ModEvent) {
|
|
334
|
+
GECODE_NEVER;
|
|
335
|
+
return ME_GEN_ASSIGNED;
|
|
336
|
+
}
|
|
337
|
+
};
|
|
338
|
+
|
|
339
|
+
Space*
|
|
340
|
+
Space::clone(bool share, unsigned long int& pn) {
|
|
341
|
+
pn += propagate();
|
|
342
|
+
if (failed())
|
|
343
|
+
throw SpaceFailed("Space::clone");
|
|
344
|
+
|
|
345
|
+
/*
|
|
346
|
+
* Stage one
|
|
347
|
+
*
|
|
348
|
+
* Copy all data structures (which in turn will invoke the
|
|
349
|
+
* constructor Space::Space.
|
|
350
|
+
*/
|
|
351
|
+
Space* c = copy(share);
|
|
352
|
+
|
|
353
|
+
/*
|
|
354
|
+
* Stage two
|
|
355
|
+
*
|
|
356
|
+
* Update subscriptions and reset forwarding pointers
|
|
357
|
+
*
|
|
358
|
+
*/
|
|
359
|
+
// Update variables without indexing structure
|
|
360
|
+
for (Variable<VTI_NOIDX,0,__Combine>* x
|
|
361
|
+
= static_cast<Variable<VTI_NOIDX,0,__Combine>*>(c->vars_noidx);
|
|
362
|
+
x != NULL; x = x->next())
|
|
363
|
+
x->u.free_me = 0;
|
|
364
|
+
c->vars_noidx = NULL;
|
|
365
|
+
// Update variables with indexing structure
|
|
366
|
+
Propagator** s;
|
|
367
|
+
if (n_sub > 0)
|
|
368
|
+
s = reinterpret_cast<Propagator**>
|
|
369
|
+
(Memory::malloc(n_sub*sizeof(Propagator*)));
|
|
370
|
+
else
|
|
371
|
+
s = NULL;
|
|
372
|
+
c->sub = s;
|
|
373
|
+
for (int vti=VTI_LAST; vti--; ) {
|
|
374
|
+
VarBase* vs = c->vars[vti];
|
|
375
|
+
if (vs != NULL) {
|
|
376
|
+
c->vars[vti] = NULL; vtp[vti]->update(vs,s);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Update the number of subscriptions (both in copy and original)
|
|
380
|
+
// Remember: this is a conservative estimate
|
|
381
|
+
unsigned int n = s - c->sub;
|
|
382
|
+
assert(n <= n_sub);
|
|
383
|
+
c->n_sub = n; n_sub = n;
|
|
384
|
+
// Re-establish prev links (reset forwarding information)
|
|
385
|
+
ActorLink* p = &a_actors;
|
|
386
|
+
ActorLink* a = p->next();
|
|
387
|
+
while (a != &a_actors) {
|
|
388
|
+
a->prev(p); p = a; a = a->next();
|
|
389
|
+
}
|
|
390
|
+
assert(a->prev() == p);
|
|
391
|
+
return c;
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
unsigned int
|
|
395
|
+
Space::propagators(void) const {
|
|
396
|
+
if (failed())
|
|
397
|
+
throw SpaceFailed("Space::propagators");
|
|
398
|
+
unsigned int n = 0;
|
|
399
|
+
for (const ActorLink* a = a_actors.next(); a != b_commit; a = a->next())
|
|
400
|
+
n++;
|
|
401
|
+
return n;
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
unsigned int
|
|
405
|
+
Space::branchings(void) const {
|
|
406
|
+
if (failed())
|
|
407
|
+
throw SpaceFailed("Space::branchings");
|
|
408
|
+
unsigned int n = 0;
|
|
409
|
+
for (const ActorLink* a = b_status; a != &a_actors; a = a->next())
|
|
410
|
+
n++;
|
|
411
|
+
return n;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
// STATISTICS: kernel-core
|
|
417
|
+
|