gecoder-with-gecode 0.7.1 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +7 -0
- data/README +10 -1
- data/ext/extconf.rb +24 -7
- data/ext/gecode-2.1.1/LICENSE +25 -0
- data/ext/gecode-2.1.1/Makefile.contribs +86 -0
- data/ext/gecode-2.1.1/Makefile.dep +7622 -0
- data/ext/gecode-2.1.1/Makefile.in +1568 -0
- data/ext/gecode-2.1.1/changelog.in +2459 -0
- data/ext/gecode-2.1.1/configure +11631 -0
- data/ext/gecode-2.1.1/configure.ac +249 -0
- data/ext/gecode-2.1.1/configure.ac.in +245 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/contribs/README +0 -0
- data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +263 -0
- data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +82 -0
- data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +37 -0
- data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +162 -0
- data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +172 -0
- data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +63 -0
- data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +37 -0
- data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +35 -0
- data/ext/gecode-2.1.1/contribs/qecode/configure +2264 -0
- data/ext/gecode-2.1.1/contribs/qecode/configure.ac +23 -0
- data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +13 -0
- data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +144 -0
- data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +73 -0
- data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +179 -0
- data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +34 -0
- data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +46 -0
- data/ext/gecode-2.1.1/contribs/qecode/heap.cc +151 -0
- data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +595 -0
- data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +184 -0
- data/ext/gecode-2.1.1/contribs/qecode/myDom.cc +39 -0
- data/ext/gecode-2.1.1/contribs/qecode/myspace.cc +69 -0
- data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +69 -0
- data/ext/gecode-2.1.1/contribs/qecode/qecode.hh +56 -0
- data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +145 -0
- data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +247 -0
- data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +168 -0
- data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +73 -0
- data/ext/gecode-2.1.1/contribs/qecode/shortdesc.ac +1 -0
- data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +91 -0
- data/ext/gecode-2.1.1/contribs/qecode/vartype.hh +31 -0
- data/ext/gecode-2.1.1/contribs/qecode/warner.cc +101 -0
- data/ext/gecode-2.1.1/contribs/qecode/warner.hh +83 -0
- data/ext/gecode-2.1.1/doxygen/doxygen.conf.in +1270 -0
- data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +1111 -0
- data/ext/gecode-2.1.1/doxygen/reflection.hh +417 -0
- data/ext/gecode-2.1.1/gecode.m4 +956 -0
- data/ext/gecode-2.1.1/gecode/cpltset.hh +797 -0
- data/ext/gecode-2.1.1/gecode/cpltset/array.cc +121 -0
- data/ext/gecode-2.1.1/gecode/cpltset/array.icc +81 -0
- data/ext/gecode-2.1.1/gecode/cpltset/bddmanager.cc +59 -0
- data/ext/gecode-2.1.1/gecode/cpltset/bddmanager.icc +448 -0
- data/ext/gecode-2.1.1/gecode/cpltset/branch.cc +68 -0
- data/ext/gecode-2.1.1/gecode/cpltset/branch.hh +208 -0
- data/ext/gecode-2.1.1/gecode/cpltset/branch/select-val.icc +167 -0
- data/ext/gecode-2.1.1/gecode/cpltset/branch/select-view.icc +143 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/atmost.cc +472 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/cardinality.cc +69 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/distinct.cc +83 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/dom.cc +147 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/partition.cc +383 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/rangeroots.cc +466 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/rel.cc +530 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/select.cc +126 -0
- data/ext/gecode-2.1.1/gecode/cpltset/constraints/singleton.cc +55 -0
- data/ext/gecode-2.1.1/gecode/cpltset/exception.icc +172 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators.hh +335 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/binary.icc +260 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/nary.icc +210 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/naryone.icc +165 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/narytwo.icc +191 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/singleton.icc +130 -0
- data/ext/gecode-2.1.1/gecode/cpltset/propagators/unary.icc +132 -0
- data/ext/gecode-2.1.1/gecode/cpltset/support.cc +673 -0
- data/ext/gecode-2.1.1/gecode/cpltset/support.icc +696 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var-imp.icc +487 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.cc +926 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.icc +687 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.vis +86 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var/cpltset.cc +101 -0
- data/ext/gecode-2.1.1/gecode/cpltset/var/cpltset.icc +219 -0
- data/ext/gecode-2.1.1/gecode/cpltset/view.icc +231 -0
- data/ext/gecode-2.1.1/gecode/cpltset/view/cpltset.icc +420 -0
- data/ext/gecode-2.1.1/gecode/cpltset/view/print.cc +166 -0
- data/ext/gecode-2.1.1/gecode/gist.hh +162 -0
- data/ext/gecode-2.1.1/gecode/gist/addchild.cc +191 -0
- data/ext/gecode-2.1.1/gecode/gist/addchild.hh +76 -0
- data/ext/gecode-2.1.1/gecode/gist/addvisualisationdialog.cc +139 -0
- data/ext/gecode-2.1.1/gecode/gist/addvisualisationdialog.hh +78 -0
- data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +115 -0
- data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +77 -0
- data/ext/gecode-2.1.1/gecode/gist/better.hh +59 -0
- data/ext/gecode-2.1.1/gecode/gist/config.cc +61 -0
- data/ext/gecode-2.1.1/gecode/gist/config.hh +62 -0
- data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +245 -0
- data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +101 -0
- data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +522 -0
- data/ext/gecode-2.1.1/gecode/gist/gist.cc +129 -0
- data/ext/gecode-2.1.1/gecode/gist/gist.icc +76 -0
- data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +254 -0
- data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +86 -0
- data/ext/gecode-2.1.1/gecode/gist/node.cc +100 -0
- data/ext/gecode-2.1.1/gecode/gist/node.hh +89 -0
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +124 -0
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +122 -0
- data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +79 -0
- data/ext/gecode-2.1.1/gecode/gist/nodevisitor.hh +91 -0
- data/ext/gecode-2.1.1/gecode/gist/nodevisitor.icc +112 -0
- data/ext/gecode-2.1.1/gecode/gist/postscript.cc +543 -0
- data/ext/gecode-2.1.1/gecode/gist/postscript.hh +56 -0
- data/ext/gecode-2.1.1/gecode/gist/preferences.cc +110 -0
- data/ext/gecode-2.1.1/gecode/gist/preferences.hh +76 -0
- data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +55 -0
- data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +58 -0
- data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +331 -0
- data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +140 -0
- data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +531 -0
- data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +224 -0
- data/ext/gecode-2.1.1/gecode/gist/test.cc +78 -0
- data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +114 -0
- data/ext/gecode-2.1.1/gecode/gist/textoutput.hh +67 -0
- data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +1140 -0
- data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +324 -0
- data/ext/gecode-2.1.1/gecode/gist/ui_addchild.hh +163 -0
- data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +163 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +175 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +71 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +219 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +73 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +123 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayview.cc +146 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayview.hh +96 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayviewt.hh +105 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/varitem.cc +68 -0
- data/ext/gecode-2.1.1/gecode/gist/visualisation/varitem.hh +67 -0
- data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +303 -0
- data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +166 -0
- data/ext/gecode-2.1.1/gecode/int.hh +2035 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +136 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +440 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +279 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +253 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +522 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +218 -0
- data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +138 -0
- data/ext/gecode-2.1.1/gecode/int/array.cc +74 -0
- data/ext/gecode-2.1.1/gecode/int/array.icc +115 -0
- data/ext/gecode-2.1.1/gecode/int/bool.cc +642 -0
- data/ext/gecode-2.1.1/gecode/int/bool.hh +487 -0
- data/ext/gecode-2.1.1/gecode/int/bool/base.icc +156 -0
- data/ext/gecode-2.1.1/gecode/int/bool/eq.icc +239 -0
- data/ext/gecode-2.1.1/gecode/int/bool/eqv.icc +179 -0
- data/ext/gecode-2.1.1/gecode/int/bool/lq.icc +147 -0
- data/ext/gecode-2.1.1/gecode/int/bool/or.icc +1000 -0
- data/ext/gecode-2.1.1/gecode/int/branch.cc +301 -0
- data/ext/gecode-2.1.1/gecode/int/branch.hh +576 -0
- data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +338 -0
- data/ext/gecode-2.1.1/gecode/int/branch/select-view.icc +421 -0
- data/ext/gecode-2.1.1/gecode/int/channel.cc +114 -0
- data/ext/gecode-2.1.1/gecode/int/channel.hh +259 -0
- data/ext/gecode-2.1.1/gecode/int/channel/base.icc +86 -0
- data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +347 -0
- data/ext/gecode-2.1.1/gecode/int/channel/link-multi.cc +231 -0
- data/ext/gecode-2.1.1/gecode/int/channel/link-multi.icc +70 -0
- data/ext/gecode-2.1.1/gecode/int/channel/link-single.cc +97 -0
- data/ext/gecode-2.1.1/gecode/int/channel/link-single.icc +71 -0
- data/ext/gecode-2.1.1/gecode/int/channel/val.icc +276 -0
- data/ext/gecode-2.1.1/gecode/int/circuit.cc +63 -0
- data/ext/gecode-2.1.1/gecode/int/circuit.hh +175 -0
- data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +271 -0
- data/ext/gecode-2.1.1/gecode/int/circuit/dom.icc +146 -0
- data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +122 -0
- data/ext/gecode-2.1.1/gecode/int/count.cc +310 -0
- data/ext/gecode-2.1.1/gecode/int/count.hh +487 -0
- data/ext/gecode-2.1.1/gecode/int/count/int.icc +619 -0
- data/ext/gecode-2.1.1/gecode/int/count/rel.icc +144 -0
- data/ext/gecode-2.1.1/gecode/int/count/view.icc +449 -0
- data/ext/gecode-2.1.1/gecode/int/cumulatives.cc +226 -0
- data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +141 -0
- data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +429 -0
- data/ext/gecode-2.1.1/gecode/int/distinct.cc +108 -0
- data/ext/gecode-2.1.1/gecode/int/distinct.hh +341 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/bilink.icc +89 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/bnd.icc +378 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/combptr.icc +78 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +750 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/edge.icc +118 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/node.icc +147 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +136 -0
- data/ext/gecode-2.1.1/gecode/int/distinct/val.icc +209 -0
- data/ext/gecode-2.1.1/gecode/int/dom.cc +116 -0
- data/ext/gecode-2.1.1/gecode/int/dom.hh +134 -0
- data/ext/gecode-2.1.1/gecode/int/dom/range.icc +129 -0
- data/ext/gecode-2.1.1/gecode/int/dom/spec.icc +151 -0
- data/ext/gecode-2.1.1/gecode/int/element.cc +156 -0
- data/ext/gecode-2.1.1/gecode/int/element.hh +239 -0
- data/ext/gecode-2.1.1/gecode/int/element/int.icc +441 -0
- data/ext/gecode-2.1.1/gecode/int/element/view.icc +584 -0
- data/ext/gecode-2.1.1/gecode/int/exception.icc +163 -0
- data/ext/gecode-2.1.1/gecode/int/extensional.cc +138 -0
- data/ext/gecode-2.1.1/gecode/int/extensional.hh +415 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/base.icc +160 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/basic.icc +166 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/bitset.icc +113 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +565 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/dfa.icc +241 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/incremental.icc +393 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/layered-graph.icc +604 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +311 -0
- data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.icc +207 -0
- data/ext/gecode-2.1.1/gecode/int/gcc.cc +374 -0
- data/ext/gecode-2.1.1/gecode/int/gcc.hh +329 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +660 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +531 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/gccbndsup.icc +780 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/graphsup.icc +2422 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/lbc.icc +391 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/occur.icc +829 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/ubc.icc +255 -0
- data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +400 -0
- data/ext/gecode-2.1.1/gecode/int/int-set.cc +153 -0
- data/ext/gecode-2.1.1/gecode/int/int-set.icc +191 -0
- data/ext/gecode-2.1.1/gecode/int/limits.icc +54 -0
- data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +220 -0
- data/ext/gecode-2.1.1/gecode/int/linear-int.cc +240 -0
- data/ext/gecode-2.1.1/gecode/int/linear.hh +1849 -0
- data/ext/gecode-2.1.1/gecode/int/linear/bool-int.icc +791 -0
- data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +433 -0
- data/ext/gecode-2.1.1/gecode/int/linear/bool-scale.icc +854 -0
- data/ext/gecode-2.1.1/gecode/int/linear/bool-view.icc +399 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +605 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +539 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-nary.icc +1004 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-noview.icc +385 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +493 -0
- data/ext/gecode-2.1.1/gecode/int/linear/int-ter.icc +357 -0
- data/ext/gecode-2.1.1/gecode/int/linear/post.icc +146 -0
- data/ext/gecode-2.1.1/gecode/int/propagator.icc +240 -0
- data/ext/gecode-2.1.1/gecode/int/rel.cc +431 -0
- data/ext/gecode-2.1.1/gecode/int/rel.hh +657 -0
- data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +848 -0
- data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +248 -0
- data/ext/gecode-2.1.1/gecode/int/rel/lq-le.icc +352 -0
- data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +269 -0
- data/ext/gecode-2.1.1/gecode/int/sorted.cc +91 -0
- data/ext/gecode-2.1.1/gecode/int/sorted.hh +117 -0
- data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +182 -0
- data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +257 -0
- data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +208 -0
- data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +669 -0
- data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +596 -0
- data/ext/gecode-2.1.1/gecode/int/unshare.cc +148 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp.icc +745 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +104 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/bool.icc +423 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/bool.vis +69 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/delta.icc +64 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +407 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/int.icc +1004 -0
- data/ext/gecode-2.1.1/gecode/int/var-imp/int.vis +195 -0
- data/ext/gecode-2.1.1/gecode/int/var/bool.cc +72 -0
- data/ext/gecode-2.1.1/gecode/int/var/bool.icc +126 -0
- data/ext/gecode-2.1.1/gecode/int/var/int.cc +79 -0
- data/ext/gecode-2.1.1/gecode/int/var/int.icc +151 -0
- data/ext/gecode-2.1.1/gecode/int/view.icc +1894 -0
- data/ext/gecode-2.1.1/gecode/int/view/bool.icc +598 -0
- data/ext/gecode-2.1.1/gecode/int/view/constint.icc +392 -0
- data/ext/gecode-2.1.1/gecode/int/view/int.icc +301 -0
- data/ext/gecode-2.1.1/gecode/int/view/iter.icc +65 -0
- data/ext/gecode-2.1.1/gecode/int/view/minus.icc +372 -0
- data/ext/gecode-2.1.1/gecode/int/view/offset.icc +362 -0
- data/ext/gecode-2.1.1/gecode/int/view/print.cc +133 -0
- data/ext/gecode-2.1.1/gecode/int/view/rtest.icc +231 -0
- data/ext/gecode-2.1.1/gecode/int/view/scale.icc +456 -0
- data/ext/gecode-2.1.1/gecode/int/view/zero.icc +384 -0
- data/ext/gecode-2.1.1/gecode/iter.hh +90 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-add.icc +144 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-append.icc +222 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-array.icc +138 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-cache.icc +337 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-compl.icc +220 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-diff.icc +142 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-empty.icc +111 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-inter.icc +216 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-minmax.icc +118 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-minus.icc +150 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-offset.icc +127 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-operations.icc +157 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-scale.icc +238 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-singleton-append.icc +111 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-singleton.icc +86 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-size.icc +146 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-union.icc +224 -0
- data/ext/gecode-2.1.1/gecode/iter/ranges-values.icc +140 -0
- data/ext/gecode-2.1.1/gecode/iter/values-array.icc +119 -0
- data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +130 -0
- data/ext/gecode-2.1.1/gecode/iter/values-offset.icc +113 -0
- data/ext/gecode-2.1.1/gecode/iter/values-ranges.icc +106 -0
- data/ext/gecode-2.1.1/gecode/iter/values-singleton.icc +109 -0
- data/ext/gecode-2.1.1/gecode/iter/values-unique.icc +118 -0
- data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-compl.icc +261 -0
- data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-inter.icc +241 -0
- data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-union.icc +249 -0
- data/ext/gecode-2.1.1/gecode/iter/virtual-ranges.icc +140 -0
- data/ext/gecode-2.1.1/gecode/kernel.hh +182 -0
- data/ext/gecode-2.1.1/gecode/kernel/advisor.icc +104 -0
- data/ext/gecode-2.1.1/gecode/kernel/array.icc +1232 -0
- data/ext/gecode-2.1.1/gecode/kernel/branching.icc +447 -0
- data/ext/gecode-2.1.1/gecode/kernel/core.cc +473 -0
- data/ext/gecode-2.1.1/gecode/kernel/core.icc +2295 -0
- data/ext/gecode-2.1.1/gecode/kernel/exception.icc +101 -0
- data/ext/gecode-2.1.1/gecode/kernel/macros.icc +117 -0
- data/ext/gecode-2.1.1/gecode/kernel/memory-manager.cc +57 -0
- data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +458 -0
- data/ext/gecode-2.1.1/gecode/kernel/modevent.icc +69 -0
- data/ext/gecode-2.1.1/gecode/kernel/propagator.icc +845 -0
- data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +921 -0
- data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +1012 -0
- data/ext/gecode-2.1.1/gecode/kernel/shared-array.icc +286 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +433 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +269 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +227 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +72 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-type.cc +68 -0
- data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +915 -0
- data/ext/gecode-2.1.1/gecode/kernel/var.icc +120 -0
- data/ext/gecode-2.1.1/gecode/kernel/view.icc +611 -0
- data/ext/gecode-2.1.1/gecode/minimodel.hh +1165 -0
- data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +179 -0
- data/ext/gecode-2.1.1/gecode/minimodel/bool-expr.cc +327 -0
- data/ext/gecode-2.1.1/gecode/minimodel/bool-expr.icc +131 -0
- data/ext/gecode-2.1.1/gecode/minimodel/bool-rel.icc +83 -0
- data/ext/gecode-2.1.1/gecode/minimodel/exception.icc +84 -0
- data/ext/gecode-2.1.1/gecode/minimodel/lin-expr.icc +374 -0
- data/ext/gecode-2.1.1/gecode/minimodel/lin-rel.icc +324 -0
- data/ext/gecode-2.1.1/gecode/minimodel/matrix.icc +144 -0
- data/ext/gecode-2.1.1/gecode/minimodel/reg.cc +823 -0
- data/ext/gecode-2.1.1/gecode/search.hh +752 -0
- data/ext/gecode-2.1.1/gecode/search/bab.cc +169 -0
- data/ext/gecode-2.1.1/gecode/search/bab.icc +117 -0
- data/ext/gecode-2.1.1/gecode/search/dfs.cc +79 -0
- data/ext/gecode-2.1.1/gecode/search/dfs.icc +169 -0
- data/ext/gecode-2.1.1/gecode/search/engine-ctrl.icc +131 -0
- data/ext/gecode-2.1.1/gecode/search/lds.cc +265 -0
- data/ext/gecode-2.1.1/gecode/search/lds.icc +73 -0
- data/ext/gecode-2.1.1/gecode/search/options.cc +46 -0
- data/ext/gecode-2.1.1/gecode/search/options.icc +46 -0
- data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +237 -0
- data/ext/gecode-2.1.1/gecode/search/restart.icc +99 -0
- data/ext/gecode-2.1.1/gecode/search/statistics.icc +46 -0
- data/ext/gecode-2.1.1/gecode/search/stop.cc +74 -0
- data/ext/gecode-2.1.1/gecode/search/stop.icc +116 -0
- data/ext/gecode-2.1.1/gecode/serialization.hh +149 -0
- data/ext/gecode-2.1.1/gecode/serialization/boost.cc +78 -0
- data/ext/gecode-2.1.1/gecode/serialization/boost.icc +381 -0
- data/ext/gecode-2.1.1/gecode/serialization/flatzinc.cc +372 -0
- data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +340 -0
- data/ext/gecode-2.1.1/gecode/serialization/javascript.hh +69 -0
- data/ext/gecode-2.1.1/gecode/serialization/register.cc +8142 -0
- data/ext/gecode-2.1.1/gecode/set.hh +970 -0
- data/ext/gecode-2.1.1/gecode/set/array.cc +114 -0
- data/ext/gecode-2.1.1/gecode/set/array.icc +77 -0
- data/ext/gecode-2.1.1/gecode/set/branch.cc +78 -0
- data/ext/gecode-2.1.1/gecode/set/branch.hh +213 -0
- data/ext/gecode-2.1.1/gecode/set/branch/select-val.icc +132 -0
- data/ext/gecode-2.1.1/gecode/set/branch/select-view.icc +148 -0
- data/ext/gecode-2.1.1/gecode/set/cardinality.cc +65 -0
- data/ext/gecode-2.1.1/gecode/set/convex.cc +59 -0
- data/ext/gecode-2.1.1/gecode/set/convex.hh +126 -0
- data/ext/gecode-2.1.1/gecode/set/convex/conv.cc +118 -0
- data/ext/gecode-2.1.1/gecode/set/convex/conv.icc +67 -0
- data/ext/gecode-2.1.1/gecode/set/convex/hull.cc +140 -0
- data/ext/gecode-2.1.1/gecode/set/convex/hull.icc +68 -0
- data/ext/gecode-2.1.1/gecode/set/distinct.cc +56 -0
- data/ext/gecode-2.1.1/gecode/set/distinct.hh +90 -0
- data/ext/gecode-2.1.1/gecode/set/distinct/atmostOne.cc +192 -0
- data/ext/gecode-2.1.1/gecode/set/distinct/atmostOne.icc +66 -0
- data/ext/gecode-2.1.1/gecode/set/dom.cc +232 -0
- data/ext/gecode-2.1.1/gecode/set/exception.icc +135 -0
- data/ext/gecode-2.1.1/gecode/set/int.cc +177 -0
- data/ext/gecode-2.1.1/gecode/set/int.hh +391 -0
- data/ext/gecode-2.1.1/gecode/set/int/card.icc +116 -0
- data/ext/gecode-2.1.1/gecode/set/int/channel-bool.icc +303 -0
- data/ext/gecode-2.1.1/gecode/set/int/channel-int.icc +174 -0
- data/ext/gecode-2.1.1/gecode/set/int/match.icc +224 -0
- data/ext/gecode-2.1.1/gecode/set/int/minmax.icc +228 -0
- data/ext/gecode-2.1.1/gecode/set/int/weights.icc +370 -0
- data/ext/gecode-2.1.1/gecode/set/limits.icc +62 -0
- data/ext/gecode-2.1.1/gecode/set/projectors-compiler.hh +164 -0
- data/ext/gecode-2.1.1/gecode/set/projectors.cc +143 -0
- data/ext/gecode-2.1.1/gecode/set/projectors.hh +438 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/compiler.cc +859 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +312 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/formula.icc +66 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/projector-set.cc +91 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/projector-set.icc +85 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/projector.cc +147 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/projector.icc +98 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/propagator.hh +168 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/propagator/card.icc +128 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/propagator/nary.icc +144 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/propagator/re-nary.cc +100 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/propagator/re-nary.icc +71 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/set-expr.cc +339 -0
- data/ext/gecode-2.1.1/gecode/set/projectors/set-expr.icc +237 -0
- data/ext/gecode-2.1.1/gecode/set/propagator.icc +125 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op-const.cc +332 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op.cc +197 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op.hh +353 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +557 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +409 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/partition.icc +202 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/post.icc +223 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/subofunion.icc +192 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/superofinter.icc +193 -0
- data/ext/gecode-2.1.1/gecode/set/rel-op/union.icc +383 -0
- data/ext/gecode-2.1.1/gecode/set/rel.cc +258 -0
- data/ext/gecode-2.1.1/gecode/set/rel.hh +321 -0
- data/ext/gecode-2.1.1/gecode/set/rel/common.icc +125 -0
- data/ext/gecode-2.1.1/gecode/set/rel/eq.icc +139 -0
- data/ext/gecode-2.1.1/gecode/set/rel/nosubset.icc +128 -0
- data/ext/gecode-2.1.1/gecode/set/rel/nq.icc +208 -0
- data/ext/gecode-2.1.1/gecode/set/rel/re-eq.icc +179 -0
- data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +172 -0
- data/ext/gecode-2.1.1/gecode/set/rel/subset.icc +119 -0
- data/ext/gecode-2.1.1/gecode/set/select.cc +135 -0
- data/ext/gecode-2.1.1/gecode/set/select.hh +233 -0
- data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +308 -0
- data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +75 -0
- data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +113 -0
- data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +155 -0
- data/ext/gecode-2.1.1/gecode/set/select/inter.icc +349 -0
- data/ext/gecode-2.1.1/gecode/set/select/union.icc +371 -0
- data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +334 -0
- data/ext/gecode-2.1.1/gecode/set/sequence.cc +69 -0
- data/ext/gecode-2.1.1/gecode/set/sequence.hh +134 -0
- data/ext/gecode-2.1.1/gecode/set/sequence/common.icc +99 -0
- data/ext/gecode-2.1.1/gecode/set/sequence/seq-u.cc +176 -0
- data/ext/gecode-2.1.1/gecode/set/sequence/seq-u.icc +79 -0
- data/ext/gecode-2.1.1/gecode/set/sequence/seq.cc +94 -0
- data/ext/gecode-2.1.1/gecode/set/sequence/seq.icc +69 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp.icc +737 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/delta.icc +78 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/integerset.cc +349 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/integerset.icc +484 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/iter.icc +63 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +214 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/set.icc +532 -0
- data/ext/gecode-2.1.1/gecode/set/var-imp/set.vis +190 -0
- data/ext/gecode-2.1.1/gecode/set/var/set.cc +105 -0
- data/ext/gecode-2.1.1/gecode/set/var/set.icc +303 -0
- data/ext/gecode-2.1.1/gecode/set/view.icc +1503 -0
- data/ext/gecode-2.1.1/gecode/set/view/complement.icc +629 -0
- data/ext/gecode-2.1.1/gecode/set/view/const.icc +907 -0
- data/ext/gecode-2.1.1/gecode/set/view/offset.icc +497 -0
- data/ext/gecode-2.1.1/gecode/set/view/print.cc +141 -0
- data/ext/gecode-2.1.1/gecode/set/view/set.icc +275 -0
- data/ext/gecode-2.1.1/gecode/set/view/singleton.icc +438 -0
- data/ext/gecode-2.1.1/gecode/support.hh +110 -0
- data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +158 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/AUTHORS +11 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/ChangeLog +218 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/NEWS +200 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/README +128 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bdd.h +939 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bddio.c +596 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bddop.c +2848 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bddtree.h +62 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bvec.c +1354 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/bvec.h +298 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/cache.c +104 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/cache.h +72 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/config.h +20 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/cppext.cc +626 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/fdd.c +1079 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/fdd.h +175 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/imatrix.c +151 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/imatrix.h +61 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/kernel.c +1555 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/kernel.h +244 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/pairs.c +336 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/prime.c +322 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/prime.h +50 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/reorder.c +2345 -0
- data/ext/gecode-2.1.1/gecode/support/buddy/tree.c +224 -0
- data/ext/gecode-2.1.1/gecode/support/cast.icc +52 -0
- data/ext/gecode-2.1.1/gecode/support/config.icc.in +80 -0
- data/ext/gecode-2.1.1/gecode/support/dynamic-array.icc +138 -0
- data/ext/gecode-2.1.1/gecode/support/dynamic-stack.icc +167 -0
- data/ext/gecode-2.1.1/gecode/support/exception.cc +65 -0
- data/ext/gecode-2.1.1/gecode/support/exception.icc +82 -0
- data/ext/gecode-2.1.1/gecode/support/macros.icc +103 -0
- data/ext/gecode-2.1.1/gecode/support/map.icc +207 -0
- data/ext/gecode-2.1.1/gecode/support/marked-pointer.icc +66 -0
- data/ext/gecode-2.1.1/gecode/support/memory.icc +220 -0
- data/ext/gecode-2.1.1/gecode/support/random.icc +121 -0
- data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +122 -0
- data/ext/gecode-2.1.1/gecode/support/sort.icc +210 -0
- data/ext/gecode-2.1.1/gecode/support/static-pqueue.icc +242 -0
- data/ext/gecode-2.1.1/gecode/support/static-stack.icc +125 -0
- data/ext/gecode-2.1.1/gecode/support/symbol.cc +226 -0
- data/ext/gecode-2.1.1/gecode/support/symbol.icc +130 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/install-sh +0 -0
- data/ext/gecode-2.1.1/misc/AppleHelpbookInfo.plist +26 -0
- data/ext/gecode-2.1.1/misc/allexamples.perl +60 -0
- data/ext/gecode-2.1.1/misc/debian/Makefile.am +44 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/changelog +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/control +0 -0
- data/ext/gecode-2.1.1/misc/debian/copyright +30 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.info +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.install +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.spec +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/rules +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/back.png +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/footer.html +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/gecode-logo-100.png +0 -0
- data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/header.html +0 -0
- data/ext/gecode-2.1.1/misc/doxygen/stylesheet.css +464 -0
- data/ext/gecode-2.1.1/misc/fixproperties.sh +77 -0
- data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +45 -0
- data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +45 -0
- data/ext/gecode-2.1.1/misc/gecode-search.pc.in +45 -0
- data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +45 -0
- data/ext/gecode-2.1.1/misc/gecode.pc.in +45 -0
- data/ext/gecode-2.1.1/misc/genchangelog.perl +208 -0
- data/ext/gecode-2.1.1/misc/genlcovmakefile.perl +148 -0
- data/ext/gecode-2.1.1/misc/genlicense.perl +121 -0
- data/ext/gecode-2.1.1/misc/genregistry.perl +468 -0
- data/ext/gecode-2.1.1/misc/genstatistics.perl +178 -0
- data/ext/gecode-2.1.1/misc/gentxtchangelog.perl +192 -0
- data/ext/gecode-2.1.1/misc/genvariables.perl +905 -0
- data/ext/gecode-2.1.1/misc/getrevision.perl +47 -0
- data/ext/gecode-2.1.1/misc/makedepend.perl +85 -0
- data/ext/gecode-2.1.1/misc/svn-ignore.txt +15 -0
- data/ext/gecode-2.1.1/variables.vsl +50 -0
- data/ext/missing.cpp +1 -1
- data/ext/missing.h +1 -1
- data/ext/vararray.h +4 -4
- data/lib/gecoder/bindings.rb +21 -1
- data/lib/gecoder/bindings/bindings.rb +408 -731
- data/lib/gecoder/interface/binding_changes.rb +1 -1
- data/lib/gecoder/interface/branch.rb +25 -25
- data/lib/gecoder/interface/constraints.rb +47 -4
- data/lib/gecoder/interface/constraints/bool/boolean.rb +18 -16
- data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +13 -11
- data/lib/gecoder/interface/constraints/int/arithmetic.rb +5 -4
- data/lib/gecoder/interface/constraints/int/domain.rb +8 -9
- data/lib/gecoder/interface/constraints/int/linear.rb +10 -8
- data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +4 -4
- data/lib/gecoder/interface/constraints/int_enum/channel.rb +2 -2
- data/lib/gecoder/interface/constraints/int_enum/count.rb +4 -5
- data/lib/gecoder/interface/constraints/int_enum/distinct.rb +7 -2
- data/lib/gecoder/interface/constraints/int_enum/element.rb +2 -2
- data/lib/gecoder/interface/constraints/int_enum/equality.rb +6 -3
- data/lib/gecoder/interface/constraints/int_enum/sort.rb +17 -5
- data/lib/gecoder/interface/constraints/set_enum/distinct.rb +0 -36
- data/lib/gecoder/interface/constraints/set_var_constraints.rb +5 -0
- data/lib/gecoder/interface/model.rb +3 -3
- data/lib/gecoder/interface/search.rb +5 -4
- data/lib/gecoder/version.rb +1 -1
- data/specs/branch.rb +27 -27
- data/specs/constraints/arithmetic.rb +48 -30
- data/specs/constraints/bool_enum.rb +39 -19
- data/specs/constraints/boolean.rb +10 -10
- data/specs/constraints/cardinality.rb +12 -9
- data/specs/constraints/channel.rb +6 -6
- data/specs/constraints/connection.rb +22 -26
- data/specs/constraints/constraint_helper.rb +125 -41
- data/specs/constraints/count.rb +22 -15
- data/specs/constraints/distinct.rb +10 -64
- data/specs/constraints/element.rb +14 -12
- data/specs/constraints/equality.rb +4 -4
- data/specs/constraints/int_domain.rb +8 -7
- data/specs/constraints/int_relation.rb +12 -8
- data/specs/constraints/linear.rb +4 -4
- data/specs/constraints/reification_sugar.rb +22 -4
- data/specs/constraints/selection.rb +2 -2
- data/specs/constraints/set_domain.rb +7 -3
- data/specs/constraints/set_operation.rb +2 -2
- data/specs/constraints/set_relation.rb +2 -6
- data/specs/constraints/sort.rb +20 -16
- data/specs/distribution.rb +14 -0
- data/specs/model.rb +4 -4
- data/tasks/dependencies.txt +21 -0
- data/tasks/distribution.rake +49 -14
- data/vendor/rust/include/rust_checks.hh +2 -1
- data/vendor/rust/include/rust_conversions.hh +2 -2
- data/vendor/rust/rust/attribute.rb +2 -2
- data/vendor/rust/rust/class.rb +2 -2
- data/vendor/rust/rust/cxxclass.rb +0 -2
- data/vendor/rust/rust/function.rb +2 -2
- data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +1 -1
- data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +1 -1
- data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +1 -1
- data/vendor/rust/rust/type.rb +1 -1
- metadata +599 -542
- data/ext/gecode-1.3.1/LICENSE +0 -34
- data/ext/gecode-1.3.1/Makefile.contribs +0 -71
- data/ext/gecode-1.3.1/Makefile.dep +0 -3928
- data/ext/gecode-1.3.1/Makefile.in +0 -966
- data/ext/gecode-1.3.1/changelog.in +0 -1065
- data/ext/gecode-1.3.1/configure +0 -8590
- data/ext/gecode-1.3.1/configure.ac +0 -179
- data/ext/gecode-1.3.1/configure.ac.in +0 -175
- data/ext/gecode-1.3.1/contribs/graph/INSTALL +0 -53
- data/ext/gecode-1.3.1/contribs/graph/LICENSE +0 -11
- data/ext/gecode-1.3.1/contribs/graph/Makefile +0 -167
- data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +0 -169
- data/ext/gecode-1.3.1/contribs/graph/TODO +0 -28
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +0 -82
- data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +0 -186
- data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +0 -257
- data/ext/gecode-1.3.1/contribs/graph/configure +0 -2160
- data/ext/gecode-1.3.1/contribs/graph/configure.ac +0 -33
- data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +0 -1226
- data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +0 -132
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +0 -94
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +0 -104
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +0 -105
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +0 -92
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +0 -273
- data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +0 -311
- data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +0 -1
- data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +0 -1
- data/ext/gecode-1.3.1/contribs/graph/graph.hh +0 -51
- data/ext/gecode-1.3.1/contribs/graph/graphutils.h +0 -46
- data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +0 -140
- data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +0 -1
- data/ext/gecode-1.3.1/contribs/graph/path.hh +0 -116
- data/ext/gecode-1.3.1/contribs/graph/path.icc +0 -64
- data/ext/gecode-1.3.1/contribs/graph/path/path.icc +0 -139
- data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +0 -133
- data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +0 -341
- data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +0 -1
- data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +0 -105
- data/ext/gecode-1.3.1/contribs/graph/var.icc +0 -106
- data/ext/gecode-1.3.1/contribs/graph/view.icc +0 -373
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +0 -162
- data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +0 -78
- data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +0 -349
- data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +0 -148
- data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +0 -337
- data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +0 -493
- data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +0 -60
- data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +0 -600
- data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +0 -135
- data/ext/gecode-1.3.1/contribs/map/COMPILING +0 -68
- data/ext/gecode-1.3.1/contribs/map/LICENSE +0 -11
- data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +0 -173
- data/ext/gecode-1.3.1/contribs/map/configure +0 -2285
- data/ext/gecode-1.3.1/contribs/map/configure.ac +0 -32
- data/ext/gecode-1.3.1/contribs/map/constraints.hh +0 -46
- data/ext/gecode-1.3.1/contribs/map/constraints.icc +0 -84
- data/ext/gecode-1.3.1/contribs/map/doxygen.conf +0 -1229
- data/ext/gecode-1.3.1/contribs/map/doxygen.hh +0 -33
- data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +0 -199
- data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +0 -1
- data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +0 -1
- 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 +0 -148
- data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
- data/ext/gecode-1.3.1/contribs/map/examples/map.cc +0 -80
- data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +0 -155
- data/ext/gecode-1.3.1/contribs/map/map.hh +0 -65
- data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +0 -235
- data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +0 -771
- data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +0 -2
- data/ext/gecode-1.3.1/contribs/map/var.icc +0 -346
- data/ext/gecode-1.3.1/contribs/map/var/imp.cc +0 -42
- data/ext/gecode-1.3.1/contribs/map/var/imp.icc +0 -436
- data/ext/gecode-1.3.1/doxygen.conf.in +0 -1225
- data/ext/gecode-1.3.1/doxygen.hh.in +0 -877
- data/ext/gecode-1.3.1/examples/all-interval-sort.cc +0 -201
- data/ext/gecode-1.3.1/examples/all-interval.cc +0 -114
- data/ext/gecode-1.3.1/examples/alpha.cc +0 -112
- data/ext/gecode-1.3.1/examples/baseline.cc +0 -71
- data/ext/gecode-1.3.1/examples/bibd.cc +0 -173
- data/ext/gecode-1.3.1/examples/black-hole.cc +0 -281
- data/ext/gecode-1.3.1/examples/cars.cc +0 -165
- data/ext/gecode-1.3.1/examples/crew.cc +0 -220
- data/ext/gecode-1.3.1/examples/crowded-chess.cc +0 -312
- data/ext/gecode-1.3.1/examples/donald.cc +0 -93
- data/ext/gecode-1.3.1/examples/eq20.cc +0 -111
- data/ext/gecode-1.3.1/examples/golf.cc +0 -242
- data/ext/gecode-1.3.1/examples/golomb.cc +0 -141
- data/ext/gecode-1.3.1/examples/graph-color.cc +0 -371
- data/ext/gecode-1.3.1/examples/grocery.cc +0 -107
- data/ext/gecode-1.3.1/examples/hamming.cc +0 -107
- data/ext/gecode-1.3.1/examples/ind-set.cc +0 -130
- data/ext/gecode-1.3.1/examples/knights.cc +0 -146
- data/ext/gecode-1.3.1/examples/langfordnum.cc +0 -244
- data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +0 -93
- data/ext/gecode-1.3.1/examples/magic-sequence.cc +0 -108
- data/ext/gecode-1.3.1/examples/magic-square.cc +0 -120
- data/ext/gecode-1.3.1/examples/money.cc +0 -92
- data/ext/gecode-1.3.1/examples/ortho-latin.cc +0 -156
- data/ext/gecode-1.3.1/examples/packing.cc +0 -211
- data/ext/gecode-1.3.1/examples/partition.cc +0 -126
- data/ext/gecode-1.3.1/examples/photo.cc +0 -155
- data/ext/gecode-1.3.1/examples/picture-puzzle.cc +0 -481
- data/ext/gecode-1.3.1/examples/queen-armies.cc +0 -240
- data/ext/gecode-1.3.1/examples/queens.cc +0 -99
- data/ext/gecode-1.3.1/examples/sports-league.cc +0 -454
- data/ext/gecode-1.3.1/examples/steiner.cc +0 -148
- data/ext/gecode-1.3.1/examples/stress-domain.cc +0 -86
- data/ext/gecode-1.3.1/examples/stress-element.cc +0 -95
- data/ext/gecode-1.3.1/examples/stress-exec.cc +0 -74
- data/ext/gecode-1.3.1/examples/stress-min.cc +0 -84
- data/ext/gecode-1.3.1/examples/stress-search.cc +0 -72
- data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +0 -282
- data/ext/gecode-1.3.1/examples/sudoku-set.cc +0 -162
- data/ext/gecode-1.3.1/examples/sudoku.cc +0 -188
- data/ext/gecode-1.3.1/examples/sudoku.icc +0 -703
- data/ext/gecode-1.3.1/examples/support.cc +0 -160
- data/ext/gecode-1.3.1/examples/support.hh +0 -98
- data/ext/gecode-1.3.1/examples/support.icc +0 -187
- data/ext/gecode-1.3.1/examples/timer.cc +0 -47
- data/ext/gecode-1.3.1/examples/timer.hh +0 -72
- data/ext/gecode-1.3.1/examples/warehouses.cc +0 -176
- data/ext/gecode-1.3.1/extconf.rb +0 -8
- data/ext/gecode-1.3.1/gecode.m4 +0 -736
- data/ext/gecode-1.3.1/gecode/config.icc.in +0 -50
- data/ext/gecode-1.3.1/gecode/int.hh +0 -1426
- data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +0 -87
- data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +0 -292
- data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +0 -213
- data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +0 -196
- data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +0 -478
- data/ext/gecode-1.3.1/gecode/int/array.cc +0 -61
- data/ext/gecode-1.3.1/gecode/int/array.icc +0 -264
- data/ext/gecode-1.3.1/gecode/int/bool.cc +0 -187
- data/ext/gecode-1.3.1/gecode/int/bool.hh +0 -255
- data/ext/gecode-1.3.1/gecode/int/bool/base.icc +0 -123
- data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +0 -89
- data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +0 -132
- data/ext/gecode-1.3.1/gecode/int/bool/or.icc +0 -380
- data/ext/gecode-1.3.1/gecode/int/branch.cc +0 -81
- data/ext/gecode-1.3.1/gecode/int/branch.hh +0 -444
- data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +0 -83
- data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +0 -76
- data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +0 -104
- data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +0 -219
- data/ext/gecode-1.3.1/gecode/int/channel.cc +0 -62
- data/ext/gecode-1.3.1/gecode/int/channel.hh +0 -144
- data/ext/gecode-1.3.1/gecode/int/channel/base.icc +0 -60
- data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +0 -313
- data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +0 -59
- data/ext/gecode-1.3.1/gecode/int/channel/val.icc +0 -239
- data/ext/gecode-1.3.1/gecode/int/count.cc +0 -174
- data/ext/gecode-1.3.1/gecode/int/count.hh +0 -401
- data/ext/gecode-1.3.1/gecode/int/count/int.icc +0 -495
- data/ext/gecode-1.3.1/gecode/int/count/rel.icc +0 -100
- data/ext/gecode-1.3.1/gecode/int/count/view.icc +0 -332
- data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +0 -210
- data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +0 -118
- data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +0 -377
- data/ext/gecode-1.3.1/gecode/int/distinct.cc +0 -77
- data/ext/gecode-1.3.1/gecode/int/distinct.hh +0 -272
- data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +0 -73
- data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +0 -335
- data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +0 -62
- data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +0 -740
- data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +0 -96
- data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +0 -107
- data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +0 -97
- data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +0 -171
- data/ext/gecode-1.3.1/gecode/int/dom.cc +0 -81
- data/ext/gecode-1.3.1/gecode/int/dom.hh +0 -101
- data/ext/gecode-1.3.1/gecode/int/dom/range.icc +0 -85
- data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +0 -85
- data/ext/gecode-1.3.1/gecode/int/element.cc +0 -58
- data/ext/gecode-1.3.1/gecode/int/element.hh +0 -203
- data/ext/gecode-1.3.1/gecode/int/element/int.icc +0 -396
- data/ext/gecode-1.3.1/gecode/int/element/view.icc +0 -443
- data/ext/gecode-1.3.1/gecode/int/exception.icc +0 -137
- data/ext/gecode-1.3.1/gecode/int/gcc.cc +0 -708
- data/ext/gecode-1.3.1/gecode/int/gcc.hh +0 -338
- data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +0 -629
- data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +0 -504
- data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +0 -760
- data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +0 -2375
- data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +0 -375
- data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +0 -687
- data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +0 -236
- data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +0 -373
- data/ext/gecode-1.3.1/gecode/int/int-set.cc +0 -115
- data/ext/gecode-1.3.1/gecode/int/int-set.icc +0 -151
- data/ext/gecode-1.3.1/gecode/int/linear.cc +0 -247
- data/ext/gecode-1.3.1/gecode/int/linear.hh +0 -1056
- data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +0 -439
- data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +0 -422
- data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +0 -311
- data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +0 -503
- data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +0 -857
- data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +0 -264
- data/ext/gecode-1.3.1/gecode/int/linear/post.cc +0 -542
- data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +0 -255
- data/ext/gecode-1.3.1/gecode/int/propagator.icc +0 -194
- data/ext/gecode-1.3.1/gecode/int/regular.cc +0 -40
- data/ext/gecode-1.3.1/gecode/int/regular.hh +0 -83
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +0 -466
- data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +0 -172
- data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +0 -480
- data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +0 -738
- data/ext/gecode-1.3.1/gecode/int/rel.cc +0 -293
- data/ext/gecode-1.3.1/gecode/int/rel.hh +0 -526
- data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +0 -640
- data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +0 -212
- data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +0 -246
- data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +0 -188
- data/ext/gecode-1.3.1/gecode/int/sortedness.cc +0 -124
- data/ext/gecode-1.3.1/gecode/int/sortedness.hh +0 -108
- data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +0 -177
- data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +0 -243
- data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +0 -232
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +0 -727
- data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +0 -666
- data/ext/gecode-1.3.1/gecode/int/var-imp.vis +0 -198
- data/ext/gecode-1.3.1/gecode/int/var.icc +0 -590
- data/ext/gecode-1.3.1/gecode/int/var/bool.icc +0 -52
- data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +0 -65
- data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +0 -191
- data/ext/gecode-1.3.1/gecode/int/var/imp.cc +0 -361
- data/ext/gecode-1.3.1/gecode/int/var/imp.icc +0 -579
- data/ext/gecode-1.3.1/gecode/int/var/int.cc +0 -63
- data/ext/gecode-1.3.1/gecode/int/var/int.icc +0 -135
- data/ext/gecode-1.3.1/gecode/int/view.icc +0 -1219
- data/ext/gecode-1.3.1/gecode/int/view/bool.icc +0 -270
- data/ext/gecode-1.3.1/gecode/int/view/constint.icc +0 -306
- data/ext/gecode-1.3.1/gecode/int/view/int.icc +0 -221
- data/ext/gecode-1.3.1/gecode/int/view/iter.icc +0 -49
- data/ext/gecode-1.3.1/gecode/int/view/minus.icc +0 -285
- data/ext/gecode-1.3.1/gecode/int/view/offset.icc +0 -274
- data/ext/gecode-1.3.1/gecode/int/view/print.cc +0 -109
- data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +0 -215
- data/ext/gecode-1.3.1/gecode/int/view/scale.icc +0 -373
- data/ext/gecode-1.3.1/gecode/iter.hh +0 -65
- data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +0 -130
- data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +0 -208
- data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +0 -123
- data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +0 -143
- data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +0 -206
- data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +0 -127
- data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +0 -96
- data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +0 -202
- data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +0 -103
- data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +0 -138
- data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +0 -112
- data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +0 -142
- data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +0 -224
- data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +0 -71
- data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +0 -131
- data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +0 -211
- data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +0 -125
- data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +0 -91
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +0 -247
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +0 -227
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +0 -236
- data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +0 -126
- data/ext/gecode-1.3.1/gecode/kernel.hh +0 -141
- data/ext/gecode-1.3.1/gecode/kernel/array.icc +0 -954
- data/ext/gecode-1.3.1/gecode/kernel/branching.icc +0 -233
- data/ext/gecode-1.3.1/gecode/kernel/core.cc +0 -417
- data/ext/gecode-1.3.1/gecode/kernel/core.icc +0 -1681
- data/ext/gecode-1.3.1/gecode/kernel/exception.cc +0 -49
- data/ext/gecode-1.3.1/gecode/kernel/exception.icc +0 -104
- data/ext/gecode-1.3.1/gecode/kernel/macros.icc +0 -98
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +0 -41
- data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +0 -438
- data/ext/gecode-1.3.1/gecode/kernel/memory.icc +0 -205
- data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +0 -53
- data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +0 -680
- data/ext/gecode-1.3.1/gecode/kernel/view.icc +0 -583
- data/ext/gecode-1.3.1/gecode/limits.hh +0 -87
- data/ext/gecode-1.3.1/gecode/minimodel.hh +0 -942
- data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +0 -137
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +0 -207
- data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +0 -191
- data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +0 -66
- data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +0 -59
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +0 -103
- data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +0 -192
- data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +0 -200
- data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +0 -118
- data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +0 -241
- data/ext/gecode-1.3.1/gecode/search.hh +0 -745
- data/ext/gecode-1.3.1/gecode/search/bab.cc +0 -153
- data/ext/gecode-1.3.1/gecode/search/bab.icc +0 -101
- data/ext/gecode-1.3.1/gecode/search/dfs.cc +0 -63
- data/ext/gecode-1.3.1/gecode/search/dfs.icc +0 -144
- data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +0 -109
- data/ext/gecode-1.3.1/gecode/search/lds.cc +0 -237
- data/ext/gecode-1.3.1/gecode/search/lds.icc +0 -57
- data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +0 -219
- data/ext/gecode-1.3.1/gecode/search/restart.icc +0 -76
- data/ext/gecode-1.3.1/gecode/search/statistics.icc +0 -30
- data/ext/gecode-1.3.1/gecode/search/stop.cc +0 -58
- data/ext/gecode-1.3.1/gecode/search/stop.icc +0 -100
- data/ext/gecode-1.3.1/gecode/set.hh +0 -419
- data/ext/gecode-1.3.1/gecode/set/array.cc +0 -114
- data/ext/gecode-1.3.1/gecode/set/array.icc +0 -134
- data/ext/gecode-1.3.1/gecode/set/branch.cc +0 -57
- data/ext/gecode-1.3.1/gecode/set/branch.hh +0 -176
- data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +0 -72
- data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +0 -112
- data/ext/gecode-1.3.1/gecode/set/cardinality.cc +0 -49
- data/ext/gecode-1.3.1/gecode/set/convex.cc +0 -43
- data/ext/gecode-1.3.1/gecode/set/convex.hh +0 -92
- data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +0 -81
- data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +0 -51
- data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +0 -100
- data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +0 -52
- data/ext/gecode-1.3.1/gecode/set/distinct.cc +0 -48
- data/ext/gecode-1.3.1/gecode/set/distinct.hh +0 -97
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +0 -151
- data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +0 -50
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +0 -46
- data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +0 -157
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +0 -124
- data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +0 -58
- data/ext/gecode-1.3.1/gecode/set/dom.cc +0 -224
- data/ext/gecode-1.3.1/gecode/set/exception.icc +0 -132
- data/ext/gecode-1.3.1/gecode/set/int.cc +0 -139
- data/ext/gecode-1.3.1/gecode/set/int.hh +0 -226
- data/ext/gecode-1.3.1/gecode/set/int/card.cc +0 -61
- data/ext/gecode-1.3.1/gecode/set/int/card.icc +0 -54
- data/ext/gecode-1.3.1/gecode/set/int/channel.cc +0 -100
- data/ext/gecode-1.3.1/gecode/set/int/channel.icc +0 -75
- data/ext/gecode-1.3.1/gecode/set/int/match.cc +0 -148
- data/ext/gecode-1.3.1/gecode/set/int/match.icc +0 -67
- data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +0 -109
- data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +0 -63
- data/ext/gecode-1.3.1/gecode/set/int/weights.cc +0 -182
- data/ext/gecode-1.3.1/gecode/set/int/weights.icc +0 -174
- data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +0 -148
- data/ext/gecode-1.3.1/gecode/set/projectors.cc +0 -109
- data/ext/gecode-1.3.1/gecode/set/projectors.hh +0 -319
- data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +0 -841
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +0 -69
- data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +0 -66
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +0 -125
- data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +0 -79
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +0 -127
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +0 -96
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +0 -106
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +0 -76
- data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +0 -53
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +0 -306
- data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +0 -192
- data/ext/gecode-1.3.1/gecode/set/propagator.icc +0 -96
- data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +0 -233
- data/ext/gecode-1.3.1/gecode/set/rel-op.cc +0 -96
- data/ext/gecode-1.3.1/gecode/set/rel-op.hh +0 -267
- data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +0 -528
- data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +0 -312
- data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +0 -131
- data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +0 -198
- data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +0 -150
- data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +0 -151
- data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +0 -292
- data/ext/gecode-1.3.1/gecode/set/rel.cc +0 -201
- data/ext/gecode-1.3.1/gecode/set/rel.hh +0 -250
- data/ext/gecode-1.3.1/gecode/set/rel/common.icc +0 -109
- data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +0 -101
- data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +0 -88
- data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +0 -132
- data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +0 -142
- data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +0 -121
- data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +0 -80
- data/ext/gecode-1.3.1/gecode/set/select.cc +0 -88
- data/ext/gecode-1.3.1/gecode/set/select.hh +0 -113
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +0 -267
- data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +0 -59
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +0 -91
- data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +0 -112
- data/ext/gecode-1.3.1/gecode/set/select/inter.icc +0 -300
- data/ext/gecode-1.3.1/gecode/set/sequence.cc +0 -48
- data/ext/gecode-1.3.1/gecode/set/sequence.hh +0 -97
- data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +0 -79
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +0 -83
- data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +0 -63
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +0 -61
- data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +0 -53
- data/ext/gecode-1.3.1/gecode/set/var-imp.vis +0 -205
- data/ext/gecode-1.3.1/gecode/set/var.icc +0 -1090
- data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +0 -192
- data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +0 -235
- data/ext/gecode-1.3.1/gecode/set/var/imp.cc +0 -127
- data/ext/gecode-1.3.1/gecode/set/var/imp.icc +0 -356
- data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +0 -256
- data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +0 -512
- data/ext/gecode-1.3.1/gecode/set/var/iter.icc +0 -47
- data/ext/gecode-1.3.1/gecode/set/var/set.cc +0 -99
- data/ext/gecode-1.3.1/gecode/set/var/set.icc +0 -282
- data/ext/gecode-1.3.1/gecode/set/view.icc +0 -1075
- data/ext/gecode-1.3.1/gecode/set/view/complement.icc +0 -525
- data/ext/gecode-1.3.1/gecode/set/view/const.icc +0 -651
- data/ext/gecode-1.3.1/gecode/set/view/print.cc +0 -120
- data/ext/gecode-1.3.1/gecode/set/view/set.icc +0 -217
- data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +0 -348
- data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +0 -152
- data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +0 -131
- data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +0 -157
- data/ext/gecode-1.3.1/gecode/support/random.hh +0 -100
- data/ext/gecode-1.3.1/gecode/support/shared-array.hh +0 -255
- data/ext/gecode-1.3.1/gecode/support/sort.hh +0 -193
- data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +0 -240
- data/ext/gecode-1.3.1/gecode/support/static-stack.hh +0 -117
- data/ext/gecode-1.3.1/misc/debian/Makefile.am +0 -8
- data/ext/gecode-1.3.1/misc/debian/copyright +0 -44
- data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +0 -460
- data/ext/gecode-1.3.1/misc/fixproperties.sh +0 -32
- data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +0 -12
- data/ext/gecode-1.3.1/misc/gecode-search.pc.in +0 -12
- data/ext/gecode-1.3.1/misc/gecode.pc.in +0 -12
- data/ext/gecode-1.3.1/misc/genchangelog.perl +0 -190
- data/ext/gecode-1.3.1/misc/genlicense.perl +0 -113
- data/ext/gecode-1.3.1/misc/genstatistics.perl +0 -155
- data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +0 -170
- data/ext/gecode-1.3.1/misc/genvarimp.perl +0 -666
- data/ext/gecode-1.3.1/misc/getrevision.perl +0 -32
- data/ext/gecode-1.3.1/misc/makedepend.perl +0 -66
- data/ext/gecode-1.3.1/test/int.cc +0 -497
- data/ext/gecode-1.3.1/test/int.hh +0 -119
- data/ext/gecode-1.3.1/test/int/arithmetic.cc +0 -262
- data/ext/gecode-1.3.1/test/int/basic.cc +0 -42
- data/ext/gecode-1.3.1/test/int/bool.cc +0 -189
- data/ext/gecode-1.3.1/test/int/channel.cc +0 -79
- data/ext/gecode-1.3.1/test/int/count.cc +0 -264
- data/ext/gecode-1.3.1/test/int/distinct.cc +0 -121
- data/ext/gecode-1.3.1/test/int/dom.cc +0 -69
- data/ext/gecode-1.3.1/test/int/element.cc +0 -132
- data/ext/gecode-1.3.1/test/int/gcc.cc +0 -592
- data/ext/gecode-1.3.1/test/int/linear.cc +0 -315
- data/ext/gecode-1.3.1/test/int/minimodel.cc +0 -451
- data/ext/gecode-1.3.1/test/int/regular.cc +0 -105
- data/ext/gecode-1.3.1/test/int/rel.cc +0 -283
- data/ext/gecode-1.3.1/test/int/scheduling.cc +0 -259
- data/ext/gecode-1.3.1/test/int/sortedness.cc +0 -272
- data/ext/gecode-1.3.1/test/intset.cc +0 -40
- data/ext/gecode-1.3.1/test/log.cc +0 -515
- data/ext/gecode-1.3.1/test/log.hh +0 -68
- data/ext/gecode-1.3.1/test/set.cc +0 -542
- data/ext/gecode-1.3.1/test/set.hh +0 -152
- data/ext/gecode-1.3.1/test/set/convex.cc +0 -94
- data/ext/gecode-1.3.1/test/set/distinct.cc +0 -148
- data/ext/gecode-1.3.1/test/set/dom.cc +0 -67
- data/ext/gecode-1.3.1/test/set/int.cc +0 -249
- data/ext/gecode-1.3.1/test/set/projection.cc +0 -333
- data/ext/gecode-1.3.1/test/set/rel-op.cc +0 -662
- data/ext/gecode-1.3.1/test/set/rel.cc +0 -198
- data/ext/gecode-1.3.1/test/set/select.cc +0 -108
- data/ext/gecode-1.3.1/test/set/sequence.cc +0 -83
- data/ext/gecode-1.3.1/test/stress.cc +0 -93
- data/ext/gecode-1.3.1/test/stress.hh +0 -74
- data/ext/gecode-1.3.1/test/stress/distinct.cc +0 -70
- data/ext/gecode-1.3.1/test/stress/domain.cc +0 -69
- data/ext/gecode-1.3.1/test/stress/exec.cc +0 -60
- data/ext/gecode-1.3.1/test/stress/minsort.cc +0 -63
- data/ext/gecode-1.3.1/test/stress/regular.cc +0 -112
- data/ext/gecode-1.3.1/test/test.cc +0 -215
- data/ext/gecode-1.3.1/test/test.hh +0 -107
@@ -0,0 +1,417 @@
|
|
1
|
+
/*
|
2
|
+
* Main authors:
|
3
|
+
* Guido Tack <tack@gecode.org>
|
4
|
+
*
|
5
|
+
* Copyright:
|
6
|
+
* Guido Tack, 2008
|
7
|
+
*
|
8
|
+
* Last modified:
|
9
|
+
* $Date: 2008-01-31 10:36:59 +0100 (Thu, 31 Jan 2008) $ by $Author: tack $
|
10
|
+
* $Revision: 6001 $
|
11
|
+
*
|
12
|
+
* This file is part of Gecode, the generic constraint
|
13
|
+
* development environment:
|
14
|
+
* http://www.gecode.org
|
15
|
+
*
|
16
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
17
|
+
* a copy of this software and associated documentation files (the
|
18
|
+
* "Software"), to deal in the Software without restriction, including
|
19
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
20
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
21
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
22
|
+
* the following conditions:
|
23
|
+
*
|
24
|
+
* The above copyright notice and this permission notice shall be
|
25
|
+
* included in all copies or substantial portions of the Software.
|
26
|
+
*
|
27
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
28
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
29
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
30
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
31
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
32
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
33
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
34
|
+
*
|
35
|
+
*/
|
36
|
+
|
37
|
+
/**
|
38
|
+
\page PageReflection The Reflection API
|
39
|
+
|
40
|
+
Reflection in %Gecode provides information about all the actors (propagators and branchings) and the variables in a Space. %Gecode also enables the reverse direction: creating a variable or actor in a space, given a specification. Some use cases for reflection are
|
41
|
+
- \b %Serialization, which creates an external, platform-independent
|
42
|
+
representation of a space that can be used to recreate a copy of the
|
43
|
+
original space. This facilitates the development of distributed search
|
44
|
+
engines, makes it possible to store instances of constraint problems, and
|
45
|
+
can be used to transfer a problem instance from one solver to another.
|
46
|
+
|
47
|
+
- \b Visualization of variable domains or the propagators in a space can
|
48
|
+
help with debugging scripts or propagators. %Gecode's Gist uses reflection
|
49
|
+
for visualization.
|
50
|
+
|
51
|
+
- \b Interfacing to other programming languages becomes easy, because only
|
52
|
+
the generic unreflection functions have to be made available. The Qt-based
|
53
|
+
JavaScript interpreter in examples/javascript.cc builds on reflection.
|
54
|
+
|
55
|
+
- \b Heuristics can be based on properties of the constraint graph, which is
|
56
|
+
effectively exposed by the reflection API.
|
57
|
+
|
58
|
+
This tutorial is split in two parts:
|
59
|
+
- \ref SecReflUsage
|
60
|
+
- \ref SecReflAddSupport
|
61
|
+
|
62
|
+
\section SecReflUsage Using the reflection API
|
63
|
+
|
64
|
+
The starting point for reflection in %Gecode is a Space. The basic work cycle is to iterate over all the actors in a space using an ActorSpecIter, collecting the variables that the actors reference in a VarMap. The iterator returns an ActorSpec for each actor, and the VarMap contains a VarSpec for each variable. All the specifications in the VarMap can be accessed using a VarMapIter.
|
65
|
+
|
66
|
+
\code
|
67
|
+
Gecode::Space* space = ...
|
68
|
+
Gecode::Reflection::VarMap vm;
|
69
|
+
Gecode::Reflection::VarMapIter vmi(vm);
|
70
|
+
for (Gecode::Reflection::ActorSpecIter si(space, vm); si(); ++si) {
|
71
|
+
Gecode::Reflection::ActorSpec aSpec = si.actor();
|
72
|
+
doSomethingForAnActor(aSpec);
|
73
|
+
for (; vmi(); ++vmi) {
|
74
|
+
Gecode::Reflection::VarSpec vSpec = vmi.spec();
|
75
|
+
doSomethingForAVariable(vSpec);
|
76
|
+
}
|
77
|
+
}
|
78
|
+
\endcode
|
79
|
+
|
80
|
+
Note that new variables are added to \c vm when the specification for an actor is accessed (using \c si.actor()). The VarMapIter therefore always iterates all those variables that were added to \c vm for the current actor.
|
81
|
+
|
82
|
+
We will now go into the details of ActorSpec and VarSpec, and after that discuss the VarMap and the unreflection mechanism.
|
83
|
+
|
84
|
+
\subsection SecReflUsageSpecs Accessing the specifications
|
85
|
+
|
86
|
+
Specifications for actors and variables are similar. For each actor or variable, a specification contains a Symbol (a string) representing its type (accessed as \c ActorSpec::ati resp. \c VarSpec::vti), and a term representing its state (e.g. the current variable domain for variables, or the arguments of a propagator). Terms are represented as objects of the class Reflection::Arg and can be summarized by the following grammar:
|
87
|
+
|
88
|
+
\verbatim
|
89
|
+
term ::= INT | VAR | STRING
|
90
|
+
| [term,...,term] | [INT,...,INT] | (term,term)
|
91
|
+
| sharedObject(term) | sharedReference(INT)
|
92
|
+
\endverbatim
|
93
|
+
|
94
|
+
The upper-case constructors stand for actual values; signed integers for \c INT, character pointers for \c STRING, and <em>integers for \c VAR </em>: variables are represented as indices into the VarMap.
|
95
|
+
|
96
|
+
The second line shows term constructors for arrays and pairs. There is special support for integer arrays. The constructors for shared objects in the third line have a similar purpose as the \c VAR constructor: a term, e.g. an array, that is shared between several actors, is introduced using a \c sharedObject constructor, and later referenced by a \c sharedReference. The shared references are counted in the order in which the shared objects are encountered.
|
97
|
+
|
98
|
+
The concrete representation of a variable's or actor's state depends on its concrete implementation. The following list will give you an idea of possible encodings:
|
99
|
+
- Domains of integer variables are encoded as arrays of integers, where two consecutive integers represent a range in the domain. For example, the domain \f$\{0,1,2,4,5,8\}\f$ would be represented as \c [0,2,4,5,8,8].
|
100
|
+
- The arguments of the distinct constraint with offsets are encoded as an array of pairs of integers and variables, like \c [(0,q0),(-1,q1),(-2,q2),(-3,q3)] for the Queens model.
|
101
|
+
- The DFA of an extensional constraint that uses a LayeredGraph is encoded into an array of integers, where each transition is represented by three integers, one for the input state, one for the symbol, and one for the output state. As DFAs can be shared between several propagators, they are wrapped in a \c sharedObject or \c sharedReference.
|
102
|
+
|
103
|
+
\subsection SecReflUsageVarMap The VarMap
|
104
|
+
|
105
|
+
Several propagators can share the same variable, and reflection makes this sharing explicit. The VarMap contains one entry per variable that is referenced by an actor, and it is filled by iterating over the actors. The specification of an actor only contains an integer reference into the VarMap that was used when the specification was created.
|
106
|
+
|
107
|
+
Reflection of variables is similar to copying, as only those variables will be put into a VarMap that are reachable from the actors. As with copying, variables can be added manually. Furthermore, a VarMap can store a \em name for each variable. The Space class has a virtual function Gecode::Space::getVars, which is used to fill a VarMap with the variables that the user is interested in.
|
108
|
+
|
109
|
+
The Queens example shows how to use \c getVars:
|
110
|
+
|
111
|
+
\code
|
112
|
+
class Queens : public Example {
|
113
|
+
public:
|
114
|
+
virtual void
|
115
|
+
getVars(Gecode::Reflection::VarMap& vm, bool registerOnly) {
|
116
|
+
vm.putArray(this,q,"q", registerOnly);
|
117
|
+
}
|
118
|
+
};
|
119
|
+
\endcode
|
120
|
+
|
121
|
+
The parameter \c registerOnly is needed for unreflection.
|
122
|
+
|
123
|
+
\subsection SecReflUsageUnref Unreflection
|
124
|
+
|
125
|
+
With unreflection, %Gecode can create variables and actors in a space from a VarSpec or ActorSpec. The unreflection mechanism can be used for deserialization, or to implement an interface to %Gecode.
|
126
|
+
|
127
|
+
Assuming that the actor and variable specifications were stored in vectors, the basic setup for unreflection looks like this:
|
128
|
+
|
129
|
+
\code
|
130
|
+
void unreflect(Space* home, std::vector<ActorSpec>& as, std::vector<VarSpec>& vs) {
|
131
|
+
Gecode::Reflection::VarMap vm;
|
132
|
+
Gecode::Reflection::Unreflector ur(home, vm);
|
133
|
+
for (std::vector<VarSpec>::iterator it=vs.begin(); it != vs.end(); ++it) {
|
134
|
+
ur.var(*it); // Create variables from specifications
|
135
|
+
}
|
136
|
+
for (std::vector<ActorSpec>::iterator it=as.begin(); it != as.end(); ++it) {
|
137
|
+
ur.post(*it); // Post actors from specifications
|
138
|
+
}
|
139
|
+
}
|
140
|
+
\endcode
|
141
|
+
|
142
|
+
After unreflection, the VarMap contains the created variables. If the variable specifications had names for the variables, the new variables can be accessed via their names, otherwise, they can only be accessed by their index into the VarMap. The indices are consecutive integers, starting at 0, and assigned in the order in which the variables were created.
|
143
|
+
|
144
|
+
The VarMap can be filled \em before you use unreflection. That way, existing variables can be mapped to the new variables via names, and the actors created by unreflection are posted on the existing variables. This is the purpose of the \c registerOnly argument of Gecode::Space::getVars. If it is \c true, only the names of the variables will be registered, but no index will be assigned for the variable in the VarMap:
|
145
|
+
|
146
|
+
\code
|
147
|
+
...
|
148
|
+
Gecode::Reflection::VarMap vm;
|
149
|
+
home->getVars(vm, true); // Register variables
|
150
|
+
Gecode::Reflection::Unreflector ur(home, vm);
|
151
|
+
for (std::vector<VarSpec>::iterator it=vs.begin(); it != vs.end(); ++it) {
|
152
|
+
...
|
153
|
+
\endcode
|
154
|
+
|
155
|
+
\subsection SecReflUsageGenericVars Generic variables
|
156
|
+
|
157
|
+
%Gecode provides a generic variable class, Gecode::Reflection::Var. Generic variables can be obtained from any variable class that supports reflection. They provide a dynamically type-safe way of handling inhomogeneous collections of variables, for instance a \c VarArray that contains both integer and set variables.
|
158
|
+
|
159
|
+
All variables can be constructed from a generic variable. At construction, a dynamic check is performed that guarantees that the generic variable is actually an instance of the variable type that is constructed. The variables in a VarMap can be accessed as generic variables:
|
160
|
+
\code
|
161
|
+
...
|
162
|
+
Gecode::Space* home = ...
|
163
|
+
Gecode::Reflection::VarMap vm;
|
164
|
+
space->getVars(vm);
|
165
|
+
Gecode::Reflection::Var v = vm.var(0); // Get variable at index 0
|
166
|
+
Gecode::IntVar i(v); // Construct IntVar (with dynamic type check)
|
167
|
+
\endcode
|
168
|
+
|
169
|
+
\subsection SecReflUsageBranchingSpec Branching specifications
|
170
|
+
|
171
|
+
A Gecode::Reflection::BranchingSpec provides a human-readable description of a Gecode::BranchingDesc. This is e.g. used by Gist, so that the user can see what actions the branchings took at each branch in the search tree.
|
172
|
+
|
173
|
+
A BranchingSpec contains one ArrayArg per alternative, and each ArrayArg may only contain strings and variable references. The string concatenation of these arguments yields a human-readable description of the alternative:
|
174
|
+
|
175
|
+
\code
|
176
|
+
void printAlternatives(Gecode::Space* home) {
|
177
|
+
if (home->status() != SS_BRANCH) {
|
178
|
+
std::cout << "no alternatives left" << std::endl;
|
179
|
+
return;
|
180
|
+
}
|
181
|
+
const Gecode::BranchingDesc* d = space->description();
|
182
|
+
Gecode::Reflection::VarMap vm;
|
183
|
+
space->getVars(vm, false);
|
184
|
+
Gecode::Reflection::BranchingSpec bs = space->branchingSpec(vm,d);
|
185
|
+
delete d;
|
186
|
+
std::cout << "Alternatives:" << std::endl;
|
187
|
+
for (unsigned int i=0; i<bs.alternatives(); i++) {
|
188
|
+
std::cout << i << ": ";
|
189
|
+
Gecode::Reflection::ArrayArg& aa = *bs[i]->toArray();
|
190
|
+
for (int j=0; j<aa.size(); j++) {
|
191
|
+
if (aa[j]->isString()) {
|
192
|
+
std::cout << aa[j]->toString();
|
193
|
+
} else if (aa[j]->isVar()) {
|
194
|
+
int v = aa[j]->toVar();
|
195
|
+
if (vm.hasName(v))
|
196
|
+
std::cout << vm.name(v).toString();
|
197
|
+
else
|
198
|
+
std::cout << "_v" << v;
|
199
|
+
}
|
200
|
+
}
|
201
|
+
std::cout << std::endl;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
\endcode
|
205
|
+
|
206
|
+
\subsection SecReflUsageMemory Memory management
|
207
|
+
|
208
|
+
All the reflection classes provide memory management. This means that you must not free the argument objects, they are automatically deallocated when the ActorSpec, VarSpec, or BranchingSpec is deallocated. Copying specifications is cheap, as all classes use reference counting.
|
209
|
+
|
210
|
+
\subsection SecReflUsageInterfacing Interfacing to Gecode through reflection
|
211
|
+
|
212
|
+
The (un-)reflection API makes interfacing to %Gecode very easy. We provide a full JavaScript interface (through TrollTech's Qt library), and it only requires 150 lines of code.
|
213
|
+
|
214
|
+
An interface can benefit from reflection in three ways:
|
215
|
+
|
216
|
+
- The generic Gecode::Reflection::Var class leaves the C++ part of the
|
217
|
+
interface independent of the actual variable types that are supported.
|
218
|
+
Every variable type supported by %Gecode is automatically supported by the
|
219
|
+
interface.
|
220
|
+
|
221
|
+
- Instead of a post function for every propagator and branching and variable
|
222
|
+
creation functions for all the variable types, only the
|
223
|
+
Gecode::Reflection::Unreflector has to be exported.
|
224
|
+
|
225
|
+
- All propagators and branchings that are supported by %Gecode are
|
226
|
+
immediately available through the interface. When propagators are added to
|
227
|
+
%Gecode, no new interfacing code has to be written. If the propagators are
|
228
|
+
added as additional libraries, the interface does not even have to be
|
229
|
+
recompiled.
|
230
|
+
|
231
|
+
Please refer to \ref PageReflectionRegistry for more information on the propagators that are available through unreflection.
|
232
|
+
|
233
|
+
\section SecReflAddSupport Adding reflection support to actors and variables
|
234
|
+
|
235
|
+
When the ActorSpecIter iterates over the actors of a space, each actor has to deliver its specification through the virtual function Actor::spec. When this function is called, the actor creates an ActorSpec with its <em>actor type identifier</em> (ati) and fills it with a representation of its arguments, encoded into objects of type Reflection::Arg. The specification for the views is delegated to the views or view arrays that the actor uses.
|
236
|
+
|
237
|
+
We now go through the steps that are needed for reflection of actors and variables.
|
238
|
+
|
239
|
+
\subsection SecReflAddSupportProp Propagators
|
240
|
+
|
241
|
+
Propagators implement the virtual function Gecode::Reflection::Actor::spec. It creates an ActorSpec with a proper actor type identifier and arguments. The following example provides reflection for a propagator with an IntView \c x, a ViewArray of IntViews \c y, and an integer constant \c c:
|
242
|
+
|
243
|
+
\code
|
244
|
+
class MyPropagator : public Gecode::Propagator {
|
245
|
+
protected:
|
246
|
+
IntView x;
|
247
|
+
ViewArray<IntView> y;
|
248
|
+
int c;
|
249
|
+
public:
|
250
|
+
// Return specification for reflection
|
251
|
+
virtual Gecode::Reflection::ActorSpec
|
252
|
+
spec(const Space* home, Gecode::Reflection::VarMap& m) const {
|
253
|
+
Gecode::Support::Symbol ati("MyPropagator");
|
254
|
+
Gecode::Reflection::ActorSpec spec(ati);
|
255
|
+
spec << x.spec(home, m);
|
256
|
+
spec << y.spec(home, m);
|
257
|
+
spec << c;
|
258
|
+
return spec;
|
259
|
+
}
|
260
|
+
};
|
261
|
+
\endcode
|
262
|
+
|
263
|
+
For a generic propagator, the types of its views must be part of the actor type identifier. All views have a static function \c type to enable this, and the reflection library contains name mangling functions:
|
264
|
+
|
265
|
+
\code
|
266
|
+
template <class View0, class View1>
|
267
|
+
class MyGenericPropagator : public Gecode::Propagator {
|
268
|
+
protected:
|
269
|
+
View0 x;
|
270
|
+
ViewArray<View1> y;
|
271
|
+
int c;
|
272
|
+
public:
|
273
|
+
// Return specification for reflection
|
274
|
+
virtual Gecode::Reflection::ActorSpec
|
275
|
+
spec(const Space* home, Gecode::Reflection::VarMap& m) const {
|
276
|
+
Gecode::Support::Symbol ati =
|
277
|
+
Gecode::Reflection::mangle<View0,View1>("MyGenericPropagator");
|
278
|
+
Gecode::Reflection::ActorSpec spec(ati);
|
279
|
+
spec << x.spec(home, m);
|
280
|
+
spec << y.spec(home, m);
|
281
|
+
spec << c;
|
282
|
+
return spec;
|
283
|
+
}
|
284
|
+
};
|
285
|
+
\endcode
|
286
|
+
|
287
|
+
For unreflection, the actor must be \em registered. %Gecode contains a global Gecode::Reflection::registry, mapping actor type identifiers to post functions.
|
288
|
+
|
289
|
+
In order to register a propagator, the propagator class has to provide two static functions, \c ati and \c post. Then the Gecode::Reflection::ActorRegistrar class can be used, or more conveniently, the \c GECODE_REGISTER macros. Here is a complete example:
|
290
|
+
|
291
|
+
\code
|
292
|
+
template <class View0, class View1>
|
293
|
+
class MyGenericPropagator : public Gecode::Propagator {
|
294
|
+
protected:
|
295
|
+
View0 x;
|
296
|
+
ViewArray<View1> y;
|
297
|
+
int c;
|
298
|
+
public:
|
299
|
+
// Constructor
|
300
|
+
MyGenericPropagator(Space*,View0,ViewArray<View1>&,int);
|
301
|
+
// Actor type identifier
|
302
|
+
static Gecode::Symbol ati(void) const {
|
303
|
+
return Gecode::Reflection::mangle<View0,View1>("MyGenericPropagator");
|
304
|
+
}
|
305
|
+
// Return specification for reflection
|
306
|
+
virtual Gecode::Reflection::ActorSpec
|
307
|
+
spec(const Space* home, Gecode::Reflection::VarMap& m) const {
|
308
|
+
Gecode::Reflection::ActorSpec spec(ati());
|
309
|
+
spec << x.spec(home, m);
|
310
|
+
spec << y.spec(home, m);
|
311
|
+
spec << c;
|
312
|
+
return spec;
|
313
|
+
}
|
314
|
+
// Posting the propagator from a specification
|
315
|
+
static void
|
316
|
+
post(Space* home, Reflection::VarMap& vars, const Reflection::ActorSpec& spec) {
|
317
|
+
spec.checkArity(3);
|
318
|
+
View0 x(home, vars, spec[0]);
|
319
|
+
ViewArray<View1> y(home, vars, spec[1]);
|
320
|
+
int c = spec[2]->toInt();
|
321
|
+
(void) new (home) MyGenericPropagator<View0,View1>(home,x,y,c);
|
322
|
+
}
|
323
|
+
};
|
324
|
+
\endcode
|
325
|
+
|
326
|
+
Using the static function \c ati for both registration and reflection (in \c spec) makes sure that the type identifiers are the same.
|
327
|
+
|
328
|
+
The function \c checkArity makes sure that \c spec contains exactly 3 arguments and throws an exception otherwise. The accessor functions (like Gecode::Reflection::Arg::toInt) also check that the argument type matches. The reflection constructors for views and view arrays use these accesor functions, so an incorrect view type will be detected.
|
329
|
+
|
330
|
+
Now we can register the propagator. Note that we have to register each \em instance separately:
|
331
|
+
|
332
|
+
\code
|
333
|
+
namespace {
|
334
|
+
GECODE_REGISTER2(MyGenericPropagator<IntView,IntView>);
|
335
|
+
GECODE_REGISTER2(MyGenericPropagator<IntView,OffsetView>);
|
336
|
+
}
|
337
|
+
\endcode
|
338
|
+
|
339
|
+
\subsection SecReflAddSupportBranching Branchings
|
340
|
+
|
341
|
+
Actor reflection for branchings is, in principle, the same as for propagators. However, if you subclass Gecode::ViewValBranching, all you have to provide are \c type functions in your view and value selection classes. See
|
342
|
+
Gecode::Int::Branch::ByNone<View>::type and Gecode::Int::Branch::ValMin<View>::type for examples.
|
343
|
+
|
344
|
+
Branchings provide a second type of reflection. Given a Gecode::BranchingDesc, they can deliver a Gecode::Reflection::BranchingSpec. For this to work, you have to implement the virtual function Gecode::Branching::branchingSpec.
|
345
|
+
|
346
|
+
Please see the Gecode::ViewValBranching and the corresponding value selectors (Gecode::Int::Branch::ValMin<View>::branchingSpec) for examples.
|
347
|
+
|
348
|
+
\subsection SecReflAddSupportVar Variables and Views
|
349
|
+
|
350
|
+
Reflection for variables and views is similar to reflection for actors. Each view class provides two functions:
|
351
|
+
\code
|
352
|
+
class MyView {
|
353
|
+
public:
|
354
|
+
Reflection::Arg* spec(const Space* home, Reflection::VarMap& m) const;
|
355
|
+
static Support::Symbol type(void);
|
356
|
+
};
|
357
|
+
\endcode
|
358
|
+
|
359
|
+
Views delegate the reflection of the underlying variable to the variable implementation and just add their own arguments. For a concrete example, see Gecode::Int::IntVarImp::spec and Gecode::Int::OffsetView::spec.
|
360
|
+
|
361
|
+
The \c spec function of a view returns a <em>reference to a variable</em>. As a side effect, the actual VarSpec is entered into the VarMap.
|
362
|
+
|
363
|
+
Views and variables also have constructors for unreflection. Again, the Views delegate unreflection of the underlying variable. See Gecode::IntVar::IntVar(const Gecode::Reflection::Var&) and Gecode::Int::IntView::IntView(Space*, const Reflection::VarMap&, Reflection::Arg*).
|
364
|
+
|
365
|
+
For unreflection, the registry contains functions for creating, constraining, updating, and printing variable implementations. If a variable implementation implements the two functions \c create and \c constrain, it can be registered using a Gecode::Reflection::VarImpRegistrar. The generic variables (Gecode::Reflection::Var) use the registry to perform updates. For an example of how to implement the necessary functionality, see Gecode::Int::IntVarImp.
|
366
|
+
|
367
|
+
*/
|
368
|
+
|
369
|
+
/**
|
370
|
+
\page PageReflectionRegistry The Reflection Registry
|
371
|
+
|
372
|
+
The registry maps an actor type identifier (ati) to a function that posts the corresponding constraint. The type of these post functions is defined in the registry as
|
373
|
+
\code
|
374
|
+
class Registry {
|
375
|
+
public:
|
376
|
+
/// The type of constraint posting functions
|
377
|
+
typedef void (*poster) (Gecode::Space*,
|
378
|
+
Gecode::Reflection::VarMap&,
|
379
|
+
const Gecode::Reflection::ActorSpec&);
|
380
|
+
};
|
381
|
+
\endcode
|
382
|
+
|
383
|
+
There are two kinds of post functions in the registry:
|
384
|
+
- One function per actor instance. These functions correspond directly to individual propagators and branchings. For instance, the registry contains a function for the ati \c Int::Distinct::Dom<Int::OffsetView>. Each propagator registers one post function per instance. The registry is populated with these post functions as soon as the library in which the propagator is defined is loaded.
|
385
|
+
|
386
|
+
- One function per constraint post function (the functions found in gecode/int.hh or gecode/set.hh, for example). The functions are useful for interfacing to Gecode, as they provide a higher-level interface to the propagators. For example, the registry contains a post function for the ati \c Gecode::rel. Depending on the arguments given in the ActorSpec, this function can post any of the \c rel constraints found in gecode/int.hh and gecode/set.hh. All high-level post functions are registered when the serialization library is loaded, which can be triggered by callling Gecode::Serialization::initRegistry.
|
387
|
+
|
388
|
+
\section SecRegistryArgMapping Mapping arguments to ActorSpecs
|
389
|
+
|
390
|
+
The high-level post functions are generated automatically from the post functions in gecode/int.hh and gecode/set.hh. The argument types are mapped automatically to Gecode::Reflection::Arg terms.
|
391
|
+
|
392
|
+
<TABLE>
|
393
|
+
<TR>
|
394
|
+
<TH>C++ argument type</TH>
|
395
|
+
<TH>Reflection::Arg type</TH>
|
396
|
+
<TH>Comment</TH>
|
397
|
+
</TR>
|
398
|
+
<TR><TD>\c int</TD><TD>\c INT</TD></TR>
|
399
|
+
<TR><TD><TT>unsigned int</TT></TD><TD>\c INT</TD></TR>
|
400
|
+
<TR><TD>\c bool</TD><TD>\c INT</TD></TR>
|
401
|
+
<TR><TD>\c IntVar</TD><TD>\c VAR</TD></TR>
|
402
|
+
<TR><TD>\c BoolVar</TD><TD>\c VAR</TD></TR>
|
403
|
+
<TR><TD>\c SetVar</TD><TD>\c VAR</TD></TR>
|
404
|
+
<TR><TD>\c IntVarArgs</TD><TD><TT>[VAR,...,VAR]</TT></TD></TR>
|
405
|
+
<TR><TD>\c BoolVarArgs</TD><TD><TT> [VAR,...,VAR]</TT></TD></TR>
|
406
|
+
<TR><TD>\c SetVarArgs</TD><TD><TT>[VAR,...,VAR]</TT></TD></TR>
|
407
|
+
<TR><TD>\c IntArgs</TD><TD><TT>[INT,...,INT]</TT></TD></TR>
|
408
|
+
<TR><TD>\c IntSet</TD><TD><TT>[INT,...,INT]</TT></TD>
|
409
|
+
<TD>Two consecutive integers are interpreted as a range</TD></TR>
|
410
|
+
<TR><TD>\c IntSetArgs</TD><TD><TT>[[INT,...,INT],...,[INT,...,INT]]</TT></TD>
|
411
|
+
<TD>Same representation as for IntSet</TD></TR>
|
412
|
+
<TR><TD>Any enumeration</TD><TD><TT>STRING</TT></TD>
|
413
|
+
<TD>The string representation of the enum value, e.g. \c "IRT_EQ"</TD>
|
414
|
+
</TR>
|
415
|
+
</TABLE>
|
416
|
+
|
417
|
+
*/
|
@@ -0,0 +1,956 @@
|
|
1
|
+
dnl
|
2
|
+
dnl Main authors:
|
3
|
+
dnl Guido Tack <tack@gecode.org>
|
4
|
+
dnl
|
5
|
+
dnl Copyright:
|
6
|
+
dnl Guido Tack, 2004, 2005
|
7
|
+
dnl
|
8
|
+
dnl Last modified:
|
9
|
+
dnl $Date: 2005-10-27 21:01:30 +0200 (Thu, 27 Oct 2005) $
|
10
|
+
dnl by $Author: schulte $
|
11
|
+
dnl $Revision: 2420 $
|
12
|
+
dnl
|
13
|
+
dnl This file is part of Gecode, the generic constraint
|
14
|
+
dnl development environment:
|
15
|
+
dnl http://www.gecode.org
|
16
|
+
dnl
|
17
|
+
dnl Permission is hereby granted, free of charge, to any person obtaining
|
18
|
+
dnl a copy of this software and associated documentation files (the
|
19
|
+
dnl "Software"), to deal in the Software without restriction, including
|
20
|
+
dnl without limitation the rights to use, copy, modify, merge, publish,
|
21
|
+
dnl distribute, sublicense, and/or sell copies of the Software, and to
|
22
|
+
dnl permit persons to whom the Software is furnished to do so, subject to
|
23
|
+
dnl the following conditions:
|
24
|
+
dnl
|
25
|
+
dnl The above copyright notice and this permission notice shall be
|
26
|
+
dnl included in all copies or substantial portions of the Software.
|
27
|
+
dnl
|
28
|
+
dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
29
|
+
dnl EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
30
|
+
dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
31
|
+
dnl NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
32
|
+
dnl LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
33
|
+
dnl OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
34
|
+
dnl WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
35
|
+
dnl
|
36
|
+
dnl
|
37
|
+
|
38
|
+
dnl check whether we have pkgconfig and should generate config files for it
|
39
|
+
AC_DEFUN([AC_GECODE_PKGCONFIG],
|
40
|
+
[AC_CHECK_PROG(PKGCONFIG, pkg-config, [found])
|
41
|
+
AC_MSG_CHECKING(whether to generate pkg-config files)
|
42
|
+
if test "${PKGCONFIG}x" = "x"; then
|
43
|
+
AC_MSG_RESULT(no)
|
44
|
+
AC_SUBST(HAS_PKGCONFIG, "no")
|
45
|
+
else
|
46
|
+
AC_MSG_RESULT(yes)
|
47
|
+
AC_SUBST(HAS_PKGCONFIG, "yes")
|
48
|
+
fi])
|
49
|
+
|
50
|
+
AC_DEFUN([AC_GECODE_GET_OS],
|
51
|
+
[AC_ARG_WITH([host-os],
|
52
|
+
AC_HELP_STRING([--with-host-os],
|
53
|
+
[Override operating system test. Valid values are Linux, Darwin, and Windows.]))
|
54
|
+
AC_MSG_CHECKING([for the host operating system])
|
55
|
+
if test "${with_host_os:-no}" = "no"; then
|
56
|
+
guess_host_os=$(uname -s 2>/dev/null)
|
57
|
+
else
|
58
|
+
guess_host_os=${with_host_os}
|
59
|
+
fi
|
60
|
+
dnl Try to find out operating system
|
61
|
+
case ${guess_host_os} in
|
62
|
+
GNU/kFreeBSD|*inux*)
|
63
|
+
host_os=linux
|
64
|
+
AC_MSG_RESULT([Linux])
|
65
|
+
;;
|
66
|
+
*arwin*)
|
67
|
+
host_os=darwin
|
68
|
+
AC_MSG_RESULT([Darwin])
|
69
|
+
;;
|
70
|
+
CYGWIN*|*indows*)
|
71
|
+
host_os=windows
|
72
|
+
AC_MSG_RESULT([Windows])
|
73
|
+
;;
|
74
|
+
*)
|
75
|
+
AC_MSG_ERROR([Host OS not supported.])
|
76
|
+
;;
|
77
|
+
esac])
|
78
|
+
|
79
|
+
dnl Macros:
|
80
|
+
dnl AC_GECODE_ADD_TO_CXXFLAGS ([FLAG...])
|
81
|
+
dnl AC_GECODE_ADD_TO_GLDFLAGS ([FLAG...])
|
82
|
+
dnl
|
83
|
+
dnl Description:
|
84
|
+
dnl Add the flags to the corresponding variables
|
85
|
+
dnl
|
86
|
+
dnl Author:
|
87
|
+
dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
|
88
|
+
dnl
|
89
|
+
AC_DEFUN([AC_GECODE_ADD_TO_CXXFLAGS],
|
90
|
+
[CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"])
|
91
|
+
AC_DEFUN([AC_GECODE_ADD_TO_COMPILERFLAGS],
|
92
|
+
[CFLAGS="${CFLAGS}${CFLAGS:+ }$1"
|
93
|
+
CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"])
|
94
|
+
AC_DEFUN([AC_GECODE_ADD_TO_CFLAGS],
|
95
|
+
[CFLAGS="${CFLAGS}${CFLAGS:+ }$1"])
|
96
|
+
AC_DEFUN([AC_GECODE_ADD_TO_GLDFLAGS],
|
97
|
+
[GLDFLAGS="${GLDFLAGS}${GLDFLAGS:+ }$1"])
|
98
|
+
AC_DEFUN([AC_GECODE_ADD_TO_PKG_CXXFLAGS],
|
99
|
+
[ac_gecode_pkg_cxxflags="${ac_gecode_pkg_cxxflags}${ac_gecode_pkg_cxxflags:+ }$1"])
|
100
|
+
AC_DEFUN([AC_GECODE_ADD_TO_DLLFLAGS],
|
101
|
+
[DLLFLAGS="${DLLFLAGS}${DLLFLAGS:+ }$1"])
|
102
|
+
|
103
|
+
|
104
|
+
dnl Macro:
|
105
|
+
dnl AC_GECODE_CHECK_CXXFLAG (FLAG, [ACTION-IF-TRUE,
|
106
|
+
dnl [ACTION-IF-FALSE]])
|
107
|
+
dnl
|
108
|
+
dnl Description:
|
109
|
+
dnl Check whether FLAG is supported by the C++ compiler. Run
|
110
|
+
dnl the shell commands ACTION-IF-TRUE if it is, ACTION-IF-FALSE
|
111
|
+
dnl otherwise. If ACTION-IF-TRUE is not given, append FLAG to
|
112
|
+
dnl the contents of $CXXFLAGS.
|
113
|
+
dnl
|
114
|
+
dnl Authors:
|
115
|
+
dnl Leif Kornstaedt <kornstae@ps.uni-sb.de>
|
116
|
+
dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
|
117
|
+
dnl
|
118
|
+
AC_DEFUN([AC_GECODE_CHECK_CXXFLAG],
|
119
|
+
[AC_MSG_CHECKING(whether ${CXX} accepts [$1])
|
120
|
+
ac_gecode_save_CXXFLAGS="${CXXFLAGS}"
|
121
|
+
CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1 -Werror"
|
122
|
+
AC_LANG_PUSH(C++)
|
123
|
+
AC_COMPILE_IFELSE(AC_LANG_PROGRAM(),
|
124
|
+
[AC_MSG_RESULT(yes)
|
125
|
+
CXXFLAGS="${ac_gecode_save_CXXFLAGS}"
|
126
|
+
ifelse([$2], , [CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"], [$2])],
|
127
|
+
[AC_MSG_RESULT(no)
|
128
|
+
CXXFLAGS="${ac_gecode_save_CXXFLAGS}"
|
129
|
+
ifelse([$3], , :, [$3])])
|
130
|
+
AC_LANG_POP])dnl
|
131
|
+
|
132
|
+
AC_DEFUN([AC_GECODE_CHECK_COMPILERFLAG],
|
133
|
+
[AC_MSG_CHECKING(whether ${CXX} accepts [$1])
|
134
|
+
ac_gecode_save_CXXFLAGS="${CXXFLAGS}"
|
135
|
+
CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1 -Werror"
|
136
|
+
AC_LANG_PUSH(C++)
|
137
|
+
AC_COMPILE_IFELSE(AC_LANG_PROGRAM(),
|
138
|
+
[AC_MSG_RESULT(yes)
|
139
|
+
CXXFLAGS="${ac_gecode_save_CXXFLAGS}"
|
140
|
+
CXXFLAGS="${CXXFLAGS}${CXXFLAGS:+ }$1"],
|
141
|
+
[AC_MSG_RESULT(no)
|
142
|
+
CXXFLAGS="${ac_gecode_save_CXXFLAGS}"])
|
143
|
+
AC_LANG_POP
|
144
|
+
|
145
|
+
AC_MSG_CHECKING(whether ${CC} accepts [$1])
|
146
|
+
ac_gecode_save_CFLAGS="${CFLAGS}"
|
147
|
+
CFLAGS="${CFLAGS}${CFLAGS:+ }$1 -Werror"
|
148
|
+
AC_LANG_PUSH(C)
|
149
|
+
AC_COMPILE_IFELSE(AC_LANG_PROGRAM(),
|
150
|
+
[AC_MSG_RESULT(yes)
|
151
|
+
CFLAGS="${ac_gecode_save_CFLAGS}"
|
152
|
+
CFLAGS="${CFLAGS}${CFLAGS:+ }$1"],
|
153
|
+
[AC_MSG_RESULT(no)
|
154
|
+
CFLAGS="${ac_gecode_save_CFLAGS}"])
|
155
|
+
AC_LANG_POP])dnl
|
156
|
+
|
157
|
+
dnl Macro:
|
158
|
+
dnl AC_GECODE_CHECK_GLDFLAG (FLAG, [ACTION-IF-TRUE,
|
159
|
+
dnl [ACTION-IF-FALSE]])
|
160
|
+
dnl
|
161
|
+
dnl Description:
|
162
|
+
dnl Check whether FLAG is supported by the linker. Run the
|
163
|
+
dnl shell commands ACTION-IF-TRUE if it is, ACTION-IF-FALSE
|
164
|
+
dnl otherwise. If ACTION-IF-TRUE is not given, append FLAG to
|
165
|
+
dnl the contents of $GLDFLAGS.
|
166
|
+
dnl
|
167
|
+
dnl Authors:
|
168
|
+
dnl Leif Kornstaedt <kornstae@ps.uni-sb.de>
|
169
|
+
dnl Marco Kuhlmann <kuhlmann@ps.uni-sb.de>
|
170
|
+
dnl
|
171
|
+
AC_DEFUN([AC_GECODE_CHECK_GLDFLAG],
|
172
|
+
[AC_REQUIRE([AC_PROG_CXX])
|
173
|
+
AC_MSG_CHECKING(whether the linker accepts [$1])
|
174
|
+
ac_gecode_save_GLDFLAGS="${GLDFLAGS}"
|
175
|
+
GLDFLAGS="${GLDFLAGS}${GLDFLAGS:+ }$1"
|
176
|
+
AC_LINK_IFELSE(AC_LANG_PROGRAM(),
|
177
|
+
[AC_MSG_RESULT(yes)
|
178
|
+
GLDFLAGS="$ac_gecode_save_GLDFLAGS"
|
179
|
+
ifelse([$2], , [GLDFLAGS="${GLDFLAGS}${GLDFLAGS:+ }$1"], [$2])],
|
180
|
+
[AC_MSG_RESULT(no)
|
181
|
+
GLDFLAGS="$ac_gecode_save_GLDFLAGS"
|
182
|
+
ifelse([$3], , :, [$3])])])dnl
|
183
|
+
|
184
|
+
dnl @synopsis _AC_C_IFDEF(MACRO-NAME, ACTION-IF-DEF, ACTION-IF-NOT-DEF)
|
185
|
+
dnl
|
186
|
+
dnl Check for the definition of macro MACRO-NAME using the current
|
187
|
+
dnl language's compiler.
|
188
|
+
dnl
|
189
|
+
dnl @category Misc
|
190
|
+
dnl @author Ludovic Court�s <ludo@chbouib.org>
|
191
|
+
dnl @version 2004-09-07
|
192
|
+
dnl @license AllPermissive
|
193
|
+
AC_DEFUN([_AC_C_IFDEF],
|
194
|
+
[AC_COMPILE_IFELSE([#ifndef $1
|
195
|
+
# error "Macro $1 is undefined!"
|
196
|
+
/* For some compilers (eg. SGI's CC), #error is not
|
197
|
+
enough... */
|
198
|
+
please, do fail
|
199
|
+
#endif],
|
200
|
+
[$2], [$3])])
|
201
|
+
|
202
|
+
dnl @synopsis AC_CXX_COMPILER_VENDOR(VENDOR-NAME)
|
203
|
+
dnl
|
204
|
+
dnl Set VENDOR-NAME to the lower-case name of the compiler vendor or `unknown'
|
205
|
+
dnl if the compiler's vendor is unknown.
|
206
|
+
dnl
|
207
|
+
dnl @version 20040907
|
208
|
+
dnl @author Ludovic Court�s <ludo@chbouib.org>
|
209
|
+
dnl Modified by G. Tack to recognize only those compilers we need.
|
210
|
+
AC_DEFUN([AC_CXX_COMPILER_VENDOR],
|
211
|
+
[AC_ARG_WITH([compiler-vendor],
|
212
|
+
AC_HELP_STRING([--with-compiler-vendor],
|
213
|
+
[Override compiler test. Valid values are gnu, intel, and microsoft.]))
|
214
|
+
AC_REQUIRE([AC_PROG_CXX])
|
215
|
+
AC_REQUIRE([AC_PROG_CXXCPP])
|
216
|
+
AC_CACHE_CHECK([the C++ compiler vendor],
|
217
|
+
[ac_cv_cxx_compiler_vendor],
|
218
|
+
|
219
|
+
[if test "${with_compiler_vendor:-no}" = "no"; then
|
220
|
+
|
221
|
+
AC_LANG_PUSH([C++])
|
222
|
+
|
223
|
+
dnl GNU C++
|
224
|
+
_AC_C_IFDEF([__GNUG__],
|
225
|
+
[ac_cv_cxx_compiler_vendor=gnu],
|
226
|
+
[_AC_C_IFDEF([__INTEL_COMPILER],
|
227
|
+
[ac_cv_cxx_compiler_vendor=intel],
|
228
|
+
[dnl Note: We are using the C compiler because VC++ doesn't
|
229
|
+
dnl recognize `.cc'(which is used by `configure') as a C++ file
|
230
|
+
dnl extension and requires `/TP' to be passed.
|
231
|
+
AC_LANG_PUSH([C])
|
232
|
+
_AC_C_IFDEF([_MSC_VER],
|
233
|
+
[ac_cv_cxx_compiler_vendor=microsoft],
|
234
|
+
[ac_cv_cxx_compiler_vendor=unknown])
|
235
|
+
AC_LANG_POP()])])
|
236
|
+
|
237
|
+
AC_LANG_POP()
|
238
|
+
else
|
239
|
+
ac_cv_cxx_compiler_vendor=${with_compiler_vendor}
|
240
|
+
fi
|
241
|
+
$1="$ac_cv_cxx_compiler_vendor"])])dnl
|
242
|
+
|
243
|
+
|
244
|
+
dnl Macro:
|
245
|
+
dnl AC_GECODE_VTI (vartype, help-string, default,
|
246
|
+
dnl [ACTION-IF-ENABLED])
|
247
|
+
dnl
|
248
|
+
dnl Description:
|
249
|
+
dnl Introduce --enable-vartype-vars configure switch. The help-string
|
250
|
+
dnl is used for the configure --help output.
|
251
|
+
dnl default is either yes or no and says whether this option should be
|
252
|
+
dnl enabled by default. ACTION-IF-ENABLED can be used to perform additional
|
253
|
+
dnl actions in case this variable type is enabled.
|
254
|
+
dnl
|
255
|
+
dnl Authors:
|
256
|
+
dnl Guido Tack <tack@gecode.org>
|
257
|
+
AC_DEFUN([AC_GECODE_ADD_VTI],
|
258
|
+
[AC_DEFINE(GECODE_HAS_$1_VARS)])
|
259
|
+
AC_DEFUN([AC_GECODE_VTI],
|
260
|
+
[
|
261
|
+
AC_ARG_ENABLE([$1-vars],
|
262
|
+
AC_HELP_STRING([--enable-$1-vars],[build $2 @<:@default=$3@:>@]))
|
263
|
+
AC_MSG_CHECKING(whether to build the $1 variables library)
|
264
|
+
if test "${enable_$1_vars:-$3}" = "yes"; then
|
265
|
+
AC_MSG_RESULT(yes)
|
266
|
+
enable_$1_vars="yes";
|
267
|
+
$4
|
268
|
+
AC_GECODE_ADD_VTI(translit($1,`a-z', `A-Z'))
|
269
|
+
else
|
270
|
+
enable_$1_vars="no";
|
271
|
+
AC_MSG_RESULT(no)
|
272
|
+
fi
|
273
|
+
AC_SUBST(enable_$1_vars, ${enable_$1_vars})
|
274
|
+
])
|
275
|
+
|
276
|
+
dnl Macro:
|
277
|
+
dnl AC_GECODE_ENABLE_MODULE (module, default, help-string,
|
278
|
+
dnl [ACTION-IF-ENABLED])
|
279
|
+
dnl
|
280
|
+
dnl Description:
|
281
|
+
dnl Produces a configure switch --enable-<module>.
|
282
|
+
dnl
|
283
|
+
dnl Authors:
|
284
|
+
dnl Guido Tack <tack@gecode.org>
|
285
|
+
AC_DEFUN([AC_GECODE_ENABLE_MODULE],
|
286
|
+
[
|
287
|
+
AC_ARG_ENABLE([$1],
|
288
|
+
AC_HELP_STRING([--enable-$1],
|
289
|
+
[$3 @<:@default=$2@:>@]))
|
290
|
+
AC_MSG_CHECKING(whether to build $1)
|
291
|
+
if test "${enable_$1:-$2}" = "yes"; then
|
292
|
+
enable_$1="yes";
|
293
|
+
AC_MSG_RESULT(yes)
|
294
|
+
$4
|
295
|
+
else
|
296
|
+
enable_$1="no";
|
297
|
+
AC_MSG_RESULT(no)
|
298
|
+
fi
|
299
|
+
AC_SUBST(enable_$1, ${enable_$1})])
|
300
|
+
|
301
|
+
dnl Description:
|
302
|
+
dnl Makes an enable check for a contrib
|
303
|
+
dnl The third argument can be used for dependency checking
|
304
|
+
dnl
|
305
|
+
dnl Authors:
|
306
|
+
dnl Gr�goire Dooms <dooms@info.ucl.ac.be>
|
307
|
+
AC_DEFUN([AC_GECODE_ENABLE_CONTRIB],
|
308
|
+
[
|
309
|
+
AC_ARG_ENABLE([$1],
|
310
|
+
AC_HELP_STRING([--enable-$1],[build $2 @<:@default=yes@:>@]))
|
311
|
+
AC_MSG_CHECKING(whether to build the $1 contrib library)
|
312
|
+
if test "${enable_$1:-yes}" = "yes"; then
|
313
|
+
AC_MSG_RESULT(yes)
|
314
|
+
enable_$1="yes";
|
315
|
+
$3
|
316
|
+
else
|
317
|
+
enable_$1="no";
|
318
|
+
AC_MSG_RESULT(no)
|
319
|
+
fi
|
320
|
+
AC_SUBST(enable_$1, ${enable_$1})])
|
321
|
+
|
322
|
+
|
323
|
+
AC_DEFUN([AC_GECODE_STATICLIBS],
|
324
|
+
[if test "${host_os}" = "windows" -a \
|
325
|
+
"${ac_gecode_compiler_vendor}" = "gnu"; then
|
326
|
+
enable_static="yes"
|
327
|
+
enable_shared="no"
|
328
|
+
fi
|
329
|
+
AC_ARG_ENABLE([static],
|
330
|
+
AC_HELP_STRING([--enable-static],
|
331
|
+
[build static libraries @<:@default=no@:>@]))
|
332
|
+
AC_MSG_CHECKING(whether to build static libraries)
|
333
|
+
if test "${enable_static:-no}" = "yes"; then
|
334
|
+
AC_DEFINE(GECODE_STATIC_LIBS)
|
335
|
+
AC_SUBST(BUILDSTATIC, "yes")
|
336
|
+
AC_MSG_RESULT(yes)
|
337
|
+
else
|
338
|
+
AC_SUBST(BUILDSTATIC, "no")
|
339
|
+
AC_MSG_RESULT(no)
|
340
|
+
fi
|
341
|
+
AC_ARG_ENABLE([shared],
|
342
|
+
AC_HELP_STRING([--enable-shared],
|
343
|
+
[build shared libraries @<:@default=yes@:>@]))
|
344
|
+
AC_MSG_CHECKING(whether to build shared libraries)
|
345
|
+
if test "${enable_shared:-yes}" = "yes"; then
|
346
|
+
AC_SUBST(BUILDDLL, "yes")
|
347
|
+
AC_MSG_RESULT(yes)
|
348
|
+
else
|
349
|
+
AC_SUBST(BUILDDLL, "no")
|
350
|
+
if test "${enable_static:-no}" = "no"; then
|
351
|
+
AC_MSG_ERROR([One of --enable-static or --enable-shared must be given])
|
352
|
+
fi
|
353
|
+
AC_MSG_RESULT(no)
|
354
|
+
fi
|
355
|
+
])
|
356
|
+
|
357
|
+
|
358
|
+
AC_DEFUN([AC_GECODE_DEBUG],
|
359
|
+
[AC_ARG_ENABLE([debug],
|
360
|
+
AC_HELP_STRING([--enable-debug],
|
361
|
+
[build with assertions @<:@default=no@:>@]))
|
362
|
+
AC_MSG_CHECKING(whether to build with debug symbols and assertions)
|
363
|
+
if test "${enable_debug:-no}" = "yes"; then
|
364
|
+
AC_MSG_RESULT(yes)
|
365
|
+
else
|
366
|
+
AC_MSG_RESULT(no)
|
367
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS(-DNDEBUG)
|
368
|
+
fi])
|
369
|
+
|
370
|
+
AC_DEFUN([AC_GECODE_LEAK_DEBUG],
|
371
|
+
[AC_ARG_ENABLE([leak-debug],
|
372
|
+
AC_HELP_STRING([--enable-leak-debug],
|
373
|
+
[build with support for finding memory leaks @<:@default=no@:>@]))
|
374
|
+
AC_MSG_CHECKING(whether to build with support for finding memory leaks)
|
375
|
+
if test "${enable_leak_debug:-no}" = "yes"; then
|
376
|
+
AC_MSG_RESULT(yes)
|
377
|
+
AC_CHECK_DECL(mtrace,
|
378
|
+
[AC_DEFINE(GECODE_HAS_MTRACE)],
|
379
|
+
[AC_MSG_ERROR(mtrace not available.)],
|
380
|
+
[[#include <mcheck.h>]])
|
381
|
+
else
|
382
|
+
AC_MSG_RESULT(no)
|
383
|
+
fi])
|
384
|
+
|
385
|
+
AC_DEFUN([AC_GECODE_AUDIT],
|
386
|
+
[AC_ARG_ENABLE([audit],
|
387
|
+
AC_HELP_STRING([--enable-audit],
|
388
|
+
[build with auditing code @<:@default=no@:>@]))
|
389
|
+
AC_MSG_CHECKING(whether to build with auditing code)
|
390
|
+
if test "${enable_audit:-no}" = "yes"; then
|
391
|
+
AC_DEFINE(GECODE_AUDIT)
|
392
|
+
AC_MSG_RESULT(yes)
|
393
|
+
else
|
394
|
+
AC_MSG_RESULT(no)
|
395
|
+
fi])
|
396
|
+
|
397
|
+
|
398
|
+
AC_DEFUN([AC_GECODE_PROFILE],
|
399
|
+
[AC_ARG_ENABLE([profile],
|
400
|
+
AC_HELP_STRING([--enable-profile],
|
401
|
+
[build with profiling information @<:@default=no@:>@]))
|
402
|
+
AC_MSG_CHECKING(whether to build with profiling information)
|
403
|
+
if test "${enable_profile:-no}" = "yes"; then
|
404
|
+
AC_MSG_RESULT(yes)
|
405
|
+
AC_GECODE_CHECK_CXXFLAG(-pg,
|
406
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS(-pg),
|
407
|
+
AC_GECODE_CHECK_COMPILERFLAG(-p))
|
408
|
+
else
|
409
|
+
AC_MSG_RESULT(no)
|
410
|
+
fi])
|
411
|
+
|
412
|
+
AC_DEFUN([AC_GECODE_GCOV],
|
413
|
+
[AC_ARG_ENABLE([gcov],
|
414
|
+
AC_HELP_STRING([--enable-gcov],
|
415
|
+
[build with gcov support @<:@default=no@:>@]))
|
416
|
+
AC_MSG_CHECKING(whether to build with gcov support)
|
417
|
+
if test "${enable_gcov:-no}" = "yes"; then
|
418
|
+
AC_MSG_RESULT(yes)
|
419
|
+
AC_GECODE_CHECK_COMPILERFLAG(-fprofile-arcs)
|
420
|
+
AC_GECODE_CHECK_COMPILERFLAG(-ftest-coverage)
|
421
|
+
AC_GECODE_ADD_TO_DLLFLAGS("-fprofile-arcs")
|
422
|
+
AC_GECODE_ADD_TO_DLLFLAGS("-ftest-coverage")
|
423
|
+
else
|
424
|
+
AC_MSG_RESULT(no)
|
425
|
+
fi])
|
426
|
+
|
427
|
+
|
428
|
+
# Test for platform specific behaviour of arithmetic
|
429
|
+
|
430
|
+
AC_DEFUN([AC_GECODE_CHECK_ARITH],
|
431
|
+
[AC_LANG_PUSH([C])
|
432
|
+
AC_CHECK_SIZEOF(int)
|
433
|
+
AC_MSG_CHECKING([if int has at least 32 bit])
|
434
|
+
AC_TRY_COMPILE([],
|
435
|
+
[
|
436
|
+
#if SIZEOF_INT>=4
|
437
|
+
#else
|
438
|
+
blablub
|
439
|
+
#endif
|
440
|
+
],
|
441
|
+
[AC_MSG_RESULT(yes)],
|
442
|
+
[AC_MSG_ERROR([Gecode needs at least 32 bit integers.])])
|
443
|
+
|
444
|
+
AC_MSG_CHECKING([if doubles have a big enough mantissa])
|
445
|
+
AC_TRY_COMPILE([#include <float.h>],
|
446
|
+
[
|
447
|
+
#if DBL_MANT_DIG>=53
|
448
|
+
#else
|
449
|
+
blablub
|
450
|
+
#endif
|
451
|
+
],
|
452
|
+
[AC_MSG_RESULT(yes)],
|
453
|
+
[AC_MSG_ERROR([Gecode needs a double mantissa of at least 53 bits.])])
|
454
|
+
|
455
|
+
AC_LANG_POP([C])])
|
456
|
+
|
457
|
+
AC_DEFUN([AC_GECODE_GCC_GENERAL_SWITCHES],
|
458
|
+
[AC_DEFINE(forceinline, [inline])
|
459
|
+
AC_GECODE_CHECK_COMPILERFLAG([-fPIC])
|
460
|
+
AC_GECODE_CHECK_COMPILERFLAG([-Wextra])
|
461
|
+
AC_GECODE_CHECK_COMPILERFLAG([-Wall])
|
462
|
+
AC_GECODE_CHECK_COMPILERFLAG([-pipe])
|
463
|
+
AC_GECODE_CHECK_CXXFLAG(-ggdb,
|
464
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS(-ggdb),
|
465
|
+
AC_GECODE_CHECK_COMPILERFLAG(-g))
|
466
|
+
|
467
|
+
AC_SUBST(docdir, "${datadir}/doc/gecode")
|
468
|
+
|
469
|
+
dnl file extensions
|
470
|
+
AC_SUBST(SBJEXT, "s")
|
471
|
+
AC_SUBST(LIBEXT, "${DLLEXT}")
|
472
|
+
AC_SUBST(LIBPREFIX, "libgecode")
|
473
|
+
AC_SUBST(STATICLIBEXT, "a")
|
474
|
+
AC_SUBST(MINUSLDIR, "-L${libdir}")
|
475
|
+
AC_SUBST(LINKLIBDIR, "")
|
476
|
+
|
477
|
+
cygpathprefix=$prefix
|
478
|
+
test "x$cygpathprefix" = xNONE && cygpathprefix=$ac_default_prefix
|
479
|
+
AC_SUBST(cygpathprefix, "${cygpathprefix}")
|
480
|
+
|
481
|
+
AC_SUBST(COMPILEOBJ, "-c -o ")
|
482
|
+
AC_SUBST(COMPILESBJ, "-S -o ")
|
483
|
+
AC_SUBST(CXXIN, " ")
|
484
|
+
AC_SUBST(CCIN, " ")
|
485
|
+
AC_SUBST(EXAMPLES_EXTRA_CXXFLAGS, "")
|
486
|
+
|
487
|
+
dnl Do not install stub .lib files (required for msvc)
|
488
|
+
AC_SUBST(INSTALLLIBS, "no")
|
489
|
+
|
490
|
+
AC_SUBST(LINKPREFIX, "-lgecode")
|
491
|
+
AC_SUBST(LINKSUFFIX, "")
|
492
|
+
|
493
|
+
dnl how to tell the compiler to output an object file
|
494
|
+
AC_SUBST(LINKOUTPUT, "-o ")
|
495
|
+
dnl how to tell the compiler to output an executable
|
496
|
+
AC_SUBST(EXEOUTPUT, "-o ")
|
497
|
+
|
498
|
+
dnl the names of the generated dlls
|
499
|
+
AC_SUBST(SUPPORT, "support")
|
500
|
+
AC_SUBST(KERNEL, "kernel")
|
501
|
+
AC_SUBST(SEARCH, "search")
|
502
|
+
AC_SUBST(INT, "int")
|
503
|
+
AC_SUBST(SET, "set")
|
504
|
+
AC_SUBST(CPLTSET, "cpltset")
|
505
|
+
AC_SUBST(MM, "minimodel")
|
506
|
+
AC_SUBST(SER, "serialization")
|
507
|
+
AC_SUBST(GIST, "gist")])
|
508
|
+
|
509
|
+
|
510
|
+
AC_DEFUN([AC_GECODE_GCC_OPTIMIZED_SWITCHES],
|
511
|
+
[AC_GECODE_CHECK_COMPILERFLAG([-O3])
|
512
|
+
AC_GECODE_CHECK_COMPILERFLAG([-fno-strict-aliasing])])
|
513
|
+
|
514
|
+
AC_DEFUN([AC_GECODE_GCC_VISIBILITY],
|
515
|
+
[AC_ARG_ENABLE([gcc-visibility],
|
516
|
+
AC_HELP_STRING([--enable-gcc-visibility],
|
517
|
+
[use gcc visibility attributes @<:@default=yes@:>@]))
|
518
|
+
AC_MSG_CHECKING(whether to use gcc visibility attributes)
|
519
|
+
if test "${enable_gcc_visibility:-yes}" = "yes"; then
|
520
|
+
AC_MSG_RESULT(yes)
|
521
|
+
AC_GECODE_CHECK_CXXFLAG([-fvisibility=hidden],
|
522
|
+
[AC_DEFINE(GECODE_GCC_HAS_CLASS_VISIBILITY)
|
523
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS([-fvisibility=hidden])],
|
524
|
+
[])
|
525
|
+
else
|
526
|
+
AC_MSG_RESULT(no)
|
527
|
+
fi])
|
528
|
+
|
529
|
+
AC_DEFUN([AC_GECODE_GCC_DEBUG_SWITCHES],
|
530
|
+
[AC_GECODE_CHECK_COMPILERFLAG([-fno-inline-functions])
|
531
|
+
AC_GECODE_CHECK_COMPILERFLAG([-fimplement-inlines])])
|
532
|
+
|
533
|
+
AC_DEFUN([AC_GECODE_NO_BUILDFLAGS],
|
534
|
+
[AC_SUBST(GECODE_BUILD_SUPPORT_FLAG, "")
|
535
|
+
AC_SUBST(GECODE_BUILD_KERNEL_FLAG, "")
|
536
|
+
AC_SUBST(GECODE_BUILD_SEARCH_FLAG, "")
|
537
|
+
AC_SUBST(GECODE_BUILD_INT_FLAG, "")
|
538
|
+
AC_SUBST(GECODE_BUILD_SET_FLAG, "")
|
539
|
+
AC_SUBST(GECODE_BUILD_CPLTSET_FLAG, "")
|
540
|
+
AC_SUBST(GECODE_BUILD_MINIMODEL_FLAG, "")
|
541
|
+
AC_SUBST(GECODE_BUILD_SERIALIZATION_FLAG, "")
|
542
|
+
AC_SUBST(GECODE_BUILD_GIST_FLAG, "")])
|
543
|
+
|
544
|
+
AC_DEFUN([AC_GECODE_BUILDFLAGS],
|
545
|
+
[AC_SUBST(GECODE_BUILD_SUPPORT_FLAG, "-DGECODE_BUILD_SUPPORT")
|
546
|
+
AC_SUBST(GECODE_BUILD_KERNEL_FLAG, "-DGECODE_BUILD_KERNEL")
|
547
|
+
AC_SUBST(GECODE_BUILD_SEARCH_FLAG, "-DGECODE_BUILD_SEARCH")
|
548
|
+
AC_SUBST(GECODE_BUILD_INT_FLAG, "-DGECODE_BUILD_INT")
|
549
|
+
AC_SUBST(GECODE_BUILD_SET_FLAG, "-DGECODE_BUILD_SET")
|
550
|
+
AC_SUBST(GECODE_BUILD_CPLTSET_FLAG, "-DGECODE_BUILD_CPLTSET")
|
551
|
+
AC_SUBST(GECODE_BUILD_MINIMODEL_FLAG, "-DGECODE_BUILD_MINIMODEL")
|
552
|
+
AC_SUBST(GECODE_BUILD_SERIALIZATION_FLAG, "-DGECODE_BUILD_SERIALIZATION")
|
553
|
+
AC_SUBST(GECODE_BUILD_GIST_FLAG, "-DGECODE_BUILD_GIST")])
|
554
|
+
|
555
|
+
|
556
|
+
AC_DEFUN([AC_GECODE_UNIX_PATHS],
|
557
|
+
[AC_SUBST(DLLPATH, [-L.])
|
558
|
+
dnl flags for creating dlls
|
559
|
+
case $host_os in
|
560
|
+
darwin*)
|
561
|
+
AC_SUBST(need_soname, "yes")
|
562
|
+
AC_GECODE_ADD_TO_DLLFLAGS([-Wl,-single_module])
|
563
|
+
AC_GECODE_ADD_TO_DLLFLAGS("-dynamiclib")
|
564
|
+
AC_SUBST(DLLEXT, "${ac_gecode_soversion}.0.dylib")
|
565
|
+
AC_SUBST(SOSUFFIX, ".${ac_gecode_soversion}.dylib")
|
566
|
+
AC_SUBST(SOLINKSUFFIX, ".dylib")
|
567
|
+
AC_SUBST(sharedlibdir, "${libdir}")
|
568
|
+
AC_SUBST(WLSONAME, "-compatibility_version ${ac_gecode_soversion}.0 -current_version ${ac_gecode_soversion}.0 -install_name ${libdir}/")
|
569
|
+
AC_GECODE_NO_BUILDFLAGS
|
570
|
+
;;
|
571
|
+
windows*)
|
572
|
+
AC_SUBST(need_soname, "no")
|
573
|
+
if test "${enable_static:-no}" = "yes" -a \
|
574
|
+
"${enable_shared:-yes}" = "yes"; then
|
575
|
+
AC_MSG_ERROR([Only either static or shared libraries can be built.])
|
576
|
+
fi
|
577
|
+
AC_GECODE_ADD_TO_DLLFLAGS("-shared")
|
578
|
+
AC_SUBST(DLLEXT, "dll")
|
579
|
+
AC_SUBST(SOSUFFIX, "")
|
580
|
+
AC_SUBST(SOLINKSUFFIX, "")
|
581
|
+
AC_SUBST(WLSONAME, "")
|
582
|
+
if test "${enable_static:-no}" = "no"; then
|
583
|
+
AC_SUBST(sharedlibdir, "${bindir}")
|
584
|
+
else
|
585
|
+
AC_SUBST(sharedlibdir, "${libdir}")
|
586
|
+
fi
|
587
|
+
AC_GECODE_BUILDFLAGS
|
588
|
+
;;
|
589
|
+
*)
|
590
|
+
AC_SUBST(need_soname, "yes")
|
591
|
+
AC_GECODE_ADD_TO_DLLFLAGS("-shared")
|
592
|
+
AC_SUBST(DLLEXT, "so.${ac_gecode_soversion}.0")
|
593
|
+
AC_SUBST(SOSUFFIX, ".so.${ac_gecode_soversion}")
|
594
|
+
AC_SUBST(SOLINKSUFFIX, ".so")
|
595
|
+
AC_SUBST(WLSONAME, ["-Wl,-soname="])
|
596
|
+
AC_SUBST(sharedlibdir, "${libdir}")
|
597
|
+
AC_GECODE_NO_BUILDFLAGS
|
598
|
+
;;
|
599
|
+
esac])
|
600
|
+
|
601
|
+
AC_DEFUN([AC_GECODE_MSVC_SWITCHES],
|
602
|
+
[dnl general compiler flags
|
603
|
+
AC_DEFINE(forceinline,[__forceinline])
|
604
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS([-nologo])
|
605
|
+
AC_GECODE_ADD_TO_CFLAGS([-D_CRT_SECURE_NO_DEPRECATE])
|
606
|
+
AC_GECODE_ADD_TO_CXXFLAGS([-EHsc])
|
607
|
+
AC_DEFINE(GECODE_MEMORY_ALIGNMENT, 4)
|
608
|
+
|
609
|
+
if test "${enable_debug:-no}" = "no"; then
|
610
|
+
dnl compiler flags for an optimized build
|
611
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS([-Ox -fp:fast -GS- -arch:SSE -wd4355])
|
612
|
+
dnl AC_GECODE_ADD_TO_COMPILERFLAGS([-Ox -fp:fast -GS- -wd4355 -w34640 -w34365 -w34800 -w34265])
|
613
|
+
|
614
|
+
dnl flags for creating optimized dlls
|
615
|
+
AC_GECODE_ADD_TO_DLLFLAGS([${CXXFLAGS} -LD -MD])
|
616
|
+
dnl linker flags
|
617
|
+
GLDFLAGS="-link -DEBUG -OPT:REF -OPT:ICF"
|
618
|
+
else
|
619
|
+
dnl compiler flags for a debug build
|
620
|
+
AC_GECODE_ADD_TO_COMPILERFLAGS([-Zi -wd4355])
|
621
|
+
|
622
|
+
dnl flags for creating debug dlls
|
623
|
+
AC_GECODE_ADD_TO_DLLFLAGS([${CXXFLAGS} -LDd -MDd])
|
624
|
+
fi
|
625
|
+
|
626
|
+
AC_SUBST(sharedlibdir, "${bindir}")
|
627
|
+
AC_SUBST(docdir, "${prefix}")
|
628
|
+
if test "${enable_static:-no}" = "yes"; then
|
629
|
+
AC_MSG_ERROR([Static linking not supported for Windows/cl.])
|
630
|
+
fi
|
631
|
+
|
632
|
+
AC_SUBST(DLLPATH, "")
|
633
|
+
|
634
|
+
dnl file extensions
|
635
|
+
AC_SUBST(SBJEXT, "sbj")
|
636
|
+
AC_SUBST(DLLEXT, "dll")
|
637
|
+
AC_SUBST(SOSUFFIX, "")
|
638
|
+
AC_SUBST(SOLINKSUFFIX, "")
|
639
|
+
AC_SUBST(WLSONAME, "")
|
640
|
+
AC_SUBST(LIBEXT, "lib")
|
641
|
+
AC_SUBST(LIBPREFIX, "Gecode")
|
642
|
+
AC_SUBST(LINKPREFIX, "Gecode")
|
643
|
+
AC_SUBST(LINKSUFFIX, ".lib")
|
644
|
+
AC_SUBST(MINUSLDIR, "")
|
645
|
+
AC_SUBST(LINKLIBDIR, "${libdir}/")
|
646
|
+
|
647
|
+
cygpathprefix=$prefix
|
648
|
+
test "x$cygpathprefix" = xNONE && cygpathprefix=$ac_default_prefix
|
649
|
+
cygpathprefix=`cygpath -m ${cygpathprefix}`
|
650
|
+
|
651
|
+
AC_SUBST(cygpathprefix, "${cygpathprefix}")
|
652
|
+
AC_GECODE_BUILDFLAGS
|
653
|
+
|
654
|
+
dnl compiler options
|
655
|
+
AC_SUBST(COMPILEOBJ, "-c -Fo")
|
656
|
+
AC_SUBST(COMPILESBJ, "-c -Fa")
|
657
|
+
AC_SUBST(CXXIN, "-Tp")
|
658
|
+
AC_SUBST(CCIN, "-Tc")
|
659
|
+
AC_SUBST(EXAMPLES_EXTRA_CXXFLAGS, "")
|
660
|
+
|
661
|
+
dnl Install stub .lib files (required for msvc)
|
662
|
+
AC_SUBST(INSTALLLIBS, "yes")
|
663
|
+
|
664
|
+
dnl how to tell the compiler to output an object file
|
665
|
+
AC_SUBST(LINKOUTPUT, "-Fe")
|
666
|
+
dnl how to tell the compiler to output an executable
|
667
|
+
AC_SUBST(EXEOUTPUT, "-Fe")
|
668
|
+
|
669
|
+
dnl the names of the generated dlls
|
670
|
+
AC_SUBST(SUPPORT, "Support")
|
671
|
+
AC_SUBST(KERNEL, "Kernel")
|
672
|
+
AC_SUBST(SEARCH, "Search")
|
673
|
+
AC_SUBST(INT, "Int")
|
674
|
+
AC_SUBST(SET, "Set")
|
675
|
+
AC_SUBST(CPLTSET, "CpltSet")
|
676
|
+
AC_SUBST(MM, "Minimodel")
|
677
|
+
AC_SUBST(SER, "Serialization")
|
678
|
+
AC_SUBST(GIST, "Gist")])
|
679
|
+
|
680
|
+
dnl Macro:
|
681
|
+
dnl AC_GECODE_DOC_SWITCHES
|
682
|
+
dnl
|
683
|
+
dnl Description:
|
684
|
+
dnl Produces the configure switches --enable-doc-search,
|
685
|
+
dnl --enable-doc-chm, and --enable-doc-tagfile.
|
686
|
+
dnl
|
687
|
+
dnl Authors:
|
688
|
+
dnl Guido Tack <tack@gecode.org>
|
689
|
+
AC_DEFUN([AC_GECODE_DOC_SWITCHES],
|
690
|
+
[dnl check if we can use dot for generating graphs in the documentation
|
691
|
+
AC_ARG_ENABLE([doc-dot],
|
692
|
+
AC_HELP_STRING([--enable-doc-dot],
|
693
|
+
[enable graphs in documentation @<:@default=yes@:>@]))
|
694
|
+
AC_CHECK_PROG(DOT, dot, dot)
|
695
|
+
AC_MSG_CHECKING(whether to enable graphs in the documentation)
|
696
|
+
if test "${enable_doc_dot:-yes}" = "yes"; then
|
697
|
+
if test x$DOT = x; then
|
698
|
+
if test x"${enable_doc_dot}" = x; then
|
699
|
+
AC_MSG_RESULT(no)
|
700
|
+
AC_SUBST(GECODE_DOXYGEN_DOT, NO)
|
701
|
+
else
|
702
|
+
AC_MSG_ERROR(you need the dot tool from graphviz to generate graphs in the documentation)
|
703
|
+
fi
|
704
|
+
else
|
705
|
+
AC_MSG_RESULT(yes)
|
706
|
+
AC_SUBST(GECODE_DOXYGEN_DOT, YES)
|
707
|
+
fi
|
708
|
+
else
|
709
|
+
AC_MSG_RESULT(no)
|
710
|
+
AC_SUBST(GECODE_DOXYGEN_DOT, NO)
|
711
|
+
fi
|
712
|
+
|
713
|
+
AC_ARG_ENABLE([doc-search],
|
714
|
+
AC_HELP_STRING([--enable-doc-search],
|
715
|
+
[enable documentation search engine @<:@default=no@:>@]))
|
716
|
+
AC_MSG_CHECKING(whether to enable the documentation search engine)
|
717
|
+
if test "${enable_doc_search:-no}" = "yes"; then
|
718
|
+
AC_MSG_RESULT(yes)
|
719
|
+
AC_SUBST(ENABLEDOCSEARCH, "yes")
|
720
|
+
else
|
721
|
+
AC_MSG_RESULT(no)
|
722
|
+
AC_SUBST(ENABLEDOCSEARCH, "no")
|
723
|
+
fi
|
724
|
+
AC_ARG_ENABLE([doc-tagfile],
|
725
|
+
AC_HELP_STRING([--enable-doc-tagfile],
|
726
|
+
[generate doxygen tagfile @<:@default=no@:>@]))
|
727
|
+
AC_MSG_CHECKING(whether to generate a doxygen tagfile)
|
728
|
+
if test "${enable_doc_tagfile:-no}" = "yes"; then
|
729
|
+
AC_MSG_RESULT(yes)
|
730
|
+
AC_SUBST(GECODE_DOXYGEN_TAGFILE, "doc/gecode-doc.tag")
|
731
|
+
else
|
732
|
+
AC_MSG_RESULT(no)
|
733
|
+
AC_SUBST(GECODE_DOXYGEN_TAGFILE, [])
|
734
|
+
fi
|
735
|
+
AC_ARG_ENABLE([doc-chm],
|
736
|
+
AC_HELP_STRING([--enable-doc-chm],
|
737
|
+
[build compressed html documentation @<:@default=yes on Windows@:>@]))
|
738
|
+
AC_MSG_CHECKING(whether to build compressed html documentation)
|
739
|
+
case $host_os in
|
740
|
+
windows*)
|
741
|
+
if test "${enable_doc_chm:-yes}" = "yes"; then
|
742
|
+
AC_MSG_RESULT(yes)
|
743
|
+
AC_SUBST(ENABLEDOCCHM, "yes")
|
744
|
+
AC_SUBST(ENABLEDOCSEARCH, "no")
|
745
|
+
else
|
746
|
+
AC_MSG_RESULT(no)
|
747
|
+
AC_SUBST(ENABLEDOCCHM, "no")
|
748
|
+
fi
|
749
|
+
;;
|
750
|
+
*)
|
751
|
+
if test "${enable_doc_chm:-no}" = "yes"; then
|
752
|
+
AC_MSG_ERROR([building chms is only supported on Windows.])
|
753
|
+
else
|
754
|
+
AC_MSG_RESULT(no)
|
755
|
+
AC_SUBST(ENABLEDOCCHM, "no")
|
756
|
+
fi
|
757
|
+
;;
|
758
|
+
esac])
|
759
|
+
|
760
|
+
dnl Macro:
|
761
|
+
dnl AC_GECODE_UNIVERSAL
|
762
|
+
dnl
|
763
|
+
dnl Description:
|
764
|
+
dnl Produces the configure switches --enable-universal and --with-sdk
|
765
|
+
dnl for compiling universal binaries on Mac OS X.
|
766
|
+
dnl
|
767
|
+
dnl Authors:
|
768
|
+
dnl Guido Tack <tack@gecode.org>
|
769
|
+
AC_DEFUN([AC_GECODE_UNIVERSAL],
|
770
|
+
[dnl build universal binaries on Mac OS X
|
771
|
+
AC_ARG_WITH([sdk],
|
772
|
+
AC_HELP_STRING([--with-sdk],
|
773
|
+
[SDK to use on Mac OS X]))
|
774
|
+
if test "${host_os}" = "darwin"; then
|
775
|
+
if test "${with_sdk:-no}" != "no"; then
|
776
|
+
AC_GECODE_CHECK_COMPILERFLAG([-isysroot ${with_sdk}])
|
777
|
+
AC_GECODE_ADD_TO_DLLFLAGS([-Wl,-syslibroot,${with_sdk}])
|
778
|
+
fi
|
779
|
+
fi
|
780
|
+
AC_ARG_WITH([macosx-version-min],
|
781
|
+
AC_HELP_STRING([--with-macosx-version-min],
|
782
|
+
[minimum version of Mac OS X to support]))
|
783
|
+
if test "${host_os}" = "darwin"; then
|
784
|
+
if test "${with_macosx_version_min:-no}" != "no"; then
|
785
|
+
AC_GECODE_CHECK_COMPILERFLAG(
|
786
|
+
[-mmacosx-version-min=${with_macosx_version_min}])
|
787
|
+
AC_GECODE_ADD_TO_DLLFLAGS(
|
788
|
+
[-mmacosx-version-min=${with_macosx_version_min}])
|
789
|
+
fi
|
790
|
+
fi
|
791
|
+
AC_ARG_WITH([architectures],
|
792
|
+
AC_HELP_STRING([--with-archiectures],
|
793
|
+
[architectures to compile for on Mac OS X]))
|
794
|
+
AC_MSG_CHECKING(Whether to build for different architectures)
|
795
|
+
if test "${host_os}" = "darwin"; then
|
796
|
+
if test "${with_architectures:-no}" != "no"; then
|
797
|
+
archflags="";
|
798
|
+
for a in `echo ${with_architectures} | sed -e "s/,/ /g"`; do
|
799
|
+
archflags="${archflags} -arch $a";
|
800
|
+
done
|
801
|
+
AC_GECODE_CHECK_COMPILERFLAG([${archflags}])
|
802
|
+
AC_GECODE_ADD_TO_DLLFLAGS([${archflags}])
|
803
|
+
AC_MSG_RESULT(yes)
|
804
|
+
else
|
805
|
+
AC_MSG_RESULT(no)
|
806
|
+
fi
|
807
|
+
else
|
808
|
+
AC_MSG_RESULT(no)
|
809
|
+
fi
|
810
|
+
])
|
811
|
+
|
812
|
+
dnl Macro:
|
813
|
+
dnl AC_GECODE_FRAMEWORK
|
814
|
+
dnl
|
815
|
+
dnl Description:
|
816
|
+
dnl Produces the configure switch --enable-framework
|
817
|
+
dnl for creating a Mac OS X framework instead of individual libraries.
|
818
|
+
dnl
|
819
|
+
dnl Authors:
|
820
|
+
dnl Guido Tack <tack@gecode.org>
|
821
|
+
AC_DEFUN([AC_GECODE_FRAMEWORK],
|
822
|
+
[dnl build framework bundle on Mac OS X
|
823
|
+
AC_ARG_ENABLE([framework],
|
824
|
+
AC_HELP_STRING([--enable-framework],
|
825
|
+
[build framework bundle on Mac OS X @<:@default=no@:>@]))
|
826
|
+
if test "${host_os}" = "darwin"; then
|
827
|
+
AC_MSG_CHECKING(whether to build framework bundle on Mac OS X)
|
828
|
+
if test "${enable_framework:-no}" = "yes"; then
|
829
|
+
AC_MSG_RESULT(yes)
|
830
|
+
AC_SUBST(BUILD_MACOS_FRAMEWORK, "yes")
|
831
|
+
AC_DEFINE(GECODE_STATIC_LIBS)
|
832
|
+
AC_SUBST(BUILDSTATIC, "yes")
|
833
|
+
else
|
834
|
+
AC_MSG_RESULT(no)
|
835
|
+
AC_SUBST(BUILD_MACOS_FRAMEWORK, "no")
|
836
|
+
fi
|
837
|
+
fi
|
838
|
+
])
|
839
|
+
|
840
|
+
dnl Macro:
|
841
|
+
dnl AC_GECODE_BOOST_SERIALIZATION
|
842
|
+
dnl
|
843
|
+
dnl Description:
|
844
|
+
dnl Produces the configure switch --with-boost
|
845
|
+
dnl for supplying the path to the boost serialization library.
|
846
|
+
dnl If present, support for boost serialization will be built
|
847
|
+
dnl into Gecode.
|
848
|
+
dnl
|
849
|
+
dnl Authors:
|
850
|
+
dnl Guido Tack <tack@gecode.org>
|
851
|
+
AC_DEFUN([AC_GECODE_BOOST_SERIALIZATION],
|
852
|
+
[dnl build with support for the boost serialization library
|
853
|
+
AC_ARG_WITH([boost-include],
|
854
|
+
AC_HELP_STRING([--with-boost-include],
|
855
|
+
[path to the boost header files (used for serialization)]))
|
856
|
+
if test "${with_boost_include:-no}" != "no"; then
|
857
|
+
AC_SUBST(BOOST_CPPFLAGS,[-I${with_boost_include}])
|
858
|
+
AC_SUBST(BOOST_LINK,["-L${with_boost_include}/../../lib -lboost_serialization"])
|
859
|
+
AC_DEFINE(GECODE_HAS_BOOST_SERIALIZATION)
|
860
|
+
fi
|
861
|
+
])
|
862
|
+
|
863
|
+
dnl Macro:
|
864
|
+
dnl AC_GECODE_QT
|
865
|
+
dnl
|
866
|
+
dnl Description:
|
867
|
+
dnl Produces the configure switch --enable-qt
|
868
|
+
dnl for compiling parts of Gecode that need the Qt library.
|
869
|
+
dnl
|
870
|
+
dnl Authors:
|
871
|
+
dnl Guido Tack <tack@gecode.org>
|
872
|
+
AC_DEFUN([AC_GECODE_QT],
|
873
|
+
[
|
874
|
+
AC_ARG_ENABLE([qt],
|
875
|
+
AC_HELP_STRING([--enable-qt],
|
876
|
+
[build with Qt support @<:@default=no@:>@]))
|
877
|
+
AC_MSG_CHECKING(whether to build with Qt support)
|
878
|
+
if test "${enable_qt:-no}" = "yes"; then
|
879
|
+
AC_MSG_RESULT(yes)
|
880
|
+
AC_DEFINE(GECODE_HAS_QT)
|
881
|
+
|
882
|
+
AC_CHECK_PROG(QMAKE, qmake, [found])
|
883
|
+
if test "${QMAKE}x" = "x"; then
|
884
|
+
AC_MSG_ERROR([The qmake tool was not found.])
|
885
|
+
else
|
886
|
+
ac_gecode_qt_version=`qmake -query QT_VERSION`
|
887
|
+
ac_gecode_qt_major=`echo ${ac_gecode_qt_version} | grep -o '^[[0-9]]*'`
|
888
|
+
ac_gecode_qt_minor=`echo ${ac_gecode_qt_version} | sed -e 's/^[[0-9]]*\\.//g' -e 's/\\.[[0-9]]*$//g'`
|
889
|
+
ac_gecode_qt_ok="yes"
|
890
|
+
if test ${ac_gecode_qt_major} -lt 4; then ac_gecode_qt_ok="no";
|
891
|
+
else if test ${ac_gecode_qt_major} -eq 4 \
|
892
|
+
-a ${ac_gecode_qt_minor} -lt 2; then ac_gecode_qt_ok="no";
|
893
|
+
fi
|
894
|
+
fi
|
895
|
+
if test "${ac_gecode_qt_ok}" != "yes"; then
|
896
|
+
AC_MSG_ERROR([Your version of Qt is too old. Minimum required: 4.2. Your version: ${ac_gecode_qt_version}.])
|
897
|
+
fi
|
898
|
+
fi
|
899
|
+
|
900
|
+
dnl use qmake to find the Qt installation
|
901
|
+
ac_gecode_qt_tmpdir=`mktemp -d gistqt.XXXXXX` || exit 1
|
902
|
+
cd ${ac_gecode_qt_tmpdir}
|
903
|
+
echo "QT += script" > a.pro
|
904
|
+
qmake
|
905
|
+
if test -d a.xcodeproj; then
|
906
|
+
ac_gecode_qt_makefile=a.xcodeproj/qt_preprocess.mak
|
907
|
+
elif test -f Makefile.Debug; then
|
908
|
+
if test "${enable_debug:-no}" = "no"; then
|
909
|
+
ac_gecode_qt_makefile=Makefile.Release
|
910
|
+
else
|
911
|
+
ac_gecode_qt_makefile=Makefile.Debug
|
912
|
+
fi
|
913
|
+
else
|
914
|
+
ac_gecode_qt_makefile=Makefile
|
915
|
+
fi
|
916
|
+
ac_gecode_qt_defines=`grep ${ac_gecode_qt_makefile} -e 'DEFINES.*=' | sed -e 's/.*=//' -e 's|\\\\|/|g' -e 's|-I\\("*\\)\\.\\./\\.\\.|-I\\1..|g'`
|
917
|
+
ac_gecode_qt_inc=`grep ${ac_gecode_qt_makefile} -e 'INCPATH.*=' | sed -e 's/.*=//' -e 's|\\\\|/|g' -e 's|-I\\("*\\)\\.\\./\\.\\.|-I\\1..|g'`
|
918
|
+
ac_gecode_qt_libs=`grep ${ac_gecode_qt_makefile} -e 'LIBS.*=' | sed -e 's/.*=//' -e 's|\\\\|/|g' -e 's|-I\\("*\\)\\.\\./\\.\\.|-I\\1..|g'`
|
919
|
+
if test -d a.xcodeproj; then
|
920
|
+
ac_gecode_qt_libs="-framework QtScript -framework QtGui -framework QtCore"
|
921
|
+
fi
|
922
|
+
cd ..
|
923
|
+
rm -r ${ac_gecode_qt_tmpdir}
|
924
|
+
AC_SUBST(QTINCLUDES, ${ac_gecode_qt_inc})
|
925
|
+
AC_SUBST(QTDEFINES, ${ac_gecode_qt_defines})
|
926
|
+
AC_SUBST(QTLIBS, ${ac_gecode_qt_libs})
|
927
|
+
else
|
928
|
+
AC_MSG_RESULT(no)
|
929
|
+
fi
|
930
|
+
AC_SUBST(enable_qt, ${enable_qt})
|
931
|
+
])
|
932
|
+
|
933
|
+
dnl Macro:
|
934
|
+
dnl AC_GECODE_GIST
|
935
|
+
dnl
|
936
|
+
dnl Description:
|
937
|
+
dnl Produces the configure switch --enable-gist
|
938
|
+
dnl for compiling the Gecode Interactive Search Tool.
|
939
|
+
dnl
|
940
|
+
dnl Authors:
|
941
|
+
dnl Guido Tack <tack@gecode.org>
|
942
|
+
AC_DEFUN([AC_GECODE_GIST],
|
943
|
+
[
|
944
|
+
AC_ARG_ENABLE([gist],
|
945
|
+
AC_HELP_STRING([--enable-gist],
|
946
|
+
[build Gecode Interactive Search Tool @<:@default=no@:>@]))
|
947
|
+
AC_MSG_CHECKING(whether to build Gist)
|
948
|
+
if test "${enable_gist:-no}" = "yes"; then
|
949
|
+
enable_qt="yes";
|
950
|
+
AC_MSG_RESULT(yes)
|
951
|
+
AC_DEFINE(GECODE_HAS_GIST)
|
952
|
+
else
|
953
|
+
AC_MSG_RESULT(no)
|
954
|
+
fi
|
955
|
+
AC_SUBST(enable_gist, ${enable_gist})
|
956
|
+
])
|