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
|
+
graph variables
|
|
@@ -0,0 +1,105 @@
|
|
|
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:15:36 +0100 (Tue, 29 Nov 2005) $
|
|
11
|
+
* $Revision: 280 $
|
|
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 STLUTILITY_ICC
|
|
22
|
+
#define STLUTILITY_ICC
|
|
23
|
+
|
|
24
|
+
#include <list>
|
|
25
|
+
#include <vector>
|
|
26
|
+
#include <utility>
|
|
27
|
+
|
|
28
|
+
/// outputs a vector<T>
|
|
29
|
+
template <class T>
|
|
30
|
+
std::ostream&
|
|
31
|
+
operator<<(std::ostream& os, const std::vector<T> &v){
|
|
32
|
+
os << "[";
|
|
33
|
+
for (typename std::vector<T>::const_iterator i=v.begin(); i!=v.end(); ++i){
|
|
34
|
+
if (i!=v.begin()) { os <<", "; }
|
|
35
|
+
os << *i;
|
|
36
|
+
}
|
|
37
|
+
os << "]";
|
|
38
|
+
return os;
|
|
39
|
+
}
|
|
40
|
+
/// outputs a std::pair<T1,T2>
|
|
41
|
+
template <class T1,class T2>
|
|
42
|
+
std::ostream&
|
|
43
|
+
operator<<(std::ostream& os, const std::pair<T1,T2> &p){
|
|
44
|
+
os << "(" << p->first << ", " << p->second << ")";
|
|
45
|
+
return os;
|
|
46
|
+
}
|
|
47
|
+
/// outputs a std::list of <T>
|
|
48
|
+
template <class T>
|
|
49
|
+
std::ostream&
|
|
50
|
+
operator<<(std::ostream& os, std::list<T> &l){
|
|
51
|
+
os << "[";
|
|
52
|
+
for (typename std::list<T>::const_iterator i=l.begin(); i!=l.end(); ++i){
|
|
53
|
+
if (i!=l.begin()) { os <<", "; }
|
|
54
|
+
os << *i;
|
|
55
|
+
}
|
|
56
|
+
os << "]";
|
|
57
|
+
return os;
|
|
58
|
+
}
|
|
59
|
+
//TODO check we can get rid of this one
|
|
60
|
+
/// outputs a std::list of std::pair<T1,T2>
|
|
61
|
+
template <class T1,class T2>
|
|
62
|
+
std::ostream&
|
|
63
|
+
operator<<(std::ostream& os, std::list<std::pair<T1,T2> > &l){
|
|
64
|
+
os << "[";
|
|
65
|
+
for (typename std::list<std::pair<T1,T2> >::const_iterator i=l.begin(); i!=l.end(); ++i){
|
|
66
|
+
if (i!=l.begin()) { os <<", "; }
|
|
67
|
+
os << "(" << i->first << ", " << i->second << ")";
|
|
68
|
+
}
|
|
69
|
+
os << "]";
|
|
70
|
+
return os;
|
|
71
|
+
}
|
|
72
|
+
namespace Gecode { namespace Graph {
|
|
73
|
+
/** find the minimum val from a container in between two iterators */
|
|
74
|
+
template <class iterator>
|
|
75
|
+
typename std::iterator_traits<iterator>::value_type
|
|
76
|
+
minimum(iterator begin, iterator end){
|
|
77
|
+
typedef typename std::iterator_traits<iterator>::value_type T;
|
|
78
|
+
struct fmin : public std::unary_function<T,void>{
|
|
79
|
+
T min;
|
|
80
|
+
fmin(T init): min(init){}
|
|
81
|
+
void operator() (T x) { if (x<min) min=x; }
|
|
82
|
+
};
|
|
83
|
+
fmin v;
|
|
84
|
+
std::for_each(begin,end,v);
|
|
85
|
+
return v.min;
|
|
86
|
+
}
|
|
87
|
+
/** find the first iterator pointing on the minimum val from a container in between two iterators */
|
|
88
|
+
template <class iterator>
|
|
89
|
+
iterator
|
|
90
|
+
minimum_index(iterator begin, iterator end){
|
|
91
|
+
typedef typename std::iterator_traits<iterator>::value_type T;
|
|
92
|
+
if (begin==end) return end;
|
|
93
|
+
T min = *begin;
|
|
94
|
+
iterator min_index = begin;
|
|
95
|
+
|
|
96
|
+
for (iterator cur = begin; cur!=end; ++cur){
|
|
97
|
+
if (*cur<min){
|
|
98
|
+
min = *cur;
|
|
99
|
+
min_index = cur;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return min_index;
|
|
103
|
+
}
|
|
104
|
+
} }
|
|
105
|
+
#endif
|
|
@@ -0,0 +1,106 @@
|
|
|
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
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
namespace Gecode { namespace Graph {
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* \defgroup TaskActorGraphMEPC Graph modification events and propagation conditions
|
|
29
|
+
* \ingroup TaskActorSet
|
|
30
|
+
*/
|
|
31
|
+
|
|
32
|
+
//@{
|
|
33
|
+
|
|
34
|
+
/// Domain operation has resulted in failure
|
|
35
|
+
const ModEvent ME_GRAPH_FAILED = ME_GEN_FAILED;
|
|
36
|
+
/// Domain operation has not changed domain
|
|
37
|
+
const ModEvent ME_GRAPH_NONE = ME_GEN_NONE;
|
|
38
|
+
/// Domain operation has resulted in a value (assigned variable)
|
|
39
|
+
const ModEvent ME_GRAPH_VAL = ME_GEN_ASSIGNED;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* \brief Domain operation has changed the least upper bound
|
|
43
|
+
*
|
|
44
|
+
* Note that this implies that the domain has not resulted in a value
|
|
45
|
+
* and that also neither cardinality nor the greatest lower bound
|
|
46
|
+
* have changed.
|
|
47
|
+
*/
|
|
48
|
+
const ModEvent ME_GRAPH_LUB = ME_GRAPH_VAL + 1;
|
|
49
|
+
/**
|
|
50
|
+
* \brief Domain operation has changed the greatest lower bound
|
|
51
|
+
*
|
|
52
|
+
* Note that this implies that the domain has not resulted in a value
|
|
53
|
+
* and that also neither cardinality nor the least upper bound
|
|
54
|
+
* have changed.
|
|
55
|
+
*/
|
|
56
|
+
const ModEvent ME_GRAPH_GLB = ME_GRAPH_LUB + 1;
|
|
57
|
+
/**
|
|
58
|
+
* \brief Domain operation has changed both greatest lower and least
|
|
59
|
+
* upper bound
|
|
60
|
+
*
|
|
61
|
+
* Note that this implies that the domain has not resulted in a value
|
|
62
|
+
* and that also the cardinality has not changed.
|
|
63
|
+
*/
|
|
64
|
+
const ModEvent ME_GRAPH_BB = ME_GRAPH_GLB + 1;
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* \brief Propagate when a view becomes assigned (single value)
|
|
70
|
+
*
|
|
71
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
72
|
+
* condition PC_GRAPH_VAL, then \a p is propagated when a domain
|
|
73
|
+
* update operation on \a x returns the modification event ME_GRAPH_VAL.
|
|
74
|
+
*/
|
|
75
|
+
const PropCond PC_GRAPH_VAL = PC_GEN_ASSIGNED;
|
|
76
|
+
/**
|
|
77
|
+
* \brief Propagate when the greatest lower bound of a view changes
|
|
78
|
+
*
|
|
79
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
80
|
+
* condition PC_GRAPH_GLB, then \a p is propagated when a domain
|
|
81
|
+
* update operation on \a x returns the modification event ME_GRAPH_VAL or
|
|
82
|
+
* ME_GRAPH_GLB.
|
|
83
|
+
*/
|
|
84
|
+
const PropCond PC_GRAPH_GLB = PC_GRAPH_VAL + 1;
|
|
85
|
+
/**
|
|
86
|
+
* \brief Propagate when the least upper bound of a view changes
|
|
87
|
+
*
|
|
88
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
89
|
+
* condition PC_GRAPH_LUB, then \a p is propagated when a domain
|
|
90
|
+
* update operation on \a x returns the modification event ME_GRAPH_VAL or
|
|
91
|
+
* ME_GRAPH_LUB.
|
|
92
|
+
*/
|
|
93
|
+
const PropCond PC_GRAPH_LUB = PC_GRAPH_GLB + 1;
|
|
94
|
+
/**
|
|
95
|
+
* \brief Propagate when any bound of a view changes
|
|
96
|
+
*
|
|
97
|
+
* If a propagator \a p depends on a view \a x with propagation
|
|
98
|
+
* condition PC_GRAPH_ANY, then \a p is propagated when a domain
|
|
99
|
+
* update operation on \a x returns any modification event but ME_GRAPH_FAILED and
|
|
100
|
+
* ME_GRAPH_NONE.
|
|
101
|
+
*/
|
|
102
|
+
const PropCond PC_GRAPH_ANY = PC_GRAPH_LUB + 1;
|
|
103
|
+
//@}
|
|
104
|
+
} }
|
|
105
|
+
|
|
106
|
+
// STATISTICS: graph-var
|
|
@@ -0,0 +1,373 @@
|
|
|
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: 2006-05-22 22:19:52 +0200 (Mon, 22 May 2006) $
|
|
11
|
+
* $Revision: 476 $
|
|
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
|
+
|
|
22
|
+
|
|
23
|
+
#include <iostream>
|
|
24
|
+
#include <vector>
|
|
25
|
+
/// returns the current domain as stl data-structures
|
|
26
|
+
#include <boost/tuple/tuple.hpp>
|
|
27
|
+
//#include "iter.hh"
|
|
28
|
+
|
|
29
|
+
#include "view/iter.icc"
|
|
30
|
+
#include "view/arcnode.hh"
|
|
31
|
+
|
|
32
|
+
//using namespace std;
|
|
33
|
+
//using namespace boost;
|
|
34
|
+
|
|
35
|
+
namespace Gecode { namespace Graph {
|
|
36
|
+
/**
|
|
37
|
+
* \brief A graph view made over sets modeling an adjacency matrix.
|
|
38
|
+
*
|
|
39
|
+
* each line of the matrix is a set variable.
|
|
40
|
+
* \ingroup TaskPropViews
|
|
41
|
+
* \ingroup TaskModel
|
|
42
|
+
*/
|
|
43
|
+
struct OutAdjSetsGraphView {
|
|
44
|
+
SetVar nodes; ///< a set of node ids
|
|
45
|
+
SetVarArray outN; /// an Array of out-neighbours: at index i, get all out-neighbours of node i
|
|
46
|
+
|
|
47
|
+
/// \name Constructors and initialization
|
|
48
|
+
//@{
|
|
49
|
+
/** \brief Default constructor
|
|
50
|
+
*/
|
|
51
|
+
OutAdjSetsGraphView(void);
|
|
52
|
+
/** \brief Builds a Graph view over a set of nodes and an array of outneighbors
|
|
53
|
+
*
|
|
54
|
+
* The size of the \p outN array must be equal to nodes.max()-1
|
|
55
|
+
*/
|
|
56
|
+
OutAdjSetsGraphView(Space *home, SetVar nodes, SetVarArray outN);
|
|
57
|
+
/** \brief Builds a Graph view with the given lists of nodes and arcs as an upper bound and an empty lower bound
|
|
58
|
+
*
|
|
59
|
+
*/
|
|
60
|
+
OutAdjSetsGraphView(Space *home, const pair<vector<int>,vector<pair<int,int> > >& graph);
|
|
61
|
+
/** \brief Builds a Graph view with an empty lower bound and a complete grpah of \p numNodes nodes as the upper bound
|
|
62
|
+
*/
|
|
63
|
+
OutAdjSetsGraphView(Space *home, int numNodes);
|
|
64
|
+
|
|
65
|
+
/// \brief copy constructor for cloning
|
|
66
|
+
OutAdjSetsGraphView(const OutAdjSetsGraphView&);
|
|
67
|
+
//@}
|
|
68
|
+
|
|
69
|
+
/** support for propagators */
|
|
70
|
+
/// subscribe \a p to this view with graph PC \a pc
|
|
71
|
+
void subscribe(Space* home, Propagator* p, PropCond pc);
|
|
72
|
+
/// cancel \a p to this view with graph PC \a pc
|
|
73
|
+
void cancel(Propagator* p, PropCond pc);
|
|
74
|
+
/// update this view during space cloning
|
|
75
|
+
void update(Space* home, bool share, OutAdjSetsGraphView& x);
|
|
76
|
+
/// \ingroup Basic tells for propagators
|
|
77
|
+
//@{
|
|
78
|
+
/// \brief include an arc (\a a, \a b).
|
|
79
|
+
ModEvent _arcIn(Space *, int a, int b);
|
|
80
|
+
/// \brief exclude an arc (\a a, \a b).
|
|
81
|
+
ModEvent _arcOut(Space *, int a, int b);
|
|
82
|
+
/// \brief include a node \a a.
|
|
83
|
+
ModEvent _nodeIn(Space *, int a);
|
|
84
|
+
/// \brief exclude a node \a a.
|
|
85
|
+
ModEvent _nodeOut(Space *, int a);
|
|
86
|
+
//@}
|
|
87
|
+
/*\name Basic iterator tells for propagators
|
|
88
|
+
*
|
|
89
|
+
* The arc iterators must be Gecode-value-style (val / op++ / op()) and
|
|
90
|
+
* the value type must be a std::pair<int,int> of node ids
|
|
91
|
+
*
|
|
92
|
+
* The node iterators must be Gecode-value-style (val / op++ / op()) and
|
|
93
|
+
* the value type must be a int node id
|
|
94
|
+
*/
|
|
95
|
+
//@{
|
|
96
|
+
/// \brief includes all the arcs of I in the lower bound of the graph
|
|
97
|
+
template <class I>
|
|
98
|
+
ModEvent _arcsIn(Space *, I&);
|
|
99
|
+
/// \brief excludes all the arcs of I from the upper bound of the graph
|
|
100
|
+
template <class I>
|
|
101
|
+
ModEvent _arcsOut(Space *, I&);
|
|
102
|
+
/// \brief includes all the nodes of I in the lower bound of the graph
|
|
103
|
+
template <class I>
|
|
104
|
+
ModEvent _nodesIn(Space *, I&);
|
|
105
|
+
/// \brief excludes all the nodes of I from the upper bound of the graph
|
|
106
|
+
template <class I>
|
|
107
|
+
ModEvent _nodesOut(Space *, I&);
|
|
108
|
+
/// sets the graph to its upper bound
|
|
109
|
+
void instantiateUB(Space *);
|
|
110
|
+
/// sets the graph to its lower bound
|
|
111
|
+
void instantiateLB(Space *);
|
|
112
|
+
//@}
|
|
113
|
+
|
|
114
|
+
///\name Reflexion
|
|
115
|
+
//@{
|
|
116
|
+
/// maximum number of nodes of the graph
|
|
117
|
+
int lubOrder();
|
|
118
|
+
/// minimum number of nodes of the graph
|
|
119
|
+
int glbOrder();
|
|
120
|
+
/// maximum number of arcs of the graph
|
|
121
|
+
int lubSize();
|
|
122
|
+
/// maximum number of arcs of the graph
|
|
123
|
+
int glbSize();
|
|
124
|
+
/// maximum possible node id of this graph
|
|
125
|
+
int maxNodeId();
|
|
126
|
+
// template used internally to define arc iterators
|
|
127
|
+
template <class> class _int_pair_gecode_iterator_outn;
|
|
128
|
+
typedef _int_pair_gecode_iterator_outn<Gecode::Set::LubRanges<Gecode::Set::SetView> > LubArcIterator ;
|
|
129
|
+
typedef _int_pair_gecode_iterator_outn<Gecode::Set::GlbRanges<Gecode::Set::SetView> > GlbArcIterator ;
|
|
130
|
+
/// returns a gecode val iterator on the arcs of the glb
|
|
131
|
+
GlbArcIterator iter_arcs_LB();
|
|
132
|
+
/// returns a gecode val iterator on the arcs of the glb
|
|
133
|
+
LubArcIterator iter_arcs_UB();
|
|
134
|
+
typedef Iter::Ranges::ToValues<SetVarLubRanges> LubNodeIterator ;
|
|
135
|
+
typedef Iter::Ranges::ToValues<SetVarGlbRanges> GlbNodeIterator ;
|
|
136
|
+
/// returns a gecode val iterator on the nodes of the glb
|
|
137
|
+
GlbNodeIterator iter_nodes_LB();
|
|
138
|
+
/// returns a gecode val iterator on the nodes of the glb
|
|
139
|
+
LubNodeIterator iter_nodes_UB();
|
|
140
|
+
typedef SetVarLubRanges LubNodeRangesIterator ;
|
|
141
|
+
typedef SetVarGlbRanges GlbNodeRangesIterator ;
|
|
142
|
+
/// returns a gecode range iterator on the nodes of the glb
|
|
143
|
+
GlbNodeRangesIterator iter_nodes_ranges_LB();
|
|
144
|
+
/// returns a gecode range iterator on the nodes of the lub
|
|
145
|
+
LubNodeRangesIterator iter_nodes_ranges_UB();
|
|
146
|
+
/// tells if a node is in the upper bound of the graph
|
|
147
|
+
bool nodeIsInUB(int a);
|
|
148
|
+
/// tells if a node is in the lower bound of the graph
|
|
149
|
+
bool nodeIsInLB(int a);
|
|
150
|
+
/// tells if a arc is in the upper bound of the graph
|
|
151
|
+
bool arcIsInUB(int a, int b);
|
|
152
|
+
/// tells if a arc is in the lower bound of the graph
|
|
153
|
+
bool arcIsInLB(int a, int b);
|
|
154
|
+
/// sets \a nei to the vector of inward neighbours of a in the lub
|
|
155
|
+
void inNeighboursUB(int a, vector<int> &nei);
|
|
156
|
+
/// sets \a nei to the vector of inward neighbours of a in the glb
|
|
157
|
+
void inNeighboursLB(int a, vector<int> &nei);
|
|
158
|
+
/// sets \a nei to the vector of outward neighbours of a in the lub
|
|
159
|
+
void outNeighboursUB(int a, vector<int> &nei);
|
|
160
|
+
/// sets \a nei to the vector of outward neighbours of a in the glb
|
|
161
|
+
void outNeighboursLB(int a, vector<int> &nei);
|
|
162
|
+
/// returns the inward degree of node a in the lub
|
|
163
|
+
int inDegreeUB(int a);
|
|
164
|
+
/// returns the inward degree of node a in the glb
|
|
165
|
+
int inDegreeLB(int a);
|
|
166
|
+
/// returns the outward degree of node a in the lub
|
|
167
|
+
int outDegreeUB(int a);
|
|
168
|
+
/// returns the outward degree of node a in the glb
|
|
169
|
+
int outDegreeLB(int a);
|
|
170
|
+
/// returns true if the domain of the nodes is a singleton
|
|
171
|
+
bool nodeAssigned();
|
|
172
|
+
/// returns true if the domain is a singleton
|
|
173
|
+
bool assigned();
|
|
174
|
+
/// returns the current domain as stl data-structures
|
|
175
|
+
boost::tuple<vector<int>,vector<int>,vector<pair<int,int> >,vector<pair<int,int> > > get_domain();
|
|
176
|
+
//@}
|
|
177
|
+
/// default branching strategy
|
|
178
|
+
void distrib(Space * home);
|
|
179
|
+
private:
|
|
180
|
+
/// \brief posts the inherent graph constraint on the underlying views
|
|
181
|
+
void arcImpliesNodes(Space * home);
|
|
182
|
+
std::pair<PropCond,PropCond> pc_g_to_set(PropCond pc);
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
|
|
190
|
+
/** \brief A graph view made over 2 sets: one for the nodes and one for the arcs.
|
|
191
|
+
*
|
|
192
|
+
* ArcNode is a datastructure for encoding/decoding arcs (pairs of nodes) as ints.
|
|
193
|
+
* \ingroup TaskPropViews
|
|
194
|
+
* \ingroup TaskModel
|
|
195
|
+
*/
|
|
196
|
+
struct NodeArcSetsGraphView {
|
|
197
|
+
SetVar nodes;
|
|
198
|
+
SetVar arcs;
|
|
199
|
+
ArcNode *an;
|
|
200
|
+
|
|
201
|
+
/// \name Constructors and initialization
|
|
202
|
+
/// They all take an pointer to an ArcNode for the mapping between arc numbers and pairs of nodes.
|
|
203
|
+
//@{
|
|
204
|
+
///\brief Default constructor
|
|
205
|
+
NodeArcSetsGraphView(void);
|
|
206
|
+
///\brief Constructor from a given set of \a nodes and a given set of \a arcs
|
|
207
|
+
NodeArcSetsGraphView(Space *home, ArcNode *a, SetVar nodes, SetVar arcs);
|
|
208
|
+
/** \brief Constructor from a given vector nodes and vector of arcs
|
|
209
|
+
*
|
|
210
|
+
* PRE: the \a nodes must be a vector of consecutive integers from 0 to N-1
|
|
211
|
+
*/
|
|
212
|
+
NodeArcSetsGraphView(Space *home, ArcNode *a, const pair<vector<int>,vector<pair<int,int> > >& graph);
|
|
213
|
+
///\brief Constructor for a complete upperbound graph of order \a numNodes
|
|
214
|
+
NodeArcSetsGraphView(Space *home, ArcNode *a, int numNodes);
|
|
215
|
+
///\brief Assignment copy constructor
|
|
216
|
+
NodeArcSetsGraphView(const NodeArcSetsGraphView&);
|
|
217
|
+
//@}
|
|
218
|
+
|
|
219
|
+
/// \name Support for propagators
|
|
220
|
+
//@{
|
|
221
|
+
/// subscribe \a p to this view with graph PC \a pc
|
|
222
|
+
void subscribe(Space* home, Propagator* p, PropCond pc);
|
|
223
|
+
/// cancel \a p to this view with graph PC \a pc
|
|
224
|
+
void cancel(Propagator* p, PropCond pc);
|
|
225
|
+
/// update this view during space cloning
|
|
226
|
+
void update(Space* home, bool share, NodeArcSetsGraphView& x);
|
|
227
|
+
//@}
|
|
228
|
+
/** \name basic tells for propagators
|
|
229
|
+
*
|
|
230
|
+
* Should not be used in modelling, only in propagators and branchings
|
|
231
|
+
*/
|
|
232
|
+
//@{
|
|
233
|
+
/// includes an arc (a,b)
|
|
234
|
+
ModEvent _arcIn(Space *, int a, int b);
|
|
235
|
+
/// excludes an arc (a,b)
|
|
236
|
+
ModEvent _arcOut(Space *, int a, int b);
|
|
237
|
+
/// includes a node a
|
|
238
|
+
ModEvent _nodeIn(Space *, int a);
|
|
239
|
+
/// excludes a node a
|
|
240
|
+
ModEvent _nodeOut(Space *, int a);
|
|
241
|
+
//@}
|
|
242
|
+
/** \name Basic iterator tells for propagators
|
|
243
|
+
*
|
|
244
|
+
* The iterators must be Gecode-value-style (val / op++ / op()) and
|
|
245
|
+
* the value type must be a std::pair<int,int> of node ids
|
|
246
|
+
*
|
|
247
|
+
* The node iterators must be Gecode-value-style (val / op++ / op()) and
|
|
248
|
+
* the value type must be a int node id
|
|
249
|
+
*/
|
|
250
|
+
//@{
|
|
251
|
+
/// \brief includes all the arcs of I in the lower bound of the graph
|
|
252
|
+
template <class I>
|
|
253
|
+
ModEvent _arcsIn(Space *, I&);
|
|
254
|
+
/// \brief excludes all the arcs of I from the upper bound of the graph
|
|
255
|
+
template <class I>
|
|
256
|
+
ModEvent _arcsOut(Space *, I&);
|
|
257
|
+
/// \brief includes all the nodes of I in the lower bound of the graph
|
|
258
|
+
template <class I>
|
|
259
|
+
ModEvent _nodesIn(Space *, I&);
|
|
260
|
+
/// \brief excludes all the nodes of I from the upper bound of the graph
|
|
261
|
+
template <class I>
|
|
262
|
+
ModEvent _nodesOut(Space *, I&);
|
|
263
|
+
/// sets the graph to its upper bound
|
|
264
|
+
void instantiateUB(Space *);
|
|
265
|
+
/// sets the graph to its lower bound
|
|
266
|
+
void instantiateLB(Space *);
|
|
267
|
+
//@}
|
|
268
|
+
|
|
269
|
+
/** \name Reflexion
|
|
270
|
+
*/
|
|
271
|
+
//@{
|
|
272
|
+
/// maximum number of nodes of the graph
|
|
273
|
+
int lubOrder();
|
|
274
|
+
/// minimum number of nodes of the graph
|
|
275
|
+
int glbOrder();
|
|
276
|
+
/// maximum number of arcs of the graph
|
|
277
|
+
int lubSize();
|
|
278
|
+
/// maximum number of arcs of the graph
|
|
279
|
+
int glbSize();
|
|
280
|
+
/// maximum possible node id of this graph
|
|
281
|
+
int maxNodeId();
|
|
282
|
+
/* \name Arc iterators
|
|
283
|
+
* Arc iterators have the gecode iterator interface. The val() method returns a pair<int,int>
|
|
284
|
+
*/
|
|
285
|
+
//@{
|
|
286
|
+
//
|
|
287
|
+
/// template used internally to define arc iterators
|
|
288
|
+
template <class> class _int_pair_gecode_iterator_2vars;
|
|
289
|
+
typedef _int_pair_gecode_iterator_2vars<SetVarLubRanges> LubArcIterator ;
|
|
290
|
+
typedef _int_pair_gecode_iterator_2vars<SetVarGlbRanges> GlbArcIterator ;
|
|
291
|
+
/// returns a gecode val iterator on the arcs of the glb
|
|
292
|
+
GlbArcIterator iter_arcs_LB() const;
|
|
293
|
+
/// returns a gecode val iterator on the arcs of the glb
|
|
294
|
+
LubArcIterator iter_arcs_UB() const;
|
|
295
|
+
typedef Iter::Ranges::ToValues<SetVarLubRanges> LubNodeIterator ;
|
|
296
|
+
typedef Iter::Ranges::ToValues<SetVarGlbRanges> GlbNodeIterator ;
|
|
297
|
+
/// returns a gecode val iterator on the nodes of the glb
|
|
298
|
+
GlbNodeIterator iter_nodes_LB();
|
|
299
|
+
/// returns a gecode val iterator on the nodes of the glb
|
|
300
|
+
LubNodeIterator iter_nodes_UB();
|
|
301
|
+
typedef SetVarLubRanges LubNodeRangesIterator ;
|
|
302
|
+
typedef SetVarGlbRanges GlbNodeRangesIterator ;
|
|
303
|
+
/// returns a gecode range iterator on the nodes of the glb
|
|
304
|
+
GlbNodeRangesIterator iter_nodes_ranges_LB();
|
|
305
|
+
/// returns a gecode range iterator on the nodes of the lub
|
|
306
|
+
LubNodeRangesIterator iter_nodes_ranges_UB();
|
|
307
|
+
/// tells if a node is in the upper bound of the graph
|
|
308
|
+
bool nodeIsInUB(int a);
|
|
309
|
+
/// tells if a node is in the lower bound of the graph
|
|
310
|
+
bool nodeIsInLB(int a);
|
|
311
|
+
/// tells if a arc is in the upper bound of the graph
|
|
312
|
+
bool arcIsInUB(int a, int b);
|
|
313
|
+
/// tells if a arc is in the lower bound of the graph
|
|
314
|
+
bool arcIsInLB(int a, int b);
|
|
315
|
+
/// sets \a nei to the vector of inward neighbours of a in the lub
|
|
316
|
+
void inNeighboursUB(int a, vector<int> &nei);
|
|
317
|
+
/// sets \a nei to the vector of inward neighbours of a in the glb
|
|
318
|
+
void inNeighboursLB(int a, vector<int> &nei);
|
|
319
|
+
/// sets \a nei to the vector of outward neighbours of a in the lub
|
|
320
|
+
void outNeighboursUB(int a, vector<int> &nei);
|
|
321
|
+
/// sets \a nei to the vector of outward neighbours of a in the glb
|
|
322
|
+
void outNeighboursLB(int a, vector<int> &nei);
|
|
323
|
+
/// returns the inward degree of node a in the lub
|
|
324
|
+
int inDegreeUB(int a);
|
|
325
|
+
/// returns the inward degree of node a in the glb
|
|
326
|
+
int inDegreeLB(int a);
|
|
327
|
+
/// returns the outward degree of node a in the lub
|
|
328
|
+
int outDegreeUB(int a);
|
|
329
|
+
/// returns the outward degree of node a in the glb
|
|
330
|
+
int outDegreeLB(int a);
|
|
331
|
+
/// returns true if the domain is a singleton
|
|
332
|
+
bool assigned();
|
|
333
|
+
/// returns true if the domain of the nodes is a singleton
|
|
334
|
+
bool nodeAssigned();
|
|
335
|
+
//@}
|
|
336
|
+
/// returns the current domain as stl data-structures
|
|
337
|
+
boost::tuple<vector<int>,vector<int>,vector<pair<int,int> >,vector<pair<int,int> > > get_domain();
|
|
338
|
+
/// default branching strategy
|
|
339
|
+
void distrib(Space * home);
|
|
340
|
+
private:
|
|
341
|
+
/// \brief posts the inherent graph constraint on the underlying views
|
|
342
|
+
void arcImpliesNodes(Space * home);
|
|
343
|
+
std::pair<PropCond,PropCond> pc_g_to_set(PropCond pc);
|
|
344
|
+
};
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* \brief SetView for the nodes of a GraphView
|
|
350
|
+
* \relates Gecode::Graph::GraphView
|
|
351
|
+
* \relates Gecode::Set::SetView
|
|
352
|
+
* specialized for different graphviews
|
|
353
|
+
*/
|
|
354
|
+
|
|
355
|
+
template <class GraphView>
|
|
356
|
+
struct NodeSetView: public Set::SetView {
|
|
357
|
+
NodeSetView(const GraphView &){}
|
|
358
|
+
NodeSetView(){}
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
} }
|
|
363
|
+
std::ostream&
|
|
364
|
+
operator<<(std::ostream&, const Gecode::Graph::OutAdjSetsGraphView&);
|
|
365
|
+
std::ostream&
|
|
366
|
+
operator<<(std::ostream&, const Gecode::Graph::NodeArcSetsGraphView&);
|
|
367
|
+
#include "view/outadjsets.icc"
|
|
368
|
+
#include "view/nodearcsets.icc"
|
|
369
|
+
#include "view/boundsgraphs.icc"
|
|
370
|
+
#include "view/nodeset.icc"
|
|
371
|
+
|
|
372
|
+
// STATISTICS: graph-var
|
|
373
|
+
|