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 @@
|
|
|
1
|
+
arc(0,1)arc(1,2)arc(2,0)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
arc(0,1)arc(1,2)arc(2,0)arc(2,3)arc(2,4)arc(3,5)arc(4,5)
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Main authors:
|
|
3
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
4
|
+
*
|
|
5
|
+
* Copyright:
|
|
6
|
+
* Universit� catholique de Louvain, 2005
|
|
7
|
+
*
|
|
8
|
+
* Last modified:
|
|
9
|
+
* $Date: 2006-05-22 22:19:52 +0200 (Mon, 22 May 2006) $
|
|
10
|
+
* $Revision: 476 $
|
|
11
|
+
*
|
|
12
|
+
* This file is part of CP(Graph)
|
|
13
|
+
*
|
|
14
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
15
|
+
* redistribution of this file, and for a
|
|
16
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
#ifndef __GECODE_GRAPH_HH__
|
|
21
|
+
#define __GECODE_GRAPH_HH__
|
|
22
|
+
|
|
23
|
+
#if !defined(GECODE_STATIC_LIBS) && \
|
|
24
|
+
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
|
25
|
+
|
|
26
|
+
#ifdef GECODE_BUILD_GRAPH
|
|
27
|
+
#define GECODE_GRAPH_EXPORT __declspec( dllexport )
|
|
28
|
+
#else
|
|
29
|
+
#define GECODE_GRAPH_EXPORT __declspec( dllimport )
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#else
|
|
33
|
+
|
|
34
|
+
#define GECODE_GRAPH_EXPORT
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
#include "kernel.hh"
|
|
38
|
+
#include "set.hh"
|
|
39
|
+
#include "int.hh"
|
|
40
|
+
|
|
41
|
+
using namespace Gecode;
|
|
42
|
+
using namespace Gecode::Set;
|
|
43
|
+
using namespace std;
|
|
44
|
+
#include "var.icc"
|
|
45
|
+
#include "view.icc"
|
|
46
|
+
#include "path.hh"
|
|
47
|
+
#include "binarysimple.hh"
|
|
48
|
+
#include "branch/branch.icc"
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
#endif //__GECODE_GRAPH_HH
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
//
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Gr�goire Dooms (Universit� catholique de Louvain), 2005
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2005-11-29 10:57:21 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 271 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of CP(Graph)
|
|
14
|
+
*
|
|
15
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
16
|
+
* redistribution of this file, and for a
|
|
17
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
//using namespace std;
|
|
22
|
+
#include <utility> //for pair
|
|
23
|
+
#include <vector>
|
|
24
|
+
#include <boost/dynamic_property_map.hpp>
|
|
25
|
+
#include <boost/tuple/tuple.hpp>
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Returns a word from decriptor file in. Used in loadAmalfi(...).
|
|
29
|
+
*/
|
|
30
|
+
unsigned readWord(istream& in);
|
|
31
|
+
/**
|
|
32
|
+
*
|
|
33
|
+
* Local function to load an amalfi untyped graph format file.
|
|
34
|
+
* - f is the file name
|
|
35
|
+
* - returns a pair of vectors <L1,L2> :
|
|
36
|
+
* - L1 is the vector of n node ids ranging from [0,...,n-1]
|
|
37
|
+
* - L2 is the vector of edges reprented by pair of node ids
|
|
38
|
+
*
|
|
39
|
+
*/
|
|
40
|
+
pair<vector<int>,vector<pair<int,int> > > loadAmalfi(string f);
|
|
41
|
+
|
|
42
|
+
vector<int> loadList(string filename);
|
|
43
|
+
pair<vector<int>,vector<pair<int,int> > > loadGraph(const string filename);
|
|
44
|
+
pair<vector<int>,vector<boost::tuple<int,int,int> > > loadGraphWeights(const string filename);
|
|
45
|
+
pair<vector<int>,vector<pair<int,int> > > loadDotGraph(const string filename);
|
|
46
|
+
boost::tuple<vector<int>,vector<pair<int,int> >,vector<int>,vector<pair<int,int> > > loadDotGraphOptForb(const string filename);
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Gr�goire Dooms (Universit� catholique de Louvain), 2005
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2005-11-29 10:57:21 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 271 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of CP(Graph)
|
|
14
|
+
*
|
|
15
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
16
|
+
* redistribution of this file, and for a
|
|
17
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "graph.hh"
|
|
22
|
+
#include <string>
|
|
23
|
+
#include <vector>
|
|
24
|
+
#include <utility>
|
|
25
|
+
#include <list>
|
|
26
|
+
#include <map>
|
|
27
|
+
#include <boost/tuple/tuple.hpp>
|
|
28
|
+
#include <cstdlib>
|
|
29
|
+
#include <fstream>
|
|
30
|
+
//using namespace std;
|
|
31
|
+
//using namespace boost;
|
|
32
|
+
|
|
33
|
+
namespace Gecode { namespace Graph {
|
|
34
|
+
|
|
35
|
+
unsigned readWord(std::istream& in)
|
|
36
|
+
{
|
|
37
|
+
unsigned char c1, c2;
|
|
38
|
+
c1=(char)in.get(); // Yes, I know this way I discard EOF...
|
|
39
|
+
c2=(char)in.get();
|
|
40
|
+
return c1 | (c2 << 8);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
std::pair<std::vector<int>,std::vector<std::pair<int,int> > > loadAmalfi(std::string f)
|
|
44
|
+
{
|
|
45
|
+
std::vector<int> nodeids;
|
|
46
|
+
std::vector<std::pair<int,int> > edges;
|
|
47
|
+
std::ifstream in(f.c_str(), std::ios::in | std::ios::binary);
|
|
48
|
+
if (!in) {std::cerr << "loadAmalfi : File " << f << " not found." << std::endl; return std::make_pair(nodeids,edges);};
|
|
49
|
+
unsigned ne, dest;
|
|
50
|
+
unsigned i,j;
|
|
51
|
+
|
|
52
|
+
unsigned n = readWord(in); //Nbr of nodes in the graph
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
for (i=0; i<n; i++)
|
|
56
|
+
{
|
|
57
|
+
nodeids.push_back((int) i);
|
|
58
|
+
ne = readWord(in);//nbr of neighbours of i
|
|
59
|
+
for(j=0; j<ne; j++)//j= nth neighbour of i
|
|
60
|
+
{
|
|
61
|
+
dest=readWord(in);//dest=neighbour of i
|
|
62
|
+
edges.push_back(std::make_pair((int)i,(int)dest));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
return std::make_pair(nodeids,edges);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/** Loads a arc(a,b)arc(c,d) Graph.
|
|
71
|
+
* Returns a vector of numNodes elements giving the file node ids in order in first
|
|
72
|
+
* and a sequence of arcs in second. The node ids are from 0 to numnodes-1 the original
|
|
73
|
+
* ids can be found in first.
|
|
74
|
+
*/
|
|
75
|
+
std::pair<std::vector<int>,std::vector<std::pair<int,int> > >
|
|
76
|
+
loadGraph(const std::string filename){
|
|
77
|
+
FILE * f = fopen(filename.c_str(),"r");
|
|
78
|
+
std::vector<std::pair<int,int> > arcs;
|
|
79
|
+
std::pair<int,int> p;
|
|
80
|
+
if (!f){
|
|
81
|
+
std::vector<int> p(0);
|
|
82
|
+
return std::make_pair(p,arcs);
|
|
83
|
+
}
|
|
84
|
+
std::list<int> l; // list of node ids
|
|
85
|
+
|
|
86
|
+
while (fscanf(f,"arc(%d,%d)",&p.first,&p.second) == 2) {
|
|
87
|
+
l.push_back(p.first);
|
|
88
|
+
l.push_back(p.second);
|
|
89
|
+
arcs.push_back(p);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
l.sort();
|
|
93
|
+
l.unique();
|
|
94
|
+
std::map<int,int> idsmap; // maps the node id in the file to a number in [0,numnodes[
|
|
95
|
+
std::vector<int> ids(l.begin(),l.end()); // maps the other way around
|
|
96
|
+
int numNodes=0;
|
|
97
|
+
for (std::list<int>::iterator ii=l.begin(); ii!=l.end(); ++ii){
|
|
98
|
+
idsmap[*ii] = numNodes++;
|
|
99
|
+
}
|
|
100
|
+
for (std::vector<std::pair<int,int> >::iterator ii=arcs.begin(); ii!=arcs.end(); ++ii){
|
|
101
|
+
ii->first = idsmap[ii->first];
|
|
102
|
+
ii->second = idsmap[ii->second];
|
|
103
|
+
}
|
|
104
|
+
return std::make_pair(ids,arcs);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
std::pair<std::vector<int>,std::vector<boost::tuple<int,int,int> > >
|
|
108
|
+
loadGraphWeights(const std::string filename){
|
|
109
|
+
FILE * f = fopen(filename.c_str(),"r");
|
|
110
|
+
std::vector<boost::tuple<int,int,int> > arcsW;
|
|
111
|
+
if (!f){
|
|
112
|
+
std::vector<int> p(0);
|
|
113
|
+
return std::make_pair(p,arcsW);
|
|
114
|
+
}
|
|
115
|
+
std::list<int> l; // list of node ids
|
|
116
|
+
|
|
117
|
+
int t,h,c;
|
|
118
|
+
while (fscanf(f,"arc(%d,%d,%d)",&t,&h,&c) == 3) {
|
|
119
|
+
arcsW.push_back(boost::make_tuple(t,h,c));
|
|
120
|
+
l.push_back(t);
|
|
121
|
+
l.push_back(h);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
l.sort();
|
|
125
|
+
l.unique();
|
|
126
|
+
std::map<int,int> idsmap; // maps the node id in the file to a number in [0,numnodes[
|
|
127
|
+
std::vector<int> ids(l.begin(),l.end()); // maps the other way around
|
|
128
|
+
int numNodes=0;
|
|
129
|
+
for (std::list<int>::iterator ii=l.begin(); ii!=l.end(); ++ii){
|
|
130
|
+
idsmap[*ii] = numNodes++;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
for (std::vector<boost::tuple<int,int,int> >::iterator ii=arcsW.begin(); ii!=arcsW.end(); ++ii){
|
|
134
|
+
boost::tie(t,h,c) = *ii;
|
|
135
|
+
*ii = boost::make_tuple(idsmap[t], idsmap[h], c);
|
|
136
|
+
}
|
|
137
|
+
return std::make_pair(ids,arcsW);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
} }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
</html>
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Gr�goire Dooms (Universit� catholique de Louvain), 2005
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2005-11-29 10:57:21 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 271 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of CP(Graph)
|
|
14
|
+
*
|
|
15
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
16
|
+
* redistribution of this file, and for a
|
|
17
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#ifndef PATH_HH
|
|
22
|
+
#define PATH_HH
|
|
23
|
+
|
|
24
|
+
#include "kernel.hh"
|
|
25
|
+
#include "int.hh"
|
|
26
|
+
#include <map>
|
|
27
|
+
#include <boost/utility.hpp>
|
|
28
|
+
//using namespace Gecode;
|
|
29
|
+
//using namespace std;
|
|
30
|
+
//using namespace boost;
|
|
31
|
+
|
|
32
|
+
namespace Gecode { namespace Graph {
|
|
33
|
+
/** \brief Propagator for the simple path constraint
|
|
34
|
+
*
|
|
35
|
+
* \relates PathBoundsGraphs
|
|
36
|
+
*/
|
|
37
|
+
template <class GView>
|
|
38
|
+
class PathPropag : public Propagator {
|
|
39
|
+
protected:
|
|
40
|
+
GView g;
|
|
41
|
+
int start, end;
|
|
42
|
+
public :
|
|
43
|
+
PathPropag(Space* home, bool share, PathPropag& p);
|
|
44
|
+
/// Destructor for cancelling
|
|
45
|
+
~PathPropag(void);
|
|
46
|
+
/// Constructor for posting
|
|
47
|
+
PathPropag(Space* home, GView g, int st, int en);
|
|
48
|
+
/// perform the copy upon space cloning
|
|
49
|
+
virtual Actor* copy(Space*,bool);
|
|
50
|
+
// return the cost of propagation
|
|
51
|
+
virtual PropCost cost(void) const;
|
|
52
|
+
/// perform the filtering
|
|
53
|
+
virtual ExecStatus propagate(Space*);
|
|
54
|
+
/// Post propagator g is a simple path from node \a start to node \a end
|
|
55
|
+
static ExecStatus post(Space* home, GView &g,int start, int end);
|
|
56
|
+
};
|
|
57
|
+
/** \brief Propagator for the cost-based filtering for a simple-path
|
|
58
|
+
*
|
|
59
|
+
* \relates PathBoundsGraphs
|
|
60
|
+
*/
|
|
61
|
+
template <class GView>
|
|
62
|
+
class PathCostPropag : public Propagator {
|
|
63
|
+
protected:
|
|
64
|
+
GView g;///< the graph view on which the propagator is posted
|
|
65
|
+
int start, end;
|
|
66
|
+
/** todo keep a pointer to the map instead of the map
|
|
67
|
+
* allocated by PathCostPropag, and kept through reference counting.
|
|
68
|
+
* copy increments, destructor decrements and frees if count==0
|
|
69
|
+
* --> Use a smart pointer */
|
|
70
|
+
map <pair<int,int>,int> ecosts;
|
|
71
|
+
Int::IntView w; ///< the IntView for the total cost of the graph
|
|
72
|
+
public :
|
|
73
|
+
/// Copy constructor for cloning the propagator
|
|
74
|
+
PathCostPropag(Space* home, bool share, PathCostPropag& p);
|
|
75
|
+
/// Destructor
|
|
76
|
+
~PathCostPropag(void);
|
|
77
|
+
/// constructor for posting the propagator
|
|
78
|
+
PathCostPropag(Space* home, GView g, int st, int en, const map <pair<int,int>,int> &edgecosts, Int::IntView w);
|
|
79
|
+
/// copy the propagator to new Space
|
|
80
|
+
virtual Actor* copy(Space*,bool);
|
|
81
|
+
/// cost of propagation
|
|
82
|
+
virtual PropCost cost(void) const;
|
|
83
|
+
/// perform propagation
|
|
84
|
+
virtual ExecStatus propagate(Space*);
|
|
85
|
+
/// Posts the propagator g is a path from st to en and according to the edgecosts its total cost is w
|
|
86
|
+
static ExecStatus post(Space* home, GView &g,int start, int end, Int::IntView w, const map <pair<int,int>,int> &edgecosts ) ;
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/** \brief Propagator for a node degree=1 constraint
|
|
90
|
+
*
|
|
91
|
+
* each node of the graph has a in/out degree of 1 iff it is part of the graph
|
|
92
|
+
* except for start and end which have resp. only outdegree and indegree equal to 1.
|
|
93
|
+
*/
|
|
94
|
+
template <class GView>
|
|
95
|
+
class PathDegreePropag : public Propagator {
|
|
96
|
+
protected:
|
|
97
|
+
GView g;
|
|
98
|
+
int start, end;
|
|
99
|
+
public :
|
|
100
|
+
PathDegreePropag(Space* home, bool share, PathDegreePropag& p);
|
|
101
|
+
~PathDegreePropag(void);
|
|
102
|
+
PathDegreePropag(Space* home, GView &g, int st, int end);
|
|
103
|
+
virtual Actor* copy(Space*,bool);
|
|
104
|
+
virtual PropCost cost(void) const;
|
|
105
|
+
virtual ExecStatus propagate(Space*);
|
|
106
|
+
static ExecStatus post(Space* home, GView &g,int start, int end) ;
|
|
107
|
+
};
|
|
108
|
+
template <class GView>
|
|
109
|
+
void path(Space* home, GView &g, int start, int end, const map <pair<int,int>,int> &edgecosts , IntVar w);
|
|
110
|
+
|
|
111
|
+
template <class GView>
|
|
112
|
+
void path(Space* home, GView &g, int start, int end);
|
|
113
|
+
|
|
114
|
+
} }
|
|
115
|
+
#include "path.icc"
|
|
116
|
+
#endif
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Gr�goire Dooms (Universit� catholique de Louvain), 2005
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2005-11-29 10:57:21 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 271 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of CP(Graph)
|
|
14
|
+
*
|
|
15
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
16
|
+
* redistribution of this file, and for a
|
|
17
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "path/pathdegree.icc"
|
|
22
|
+
namespace Gecode { namespace Graph {
|
|
23
|
+
|
|
24
|
+
/** \brief Posts a degree constraint on the graph view g.
|
|
25
|
+
*
|
|
26
|
+
* All nodes of g have indegree of 1 (except start) and out degree of 1 (except end)
|
|
27
|
+
* \ingroup TaskModel
|
|
28
|
+
*/
|
|
29
|
+
template <class GView>
|
|
30
|
+
void pathdegree(Space *home, GView &g, int start, int end){
|
|
31
|
+
GECODE_ES_FAIL(home, PathDegreePropag<GView>::post(home, g, start, end));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
/** \brief posts a simple path constraint on the graph view g.
|
|
37
|
+
*
|
|
38
|
+
* The propagator uses cost filtering based on the upper bound of w and updates the lower bound of w.
|
|
39
|
+
* \ingroup TaskModel
|
|
40
|
+
*/
|
|
41
|
+
template <class GView>
|
|
42
|
+
void path(Space* home, GView &g, int start, int end, const map <pair<int,int>,int> &edgecosts, IntVar w) {
|
|
43
|
+
if (home->failed()) return;
|
|
44
|
+
GECODE_ME_FAIL(home, g._nodeIn(home, start));
|
|
45
|
+
GECODE_ME_FAIL(home, g._nodeIn(home, end));
|
|
46
|
+
pathdegree(home,g,start,end);
|
|
47
|
+
GECODE_ES_FAIL(home, PathCostPropag<GView>::post(home, g, start, end, w, edgecosts));
|
|
48
|
+
}
|
|
49
|
+
/** \brief posts a path constraint on the graph view g.
|
|
50
|
+
* \ingroup TaskModel
|
|
51
|
+
*/
|
|
52
|
+
template <class GView>
|
|
53
|
+
void path(Space* home, GView &g, int start, int end) {
|
|
54
|
+
if (home->failed()) return;
|
|
55
|
+
GECODE_ME_FAIL(home, g._nodeIn(home, start));
|
|
56
|
+
GECODE_ME_FAIL(home, g._nodeIn(home, end));
|
|
57
|
+
pathdegree(home,g,start,end);
|
|
58
|
+
GECODE_ES_FAIL(home, PathPropag<GView>::post(home, g, start, end));
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
} }
|
|
62
|
+
#include "path/path.icc"
|
|
63
|
+
|
|
64
|
+
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
|
|
2
|
+
/*
|
|
3
|
+
* Main authors:
|
|
4
|
+
* Gr�goire Dooms <dooms@info.ucl.ac.be>
|
|
5
|
+
*
|
|
6
|
+
* Copyright:
|
|
7
|
+
* Gr�goire Dooms (Universit� catholique de Louvain), 2005
|
|
8
|
+
*
|
|
9
|
+
* Last modified:
|
|
10
|
+
* $Date: 2005-11-29 10:57:21 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 271 $
|
|
12
|
+
*
|
|
13
|
+
* This file is part of CP(Graph)
|
|
14
|
+
*
|
|
15
|
+
* See the file "contribs/graph/LICENSE" for information on usage and
|
|
16
|
+
* redistribution of this file, and for a
|
|
17
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#include "path/pathgraphs.icc"
|
|
22
|
+
#include <boost/graph/iteration_macros.hpp>
|
|
23
|
+
#include <boost/tuple/tuple.hpp>
|
|
24
|
+
#include <list>
|
|
25
|
+
#include <map>
|
|
26
|
+
#include <vector>
|
|
27
|
+
#include <utility>
|
|
28
|
+
|
|
29
|
+
//using namespace boost;
|
|
30
|
+
//using namespace std;
|
|
31
|
+
namespace Gecode { namespace Graph {
|
|
32
|
+
/** Path with cost propagator */
|
|
33
|
+
|
|
34
|
+
template <class GView>
|
|
35
|
+
forceinline
|
|
36
|
+
PathCostPropag<GView>::PathCostPropag(Space* home, GView g, int st, int en, const map <pair<int,int>,int> &edgecosts, Int::IntView w)
|
|
37
|
+
: Propagator(home), g(g), start(st), end (en), ecosts(edgecosts), w(w){
|
|
38
|
+
g.subscribe(home,this, Gecode::Graph::PC_GRAPH_ANY);
|
|
39
|
+
w.subscribe(home,this, Gecode::Int::PC_INT_DOM);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
template <class GView>
|
|
43
|
+
forceinline
|
|
44
|
+
PathCostPropag<GView>::PathCostPropag(Space* home, bool share, PathCostPropag& p)
|
|
45
|
+
: Propagator(home,share,p), start(p.start), end(p.end), ecosts(p.ecosts) {
|
|
46
|
+
g.update(home,share,p.g);
|
|
47
|
+
w.update(home,share,p.w);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
template <class GView>
|
|
51
|
+
PathCostPropag<GView>::~PathCostPropag(void){
|
|
52
|
+
g.cancel(this, Gecode::Graph::PC_GRAPH_ANY);
|
|
53
|
+
w.cancel(this, Gecode::Int::PC_INT_DOM);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
template <class GView>
|
|
57
|
+
Actor* PathCostPropag<GView>::copy(Space* home, bool share) {
|
|
58
|
+
return new (home) PathCostPropag(home,share,*this);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
template <class GView>
|
|
63
|
+
ExecStatus PathCostPropag<GView>::post(Space* home, GView &g,int start, int end, Int::IntView w, const map <pair<int,int>,int> &edgecosts) {
|
|
64
|
+
(void) new (home) PathCostPropag(home,g, start, end, edgecosts, w);
|
|
65
|
+
return ES_OK;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
template <class GView>
|
|
69
|
+
PropCost PathCostPropag<GView>::cost(void) const {
|
|
70
|
+
return Gecode::PC_QUADRATIC_HI;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
template <class GView>
|
|
74
|
+
ExecStatus PathCostPropag<GView>::propagate(Space* home) {
|
|
75
|
+
TRACE(cout << "coucou propag"<<endl);
|
|
76
|
+
PathBoundsGraphs<GView> bg(g);
|
|
77
|
+
ExecStatus e= bg.SCC_filtering(home, start, end );
|
|
78
|
+
GECODE_ES_CHECK(e);
|
|
79
|
+
bg.resetVertexIndexUB();
|
|
80
|
+
bg.resetEdgeIndexUB();
|
|
81
|
+
TRACE(cout << "cost filtering:" << endl);
|
|
82
|
+
ExecStatus e2;
|
|
83
|
+
int wL,wU;
|
|
84
|
+
boost::tie(e2,wL,wU) = bg.cost_filtering(home, start, end, ecosts, w.max());
|
|
85
|
+
//TODO define a good way (tm) of combining ExecStatus
|
|
86
|
+
GECODE_ES_CHECK(e2);
|
|
87
|
+
e = std::min(e,e2);
|
|
88
|
+
TRACE(cout << "reducing the weight according to computed bounds:" << endl);
|
|
89
|
+
GECODE_ME_CHECK(w.gq(home,wL));
|
|
90
|
+
GECODE_ME_CHECK(w.lq(home,wU));
|
|
91
|
+
TRACE(cout << "au revoir propag" << endl);
|
|
92
|
+
return e;
|
|
93
|
+
}
|
|
94
|
+
/** Simple path propagator */
|
|
95
|
+
|
|
96
|
+
template <class GView>
|
|
97
|
+
forceinline
|
|
98
|
+
PathPropag<GView>::PathPropag(Space* home, GView g, int st, int en)
|
|
99
|
+
: Propagator(home), g(g), start(st), end (en){
|
|
100
|
+
g.subscribe(home,this, Gecode::Graph::PC_GRAPH_ANY);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
template <class GView>
|
|
104
|
+
forceinline
|
|
105
|
+
PathPropag<GView>::PathPropag(Space* home, bool share, PathPropag& p)
|
|
106
|
+
: Propagator(home,share,p), start(p.start), end(p.end){
|
|
107
|
+
g.update(home,share,p.g);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
template <class GView>
|
|
111
|
+
PathPropag<GView>::~PathPropag(void){
|
|
112
|
+
g.cancel(this, Gecode::Graph::PC_GRAPH_ANY);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
template <class GView>
|
|
116
|
+
Actor* PathPropag<GView>::copy(Space* home, bool share) {
|
|
117
|
+
return new (home) PathPropag(home,share,*this);
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
template <class GView>
|
|
122
|
+
ExecStatus PathPropag<GView>::post(Space* home, GView &g,int start, int end) {
|
|
123
|
+
(void) new (home) PathPropag(home,g, start, end);
|
|
124
|
+
return ES_OK;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
template <class GView>
|
|
128
|
+
PropCost PathPropag<GView>::cost(void) const {
|
|
129
|
+
return Gecode::PC_QUADRATIC_HI;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
template <class GView>
|
|
133
|
+
ExecStatus PathPropag<GView>::propagate(Space* home) {
|
|
134
|
+
TRACE(cout << "coucou propag"<<endl);
|
|
135
|
+
PathBoundsGraphs<GView> bg(g);
|
|
136
|
+
ExecStatus e = bg.SCC_filtering(home,start,end );
|
|
137
|
+
return e;
|
|
138
|
+
}
|
|
139
|
+
} }
|