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,162 @@
|
|
|
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 "arcnode.hh"
|
|
22
|
+
#include <algorithm>
|
|
23
|
+
#include "kernel.hh"
|
|
24
|
+
#include "boost/tuple/tuple.hpp" // for tie
|
|
25
|
+
|
|
26
|
+
using namespace std;
|
|
27
|
+
using namespace boost;
|
|
28
|
+
namespace Gecode { namespace Graph {
|
|
29
|
+
|
|
30
|
+
// constructor
|
|
31
|
+
ArcNode::ArcNode(){
|
|
32
|
+
|
|
33
|
+
}
|
|
34
|
+
ArcNode::ArcNode(const vector<pair<int,int> > &arcs){
|
|
35
|
+
add_arcs(arcs);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
ArcNode::ArcNode(int size){
|
|
39
|
+
for (int i=0; i<size; i++){
|
|
40
|
+
for (int j=0; j<size; j++){
|
|
41
|
+
pair<int,int> p =make_pair(i,j);
|
|
42
|
+
nodes.push_back(p);
|
|
43
|
+
ids[p] = nodes.size()-1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// adds arcs to the mapping
|
|
48
|
+
void ArcNode::add_arcs(const vector<pair<int,int> > &arcs){
|
|
49
|
+
for (vector<pair<int,int> >::const_iterator i=arcs.begin() ; i!= arcs.end(); ++i){
|
|
50
|
+
if (ids.find(*i)==ids.end()){
|
|
51
|
+
pair<int,int> p =make_pair(i->first,i->second) ;
|
|
52
|
+
nodes.push_back(p);
|
|
53
|
+
ids[p] = nodes.size()-1;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// tells if a,b is an arc
|
|
59
|
+
bool ArcNode::has_arc(int a, int b) const{
|
|
60
|
+
return ids.end() != ids.find(make_pair(a,b));
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
// max id of arcs
|
|
64
|
+
int ArcNode::max_arc() const{
|
|
65
|
+
return nodes.size()-1;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// return the arc id for this arc
|
|
69
|
+
int ArcNode::id(int a,int b) const{
|
|
70
|
+
map<pair<int,int>,int>::const_iterator i = ids.find(make_pair(a,b));
|
|
71
|
+
assert(i!=ids.end());
|
|
72
|
+
return i->second;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// return the node ids for this arc id
|
|
76
|
+
pair<int,int> ArcNode::end_nodes(int i) const{
|
|
77
|
+
assert(i<nodes.size());
|
|
78
|
+
return nodes[i];
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
// Constraint
|
|
83
|
+
//
|
|
84
|
+
/// \brief Propagator for ArcNode(a,n1,n2): \f$a=(n1,n2)\f$
|
|
85
|
+
class ArcNodeCstr : public TernaryPropagator<Int::IntView,Int::PC_INT_DOM> {
|
|
86
|
+
const ArcNode *a;
|
|
87
|
+
|
|
88
|
+
public:
|
|
89
|
+
/// Constructor for posting
|
|
90
|
+
ArcNodeCstr(const ArcNode *a, Space * home , Int::IntView x0, Int::IntView x1, Int::IntView x3)
|
|
91
|
+
: TernaryPropagator<Int::IntView,Int::PC_INT_DOM>(home,x0,x1,x2), a(a) {}
|
|
92
|
+
|
|
93
|
+
/// Post propagator \f$a=(n1,n2)\f$
|
|
94
|
+
static ExecStatus
|
|
95
|
+
post(const ArcNode *a, Space* home, Int::IntView x0, Int::IntView x1, Int::IntView x2) {
|
|
96
|
+
(void) new (home) ArcNodeCstr(a,home,x0,x1,x2);
|
|
97
|
+
return ES_OK;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/// Constructor for cloning \a p
|
|
101
|
+
forceinline
|
|
102
|
+
ArcNodeCstr(Space* home, bool share, ArcNodeCstr& p)
|
|
103
|
+
: TernaryPropagator<Int::IntView,Int::PC_INT_DOM>(home,share, p), a(p.a) {}
|
|
104
|
+
|
|
105
|
+
/// Copy propagator during cloning
|
|
106
|
+
Actor*
|
|
107
|
+
copy(Space* home, bool share) {
|
|
108
|
+
return new (home) ArcNodeCstr(home,share,*this);
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/// Return cost
|
|
112
|
+
PropCost
|
|
113
|
+
cost(void) const {
|
|
114
|
+
return PC_TERNARY_HI;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/// Perform propagation
|
|
118
|
+
ExecStatus
|
|
119
|
+
propagate(Space* home) {
|
|
120
|
+
/** First of all propag from arc to nodes */
|
|
121
|
+
Int::ViewValues<Int::IntView> arcR(x0);
|
|
122
|
+
int numVals = x0.size();
|
|
123
|
+
vector<int> headVals(numVals);
|
|
124
|
+
vector<int> tailVals(numVals);
|
|
125
|
+
for (int i=0; arcR(); ++arcR, ++i) {
|
|
126
|
+
boost::tie(headVals[i],tailVals[i]) = a->end_nodes(arcR.val());
|
|
127
|
+
}
|
|
128
|
+
sort(tailVals.begin(),tailVals.end());
|
|
129
|
+
IntSet tailDS(&tailVals[0],numVals);
|
|
130
|
+
IntSetRanges tailRDS(tailDS);
|
|
131
|
+
GECODE_ME_CHECK(x1.inter(home,tailRDS));
|
|
132
|
+
sort(headVals.begin(),headVals.end());
|
|
133
|
+
IntSet headDS(&headVals[0],numVals);
|
|
134
|
+
IntSetRanges headRDS(tailDS);
|
|
135
|
+
GECODE_ME_CHECK(x2.inter(home,headRDS));
|
|
136
|
+
|
|
137
|
+
/** then propag from nodes to arcs */
|
|
138
|
+
vector<int> arcVals;
|
|
139
|
+
Int::ViewValues<Int::IntView> tailR(x1);
|
|
140
|
+
Int::ViewValues<Int::IntView> headR(x2);
|
|
141
|
+
for (; tailR(); ++tailR){
|
|
142
|
+
for (; headR(); ++headR){
|
|
143
|
+
if (a->has_arc(tailR.val(),headR.val())){
|
|
144
|
+
arcVals.push_back(a->id(tailR.val(),headR.val()));
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
sort(arcVals.begin(),arcVals.end());
|
|
149
|
+
IntSet arcDS(&headVals[0],numVals);
|
|
150
|
+
IntSetRanges arcRDS(arcDS);
|
|
151
|
+
GECODE_ME_CHECK(x0.inter(home,arcRDS));
|
|
152
|
+
return ES_FIX;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
/// Posts a constraint linking an arc to two nodes
|
|
158
|
+
void ArcNode::arcNode(Space * home, Int::IntView arc, Int::IntView tail, Int::IntView head) const{
|
|
159
|
+
ArcNodeCstr::post(this,home,arc, tail, head);
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
} }
|
|
@@ -0,0 +1,78 @@
|
|
|
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 ARCNODE_H
|
|
22
|
+
#define ARCNODE_H
|
|
23
|
+
|
|
24
|
+
#include <vector>
|
|
25
|
+
#include <map>
|
|
26
|
+
#include <utility>
|
|
27
|
+
#include "kernel.hh"
|
|
28
|
+
#include "int.hh"
|
|
29
|
+
//#include "graph.hh"
|
|
30
|
+
//using namespace std;
|
|
31
|
+
//using namespace Gecode;
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
#if !defined(GECODE_STATIC_LIBS) && \
|
|
35
|
+
(defined(__CYGWIN__) || defined(__MINGW32__) || defined(_MSC_VER))
|
|
36
|
+
|
|
37
|
+
#ifdef GECODE_BUILD_GRAPH
|
|
38
|
+
#define GECODE_GRAPH_EXPORT __declspec( dllexport )
|
|
39
|
+
#else
|
|
40
|
+
#define GECODE_GRAPH_EXPORT __declspec( dllimport )
|
|
41
|
+
#endif
|
|
42
|
+
|
|
43
|
+
#else
|
|
44
|
+
|
|
45
|
+
#define GECODE_GRAPH_EXPORT
|
|
46
|
+
#endif
|
|
47
|
+
namespace Gecode { namespace Graph {
|
|
48
|
+
|
|
49
|
+
/** \brief A class for encoding pairs of nodes (pairs of ints) as ints.
|
|
50
|
+
*/
|
|
51
|
+
class ArcNode {
|
|
52
|
+
private:
|
|
53
|
+
std::vector<std::pair<int,int> > nodes;
|
|
54
|
+
std::map<std::pair<int,int>,int> ids;
|
|
55
|
+
public:
|
|
56
|
+
/// constructor
|
|
57
|
+
GECODE_GRAPH_EXPORT ArcNode();
|
|
58
|
+
/// constructor With arcs from complete graph
|
|
59
|
+
GECODE_GRAPH_EXPORT ArcNode(int s);
|
|
60
|
+
/// constructor With initial arcs
|
|
61
|
+
GECODE_GRAPH_EXPORT ArcNode(const std::vector<std::pair<int,int> > &arcs);
|
|
62
|
+
/// adds arcs to the mapping
|
|
63
|
+
GECODE_GRAPH_EXPORT void add_arcs(const std::vector<std::pair<int,int> > &arcs);
|
|
64
|
+
/// return the arc id for this arc
|
|
65
|
+
GECODE_GRAPH_EXPORT int id(int,int) const;
|
|
66
|
+
/// return the end node ids for this arc id
|
|
67
|
+
GECODE_GRAPH_EXPORT std::pair<int,int> end_nodes(int) const;
|
|
68
|
+
/// posts a constraint linking an arc to two nodes
|
|
69
|
+
GECODE_GRAPH_EXPORT void arcNode(Space * home, Int::IntView arc, Int::IntView tail, Int::IntView head) const;
|
|
70
|
+
/// tells if a,b is an arc
|
|
71
|
+
GECODE_GRAPH_EXPORT bool has_arc(int a, int b) const;
|
|
72
|
+
/// returns max id of arcs
|
|
73
|
+
GECODE_GRAPH_EXPORT int max_arc() const;
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
} }
|
|
78
|
+
#endif
|
|
@@ -0,0 +1,349 @@
|
|
|
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 21:45:01 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 282 $
|
|
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 "kernel.hh"
|
|
22
|
+
#include "set.hh"
|
|
23
|
+
#include <boost/utility.hpp>
|
|
24
|
+
#include <boost/graph/adjacency_list.hpp>
|
|
25
|
+
#include <boost/graph/iteration_macros.hpp>
|
|
26
|
+
enum PropagDir {PDG2S=1,PDS2G=2,PDBOTH=3};
|
|
27
|
+
//using namespace boost;
|
|
28
|
+
|
|
29
|
+
#undef TRACE
|
|
30
|
+
//#define TRACE(A) A
|
|
31
|
+
#define TRACE(A)
|
|
32
|
+
|
|
33
|
+
typedef std::map<int,int> Eintmap;
|
|
34
|
+
|
|
35
|
+
namespace Gecode { namespace Graph {
|
|
36
|
+
|
|
37
|
+
/** \brief A Node of a boost Gecode::Graph::Graph
|
|
38
|
+
*
|
|
39
|
+
* \ingroup TaskPropGraph
|
|
40
|
+
* */
|
|
41
|
+
struct Node{
|
|
42
|
+
int id;
|
|
43
|
+
int index;
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
/** \brief An Edge of a boost Gecode::Graph::Graph
|
|
47
|
+
*
|
|
48
|
+
* added edge_index property in the graph because of a limitation of BGL:
|
|
49
|
+
* impossible to have a external edge index (because of edge_descriptor not supporting operator< )
|
|
50
|
+
* See http://lists.boost.org/boost-users/2005/08/13561.php
|
|
51
|
+
* http://lists.boost.org/boost-users/2005/07/12500.php
|
|
52
|
+
* for reference.
|
|
53
|
+
* \ingroup TaskPropGraph
|
|
54
|
+
*/
|
|
55
|
+
struct Edge{
|
|
56
|
+
int index;
|
|
57
|
+
};
|
|
58
|
+
// using vecS for vertex structure invalidates the vertex descriptors after each vertex removal
|
|
59
|
+
// hence listS
|
|
60
|
+
/// \brief The boost graph datastructure used in CP(Graph)
|
|
61
|
+
typedef boost::adjacency_list<boost::listS, boost::listS, boost::bidirectionalS, Node, Edge > Graph;
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
/** \brief Base class for Graph data-structure to represent the bounds of the graph domain for branchings and propagators
|
|
65
|
+
*
|
|
66
|
+
* These boost data-structures enable to reuse the boost.graph algorithms to implement propagator and branchings
|
|
67
|
+
* A propagator or branching might use this class to implement a graph algorithm on the bounds of the graph domain.
|
|
68
|
+
* \ingroup TaskPropGraph
|
|
69
|
+
*/
|
|
70
|
+
template <class GView>
|
|
71
|
+
class BoundsGraphs {
|
|
72
|
+
protected:
|
|
73
|
+
// the graphs UB and LB carry their internal ids (for nodes)
|
|
74
|
+
Gecode::Graph::Graph UB;
|
|
75
|
+
Gecode::Graph::Graph::vertex_descriptor *UB_v; // maps internal ids to vertex_descriptors
|
|
76
|
+
Gecode::Graph::Graph LB;
|
|
77
|
+
Gecode::Graph::Graph::vertex_descriptor *LB_v; // maps internal ids to vertex_descriptors
|
|
78
|
+
GView g;
|
|
79
|
+
int numNodes;//< initial number of nodes (ids are from 0 to numNodes-1)
|
|
80
|
+
|
|
81
|
+
public:
|
|
82
|
+
/// Constructor from a Graph View
|
|
83
|
+
BoundsGraphs(GView &g );
|
|
84
|
+
/// Destructor
|
|
85
|
+
~BoundsGraphs();
|
|
86
|
+
/** Adds a node to LB, LB_v if not already present
|
|
87
|
+
* returns wether a node was added */
|
|
88
|
+
bool safe_add_nodeLB(int j);
|
|
89
|
+
/// inits the LB_v and UB_v members.
|
|
90
|
+
void init_LBUB_v();
|
|
91
|
+
/** \brief Tells on the view and the graphs at once
|
|
92
|
+
* @{
|
|
93
|
+
*/
|
|
94
|
+
/// includes an arc in the graph. \a p tells if the arc must be included in the graph DS, in the view or in both.
|
|
95
|
+
forceinline ModEvent arcIn(Space * home, int a, int b,PropagDir p=PDBOTH);
|
|
96
|
+
/// excludes an arc from the graph. \a p tells if the arc must be included in the graph DS, in the view or in both.
|
|
97
|
+
forceinline ModEvent arcOut(Space* home, int a, int b,PropagDir p=PDBOTH);
|
|
98
|
+
/// includes a node in the graph. \a p tells if the arc must be included in the graph DS, in the view or in both.
|
|
99
|
+
forceinline ModEvent nodeIn(Space* home, int a,PropagDir p=PDBOTH);
|
|
100
|
+
/// excludes a node from the graph. \a p tells if the arc must be included in the graph DS, in the view or in both.
|
|
101
|
+
forceinline ModEvent nodeOut(Space* home, int a,PropagDir p=PDBOTH);
|
|
102
|
+
// @}
|
|
103
|
+
/** \brief Resets the bundled edge indexes of the UB graph */
|
|
104
|
+
void resetEdgeIndexUB();
|
|
105
|
+
/** \brief Resets the bundled edge indexes of the LB graph */
|
|
106
|
+
void resetEdgeIndexLB();
|
|
107
|
+
/** \brief Resets the bundled vertex indexes of the UB graph */
|
|
108
|
+
void resetVertexIndexUB();
|
|
109
|
+
/** \brief Resets the bundled vertex indexes of the LB graph */
|
|
110
|
+
void resetVertexIndexLB();
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
|
|
114
|
+
template <class GDV>
|
|
115
|
+
BoundsGraphs<GDV>::BoundsGraphs(GDV &g):UB(g.lubOrder()),LB(g.glbOrder()),g(g),numNodes(g.maxNodeId()+1){
|
|
116
|
+
|
|
117
|
+
// Build UB and UB_v
|
|
118
|
+
TRACE(cout << endl << "UB:"<< endl);
|
|
119
|
+
typename GDV::LubNodeRangesIterator it = g.iter_nodes_ranges_UB();
|
|
120
|
+
|
|
121
|
+
UB_v = new Gecode::Graph::Graph::vertex_descriptor[numNodes];
|
|
122
|
+
for (int i=numNodes; i--; UB_v[i]=NULL);
|
|
123
|
+
|
|
124
|
+
Gecode::Graph::Graph::vertex_iterator gi,gi_end;
|
|
125
|
+
boost::tie(gi,gi_end) = vertices(UB);
|
|
126
|
+
for (;it() && gi!=gi_end;++it){
|
|
127
|
+
for (int i=it.min();i<=it.max() && gi!= gi_end; i++,gi++){
|
|
128
|
+
TRACE(cout << i << " ");
|
|
129
|
+
UB[*gi].id = i;
|
|
130
|
+
UB_v[i] = *gi;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
TRACE(cout << endl << "LB:"<< endl);
|
|
134
|
+
assert(gi==gi_end && !it());
|
|
135
|
+
//
|
|
136
|
+
// Build LB and LB_v
|
|
137
|
+
typename GDV::GlbNodeRangesIterator it2 = g.iter_nodes_ranges_LB();
|
|
138
|
+
LB_v = new Gecode::Graph::Graph::vertex_descriptor[numNodes];
|
|
139
|
+
for (int i=numNodes; i--; LB_v[i]=NULL);
|
|
140
|
+
boost::tie(gi,gi_end) = vertices(LB);
|
|
141
|
+
for (;it2() && gi!=gi_end;++it2){
|
|
142
|
+
for (int i=it2.min();i<=it2.max() && gi!= gi_end; i++,gi++){
|
|
143
|
+
TRACE(cout << i << " ");
|
|
144
|
+
LB[*gi].id = i;
|
|
145
|
+
LB_v[i] = *gi;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
TRACE(cout << endl );
|
|
149
|
+
assert(gi==gi_end && !it2());
|
|
150
|
+
|
|
151
|
+
// Add arcs to UB
|
|
152
|
+
TRACE(cout <<" arcs UB :" <<endl);
|
|
153
|
+
typename GDV::LubArcIterator lub(g.iter_arcs_UB());
|
|
154
|
+
for (; lub(); ++lub){
|
|
155
|
+
int i,j;
|
|
156
|
+
boost::tie(i,j) = lub.val();
|
|
157
|
+
//protection against node arc inconsistencies
|
|
158
|
+
if (UB_v[i] && UB_v[j]){
|
|
159
|
+
add_edge(UB_v[i],UB_v[j],UB);
|
|
160
|
+
TRACE(cout << "arc("<<i<<","<<j<<")");
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
TRACE(cout <<endl);
|
|
164
|
+
// Add arcs to LB
|
|
165
|
+
TRACE(cout <<" arcs LB :" <<endl);
|
|
166
|
+
typename GDV::GlbArcIterator glb(g.iter_arcs_LB());
|
|
167
|
+
for (; glb(); ++glb){
|
|
168
|
+
int i,j;
|
|
169
|
+
boost::tie(i,j) = glb.val();
|
|
170
|
+
//protection against node arc inconsistencies
|
|
171
|
+
safe_add_nodeLB(i);
|
|
172
|
+
safe_add_nodeLB(j);
|
|
173
|
+
add_edge(LB_v[i],LB_v[j],LB);
|
|
174
|
+
TRACE(cout << "arc("<<i<<","<<j<<")");
|
|
175
|
+
}
|
|
176
|
+
TRACE(cout <<endl);
|
|
177
|
+
resetVertexIndexUB();
|
|
178
|
+
resetVertexIndexLB();
|
|
179
|
+
resetEdgeIndexUB();
|
|
180
|
+
resetEdgeIndexLB();
|
|
181
|
+
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
template <class GDV>
|
|
185
|
+
BoundsGraphs<GDV>::~BoundsGraphs(){
|
|
186
|
+
if (UB_v) delete[] UB_v;
|
|
187
|
+
if (LB_v) delete[] LB_v;
|
|
188
|
+
}
|
|
189
|
+
/** Adds a node to LB, LB_v if not already present
|
|
190
|
+
* returns wether a node was added */
|
|
191
|
+
template <class GDV>
|
|
192
|
+
bool BoundsGraphs<GDV>::safe_add_nodeLB(int j){
|
|
193
|
+
if (!LB_v[j]){
|
|
194
|
+
LB_v[j] = add_vertex(LB);
|
|
195
|
+
LB[LB_v[j]].id = j;
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
return false;
|
|
199
|
+
|
|
200
|
+
}
|
|
201
|
+
template <class GDV>
|
|
202
|
+
void BoundsGraphs<GDV>::init_LBUB_v(){
|
|
203
|
+
UB_v = new Gecode::Graph::Graph::vertex_descriptor[numNodes];
|
|
204
|
+
for (int i=numNodes; i--; UB_v[i]=NULL);
|
|
205
|
+
Gecode::Graph::Graph::vertex_iterator i,i_end;
|
|
206
|
+
boost::tie(i,i_end) = vertices(UB);
|
|
207
|
+
for (;i!=i_end; ++i){
|
|
208
|
+
UB_v[UB[*i].id] = *i;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
LB_v = new Gecode::Graph::Graph::vertex_descriptor[numNodes];
|
|
212
|
+
for (int i=numNodes; i--; LB_v[i]=NULL);
|
|
213
|
+
boost::tie(i,i_end) = vertices(LB);
|
|
214
|
+
for (;i!=i_end; ++i){
|
|
215
|
+
LB_v[LB[*i].id] = *i;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
template <class GDV>
|
|
219
|
+
forceinline ModEvent BoundsGraphs<GDV>::arcIn(Space* home, int a, int b,PropagDir p){
|
|
220
|
+
// test (a,b) in UB
|
|
221
|
+
//DEBUG
|
|
222
|
+
Gecode::Graph::Graph::edge_descriptor e;
|
|
223
|
+
Gecode::Graph::Graph::vertex_descriptor u = UB_v[a];
|
|
224
|
+
Gecode::Graph::Graph::vertex_descriptor v = UB_v[b];
|
|
225
|
+
bool in;
|
|
226
|
+
boost::tie(e,in) = edge(u,v,UB);
|
|
227
|
+
if (!in){
|
|
228
|
+
TRACE(cout << "returning arcIn" << a << " "<< b<< " ME_SET_FAILED"<< endl);
|
|
229
|
+
return Set::ME_SET_FAILED; //XXX
|
|
230
|
+
}
|
|
231
|
+
if (p & PDS2G){
|
|
232
|
+
// put it in LB
|
|
233
|
+
safe_add_nodeLB(a);
|
|
234
|
+
u = LB_v[a];
|
|
235
|
+
safe_add_nodeLB(b);
|
|
236
|
+
v = LB_v[b];
|
|
237
|
+
boost::tie(e,b) = edge(u,v,LB);
|
|
238
|
+
if (!in)
|
|
239
|
+
add_edge(u,v,LB);
|
|
240
|
+
}
|
|
241
|
+
if (p & PDG2S){
|
|
242
|
+
return g._arcIn(home,a,b);
|
|
243
|
+
}
|
|
244
|
+
return Set::ME_SET_NONE;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
template <class GDV>
|
|
248
|
+
forceinline ModEvent BoundsGraphs<GDV>::arcOut(Space* home, int a, int b,PropagDir p){
|
|
249
|
+
// fail if in LB
|
|
250
|
+
Gecode::Graph::Graph::edge_descriptor e;
|
|
251
|
+
Gecode::Graph::Graph::vertex_descriptor u = LB_v[a];
|
|
252
|
+
Gecode::Graph::Graph::vertex_descriptor v = LB_v[b];
|
|
253
|
+
bool in;
|
|
254
|
+
if (u && v){
|
|
255
|
+
boost::tie(e,in) = edge(u,v,LB);
|
|
256
|
+
if (in){
|
|
257
|
+
TRACE(cout << "returning arcOut" << a << " "<< b<< " ME_SET_FAILED"<< endl);
|
|
258
|
+
return Set::ME_SET_FAILED; //XXX
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
if (p & PDS2G){
|
|
263
|
+
// put it out the UB
|
|
264
|
+
u = UB_v[a];
|
|
265
|
+
v = UB_v[b];
|
|
266
|
+
if (u && v){
|
|
267
|
+
boost::tie(e,in) = edge(u,v,UB);
|
|
268
|
+
if (in) remove_edge(u,v,UB);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (p & PDG2S){
|
|
272
|
+
return g._arcOut(home,a,b);
|
|
273
|
+
}
|
|
274
|
+
return Set::ME_SET_NONE;
|
|
275
|
+
}
|
|
276
|
+
template <class GDV>
|
|
277
|
+
forceinline ModEvent BoundsGraphs<GDV>::nodeIn(Space* home, int a,PropagDir p){
|
|
278
|
+
cout << "propag adding node" << a<<endl;
|
|
279
|
+
// test a in UB
|
|
280
|
+
if (!UB_v[a]){
|
|
281
|
+
TRACE(cout << "returning nodeIn" << a << " ME_SET_FAILED"<< endl);
|
|
282
|
+
return Set::ME_SET_FAILED; //XXX
|
|
283
|
+
}
|
|
284
|
+
if (p & PDS2G){
|
|
285
|
+
// put it in LB
|
|
286
|
+
safe_add_nodeLB(a);
|
|
287
|
+
}
|
|
288
|
+
if (p & PDG2S){
|
|
289
|
+
// put it in nodes
|
|
290
|
+
return g._nodeIn(home,a);
|
|
291
|
+
}
|
|
292
|
+
return Set::ME_SET_NONE;
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
template <class GDV>
|
|
296
|
+
forceinline ModEvent BoundsGraphs<GDV>::nodeOut(Space* home, int a,PropagDir p){
|
|
297
|
+
// test a in LB
|
|
298
|
+
if (LB_v[a]){
|
|
299
|
+
TRACE(cout << "returning nodeOut" << a << " ME_SET_FAILED"<< endl);
|
|
300
|
+
return Set::ME_SET_FAILED; //XXX
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
if (p & PDS2G){
|
|
304
|
+
// put it out UB
|
|
305
|
+
if (UB_v[a]){
|
|
306
|
+
clear_vertex(UB_v[a],UB);
|
|
307
|
+
remove_vertex(UB_v[a],UB);
|
|
308
|
+
UB_v[a]=NULL;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (p & PDG2S){
|
|
312
|
+
// put it out the nodes
|
|
313
|
+
TRACE(cout << "effectively removing it from the nodes"<< endl);
|
|
314
|
+
return g._nodeOut(home,a);
|
|
315
|
+
}
|
|
316
|
+
return Set::ME_SET_NONE;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
/** Resets the bundled edge ids of the UB graph */
|
|
321
|
+
template <class GDV>
|
|
322
|
+
void BoundsGraphs<GDV>::resetEdgeIndexUB(){
|
|
323
|
+
int i=0;
|
|
324
|
+
BGL_FORALL_EDGES(e,UB,Gecode::Graph::Graph)
|
|
325
|
+
UB[e].index = i++;
|
|
326
|
+
}
|
|
327
|
+
/** Resets the bundled edge ids of the LB graph */
|
|
328
|
+
template <class GDV>
|
|
329
|
+
void BoundsGraphs<GDV>::resetEdgeIndexLB(){
|
|
330
|
+
int i=0;
|
|
331
|
+
BGL_FORALL_EDGES(e,LB,Gecode::Graph::Graph)
|
|
332
|
+
LB[e].index = i++;
|
|
333
|
+
}
|
|
334
|
+
/** Resets the bundled vertex ids of the UB graph */
|
|
335
|
+
template <class GDV>
|
|
336
|
+
void BoundsGraphs<GDV>::resetVertexIndexUB(){
|
|
337
|
+
int i=0;
|
|
338
|
+
BGL_FORALL_VERTICES(v,UB,Gecode::Graph::Graph)
|
|
339
|
+
UB[v].index = i++;
|
|
340
|
+
}
|
|
341
|
+
/** Resets the bundled vertex ids of the LB graph */
|
|
342
|
+
template <class GDV>
|
|
343
|
+
void BoundsGraphs<GDV>::resetVertexIndexLB(){
|
|
344
|
+
int i=0;
|
|
345
|
+
BGL_FORALL_VERTICES(v,LB,Gecode::Graph::Graph)
|
|
346
|
+
LB[v].index = i++;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
} }
|