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,49 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Christian Schulte, 2006
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date: 2006-07-12 21:37:21 +0200 (Wed, 12 Jul 2006) $ by $Author: schulte $
|
10
|
+
* $Revision: 3352 $
|
11
|
+
*
|
12
|
+
* This file is part of Gecode, the generic constraint
|
13
|
+
* development environment:
|
14
|
+
* http://www.gecode.org
|
15
|
+
*
|
16
|
+
* See the file "LICENSE" for information on usage and
|
17
|
+
* redistribution of this file, and for a
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
|
22
|
+
#include "gecode/kernel.hh"
|
23
|
+
|
24
|
+
namespace Gecode {
|
25
|
+
|
26
|
+
/*
|
27
|
+
* Base class for exceptions
|
28
|
+
*
|
29
|
+
*/
|
30
|
+
Exception::Exception(const char* l, const char* i) throw() {
|
31
|
+
int j = 0;
|
32
|
+
while ((*l != 0) && (j < li_max))
|
33
|
+
li[j++] = *(l++);
|
34
|
+
if (j < li_max)
|
35
|
+
li[j++] = ':';
|
36
|
+
if (j < li_max)
|
37
|
+
li[j++] = ' ';
|
38
|
+
while ((*i != 0) && (j < li_max))
|
39
|
+
li[j++] = *(i++);
|
40
|
+
li[j] = 0;
|
41
|
+
}
|
42
|
+
const char*
|
43
|
+
Exception::what(void) const throw() {
|
44
|
+
return &li[0];
|
45
|
+
}
|
46
|
+
|
47
|
+
}
|
48
|
+
|
49
|
+
// STATISTICS: kernel-other
|
@@ -0,0 +1,104 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Christian Schulte, 2004
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date: 2006-08-04 16:03:05 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
|
10
|
+
* $Revision: 3510 $
|
11
|
+
*
|
12
|
+
* This file is part of Gecode, the generic constraint
|
13
|
+
* development environment:
|
14
|
+
* http://www.gecode.org
|
15
|
+
*
|
16
|
+
* See the file "LICENSE" for information on usage and
|
17
|
+
* redistribution of this file, and for a
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
|
22
|
+
#include <exception>
|
23
|
+
|
24
|
+
namespace Gecode {
|
25
|
+
|
26
|
+
/**
|
27
|
+
* \brief %Exception: Base-class for exceptions
|
28
|
+
* \ingroup FuncThrow
|
29
|
+
*/
|
30
|
+
class GECODE_KERNEL_EXPORT Exception : public std::exception {
|
31
|
+
private:
|
32
|
+
static const int li_max = 128;
|
33
|
+
char li[li_max+1];
|
34
|
+
public:
|
35
|
+
/// Initialize with location \a l and information \a i
|
36
|
+
Exception(const char* l, const char* i) throw ();
|
37
|
+
/// Return information
|
38
|
+
virtual const char* what(void) const throw();
|
39
|
+
};
|
40
|
+
|
41
|
+
|
42
|
+
/**
|
43
|
+
* \defgroup FuncThrowKernel Kernel exceptions
|
44
|
+
* \ingroup FuncThrow
|
45
|
+
*/
|
46
|
+
|
47
|
+
//@{
|
48
|
+
|
49
|
+
/// %Exception: %Memory exhausted
|
50
|
+
class MemoryExhausted : public Exception {
|
51
|
+
public:
|
52
|
+
/// Initialize
|
53
|
+
MemoryExhausted(void);
|
54
|
+
};
|
55
|
+
|
56
|
+
/// %Exception: Operation on failed space invoked
|
57
|
+
class SpaceFailed : public Exception {
|
58
|
+
public:
|
59
|
+
/// Initialize with location \a l
|
60
|
+
SpaceFailed(const char* l);
|
61
|
+
};
|
62
|
+
|
63
|
+
/// %Exception: Commit when no branching present
|
64
|
+
class SpaceNoBranching : public Exception {
|
65
|
+
public:
|
66
|
+
/// Initialize
|
67
|
+
SpaceNoBranching(void);
|
68
|
+
};
|
69
|
+
|
70
|
+
/// %Exception: Commit with illegal alternative
|
71
|
+
class SpaceIllegalAlternative : public Exception {
|
72
|
+
public:
|
73
|
+
/// Initialize
|
74
|
+
SpaceIllegalAlternative(void);
|
75
|
+
};
|
76
|
+
|
77
|
+
//@}
|
78
|
+
|
79
|
+
/*
|
80
|
+
* Classes for exceptions raised by kernel
|
81
|
+
*
|
82
|
+
*/
|
83
|
+
|
84
|
+
inline
|
85
|
+
MemoryExhausted::MemoryExhausted(void)
|
86
|
+
: Exception("Memory","Heap memory exhausted") {}
|
87
|
+
|
88
|
+
inline
|
89
|
+
SpaceFailed::SpaceFailed(const char* l)
|
90
|
+
: Exception(l,"Attempt to invoke operation on failed space") {}
|
91
|
+
|
92
|
+
inline
|
93
|
+
SpaceNoBranching::SpaceNoBranching(void)
|
94
|
+
: Exception("Space::commit",
|
95
|
+
"Attempt to commit with no branching") {}
|
96
|
+
|
97
|
+
inline
|
98
|
+
SpaceIllegalAlternative::SpaceIllegalAlternative(void)
|
99
|
+
: Exception("Space::commit",
|
100
|
+
"Attempt to commit with illegal alternative") {}
|
101
|
+
|
102
|
+
}
|
103
|
+
|
104
|
+
// STATISTICS: kernel-other
|
@@ -0,0 +1,98 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Christian Schulte, 2004
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date: 2006-09-12 10:05:22 +0200 (Tue, 12 Sep 2006) $ by $Author: tack $
|
10
|
+
* $Revision: 3658 $
|
11
|
+
*
|
12
|
+
* This file is part of Gecode, the generic constraint
|
13
|
+
* development environment:
|
14
|
+
* http://www.gecode.org
|
15
|
+
*
|
16
|
+
* See the file "LICENSE" for information on usage and
|
17
|
+
* redistribution of this file, and for a
|
18
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
19
|
+
*
|
20
|
+
*/
|
21
|
+
|
22
|
+
/**
|
23
|
+
* \brief Check whether modification event \a me is failed, and forward failure.
|
24
|
+
*
|
25
|
+
* To be used inside the propagate member function of a propagator
|
26
|
+
* or the commit member function of a branching.
|
27
|
+
* \ingroup TaskActor
|
28
|
+
*/
|
29
|
+
#define GECODE_ME_CHECK(me) \
|
30
|
+
if (::Gecode::me_failed(me)) \
|
31
|
+
return ::Gecode::ES_FAILED;
|
32
|
+
|
33
|
+
/**
|
34
|
+
* \brief Check whether \a me is failed or modified, and forward failure.
|
35
|
+
*
|
36
|
+
* To be used inside the propagate member function of a propagator
|
37
|
+
* or the commit member function of a branching.
|
38
|
+
* \ingroup TaskActor
|
39
|
+
*/
|
40
|
+
#define GECODE_ME_CHECK_MODIFIED(modified, me) { \
|
41
|
+
ModEvent __me__ ## __LINE__ = (me); \
|
42
|
+
if (::Gecode::me_failed(__me__ ## __LINE__)) \
|
43
|
+
return ::Gecode::ES_FAILED; \
|
44
|
+
modified |= ::Gecode::me_modified(__me__ ## __LINE__); \
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* \brief Check whether modification event \a me is failed, and fail space \a home.
|
49
|
+
*
|
50
|
+
* To be used inside post functions.
|
51
|
+
* \ingroup TaskActor
|
52
|
+
*/
|
53
|
+
#define GECODE_ME_FAIL(home,me) \
|
54
|
+
if (::Gecode::me_failed(me)) { \
|
55
|
+
(home)->fail(); \
|
56
|
+
return; \
|
57
|
+
}
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
/**
|
62
|
+
* \brief Check whether execution status \a es is failed, and forward failure.
|
63
|
+
* \ingroup TaskActor
|
64
|
+
*/
|
65
|
+
#define GECODE_ES_CHECK(es) \
|
66
|
+
if ((es) < ::Gecode::ES_OK) \
|
67
|
+
return ::Gecode::ES_FAILED;
|
68
|
+
|
69
|
+
/**
|
70
|
+
* \brief Check whether execution status \a es is failed, and fail space \a home.
|
71
|
+
* \ingroup TaskActor
|
72
|
+
*/
|
73
|
+
#define GECODE_ES_FAIL(home,es) \
|
74
|
+
if ((es) < ::Gecode::ES_OK) { \
|
75
|
+
(home)->fail(); \
|
76
|
+
return; \
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* \def GECODE_NEVER
|
81
|
+
* \brief Assert that this command is never executed
|
82
|
+
*
|
83
|
+
* This is preferred over assert(false) as it is used for optimization,
|
84
|
+
* if supported by a compiler (for example, Microsoft Visual C++).
|
85
|
+
*
|
86
|
+
*/
|
87
|
+
|
88
|
+
#if defined(_MSC_VER) && defined(NDEBUG)
|
89
|
+
|
90
|
+
#define GECODE_NEVER __assume(false);
|
91
|
+
|
92
|
+
#else
|
93
|
+
|
94
|
+
#define GECODE_NEVER assert(false);
|
95
|
+
|
96
|
+
#endif
|
97
|
+
|
98
|
+
// STATISTICS: kernel-other
|
@@ -0,0 +1,41 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
4
|
+
*
|
5
|
+
* Contributing authors:
|
6
|
+
* <duchier@gecode.org>
|
7
|
+
*
|
8
|
+
* Copyright:
|
9
|
+
* Christian Schulte, 2002
|
10
|
+
* Denys Duchier, 2002
|
11
|
+
*
|
12
|
+
* Last modified:
|
13
|
+
* $Date: 2006-04-11 15:58:37 +0200 (Tue, 11 Apr 2006) $ by $Author: tack $
|
14
|
+
* $Revision: 3188 $
|
15
|
+
*
|
16
|
+
* This file is part of Gecode, the generic constraint
|
17
|
+
* development environment:
|
18
|
+
* http://www.gecode.org
|
19
|
+
*
|
20
|
+
* See the file "LICENSE" for information on usage and
|
21
|
+
* redistribution of this file, and for a
|
22
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
23
|
+
*
|
24
|
+
*/
|
25
|
+
|
26
|
+
#include "gecode/kernel.hh"
|
27
|
+
|
28
|
+
namespace Gecode {
|
29
|
+
|
30
|
+
void
|
31
|
+
MemoryManager::alloc_refill(size_t sz) {
|
32
|
+
// Try to reuse the not used memory
|
33
|
+
reuse(start,lsz);
|
34
|
+
alloc_fill(sz);
|
35
|
+
}
|
36
|
+
|
37
|
+
}
|
38
|
+
|
39
|
+
// STATISTICS: kernel-core
|
40
|
+
|
41
|
+
|
@@ -0,0 +1,438 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Christian Schulte <schulte@gecode.org>
|
4
|
+
*
|
5
|
+
* Contributing authors:
|
6
|
+
* Guido Tack <tack@gecode.org>
|
7
|
+
*
|
8
|
+
* Copyright:
|
9
|
+
* Christian Schulte, 2002
|
10
|
+
* Guido Tack, 2004
|
11
|
+
*
|
12
|
+
* Last modified:
|
13
|
+
* $Date: 2006-08-07 20:47:02 +0200 (Mon, 07 Aug 2006) $ by $Author: schulte $
|
14
|
+
* $Revision: 3525 $
|
15
|
+
*
|
16
|
+
* This file is part of Gecode, the generic constraint
|
17
|
+
* development environment:
|
18
|
+
* http://www.gecode.org
|
19
|
+
*
|
20
|
+
* See the file "LICENSE" for information on usage and
|
21
|
+
* redistribution of this file, and for a
|
22
|
+
* DISCLAIMER OF ALL WARRANTIES.
|
23
|
+
*
|
24
|
+
*/
|
25
|
+
|
26
|
+
namespace Gecode {
|
27
|
+
|
28
|
+
namespace Memory {
|
29
|
+
/**
|
30
|
+
* \brief Parameters defining memory management policy for spaces
|
31
|
+
* \ingroup FuncMemSpace
|
32
|
+
*/
|
33
|
+
namespace Config {
|
34
|
+
/**
|
35
|
+
* \brief Minimal size of a heap chunk requested from the OS
|
36
|
+
*/
|
37
|
+
const size_t hcsz_min = 2 * 1024;
|
38
|
+
/**
|
39
|
+
* \brief Maximal size of a heap chunk requested from the OS
|
40
|
+
*
|
41
|
+
* Maximal is not strictly true, if a contiguous memory chunk is
|
42
|
+
* requested that exceeds \a hcsz_max, a chunk will be allocated
|
43
|
+
* that fits that request.
|
44
|
+
*/
|
45
|
+
const size_t hcsz_max = 64 * 1024;
|
46
|
+
/**
|
47
|
+
* \brief Increment ratio for chunk size
|
48
|
+
*
|
49
|
+
* If a space has requested \a hcsz_inc_ratio chunks of heap memory,
|
50
|
+
* the chunk size is doubled.
|
51
|
+
*/
|
52
|
+
const int hcsz_inc_ratio = 8;
|
53
|
+
/**
|
54
|
+
* \brief Decrement ratio for chunk size
|
55
|
+
*
|
56
|
+
* When a space is cloned, the new clone normally inherits the
|
57
|
+
* current chunk size from the original space. However, if the
|
58
|
+
* original space has requested less than \a hcsz_dec_ratio
|
59
|
+
* heap chunks of the current chunk size, the current chunk size
|
60
|
+
* for the clone is halfed.
|
61
|
+
*/
|
62
|
+
const int hcsz_dec_ratio = 4;
|
63
|
+
|
64
|
+
/**
|
65
|
+
* \brief Unit size for free lists
|
66
|
+
*
|
67
|
+
* The unit size (given as binary logarithm) defines how big
|
68
|
+
* a unit of memory for free lists is. Also, it defines the
|
69
|
+
* alignment. Sizes of free list objects must be multiples of
|
70
|
+
* the unit size.
|
71
|
+
*
|
72
|
+
* Currently, for 32 bit machines, the unit size is 4 bytes.
|
73
|
+
* For 64 bit machines, it is 8 bytes.
|
74
|
+
*/
|
75
|
+
const int fl_unit_size = ((sizeof(void*) == 4) ? 2 : 3);
|
76
|
+
/**
|
77
|
+
* \brief Minimal size for free list element
|
78
|
+
*
|
79
|
+
* The minimal size is given in the number of free list units.
|
80
|
+
*
|
81
|
+
* Currently, for 32 bit machines, the minimal size is 12 bytes.
|
82
|
+
* For 64 bit machines, it is 16 bytes.
|
83
|
+
*/
|
84
|
+
const int fl_size_min = ((sizeof(void*) == 4) ? 3 : 2);
|
85
|
+
/**
|
86
|
+
* \brief Maximal size for free list element
|
87
|
+
*
|
88
|
+
* The maximal size is given in the number of free list units.
|
89
|
+
*
|
90
|
+
* Currently, for 32 bit machines, the maximal size is 12 bytes.
|
91
|
+
* For 64 bit machines, it is 16 bytes.
|
92
|
+
*/
|
93
|
+
const int fl_size_max = ((sizeof(void*) == 4) ? 3 : 2);
|
94
|
+
/**
|
95
|
+
* \brief Number of free lists elements to allocate
|
96
|
+
*
|
97
|
+
* When a request for a free list element can not be fulfilled, as
|
98
|
+
* the free list is empty and there is also no reusable memory
|
99
|
+
* available, allocate \a fl_refill free list elements.
|
100
|
+
*/
|
101
|
+
const int fl_refill = 8;
|
102
|
+
/**
|
103
|
+
* \brief Memory alignment
|
104
|
+
*
|
105
|
+
* Memory alignment is controlled by the macro GECODE_MEMORY_ALIGNMENT.
|
106
|
+
* If it is not defined, it assumed to be 8. Otherwise, the defined
|
107
|
+
* value is used.
|
108
|
+
*/
|
109
|
+
#ifndef GECODE_MEMORY_ALIGNMENT
|
110
|
+
#define GECODE_MEMORY_ALIGNMENT 8
|
111
|
+
#endif
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
/**
|
116
|
+
* \brief Base-class for freelist-managed objects
|
117
|
+
*
|
118
|
+
* Freelist-managed object must inherit from this class. The size
|
119
|
+
* of objects of subclasses is defined by the parameters in
|
120
|
+
* Gecode::Memory::Config.
|
121
|
+
* \ingroup FuncMemSpace
|
122
|
+
*/
|
123
|
+
class FreeList {
|
124
|
+
protected:
|
125
|
+
FreeList* _next;
|
126
|
+
public:
|
127
|
+
FreeList(void);
|
128
|
+
FreeList(FreeList*);
|
129
|
+
FreeList* next(void) const;
|
130
|
+
void next(FreeList*);
|
131
|
+
};
|
132
|
+
|
133
|
+
/// Manage memory for space
|
134
|
+
class MemoryManager {
|
135
|
+
private:
|
136
|
+
/// Memory-chunks allocated from heap
|
137
|
+
class HeapChunk {
|
138
|
+
public:
|
139
|
+
/// Next heap chunk already allocated
|
140
|
+
HeapChunk* next;
|
141
|
+
/// Start of memory area inside chunk
|
142
|
+
double area[1];
|
143
|
+
};
|
144
|
+
private:
|
145
|
+
/// Initialize and allocate first heap chunk
|
146
|
+
void init(void);
|
147
|
+
public:
|
148
|
+
/// Constructor initialization
|
149
|
+
MemoryManager(void);
|
150
|
+
/// Constructor during cloning \a mm
|
151
|
+
MemoryManager(MemoryManager& mm);
|
152
|
+
/// Release all allocated heap chunks
|
153
|
+
~MemoryManager(void);
|
154
|
+
|
155
|
+
private:
|
156
|
+
size_t cur_hcsz; ///< Current heap chunk size
|
157
|
+
HeapChunk* cur_hc; ///< Current heap chunk
|
158
|
+
size_t requested; ///< Total amount of heap memory requested
|
159
|
+
|
160
|
+
char* start; ///< Start of current heap area used for allocation
|
161
|
+
size_t lsz; ///< Size left for allocation
|
162
|
+
|
163
|
+
/// Refill current heap area (outlined) issued by request of size \a s
|
164
|
+
GECODE_KERNEL_EXPORT
|
165
|
+
void alloc_refill(size_t s);
|
166
|
+
/// Do the real work for refilling
|
167
|
+
void alloc_fill(size_t s);
|
168
|
+
|
169
|
+
public:
|
170
|
+
/// Allocate memory of size \a s
|
171
|
+
void* alloc(size_t s);
|
172
|
+
/// Return how much memory has been allocated
|
173
|
+
size_t allocated(void) const;
|
174
|
+
|
175
|
+
private:
|
176
|
+
/// Start of free lists
|
177
|
+
FreeList* fl[Memory::Config::fl_size_max-Memory::Config::fl_size_min+1];
|
178
|
+
/// Refill free list
|
179
|
+
template <size_t> void fl_refill(void);
|
180
|
+
/// Translate size to index in free list
|
181
|
+
static size_t sz2i(size_t);
|
182
|
+
/// Translate index in free list to size
|
183
|
+
static size_t i2sz(size_t);
|
184
|
+
|
185
|
+
public:
|
186
|
+
/// Allocate free list element of size \a s
|
187
|
+
template <size_t s>
|
188
|
+
void* fl_alloc(void);
|
189
|
+
/// Release all free list elements of size \a s between f and l (inclusive)
|
190
|
+
template <size_t> void fl_dispose(FreeList* f, FreeList* l);
|
191
|
+
|
192
|
+
public:
|
193
|
+
/// Memory-chunks for reusing slack memory
|
194
|
+
class ReuseChunk {
|
195
|
+
public:
|
196
|
+
/// Size of chunk
|
197
|
+
size_t size;
|
198
|
+
/// Next chunk for reusal
|
199
|
+
ReuseChunk* next;
|
200
|
+
};
|
201
|
+
private:
|
202
|
+
/// Slack memory chunks
|
203
|
+
ReuseChunk* slack;
|
204
|
+
public:
|
205
|
+
/// Store for reusal, if of sufficient size for free list
|
206
|
+
void reuse(void* p, size_t s);
|
207
|
+
/// Try to allocate from slack
|
208
|
+
void* reusealloc(size_t s);
|
209
|
+
};
|
210
|
+
|
211
|
+
|
212
|
+
/*
|
213
|
+
* Freelists
|
214
|
+
*
|
215
|
+
*/
|
216
|
+
|
217
|
+
forceinline
|
218
|
+
FreeList::FreeList(void) {}
|
219
|
+
|
220
|
+
forceinline
|
221
|
+
FreeList::FreeList(FreeList* n)
|
222
|
+
: _next(n) {}
|
223
|
+
|
224
|
+
forceinline FreeList*
|
225
|
+
FreeList::next(void) const {
|
226
|
+
return _next;
|
227
|
+
}
|
228
|
+
|
229
|
+
forceinline void
|
230
|
+
FreeList::next(FreeList* n) {
|
231
|
+
_next = n;
|
232
|
+
}
|
233
|
+
|
234
|
+
forceinline size_t
|
235
|
+
MemoryManager::sz2i(size_t s) {
|
236
|
+
assert((s % (1 << Memory::Config::fl_unit_size)) == 0);
|
237
|
+
assert(s >= (Memory::Config::fl_size_min << Memory::Config::fl_unit_size));
|
238
|
+
assert(s <= (Memory::Config::fl_size_max << Memory::Config::fl_unit_size));
|
239
|
+
return (s >> Memory::Config::fl_unit_size) - Memory::Config::fl_size_min;
|
240
|
+
}
|
241
|
+
|
242
|
+
forceinline size_t
|
243
|
+
MemoryManager::i2sz(size_t i) {
|
244
|
+
return (i + Memory::Config::fl_size_min) << Memory::Config::fl_unit_size;
|
245
|
+
}
|
246
|
+
|
247
|
+
|
248
|
+
/*
|
249
|
+
* The active memory manager
|
250
|
+
*
|
251
|
+
*/
|
252
|
+
|
253
|
+
forceinline size_t
|
254
|
+
MemoryManager::allocated(void) const {
|
255
|
+
return requested;
|
256
|
+
}
|
257
|
+
|
258
|
+
forceinline void*
|
259
|
+
MemoryManager::alloc(size_t sz) {
|
260
|
+
// Size must be a multiple of four
|
261
|
+
assert((sz > 0) && ((sz % 4) == 0));
|
262
|
+
#if GECODE_MEMORY_ALIGNMENT == 8
|
263
|
+
// Performs alignment to 8 bytes
|
264
|
+
sz += sz & 4;
|
265
|
+
#endif
|
266
|
+
// Check whether sufficient memory left
|
267
|
+
if (sz > lsz)
|
268
|
+
alloc_refill(sz);
|
269
|
+
lsz -= sz;
|
270
|
+
return start + lsz;
|
271
|
+
}
|
272
|
+
|
273
|
+
forceinline void
|
274
|
+
MemoryManager::alloc_fill(size_t sz) {
|
275
|
+
// Adjust current heap chunk size
|
276
|
+
if (((requested > Memory::Config::hcsz_inc_ratio*cur_hcsz) ||
|
277
|
+
(sz > cur_hcsz)) &&
|
278
|
+
(cur_hcsz < Memory::Config::hcsz_max)) {
|
279
|
+
cur_hcsz <<= 1;
|
280
|
+
}
|
281
|
+
|
282
|
+
// Round size to next multiple of current heap chunk size
|
283
|
+
lsz = ((sz > cur_hcsz) ?
|
284
|
+
(((size_t) (sz / cur_hcsz)) + 1) * cur_hcsz : cur_hcsz);
|
285
|
+
|
286
|
+
// Request as close as possible a chunk with lsz sizes free
|
287
|
+
#if GECODE_MEMORY_ALIGNMENT == 4
|
288
|
+
requested += lsz;
|
289
|
+
HeapChunk* hc = reinterpret_cast<HeapChunk*>
|
290
|
+
(Memory::malloc(sizeof(HeapChunk)+lsz-sizeof(double)));
|
291
|
+
start = reinterpret_cast<char*>(&(hc->area[0]));
|
292
|
+
#endif
|
293
|
+
#if GECODE_MEMORY_ALIGNMENT == 8
|
294
|
+
// Leave room for adjusting alignment by 4
|
295
|
+
requested += lsz+sizeof(double);
|
296
|
+
HeapChunk* hc = reinterpret_cast<HeapChunk*>
|
297
|
+
(Memory::malloc(sizeof(HeapChunk)+lsz));
|
298
|
+
start = reinterpret_cast<char*>(&(hc->area[0]));
|
299
|
+
// This is four if it is only four aligned
|
300
|
+
size_t size_adj = reinterpret_cast<size_t>(start) & 4;
|
301
|
+
start += size_adj;
|
302
|
+
lsz += sizeof(double) - size_adj;
|
303
|
+
#endif
|
304
|
+
// Link heap chunk
|
305
|
+
hc->next = cur_hc; cur_hc = hc;
|
306
|
+
#ifdef GECODE_MEMORY_CHECK
|
307
|
+
for (char* c = start; c < (start+lsz); c++)
|
308
|
+
*c = 0;
|
309
|
+
#endif
|
310
|
+
}
|
311
|
+
|
312
|
+
forceinline void
|
313
|
+
MemoryManager::init(void) {
|
314
|
+
cur_hc = NULL;
|
315
|
+
requested = 0;
|
316
|
+
alloc_fill(cur_hcsz);
|
317
|
+
for (size_t i = Memory::Config::fl_size_max-Memory::Config::fl_size_min+1;
|
318
|
+
i--; )
|
319
|
+
fl[i] = NULL;
|
320
|
+
}
|
321
|
+
|
322
|
+
forceinline
|
323
|
+
MemoryManager::MemoryManager(void)
|
324
|
+
: cur_hcsz(Memory::Config::hcsz_min), slack(NULL) {
|
325
|
+
init();
|
326
|
+
}
|
327
|
+
|
328
|
+
forceinline
|
329
|
+
MemoryManager::MemoryManager(MemoryManager& mm)
|
330
|
+
: cur_hcsz(mm.cur_hcsz), slack(NULL) {
|
331
|
+
if ((mm.requested < Memory::Config::hcsz_dec_ratio*mm.cur_hcsz) &&
|
332
|
+
(mm.cur_hcsz > Memory::Config::hcsz_min))
|
333
|
+
cur_hcsz >>= 1;
|
334
|
+
init();
|
335
|
+
}
|
336
|
+
|
337
|
+
forceinline
|
338
|
+
MemoryManager::~MemoryManager(void) {
|
339
|
+
// Release all allocated heap chunks
|
340
|
+
HeapChunk* hc = cur_hc;
|
341
|
+
do {
|
342
|
+
HeapChunk* t = hc; hc = hc->next;
|
343
|
+
Memory::free(t);
|
344
|
+
} while (hc != NULL);
|
345
|
+
}
|
346
|
+
|
347
|
+
|
348
|
+
/*
|
349
|
+
* Slack memory management
|
350
|
+
*
|
351
|
+
*/
|
352
|
+
forceinline void
|
353
|
+
MemoryManager::reuse(void* p, size_t s) {
|
354
|
+
#ifdef GECODE_MEMORY_CHECK
|
355
|
+
{
|
356
|
+
char* c = reinterpret_cast<char*>(p);
|
357
|
+
char* e = c + s;
|
358
|
+
while (c < e) {
|
359
|
+
*c = 0; c++;
|
360
|
+
}
|
361
|
+
}
|
362
|
+
#endif
|
363
|
+
if (s >= (Memory::Config::fl_size_max<<Memory::Config::fl_unit_size)) {
|
364
|
+
ReuseChunk* rc = reinterpret_cast<ReuseChunk*>(p);
|
365
|
+
rc->next = slack;
|
366
|
+
rc->size = s;
|
367
|
+
slack = rc;
|
368
|
+
}
|
369
|
+
}
|
370
|
+
|
371
|
+
|
372
|
+
/*
|
373
|
+
* Freelist management
|
374
|
+
*
|
375
|
+
*/
|
376
|
+
|
377
|
+
template <size_t s>
|
378
|
+
forceinline void*
|
379
|
+
MemoryManager::fl_alloc(void) {
|
380
|
+
size_t i = sz2i(s);
|
381
|
+
FreeList* f = fl[i];
|
382
|
+
if (f == NULL) {
|
383
|
+
fl_refill<s>(); f = fl[i];
|
384
|
+
}
|
385
|
+
FreeList* n = f->next();
|
386
|
+
fl[i] = n;
|
387
|
+
return f;
|
388
|
+
}
|
389
|
+
|
390
|
+
template <size_t s>
|
391
|
+
forceinline void
|
392
|
+
MemoryManager::fl_dispose(FreeList* f, FreeList* l) {
|
393
|
+
size_t i = sz2i(s);
|
394
|
+
l->next(fl[i]); fl[i] = f;
|
395
|
+
}
|
396
|
+
|
397
|
+
#define GECODE_KERNEL_PTR2FL(p) (reinterpret_cast<FreeList*>(p))
|
398
|
+
#define GECODE_KERNEL_PTR2CH(p) (reinterpret_cast<char*>(p))
|
399
|
+
|
400
|
+
template <size_t sz>
|
401
|
+
void
|
402
|
+
MemoryManager::fl_refill(void) {
|
403
|
+
// Try to acquire memory from slack
|
404
|
+
if (slack != NULL) {
|
405
|
+
ReuseChunk* m = slack;
|
406
|
+
slack = NULL;
|
407
|
+
do {
|
408
|
+
char* block = GECODE_KERNEL_PTR2CH(m);
|
409
|
+
size_t s = m->size;
|
410
|
+
assert(s >= sz);
|
411
|
+
m = m->next;
|
412
|
+
fl[sz2i(sz)] = GECODE_KERNEL_PTR2FL(block);
|
413
|
+
while (s >= 2*sz) {
|
414
|
+
GECODE_KERNEL_PTR2FL(block)->next(GECODE_KERNEL_PTR2FL(block+sz));
|
415
|
+
block += sz;
|
416
|
+
s -= sz;
|
417
|
+
}
|
418
|
+
GECODE_KERNEL_PTR2FL(block)->next(NULL);
|
419
|
+
} while (m != NULL);
|
420
|
+
} else {
|
421
|
+
char* block = GECODE_KERNEL_PTR2CH(alloc(Memory::Config::fl_refill*sz));
|
422
|
+
fl[sz2i(sz)] = GECODE_KERNEL_PTR2FL(block);
|
423
|
+
int i = Memory::Config::fl_refill-2;
|
424
|
+
do {
|
425
|
+
GECODE_KERNEL_PTR2FL(block+i*sz)->next
|
426
|
+
(GECODE_KERNEL_PTR2FL(block+(i+1)*sz));
|
427
|
+
} while (--i >= 0);
|
428
|
+
GECODE_KERNEL_PTR2FL(block+(Memory::Config::fl_refill-1)*sz)->next
|
429
|
+
(GECODE_KERNEL_PTR2FL(NULL));
|
430
|
+
}
|
431
|
+
}
|
432
|
+
|
433
|
+
#undef GECODE_KERNEL_PTR2FL
|
434
|
+
#undef GECODE_KERNEL_PTR2CH
|
435
|
+
|
436
|
+
}
|
437
|
+
|
438
|
+
// STATISTICS: kernel-core
|