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.
Files changed (1063) hide show
  1. data/CHANGES +7 -0
  2. data/README +10 -1
  3. data/ext/extconf.rb +24 -7
  4. data/ext/gecode-2.1.1/LICENSE +25 -0
  5. data/ext/gecode-2.1.1/Makefile.contribs +86 -0
  6. data/ext/gecode-2.1.1/Makefile.dep +7622 -0
  7. data/ext/gecode-2.1.1/Makefile.in +1568 -0
  8. data/ext/gecode-2.1.1/changelog.in +2459 -0
  9. data/ext/gecode-2.1.1/configure +11631 -0
  10. data/ext/gecode-2.1.1/configure.ac +249 -0
  11. data/ext/gecode-2.1.1/configure.ac.in +245 -0
  12. data/ext/{gecode-1.3.1 → gecode-2.1.1}/contribs/README +0 -0
  13. data/ext/gecode-2.1.1/contribs/qecode/Doxyfile +263 -0
  14. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.cc +82 -0
  15. data/ext/gecode-2.1.1/contribs/qecode/FirstFailValueHeuristic.hh +37 -0
  16. data/ext/gecode-2.1.1/contribs/qecode/Makefile.in.in +162 -0
  17. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.cc +172 -0
  18. data/ext/gecode-2.1.1/contribs/qecode/NaiveValueHeuristics.hh +63 -0
  19. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.cc +37 -0
  20. data/ext/gecode-2.1.1/contribs/qecode/SDFVariableHeuristic.hh +35 -0
  21. data/ext/gecode-2.1.1/contribs/qecode/configure +2264 -0
  22. data/ext/gecode-2.1.1/contribs/qecode/configure.ac +23 -0
  23. data/ext/gecode-2.1.1/contribs/qecode/examples/COMPILING +13 -0
  24. data/ext/gecode-2.1.1/contribs/qecode/examples/MatrixGame.cpp +144 -0
  25. data/ext/gecode-2.1.1/contribs/qecode/examples/NimFibo.cpp +73 -0
  26. data/ext/gecode-2.1.1/contribs/qecode/examples/stress_test.cpp +179 -0
  27. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.cc +34 -0
  28. data/ext/gecode-2.1.1/contribs/qecode/extensivecomparator.hh +46 -0
  29. data/ext/gecode-2.1.1/contribs/qecode/heap.cc +151 -0
  30. data/ext/gecode-2.1.1/contribs/qecode/implicative.cc +595 -0
  31. data/ext/gecode-2.1.1/contribs/qecode/implicative.hh +184 -0
  32. data/ext/gecode-2.1.1/contribs/qecode/myDom.cc +39 -0
  33. data/ext/gecode-2.1.1/contribs/qecode/myspace.cc +69 -0
  34. data/ext/gecode-2.1.1/contribs/qecode/myspace.hh +69 -0
  35. data/ext/gecode-2.1.1/contribs/qecode/qecode.hh +56 -0
  36. data/ext/gecode-2.1.1/contribs/qecode/qecore.cc +145 -0
  37. data/ext/gecode-2.1.1/contribs/qecode/qecore.hh +247 -0
  38. data/ext/gecode-2.1.1/contribs/qecode/qsolver.cc +168 -0
  39. data/ext/gecode-2.1.1/contribs/qecode/qsolver.hh +73 -0
  40. data/ext/gecode-2.1.1/contribs/qecode/shortdesc.ac +1 -0
  41. data/ext/gecode-2.1.1/contribs/qecode/valueHeuristic.hh +91 -0
  42. data/ext/gecode-2.1.1/contribs/qecode/vartype.hh +31 -0
  43. data/ext/gecode-2.1.1/contribs/qecode/warner.cc +101 -0
  44. data/ext/gecode-2.1.1/contribs/qecode/warner.hh +83 -0
  45. data/ext/gecode-2.1.1/doxygen/doxygen.conf.in +1270 -0
  46. data/ext/gecode-2.1.1/doxygen/doxygen.hh.in +1111 -0
  47. data/ext/gecode-2.1.1/doxygen/reflection.hh +417 -0
  48. data/ext/gecode-2.1.1/gecode.m4 +956 -0
  49. data/ext/gecode-2.1.1/gecode/cpltset.hh +797 -0
  50. data/ext/gecode-2.1.1/gecode/cpltset/array.cc +121 -0
  51. data/ext/gecode-2.1.1/gecode/cpltset/array.icc +81 -0
  52. data/ext/gecode-2.1.1/gecode/cpltset/bddmanager.cc +59 -0
  53. data/ext/gecode-2.1.1/gecode/cpltset/bddmanager.icc +448 -0
  54. data/ext/gecode-2.1.1/gecode/cpltset/branch.cc +68 -0
  55. data/ext/gecode-2.1.1/gecode/cpltset/branch.hh +208 -0
  56. data/ext/gecode-2.1.1/gecode/cpltset/branch/select-val.icc +167 -0
  57. data/ext/gecode-2.1.1/gecode/cpltset/branch/select-view.icc +143 -0
  58. data/ext/gecode-2.1.1/gecode/cpltset/constraints/atmost.cc +472 -0
  59. data/ext/gecode-2.1.1/gecode/cpltset/constraints/cardinality.cc +69 -0
  60. data/ext/gecode-2.1.1/gecode/cpltset/constraints/distinct.cc +83 -0
  61. data/ext/gecode-2.1.1/gecode/cpltset/constraints/dom.cc +147 -0
  62. data/ext/gecode-2.1.1/gecode/cpltset/constraints/partition.cc +383 -0
  63. data/ext/gecode-2.1.1/gecode/cpltset/constraints/rangeroots.cc +466 -0
  64. data/ext/gecode-2.1.1/gecode/cpltset/constraints/rel.cc +530 -0
  65. data/ext/gecode-2.1.1/gecode/cpltset/constraints/select.cc +126 -0
  66. data/ext/gecode-2.1.1/gecode/cpltset/constraints/singleton.cc +55 -0
  67. data/ext/gecode-2.1.1/gecode/cpltset/exception.icc +172 -0
  68. data/ext/gecode-2.1.1/gecode/cpltset/propagators.hh +335 -0
  69. data/ext/gecode-2.1.1/gecode/cpltset/propagators/binary.icc +260 -0
  70. data/ext/gecode-2.1.1/gecode/cpltset/propagators/nary.icc +210 -0
  71. data/ext/gecode-2.1.1/gecode/cpltset/propagators/naryone.icc +165 -0
  72. data/ext/gecode-2.1.1/gecode/cpltset/propagators/narytwo.icc +191 -0
  73. data/ext/gecode-2.1.1/gecode/cpltset/propagators/singleton.icc +130 -0
  74. data/ext/gecode-2.1.1/gecode/cpltset/propagators/unary.icc +132 -0
  75. data/ext/gecode-2.1.1/gecode/cpltset/support.cc +673 -0
  76. data/ext/gecode-2.1.1/gecode/cpltset/support.icc +696 -0
  77. data/ext/gecode-2.1.1/gecode/cpltset/var-imp.icc +487 -0
  78. data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.cc +926 -0
  79. data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.icc +687 -0
  80. data/ext/gecode-2.1.1/gecode/cpltset/var-imp/cpltset.vis +86 -0
  81. data/ext/gecode-2.1.1/gecode/cpltset/var/cpltset.cc +101 -0
  82. data/ext/gecode-2.1.1/gecode/cpltset/var/cpltset.icc +219 -0
  83. data/ext/gecode-2.1.1/gecode/cpltset/view.icc +231 -0
  84. data/ext/gecode-2.1.1/gecode/cpltset/view/cpltset.icc +420 -0
  85. data/ext/gecode-2.1.1/gecode/cpltset/view/print.cc +166 -0
  86. data/ext/gecode-2.1.1/gecode/gist.hh +162 -0
  87. data/ext/gecode-2.1.1/gecode/gist/addchild.cc +191 -0
  88. data/ext/gecode-2.1.1/gecode/gist/addchild.hh +76 -0
  89. data/ext/gecode-2.1.1/gecode/gist/addvisualisationdialog.cc +139 -0
  90. data/ext/gecode-2.1.1/gecode/gist/addvisualisationdialog.hh +78 -0
  91. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.cc +115 -0
  92. data/ext/gecode-2.1.1/gecode/gist/analysiscursor.hh +77 -0
  93. data/ext/gecode-2.1.1/gecode/gist/better.hh +59 -0
  94. data/ext/gecode-2.1.1/gecode/gist/config.cc +61 -0
  95. data/ext/gecode-2.1.1/gecode/gist/config.hh +62 -0
  96. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.cc +245 -0
  97. data/ext/gecode-2.1.1/gecode/gist/drawingcursor.hh +101 -0
  98. data/ext/gecode-2.1.1/gecode/gist/gecodelogo.icc +522 -0
  99. data/ext/gecode-2.1.1/gecode/gist/gist.cc +129 -0
  100. data/ext/gecode-2.1.1/gecode/gist/gist.icc +76 -0
  101. data/ext/gecode-2.1.1/gecode/gist/mainwindow.cc +254 -0
  102. data/ext/gecode-2.1.1/gecode/gist/mainwindow.hh +86 -0
  103. data/ext/gecode-2.1.1/gecode/gist/node.cc +100 -0
  104. data/ext/gecode-2.1.1/gecode/gist/node.hh +89 -0
  105. data/ext/gecode-2.1.1/gecode/gist/nodecursor.cc +124 -0
  106. data/ext/gecode-2.1.1/gecode/gist/nodecursor.hh +122 -0
  107. data/ext/gecode-2.1.1/gecode/gist/nodecursor.icc +79 -0
  108. data/ext/gecode-2.1.1/gecode/gist/nodevisitor.hh +91 -0
  109. data/ext/gecode-2.1.1/gecode/gist/nodevisitor.icc +112 -0
  110. data/ext/gecode-2.1.1/gecode/gist/postscript.cc +543 -0
  111. data/ext/gecode-2.1.1/gecode/gist/postscript.hh +56 -0
  112. data/ext/gecode-2.1.1/gecode/gist/preferences.cc +110 -0
  113. data/ext/gecode-2.1.1/gecode/gist/preferences.hh +76 -0
  114. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.cc +55 -0
  115. data/ext/gecode-2.1.1/gecode/gist/reflectionhelpers.hh +58 -0
  116. data/ext/gecode-2.1.1/gecode/gist/shapelist.cc +331 -0
  117. data/ext/gecode-2.1.1/gecode/gist/shapelist.hh +140 -0
  118. data/ext/gecode-2.1.1/gecode/gist/spacenode.cc +531 -0
  119. data/ext/gecode-2.1.1/gecode/gist/spacenode.hh +224 -0
  120. data/ext/gecode-2.1.1/gecode/gist/test.cc +78 -0
  121. data/ext/gecode-2.1.1/gecode/gist/textoutput.cc +114 -0
  122. data/ext/gecode-2.1.1/gecode/gist/textoutput.hh +67 -0
  123. data/ext/gecode-2.1.1/gecode/gist/treecanvas.cc +1140 -0
  124. data/ext/gecode-2.1.1/gecode/gist/treecanvas.hh +324 -0
  125. data/ext/gecode-2.1.1/gecode/gist/ui_addchild.hh +163 -0
  126. data/ext/gecode-2.1.1/gecode/gist/ui_addvisualisationdialog.hh +163 -0
  127. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.cc +175 -0
  128. data/ext/gecode-2.1.1/gecode/gist/visualisation/intvaritem.hh +71 -0
  129. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.cc +219 -0
  130. data/ext/gecode-2.1.1/gecode/gist/visualisation/setvaritem.hh +73 -0
  131. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayitem.hh +123 -0
  132. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayview.cc +146 -0
  133. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayview.hh +96 -0
  134. data/ext/gecode-2.1.1/gecode/gist/visualisation/vararrayviewt.hh +105 -0
  135. data/ext/gecode-2.1.1/gecode/gist/visualisation/varitem.cc +68 -0
  136. data/ext/gecode-2.1.1/gecode/gist/visualisation/varitem.hh +67 -0
  137. data/ext/gecode-2.1.1/gecode/gist/visualnode.cc +303 -0
  138. data/ext/gecode-2.1.1/gecode/gist/visualnode.hh +166 -0
  139. data/ext/gecode-2.1.1/gecode/int.hh +2035 -0
  140. data/ext/gecode-2.1.1/gecode/int/arithmetic.cc +136 -0
  141. data/ext/gecode-2.1.1/gecode/int/arithmetic.hh +440 -0
  142. data/ext/gecode-2.1.1/gecode/int/arithmetic/abs.icc +279 -0
  143. data/ext/gecode-2.1.1/gecode/int/arithmetic/max.icc +253 -0
  144. data/ext/gecode-2.1.1/gecode/int/arithmetic/mult.icc +522 -0
  145. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqr.icc +218 -0
  146. data/ext/gecode-2.1.1/gecode/int/arithmetic/sqrt.icc +138 -0
  147. data/ext/gecode-2.1.1/gecode/int/array.cc +74 -0
  148. data/ext/gecode-2.1.1/gecode/int/array.icc +115 -0
  149. data/ext/gecode-2.1.1/gecode/int/bool.cc +642 -0
  150. data/ext/gecode-2.1.1/gecode/int/bool.hh +487 -0
  151. data/ext/gecode-2.1.1/gecode/int/bool/base.icc +156 -0
  152. data/ext/gecode-2.1.1/gecode/int/bool/eq.icc +239 -0
  153. data/ext/gecode-2.1.1/gecode/int/bool/eqv.icc +179 -0
  154. data/ext/gecode-2.1.1/gecode/int/bool/lq.icc +147 -0
  155. data/ext/gecode-2.1.1/gecode/int/bool/or.icc +1000 -0
  156. data/ext/gecode-2.1.1/gecode/int/branch.cc +301 -0
  157. data/ext/gecode-2.1.1/gecode/int/branch.hh +576 -0
  158. data/ext/gecode-2.1.1/gecode/int/branch/select-val.icc +338 -0
  159. data/ext/gecode-2.1.1/gecode/int/branch/select-view.icc +421 -0
  160. data/ext/gecode-2.1.1/gecode/int/channel.cc +114 -0
  161. data/ext/gecode-2.1.1/gecode/int/channel.hh +259 -0
  162. data/ext/gecode-2.1.1/gecode/int/channel/base.icc +86 -0
  163. data/ext/gecode-2.1.1/gecode/int/channel/dom.icc +347 -0
  164. data/ext/gecode-2.1.1/gecode/int/channel/link-multi.cc +231 -0
  165. data/ext/gecode-2.1.1/gecode/int/channel/link-multi.icc +70 -0
  166. data/ext/gecode-2.1.1/gecode/int/channel/link-single.cc +97 -0
  167. data/ext/gecode-2.1.1/gecode/int/channel/link-single.icc +71 -0
  168. data/ext/gecode-2.1.1/gecode/int/channel/val.icc +276 -0
  169. data/ext/gecode-2.1.1/gecode/int/circuit.cc +63 -0
  170. data/ext/gecode-2.1.1/gecode/int/circuit.hh +175 -0
  171. data/ext/gecode-2.1.1/gecode/int/circuit/base.icc +271 -0
  172. data/ext/gecode-2.1.1/gecode/int/circuit/dom.icc +146 -0
  173. data/ext/gecode-2.1.1/gecode/int/circuit/val.icc +122 -0
  174. data/ext/gecode-2.1.1/gecode/int/count.cc +310 -0
  175. data/ext/gecode-2.1.1/gecode/int/count.hh +487 -0
  176. data/ext/gecode-2.1.1/gecode/int/count/int.icc +619 -0
  177. data/ext/gecode-2.1.1/gecode/int/count/rel.icc +144 -0
  178. data/ext/gecode-2.1.1/gecode/int/count/view.icc +449 -0
  179. data/ext/gecode-2.1.1/gecode/int/cumulatives.cc +226 -0
  180. data/ext/gecode-2.1.1/gecode/int/cumulatives.hh +141 -0
  181. data/ext/gecode-2.1.1/gecode/int/cumulatives/val.icc +429 -0
  182. data/ext/gecode-2.1.1/gecode/int/distinct.cc +108 -0
  183. data/ext/gecode-2.1.1/gecode/int/distinct.hh +341 -0
  184. data/ext/gecode-2.1.1/gecode/int/distinct/bilink.icc +89 -0
  185. data/ext/gecode-2.1.1/gecode/int/distinct/bnd.icc +378 -0
  186. data/ext/gecode-2.1.1/gecode/int/distinct/combptr.icc +78 -0
  187. data/ext/gecode-2.1.1/gecode/int/distinct/dom.icc +750 -0
  188. data/ext/gecode-2.1.1/gecode/int/distinct/edge.icc +118 -0
  189. data/ext/gecode-2.1.1/gecode/int/distinct/node.icc +147 -0
  190. data/ext/gecode-2.1.1/gecode/int/distinct/ter-dom.icc +136 -0
  191. data/ext/gecode-2.1.1/gecode/int/distinct/val.icc +209 -0
  192. data/ext/gecode-2.1.1/gecode/int/dom.cc +116 -0
  193. data/ext/gecode-2.1.1/gecode/int/dom.hh +134 -0
  194. data/ext/gecode-2.1.1/gecode/int/dom/range.icc +129 -0
  195. data/ext/gecode-2.1.1/gecode/int/dom/spec.icc +151 -0
  196. data/ext/gecode-2.1.1/gecode/int/element.cc +156 -0
  197. data/ext/gecode-2.1.1/gecode/int/element.hh +239 -0
  198. data/ext/gecode-2.1.1/gecode/int/element/int.icc +441 -0
  199. data/ext/gecode-2.1.1/gecode/int/element/view.icc +584 -0
  200. data/ext/gecode-2.1.1/gecode/int/exception.icc +163 -0
  201. data/ext/gecode-2.1.1/gecode/int/extensional.cc +138 -0
  202. data/ext/gecode-2.1.1/gecode/int/extensional.hh +415 -0
  203. data/ext/gecode-2.1.1/gecode/int/extensional/base.icc +160 -0
  204. data/ext/gecode-2.1.1/gecode/int/extensional/basic.icc +166 -0
  205. data/ext/gecode-2.1.1/gecode/int/extensional/bitset.icc +113 -0
  206. data/ext/gecode-2.1.1/gecode/int/extensional/dfa.cc +565 -0
  207. data/ext/gecode-2.1.1/gecode/int/extensional/dfa.icc +241 -0
  208. data/ext/gecode-2.1.1/gecode/int/extensional/incremental.icc +393 -0
  209. data/ext/gecode-2.1.1/gecode/int/extensional/layered-graph.icc +604 -0
  210. data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.cc +311 -0
  211. data/ext/gecode-2.1.1/gecode/int/extensional/tuple-set.icc +207 -0
  212. data/ext/gecode-2.1.1/gecode/int/gcc.cc +374 -0
  213. data/ext/gecode-2.1.1/gecode/int/gcc.hh +329 -0
  214. data/ext/gecode-2.1.1/gecode/int/gcc/bnd.icc +660 -0
  215. data/ext/gecode-2.1.1/gecode/int/gcc/dom.icc +531 -0
  216. data/ext/gecode-2.1.1/gecode/int/gcc/gccbndsup.icc +780 -0
  217. data/ext/gecode-2.1.1/gecode/int/gcc/graphsup.icc +2422 -0
  218. data/ext/gecode-2.1.1/gecode/int/gcc/lbc.icc +391 -0
  219. data/ext/gecode-2.1.1/gecode/int/gcc/occur.icc +829 -0
  220. data/ext/gecode-2.1.1/gecode/int/gcc/ubc.icc +255 -0
  221. data/ext/gecode-2.1.1/gecode/int/gcc/val.icc +400 -0
  222. data/ext/gecode-2.1.1/gecode/int/int-set.cc +153 -0
  223. data/ext/gecode-2.1.1/gecode/int/int-set.icc +191 -0
  224. data/ext/gecode-2.1.1/gecode/int/limits.icc +54 -0
  225. data/ext/gecode-2.1.1/gecode/int/linear-bool.cc +220 -0
  226. data/ext/gecode-2.1.1/gecode/int/linear-int.cc +240 -0
  227. data/ext/gecode-2.1.1/gecode/int/linear.hh +1849 -0
  228. data/ext/gecode-2.1.1/gecode/int/linear/bool-int.icc +791 -0
  229. data/ext/gecode-2.1.1/gecode/int/linear/bool-post.cc +433 -0
  230. data/ext/gecode-2.1.1/gecode/int/linear/bool-scale.icc +854 -0
  231. data/ext/gecode-2.1.1/gecode/int/linear/bool-view.icc +399 -0
  232. data/ext/gecode-2.1.1/gecode/int/linear/int-bin.icc +605 -0
  233. data/ext/gecode-2.1.1/gecode/int/linear/int-dom.icc +539 -0
  234. data/ext/gecode-2.1.1/gecode/int/linear/int-nary.icc +1004 -0
  235. data/ext/gecode-2.1.1/gecode/int/linear/int-noview.icc +385 -0
  236. data/ext/gecode-2.1.1/gecode/int/linear/int-post.cc +493 -0
  237. data/ext/gecode-2.1.1/gecode/int/linear/int-ter.icc +357 -0
  238. data/ext/gecode-2.1.1/gecode/int/linear/post.icc +146 -0
  239. data/ext/gecode-2.1.1/gecode/int/propagator.icc +240 -0
  240. data/ext/gecode-2.1.1/gecode/int/rel.cc +431 -0
  241. data/ext/gecode-2.1.1/gecode/int/rel.hh +657 -0
  242. data/ext/gecode-2.1.1/gecode/int/rel/eq.icc +848 -0
  243. data/ext/gecode-2.1.1/gecode/int/rel/lex.icc +248 -0
  244. data/ext/gecode-2.1.1/gecode/int/rel/lq-le.icc +352 -0
  245. data/ext/gecode-2.1.1/gecode/int/rel/nq.icc +269 -0
  246. data/ext/gecode-2.1.1/gecode/int/sorted.cc +91 -0
  247. data/ext/gecode-2.1.1/gecode/int/sorted.hh +117 -0
  248. data/ext/gecode-2.1.1/gecode/int/sorted/matching.icc +182 -0
  249. data/ext/gecode-2.1.1/gecode/int/sorted/narrowing.icc +257 -0
  250. data/ext/gecode-2.1.1/gecode/int/sorted/order.icc +208 -0
  251. data/ext/gecode-2.1.1/gecode/int/sorted/propagate.icc +669 -0
  252. data/ext/gecode-2.1.1/gecode/int/sorted/sortsup.icc +596 -0
  253. data/ext/gecode-2.1.1/gecode/int/unshare.cc +148 -0
  254. data/ext/gecode-2.1.1/gecode/int/var-imp.icc +745 -0
  255. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.cc +104 -0
  256. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.icc +423 -0
  257. data/ext/gecode-2.1.1/gecode/int/var-imp/bool.vis +69 -0
  258. data/ext/gecode-2.1.1/gecode/int/var-imp/delta.icc +64 -0
  259. data/ext/gecode-2.1.1/gecode/int/var-imp/int.cc +407 -0
  260. data/ext/gecode-2.1.1/gecode/int/var-imp/int.icc +1004 -0
  261. data/ext/gecode-2.1.1/gecode/int/var-imp/int.vis +195 -0
  262. data/ext/gecode-2.1.1/gecode/int/var/bool.cc +72 -0
  263. data/ext/gecode-2.1.1/gecode/int/var/bool.icc +126 -0
  264. data/ext/gecode-2.1.1/gecode/int/var/int.cc +79 -0
  265. data/ext/gecode-2.1.1/gecode/int/var/int.icc +151 -0
  266. data/ext/gecode-2.1.1/gecode/int/view.icc +1894 -0
  267. data/ext/gecode-2.1.1/gecode/int/view/bool.icc +598 -0
  268. data/ext/gecode-2.1.1/gecode/int/view/constint.icc +392 -0
  269. data/ext/gecode-2.1.1/gecode/int/view/int.icc +301 -0
  270. data/ext/gecode-2.1.1/gecode/int/view/iter.icc +65 -0
  271. data/ext/gecode-2.1.1/gecode/int/view/minus.icc +372 -0
  272. data/ext/gecode-2.1.1/gecode/int/view/offset.icc +362 -0
  273. data/ext/gecode-2.1.1/gecode/int/view/print.cc +133 -0
  274. data/ext/gecode-2.1.1/gecode/int/view/rtest.icc +231 -0
  275. data/ext/gecode-2.1.1/gecode/int/view/scale.icc +456 -0
  276. data/ext/gecode-2.1.1/gecode/int/view/zero.icc +384 -0
  277. data/ext/gecode-2.1.1/gecode/iter.hh +90 -0
  278. data/ext/gecode-2.1.1/gecode/iter/ranges-add.icc +144 -0
  279. data/ext/gecode-2.1.1/gecode/iter/ranges-append.icc +222 -0
  280. data/ext/gecode-2.1.1/gecode/iter/ranges-array.icc +138 -0
  281. data/ext/gecode-2.1.1/gecode/iter/ranges-cache.icc +337 -0
  282. data/ext/gecode-2.1.1/gecode/iter/ranges-compl.icc +220 -0
  283. data/ext/gecode-2.1.1/gecode/iter/ranges-diff.icc +142 -0
  284. data/ext/gecode-2.1.1/gecode/iter/ranges-empty.icc +111 -0
  285. data/ext/gecode-2.1.1/gecode/iter/ranges-inter.icc +216 -0
  286. data/ext/gecode-2.1.1/gecode/iter/ranges-minmax.icc +118 -0
  287. data/ext/gecode-2.1.1/gecode/iter/ranges-minus.icc +150 -0
  288. data/ext/gecode-2.1.1/gecode/iter/ranges-offset.icc +127 -0
  289. data/ext/gecode-2.1.1/gecode/iter/ranges-operations.icc +157 -0
  290. data/ext/gecode-2.1.1/gecode/iter/ranges-scale.icc +238 -0
  291. data/ext/gecode-2.1.1/gecode/iter/ranges-singleton-append.icc +111 -0
  292. data/ext/gecode-2.1.1/gecode/iter/ranges-singleton.icc +86 -0
  293. data/ext/gecode-2.1.1/gecode/iter/ranges-size.icc +146 -0
  294. data/ext/gecode-2.1.1/gecode/iter/ranges-union.icc +224 -0
  295. data/ext/gecode-2.1.1/gecode/iter/ranges-values.icc +140 -0
  296. data/ext/gecode-2.1.1/gecode/iter/values-array.icc +119 -0
  297. data/ext/gecode-2.1.1/gecode/iter/values-minus.icc +130 -0
  298. data/ext/gecode-2.1.1/gecode/iter/values-offset.icc +113 -0
  299. data/ext/gecode-2.1.1/gecode/iter/values-ranges.icc +106 -0
  300. data/ext/gecode-2.1.1/gecode/iter/values-singleton.icc +109 -0
  301. data/ext/gecode-2.1.1/gecode/iter/values-unique.icc +118 -0
  302. data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-compl.icc +261 -0
  303. data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-inter.icc +241 -0
  304. data/ext/gecode-2.1.1/gecode/iter/virtual-ranges-union.icc +249 -0
  305. data/ext/gecode-2.1.1/gecode/iter/virtual-ranges.icc +140 -0
  306. data/ext/gecode-2.1.1/gecode/kernel.hh +182 -0
  307. data/ext/gecode-2.1.1/gecode/kernel/advisor.icc +104 -0
  308. data/ext/gecode-2.1.1/gecode/kernel/array.icc +1232 -0
  309. data/ext/gecode-2.1.1/gecode/kernel/branching.icc +447 -0
  310. data/ext/gecode-2.1.1/gecode/kernel/core.cc +473 -0
  311. data/ext/gecode-2.1.1/gecode/kernel/core.icc +2295 -0
  312. data/ext/gecode-2.1.1/gecode/kernel/exception.icc +101 -0
  313. data/ext/gecode-2.1.1/gecode/kernel/macros.icc +117 -0
  314. data/ext/gecode-2.1.1/gecode/kernel/memory-manager.cc +57 -0
  315. data/ext/gecode-2.1.1/gecode/kernel/memory-manager.icc +458 -0
  316. data/ext/gecode-2.1.1/gecode/kernel/modevent.icc +69 -0
  317. data/ext/gecode-2.1.1/gecode/kernel/propagator.icc +845 -0
  318. data/ext/gecode-2.1.1/gecode/kernel/reflection.cc +921 -0
  319. data/ext/gecode-2.1.1/gecode/kernel/reflection.icc +1012 -0
  320. data/ext/gecode-2.1.1/gecode/kernel/shared-array.icc +286 -0
  321. data/ext/gecode-2.1.1/gecode/kernel/var-imp.icc +433 -0
  322. data/ext/gecode-2.1.1/gecode/kernel/var-map.cc +269 -0
  323. data/ext/gecode-2.1.1/gecode/kernel/var-map.icc +227 -0
  324. data/ext/gecode-2.1.1/gecode/kernel/var-traits.icc +72 -0
  325. data/ext/gecode-2.1.1/gecode/kernel/var-type.cc +68 -0
  326. data/ext/gecode-2.1.1/gecode/kernel/var-type.icc +915 -0
  327. data/ext/gecode-2.1.1/gecode/kernel/var.icc +120 -0
  328. data/ext/gecode-2.1.1/gecode/kernel/view.icc +611 -0
  329. data/ext/gecode-2.1.1/gecode/minimodel.hh +1165 -0
  330. data/ext/gecode-2.1.1/gecode/minimodel/arithmetic.cc +179 -0
  331. data/ext/gecode-2.1.1/gecode/minimodel/bool-expr.cc +327 -0
  332. data/ext/gecode-2.1.1/gecode/minimodel/bool-expr.icc +131 -0
  333. data/ext/gecode-2.1.1/gecode/minimodel/bool-rel.icc +83 -0
  334. data/ext/gecode-2.1.1/gecode/minimodel/exception.icc +84 -0
  335. data/ext/gecode-2.1.1/gecode/minimodel/lin-expr.icc +374 -0
  336. data/ext/gecode-2.1.1/gecode/minimodel/lin-rel.icc +324 -0
  337. data/ext/gecode-2.1.1/gecode/minimodel/matrix.icc +144 -0
  338. data/ext/gecode-2.1.1/gecode/minimodel/reg.cc +823 -0
  339. data/ext/gecode-2.1.1/gecode/search.hh +752 -0
  340. data/ext/gecode-2.1.1/gecode/search/bab.cc +169 -0
  341. data/ext/gecode-2.1.1/gecode/search/bab.icc +117 -0
  342. data/ext/gecode-2.1.1/gecode/search/dfs.cc +79 -0
  343. data/ext/gecode-2.1.1/gecode/search/dfs.icc +169 -0
  344. data/ext/gecode-2.1.1/gecode/search/engine-ctrl.icc +131 -0
  345. data/ext/gecode-2.1.1/gecode/search/lds.cc +265 -0
  346. data/ext/gecode-2.1.1/gecode/search/lds.icc +73 -0
  347. data/ext/gecode-2.1.1/gecode/search/options.cc +46 -0
  348. data/ext/gecode-2.1.1/gecode/search/options.icc +46 -0
  349. data/ext/gecode-2.1.1/gecode/search/reco-stack.icc +237 -0
  350. data/ext/gecode-2.1.1/gecode/search/restart.icc +99 -0
  351. data/ext/gecode-2.1.1/gecode/search/statistics.icc +46 -0
  352. data/ext/gecode-2.1.1/gecode/search/stop.cc +74 -0
  353. data/ext/gecode-2.1.1/gecode/search/stop.icc +116 -0
  354. data/ext/gecode-2.1.1/gecode/serialization.hh +149 -0
  355. data/ext/gecode-2.1.1/gecode/serialization/boost.cc +78 -0
  356. data/ext/gecode-2.1.1/gecode/serialization/boost.icc +381 -0
  357. data/ext/gecode-2.1.1/gecode/serialization/flatzinc.cc +372 -0
  358. data/ext/gecode-2.1.1/gecode/serialization/javascript.cc +340 -0
  359. data/ext/gecode-2.1.1/gecode/serialization/javascript.hh +69 -0
  360. data/ext/gecode-2.1.1/gecode/serialization/register.cc +8142 -0
  361. data/ext/gecode-2.1.1/gecode/set.hh +970 -0
  362. data/ext/gecode-2.1.1/gecode/set/array.cc +114 -0
  363. data/ext/gecode-2.1.1/gecode/set/array.icc +77 -0
  364. data/ext/gecode-2.1.1/gecode/set/branch.cc +78 -0
  365. data/ext/gecode-2.1.1/gecode/set/branch.hh +213 -0
  366. data/ext/gecode-2.1.1/gecode/set/branch/select-val.icc +132 -0
  367. data/ext/gecode-2.1.1/gecode/set/branch/select-view.icc +148 -0
  368. data/ext/gecode-2.1.1/gecode/set/cardinality.cc +65 -0
  369. data/ext/gecode-2.1.1/gecode/set/convex.cc +59 -0
  370. data/ext/gecode-2.1.1/gecode/set/convex.hh +126 -0
  371. data/ext/gecode-2.1.1/gecode/set/convex/conv.cc +118 -0
  372. data/ext/gecode-2.1.1/gecode/set/convex/conv.icc +67 -0
  373. data/ext/gecode-2.1.1/gecode/set/convex/hull.cc +140 -0
  374. data/ext/gecode-2.1.1/gecode/set/convex/hull.icc +68 -0
  375. data/ext/gecode-2.1.1/gecode/set/distinct.cc +56 -0
  376. data/ext/gecode-2.1.1/gecode/set/distinct.hh +90 -0
  377. data/ext/gecode-2.1.1/gecode/set/distinct/atmostOne.cc +192 -0
  378. data/ext/gecode-2.1.1/gecode/set/distinct/atmostOne.icc +66 -0
  379. data/ext/gecode-2.1.1/gecode/set/dom.cc +232 -0
  380. data/ext/gecode-2.1.1/gecode/set/exception.icc +135 -0
  381. data/ext/gecode-2.1.1/gecode/set/int.cc +177 -0
  382. data/ext/gecode-2.1.1/gecode/set/int.hh +391 -0
  383. data/ext/gecode-2.1.1/gecode/set/int/card.icc +116 -0
  384. data/ext/gecode-2.1.1/gecode/set/int/channel-bool.icc +303 -0
  385. data/ext/gecode-2.1.1/gecode/set/int/channel-int.icc +174 -0
  386. data/ext/gecode-2.1.1/gecode/set/int/match.icc +224 -0
  387. data/ext/gecode-2.1.1/gecode/set/int/minmax.icc +228 -0
  388. data/ext/gecode-2.1.1/gecode/set/int/weights.icc +370 -0
  389. data/ext/gecode-2.1.1/gecode/set/limits.icc +62 -0
  390. data/ext/gecode-2.1.1/gecode/set/projectors-compiler.hh +164 -0
  391. data/ext/gecode-2.1.1/gecode/set/projectors.cc +143 -0
  392. data/ext/gecode-2.1.1/gecode/set/projectors.hh +438 -0
  393. data/ext/gecode-2.1.1/gecode/set/projectors/compiler.cc +859 -0
  394. data/ext/gecode-2.1.1/gecode/set/projectors/formula.cc +312 -0
  395. data/ext/gecode-2.1.1/gecode/set/projectors/formula.icc +66 -0
  396. data/ext/gecode-2.1.1/gecode/set/projectors/projector-set.cc +91 -0
  397. data/ext/gecode-2.1.1/gecode/set/projectors/projector-set.icc +85 -0
  398. data/ext/gecode-2.1.1/gecode/set/projectors/projector.cc +147 -0
  399. data/ext/gecode-2.1.1/gecode/set/projectors/projector.icc +98 -0
  400. data/ext/gecode-2.1.1/gecode/set/projectors/propagator.hh +168 -0
  401. data/ext/gecode-2.1.1/gecode/set/projectors/propagator/card.icc +128 -0
  402. data/ext/gecode-2.1.1/gecode/set/projectors/propagator/nary.icc +144 -0
  403. data/ext/gecode-2.1.1/gecode/set/projectors/propagator/re-nary.cc +100 -0
  404. data/ext/gecode-2.1.1/gecode/set/projectors/propagator/re-nary.icc +71 -0
  405. data/ext/gecode-2.1.1/gecode/set/projectors/set-expr.cc +339 -0
  406. data/ext/gecode-2.1.1/gecode/set/projectors/set-expr.icc +237 -0
  407. data/ext/gecode-2.1.1/gecode/set/propagator.icc +125 -0
  408. data/ext/gecode-2.1.1/gecode/set/rel-op-const.cc +332 -0
  409. data/ext/gecode-2.1.1/gecode/set/rel-op.cc +197 -0
  410. data/ext/gecode-2.1.1/gecode/set/rel-op.hh +353 -0
  411. data/ext/gecode-2.1.1/gecode/set/rel-op/common.icc +557 -0
  412. data/ext/gecode-2.1.1/gecode/set/rel-op/inter.icc +409 -0
  413. data/ext/gecode-2.1.1/gecode/set/rel-op/partition.icc +202 -0
  414. data/ext/gecode-2.1.1/gecode/set/rel-op/post.icc +223 -0
  415. data/ext/gecode-2.1.1/gecode/set/rel-op/subofunion.icc +192 -0
  416. data/ext/gecode-2.1.1/gecode/set/rel-op/superofinter.icc +193 -0
  417. data/ext/gecode-2.1.1/gecode/set/rel-op/union.icc +383 -0
  418. data/ext/gecode-2.1.1/gecode/set/rel.cc +258 -0
  419. data/ext/gecode-2.1.1/gecode/set/rel.hh +321 -0
  420. data/ext/gecode-2.1.1/gecode/set/rel/common.icc +125 -0
  421. data/ext/gecode-2.1.1/gecode/set/rel/eq.icc +139 -0
  422. data/ext/gecode-2.1.1/gecode/set/rel/nosubset.icc +128 -0
  423. data/ext/gecode-2.1.1/gecode/set/rel/nq.icc +208 -0
  424. data/ext/gecode-2.1.1/gecode/set/rel/re-eq.icc +179 -0
  425. data/ext/gecode-2.1.1/gecode/set/rel/re-subset.icc +172 -0
  426. data/ext/gecode-2.1.1/gecode/set/rel/subset.icc +119 -0
  427. data/ext/gecode-2.1.1/gecode/set/select.cc +135 -0
  428. data/ext/gecode-2.1.1/gecode/set/select.hh +233 -0
  429. data/ext/gecode-2.1.1/gecode/set/select/disjoint.cc +308 -0
  430. data/ext/gecode-2.1.1/gecode/set/select/disjoint.icc +75 -0
  431. data/ext/gecode-2.1.1/gecode/set/select/idxarray.hh +113 -0
  432. data/ext/gecode-2.1.1/gecode/set/select/idxarray.icc +155 -0
  433. data/ext/gecode-2.1.1/gecode/set/select/inter.icc +349 -0
  434. data/ext/gecode-2.1.1/gecode/set/select/union.icc +371 -0
  435. data/ext/gecode-2.1.1/gecode/set/select/unionConst.icc +334 -0
  436. data/ext/gecode-2.1.1/gecode/set/sequence.cc +69 -0
  437. data/ext/gecode-2.1.1/gecode/set/sequence.hh +134 -0
  438. data/ext/gecode-2.1.1/gecode/set/sequence/common.icc +99 -0
  439. data/ext/gecode-2.1.1/gecode/set/sequence/seq-u.cc +176 -0
  440. data/ext/gecode-2.1.1/gecode/set/sequence/seq-u.icc +79 -0
  441. data/ext/gecode-2.1.1/gecode/set/sequence/seq.cc +94 -0
  442. data/ext/gecode-2.1.1/gecode/set/sequence/seq.icc +69 -0
  443. data/ext/gecode-2.1.1/gecode/set/var-imp.icc +737 -0
  444. data/ext/gecode-2.1.1/gecode/set/var-imp/delta.icc +78 -0
  445. data/ext/gecode-2.1.1/gecode/set/var-imp/integerset.cc +349 -0
  446. data/ext/gecode-2.1.1/gecode/set/var-imp/integerset.icc +484 -0
  447. data/ext/gecode-2.1.1/gecode/set/var-imp/iter.icc +63 -0
  448. data/ext/gecode-2.1.1/gecode/set/var-imp/set.cc +214 -0
  449. data/ext/gecode-2.1.1/gecode/set/var-imp/set.icc +532 -0
  450. data/ext/gecode-2.1.1/gecode/set/var-imp/set.vis +190 -0
  451. data/ext/gecode-2.1.1/gecode/set/var/set.cc +105 -0
  452. data/ext/gecode-2.1.1/gecode/set/var/set.icc +303 -0
  453. data/ext/gecode-2.1.1/gecode/set/view.icc +1503 -0
  454. data/ext/gecode-2.1.1/gecode/set/view/complement.icc +629 -0
  455. data/ext/gecode-2.1.1/gecode/set/view/const.icc +907 -0
  456. data/ext/gecode-2.1.1/gecode/set/view/offset.icc +497 -0
  457. data/ext/gecode-2.1.1/gecode/set/view/print.cc +141 -0
  458. data/ext/gecode-2.1.1/gecode/set/view/set.icc +275 -0
  459. data/ext/gecode-2.1.1/gecode/set/view/singleton.icc +438 -0
  460. data/ext/gecode-2.1.1/gecode/support.hh +110 -0
  461. data/ext/gecode-2.1.1/gecode/support/block-allocator.icc +158 -0
  462. data/ext/gecode-2.1.1/gecode/support/buddy/AUTHORS +11 -0
  463. data/ext/gecode-2.1.1/gecode/support/buddy/ChangeLog +218 -0
  464. data/ext/gecode-2.1.1/gecode/support/buddy/NEWS +200 -0
  465. data/ext/gecode-2.1.1/gecode/support/buddy/README +128 -0
  466. data/ext/gecode-2.1.1/gecode/support/buddy/bdd.h +939 -0
  467. data/ext/gecode-2.1.1/gecode/support/buddy/bddio.c +596 -0
  468. data/ext/gecode-2.1.1/gecode/support/buddy/bddop.c +2848 -0
  469. data/ext/gecode-2.1.1/gecode/support/buddy/bddtree.h +62 -0
  470. data/ext/gecode-2.1.1/gecode/support/buddy/bvec.c +1354 -0
  471. data/ext/gecode-2.1.1/gecode/support/buddy/bvec.h +298 -0
  472. data/ext/gecode-2.1.1/gecode/support/buddy/cache.c +104 -0
  473. data/ext/gecode-2.1.1/gecode/support/buddy/cache.h +72 -0
  474. data/ext/gecode-2.1.1/gecode/support/buddy/config.h +20 -0
  475. data/ext/gecode-2.1.1/gecode/support/buddy/cppext.cc +626 -0
  476. data/ext/gecode-2.1.1/gecode/support/buddy/fdd.c +1079 -0
  477. data/ext/gecode-2.1.1/gecode/support/buddy/fdd.h +175 -0
  478. data/ext/gecode-2.1.1/gecode/support/buddy/imatrix.c +151 -0
  479. data/ext/gecode-2.1.1/gecode/support/buddy/imatrix.h +61 -0
  480. data/ext/gecode-2.1.1/gecode/support/buddy/kernel.c +1555 -0
  481. data/ext/gecode-2.1.1/gecode/support/buddy/kernel.h +244 -0
  482. data/ext/gecode-2.1.1/gecode/support/buddy/pairs.c +336 -0
  483. data/ext/gecode-2.1.1/gecode/support/buddy/prime.c +322 -0
  484. data/ext/gecode-2.1.1/gecode/support/buddy/prime.h +50 -0
  485. data/ext/gecode-2.1.1/gecode/support/buddy/reorder.c +2345 -0
  486. data/ext/gecode-2.1.1/gecode/support/buddy/tree.c +224 -0
  487. data/ext/gecode-2.1.1/gecode/support/cast.icc +52 -0
  488. data/ext/gecode-2.1.1/gecode/support/config.icc.in +80 -0
  489. data/ext/gecode-2.1.1/gecode/support/dynamic-array.icc +138 -0
  490. data/ext/gecode-2.1.1/gecode/support/dynamic-stack.icc +167 -0
  491. data/ext/gecode-2.1.1/gecode/support/exception.cc +65 -0
  492. data/ext/gecode-2.1.1/gecode/support/exception.icc +82 -0
  493. data/ext/gecode-2.1.1/gecode/support/macros.icc +103 -0
  494. data/ext/gecode-2.1.1/gecode/support/map.icc +207 -0
  495. data/ext/gecode-2.1.1/gecode/support/marked-pointer.icc +66 -0
  496. data/ext/gecode-2.1.1/gecode/support/memory.icc +220 -0
  497. data/ext/gecode-2.1.1/gecode/support/random.icc +121 -0
  498. data/ext/gecode-2.1.1/gecode/support/sentinel-stack.icc +122 -0
  499. data/ext/gecode-2.1.1/gecode/support/sort.icc +210 -0
  500. data/ext/gecode-2.1.1/gecode/support/static-pqueue.icc +242 -0
  501. data/ext/gecode-2.1.1/gecode/support/static-stack.icc +125 -0
  502. data/ext/gecode-2.1.1/gecode/support/symbol.cc +226 -0
  503. data/ext/gecode-2.1.1/gecode/support/symbol.icc +130 -0
  504. data/ext/{gecode-1.3.1 → gecode-2.1.1}/install-sh +0 -0
  505. data/ext/gecode-2.1.1/misc/AppleHelpbookInfo.plist +26 -0
  506. data/ext/gecode-2.1.1/misc/allexamples.perl +60 -0
  507. data/ext/gecode-2.1.1/misc/debian/Makefile.am +44 -0
  508. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/changelog +0 -0
  509. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/control +0 -0
  510. data/ext/gecode-2.1.1/misc/debian/copyright +30 -0
  511. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.info +0 -0
  512. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.install +0 -0
  513. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/gecode.spec +0 -0
  514. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/debian/rules +0 -0
  515. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/back.png +0 -0
  516. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/footer.html +0 -0
  517. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/gecode-logo-100.png +0 -0
  518. data/ext/{gecode-1.3.1 → gecode-2.1.1}/misc/doxygen/header.html +0 -0
  519. data/ext/gecode-2.1.1/misc/doxygen/stylesheet.css +464 -0
  520. data/ext/gecode-2.1.1/misc/fixproperties.sh +77 -0
  521. data/ext/gecode-2.1.1/misc/gecode-gist.pc.in +45 -0
  522. data/ext/gecode-2.1.1/misc/gecode-minimodel.pc.in +45 -0
  523. data/ext/gecode-2.1.1/misc/gecode-search.pc.in +45 -0
  524. data/ext/gecode-2.1.1/misc/gecode-serialization.pc.in +45 -0
  525. data/ext/gecode-2.1.1/misc/gecode.pc.in +45 -0
  526. data/ext/gecode-2.1.1/misc/genchangelog.perl +208 -0
  527. data/ext/gecode-2.1.1/misc/genlcovmakefile.perl +148 -0
  528. data/ext/gecode-2.1.1/misc/genlicense.perl +121 -0
  529. data/ext/gecode-2.1.1/misc/genregistry.perl +468 -0
  530. data/ext/gecode-2.1.1/misc/genstatistics.perl +178 -0
  531. data/ext/gecode-2.1.1/misc/gentxtchangelog.perl +192 -0
  532. data/ext/gecode-2.1.1/misc/genvariables.perl +905 -0
  533. data/ext/gecode-2.1.1/misc/getrevision.perl +47 -0
  534. data/ext/gecode-2.1.1/misc/makedepend.perl +85 -0
  535. data/ext/gecode-2.1.1/misc/svn-ignore.txt +15 -0
  536. data/ext/gecode-2.1.1/variables.vsl +50 -0
  537. data/ext/missing.cpp +1 -1
  538. data/ext/missing.h +1 -1
  539. data/ext/vararray.h +4 -4
  540. data/lib/gecoder/bindings.rb +21 -1
  541. data/lib/gecoder/bindings/bindings.rb +408 -731
  542. data/lib/gecoder/interface/binding_changes.rb +1 -1
  543. data/lib/gecoder/interface/branch.rb +25 -25
  544. data/lib/gecoder/interface/constraints.rb +47 -4
  545. data/lib/gecoder/interface/constraints/bool/boolean.rb +18 -16
  546. data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +13 -11
  547. data/lib/gecoder/interface/constraints/int/arithmetic.rb +5 -4
  548. data/lib/gecoder/interface/constraints/int/domain.rb +8 -9
  549. data/lib/gecoder/interface/constraints/int/linear.rb +10 -8
  550. data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +4 -4
  551. data/lib/gecoder/interface/constraints/int_enum/channel.rb +2 -2
  552. data/lib/gecoder/interface/constraints/int_enum/count.rb +4 -5
  553. data/lib/gecoder/interface/constraints/int_enum/distinct.rb +7 -2
  554. data/lib/gecoder/interface/constraints/int_enum/element.rb +2 -2
  555. data/lib/gecoder/interface/constraints/int_enum/equality.rb +6 -3
  556. data/lib/gecoder/interface/constraints/int_enum/sort.rb +17 -5
  557. data/lib/gecoder/interface/constraints/set_enum/distinct.rb +0 -36
  558. data/lib/gecoder/interface/constraints/set_var_constraints.rb +5 -0
  559. data/lib/gecoder/interface/model.rb +3 -3
  560. data/lib/gecoder/interface/search.rb +5 -4
  561. data/lib/gecoder/version.rb +1 -1
  562. data/specs/branch.rb +27 -27
  563. data/specs/constraints/arithmetic.rb +48 -30
  564. data/specs/constraints/bool_enum.rb +39 -19
  565. data/specs/constraints/boolean.rb +10 -10
  566. data/specs/constraints/cardinality.rb +12 -9
  567. data/specs/constraints/channel.rb +6 -6
  568. data/specs/constraints/connection.rb +22 -26
  569. data/specs/constraints/constraint_helper.rb +125 -41
  570. data/specs/constraints/count.rb +22 -15
  571. data/specs/constraints/distinct.rb +10 -64
  572. data/specs/constraints/element.rb +14 -12
  573. data/specs/constraints/equality.rb +4 -4
  574. data/specs/constraints/int_domain.rb +8 -7
  575. data/specs/constraints/int_relation.rb +12 -8
  576. data/specs/constraints/linear.rb +4 -4
  577. data/specs/constraints/reification_sugar.rb +22 -4
  578. data/specs/constraints/selection.rb +2 -2
  579. data/specs/constraints/set_domain.rb +7 -3
  580. data/specs/constraints/set_operation.rb +2 -2
  581. data/specs/constraints/set_relation.rb +2 -6
  582. data/specs/constraints/sort.rb +20 -16
  583. data/specs/distribution.rb +14 -0
  584. data/specs/model.rb +4 -4
  585. data/tasks/dependencies.txt +21 -0
  586. data/tasks/distribution.rake +49 -14
  587. data/vendor/rust/include/rust_checks.hh +2 -1
  588. data/vendor/rust/include/rust_conversions.hh +2 -2
  589. data/vendor/rust/rust/attribute.rb +2 -2
  590. data/vendor/rust/rust/class.rb +2 -2
  591. data/vendor/rust/rust/cxxclass.rb +0 -2
  592. data/vendor/rust/rust/function.rb +2 -2
  593. data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +1 -1
  594. data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +1 -1
  595. data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +1 -1
  596. data/vendor/rust/rust/type.rb +1 -1
  597. metadata +599 -542
  598. data/ext/gecode-1.3.1/LICENSE +0 -34
  599. data/ext/gecode-1.3.1/Makefile.contribs +0 -71
  600. data/ext/gecode-1.3.1/Makefile.dep +0 -3928
  601. data/ext/gecode-1.3.1/Makefile.in +0 -966
  602. data/ext/gecode-1.3.1/changelog.in +0 -1065
  603. data/ext/gecode-1.3.1/configure +0 -8590
  604. data/ext/gecode-1.3.1/configure.ac +0 -179
  605. data/ext/gecode-1.3.1/configure.ac.in +0 -175
  606. data/ext/gecode-1.3.1/contribs/graph/INSTALL +0 -53
  607. data/ext/gecode-1.3.1/contribs/graph/LICENSE +0 -11
  608. data/ext/gecode-1.3.1/contribs/graph/Makefile +0 -167
  609. data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +0 -169
  610. data/ext/gecode-1.3.1/contribs/graph/TODO +0 -28
  611. data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +0 -82
  612. data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +0 -186
  613. data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +0 -257
  614. data/ext/gecode-1.3.1/contribs/graph/configure +0 -2160
  615. data/ext/gecode-1.3.1/contribs/graph/configure.ac +0 -33
  616. data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +0 -1226
  617. data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +0 -132
  618. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +0 -94
  619. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +0 -104
  620. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +0 -105
  621. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +0 -92
  622. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +0 -273
  623. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +0 -311
  624. data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +0 -1
  625. data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +0 -1
  626. data/ext/gecode-1.3.1/contribs/graph/graph.hh +0 -51
  627. data/ext/gecode-1.3.1/contribs/graph/graphutils.h +0 -46
  628. data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +0 -140
  629. data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +0 -1
  630. data/ext/gecode-1.3.1/contribs/graph/path.hh +0 -116
  631. data/ext/gecode-1.3.1/contribs/graph/path.icc +0 -64
  632. data/ext/gecode-1.3.1/contribs/graph/path/path.icc +0 -139
  633. data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +0 -133
  634. data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +0 -341
  635. data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +0 -1
  636. data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +0 -105
  637. data/ext/gecode-1.3.1/contribs/graph/var.icc +0 -106
  638. data/ext/gecode-1.3.1/contribs/graph/view.icc +0 -373
  639. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +0 -162
  640. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +0 -78
  641. data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +0 -349
  642. data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +0 -148
  643. data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +0 -337
  644. data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +0 -493
  645. data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +0 -60
  646. data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +0 -600
  647. data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +0 -135
  648. data/ext/gecode-1.3.1/contribs/map/COMPILING +0 -68
  649. data/ext/gecode-1.3.1/contribs/map/LICENSE +0 -11
  650. data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +0 -173
  651. data/ext/gecode-1.3.1/contribs/map/configure +0 -2285
  652. data/ext/gecode-1.3.1/contribs/map/configure.ac +0 -32
  653. data/ext/gecode-1.3.1/contribs/map/constraints.hh +0 -46
  654. data/ext/gecode-1.3.1/contribs/map/constraints.icc +0 -84
  655. data/ext/gecode-1.3.1/contribs/map/doxygen.conf +0 -1229
  656. data/ext/gecode-1.3.1/contribs/map/doxygen.hh +0 -33
  657. data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +0 -199
  658. data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +0 -1
  659. data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +0 -1
  660. data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
  661. data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +0 -148
  662. data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
  663. data/ext/gecode-1.3.1/contribs/map/examples/map.cc +0 -80
  664. data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +0 -155
  665. data/ext/gecode-1.3.1/contribs/map/map.hh +0 -65
  666. data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +0 -235
  667. data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +0 -771
  668. data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +0 -2
  669. data/ext/gecode-1.3.1/contribs/map/var.icc +0 -346
  670. data/ext/gecode-1.3.1/contribs/map/var/imp.cc +0 -42
  671. data/ext/gecode-1.3.1/contribs/map/var/imp.icc +0 -436
  672. data/ext/gecode-1.3.1/doxygen.conf.in +0 -1225
  673. data/ext/gecode-1.3.1/doxygen.hh.in +0 -877
  674. data/ext/gecode-1.3.1/examples/all-interval-sort.cc +0 -201
  675. data/ext/gecode-1.3.1/examples/all-interval.cc +0 -114
  676. data/ext/gecode-1.3.1/examples/alpha.cc +0 -112
  677. data/ext/gecode-1.3.1/examples/baseline.cc +0 -71
  678. data/ext/gecode-1.3.1/examples/bibd.cc +0 -173
  679. data/ext/gecode-1.3.1/examples/black-hole.cc +0 -281
  680. data/ext/gecode-1.3.1/examples/cars.cc +0 -165
  681. data/ext/gecode-1.3.1/examples/crew.cc +0 -220
  682. data/ext/gecode-1.3.1/examples/crowded-chess.cc +0 -312
  683. data/ext/gecode-1.3.1/examples/donald.cc +0 -93
  684. data/ext/gecode-1.3.1/examples/eq20.cc +0 -111
  685. data/ext/gecode-1.3.1/examples/golf.cc +0 -242
  686. data/ext/gecode-1.3.1/examples/golomb.cc +0 -141
  687. data/ext/gecode-1.3.1/examples/graph-color.cc +0 -371
  688. data/ext/gecode-1.3.1/examples/grocery.cc +0 -107
  689. data/ext/gecode-1.3.1/examples/hamming.cc +0 -107
  690. data/ext/gecode-1.3.1/examples/ind-set.cc +0 -130
  691. data/ext/gecode-1.3.1/examples/knights.cc +0 -146
  692. data/ext/gecode-1.3.1/examples/langfordnum.cc +0 -244
  693. data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +0 -93
  694. data/ext/gecode-1.3.1/examples/magic-sequence.cc +0 -108
  695. data/ext/gecode-1.3.1/examples/magic-square.cc +0 -120
  696. data/ext/gecode-1.3.1/examples/money.cc +0 -92
  697. data/ext/gecode-1.3.1/examples/ortho-latin.cc +0 -156
  698. data/ext/gecode-1.3.1/examples/packing.cc +0 -211
  699. data/ext/gecode-1.3.1/examples/partition.cc +0 -126
  700. data/ext/gecode-1.3.1/examples/photo.cc +0 -155
  701. data/ext/gecode-1.3.1/examples/picture-puzzle.cc +0 -481
  702. data/ext/gecode-1.3.1/examples/queen-armies.cc +0 -240
  703. data/ext/gecode-1.3.1/examples/queens.cc +0 -99
  704. data/ext/gecode-1.3.1/examples/sports-league.cc +0 -454
  705. data/ext/gecode-1.3.1/examples/steiner.cc +0 -148
  706. data/ext/gecode-1.3.1/examples/stress-domain.cc +0 -86
  707. data/ext/gecode-1.3.1/examples/stress-element.cc +0 -95
  708. data/ext/gecode-1.3.1/examples/stress-exec.cc +0 -74
  709. data/ext/gecode-1.3.1/examples/stress-min.cc +0 -84
  710. data/ext/gecode-1.3.1/examples/stress-search.cc +0 -72
  711. data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +0 -282
  712. data/ext/gecode-1.3.1/examples/sudoku-set.cc +0 -162
  713. data/ext/gecode-1.3.1/examples/sudoku.cc +0 -188
  714. data/ext/gecode-1.3.1/examples/sudoku.icc +0 -703
  715. data/ext/gecode-1.3.1/examples/support.cc +0 -160
  716. data/ext/gecode-1.3.1/examples/support.hh +0 -98
  717. data/ext/gecode-1.3.1/examples/support.icc +0 -187
  718. data/ext/gecode-1.3.1/examples/timer.cc +0 -47
  719. data/ext/gecode-1.3.1/examples/timer.hh +0 -72
  720. data/ext/gecode-1.3.1/examples/warehouses.cc +0 -176
  721. data/ext/gecode-1.3.1/extconf.rb +0 -8
  722. data/ext/gecode-1.3.1/gecode.m4 +0 -736
  723. data/ext/gecode-1.3.1/gecode/config.icc.in +0 -50
  724. data/ext/gecode-1.3.1/gecode/int.hh +0 -1426
  725. data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +0 -87
  726. data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +0 -292
  727. data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +0 -213
  728. data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +0 -196
  729. data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +0 -478
  730. data/ext/gecode-1.3.1/gecode/int/array.cc +0 -61
  731. data/ext/gecode-1.3.1/gecode/int/array.icc +0 -264
  732. data/ext/gecode-1.3.1/gecode/int/bool.cc +0 -187
  733. data/ext/gecode-1.3.1/gecode/int/bool.hh +0 -255
  734. data/ext/gecode-1.3.1/gecode/int/bool/base.icc +0 -123
  735. data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +0 -89
  736. data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +0 -132
  737. data/ext/gecode-1.3.1/gecode/int/bool/or.icc +0 -380
  738. data/ext/gecode-1.3.1/gecode/int/branch.cc +0 -81
  739. data/ext/gecode-1.3.1/gecode/int/branch.hh +0 -444
  740. data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +0 -83
  741. data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +0 -76
  742. data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +0 -104
  743. data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +0 -219
  744. data/ext/gecode-1.3.1/gecode/int/channel.cc +0 -62
  745. data/ext/gecode-1.3.1/gecode/int/channel.hh +0 -144
  746. data/ext/gecode-1.3.1/gecode/int/channel/base.icc +0 -60
  747. data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +0 -313
  748. data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +0 -59
  749. data/ext/gecode-1.3.1/gecode/int/channel/val.icc +0 -239
  750. data/ext/gecode-1.3.1/gecode/int/count.cc +0 -174
  751. data/ext/gecode-1.3.1/gecode/int/count.hh +0 -401
  752. data/ext/gecode-1.3.1/gecode/int/count/int.icc +0 -495
  753. data/ext/gecode-1.3.1/gecode/int/count/rel.icc +0 -100
  754. data/ext/gecode-1.3.1/gecode/int/count/view.icc +0 -332
  755. data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +0 -210
  756. data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +0 -118
  757. data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +0 -377
  758. data/ext/gecode-1.3.1/gecode/int/distinct.cc +0 -77
  759. data/ext/gecode-1.3.1/gecode/int/distinct.hh +0 -272
  760. data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +0 -73
  761. data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +0 -335
  762. data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +0 -62
  763. data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +0 -740
  764. data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +0 -96
  765. data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +0 -107
  766. data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +0 -97
  767. data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +0 -171
  768. data/ext/gecode-1.3.1/gecode/int/dom.cc +0 -81
  769. data/ext/gecode-1.3.1/gecode/int/dom.hh +0 -101
  770. data/ext/gecode-1.3.1/gecode/int/dom/range.icc +0 -85
  771. data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +0 -85
  772. data/ext/gecode-1.3.1/gecode/int/element.cc +0 -58
  773. data/ext/gecode-1.3.1/gecode/int/element.hh +0 -203
  774. data/ext/gecode-1.3.1/gecode/int/element/int.icc +0 -396
  775. data/ext/gecode-1.3.1/gecode/int/element/view.icc +0 -443
  776. data/ext/gecode-1.3.1/gecode/int/exception.icc +0 -137
  777. data/ext/gecode-1.3.1/gecode/int/gcc.cc +0 -708
  778. data/ext/gecode-1.3.1/gecode/int/gcc.hh +0 -338
  779. data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +0 -629
  780. data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +0 -504
  781. data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +0 -760
  782. data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +0 -2375
  783. data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +0 -375
  784. data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +0 -687
  785. data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +0 -236
  786. data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +0 -373
  787. data/ext/gecode-1.3.1/gecode/int/int-set.cc +0 -115
  788. data/ext/gecode-1.3.1/gecode/int/int-set.icc +0 -151
  789. data/ext/gecode-1.3.1/gecode/int/linear.cc +0 -247
  790. data/ext/gecode-1.3.1/gecode/int/linear.hh +0 -1056
  791. data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +0 -439
  792. data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +0 -422
  793. data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +0 -311
  794. data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +0 -503
  795. data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +0 -857
  796. data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +0 -264
  797. data/ext/gecode-1.3.1/gecode/int/linear/post.cc +0 -542
  798. data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +0 -255
  799. data/ext/gecode-1.3.1/gecode/int/propagator.icc +0 -194
  800. data/ext/gecode-1.3.1/gecode/int/regular.cc +0 -40
  801. data/ext/gecode-1.3.1/gecode/int/regular.hh +0 -83
  802. data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +0 -466
  803. data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +0 -172
  804. data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +0 -480
  805. data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +0 -738
  806. data/ext/gecode-1.3.1/gecode/int/rel.cc +0 -293
  807. data/ext/gecode-1.3.1/gecode/int/rel.hh +0 -526
  808. data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +0 -640
  809. data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +0 -212
  810. data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +0 -246
  811. data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +0 -188
  812. data/ext/gecode-1.3.1/gecode/int/sortedness.cc +0 -124
  813. data/ext/gecode-1.3.1/gecode/int/sortedness.hh +0 -108
  814. data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +0 -177
  815. data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +0 -243
  816. data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +0 -232
  817. data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +0 -727
  818. data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +0 -666
  819. data/ext/gecode-1.3.1/gecode/int/var-imp.vis +0 -198
  820. data/ext/gecode-1.3.1/gecode/int/var.icc +0 -590
  821. data/ext/gecode-1.3.1/gecode/int/var/bool.icc +0 -52
  822. data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +0 -65
  823. data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +0 -191
  824. data/ext/gecode-1.3.1/gecode/int/var/imp.cc +0 -361
  825. data/ext/gecode-1.3.1/gecode/int/var/imp.icc +0 -579
  826. data/ext/gecode-1.3.1/gecode/int/var/int.cc +0 -63
  827. data/ext/gecode-1.3.1/gecode/int/var/int.icc +0 -135
  828. data/ext/gecode-1.3.1/gecode/int/view.icc +0 -1219
  829. data/ext/gecode-1.3.1/gecode/int/view/bool.icc +0 -270
  830. data/ext/gecode-1.3.1/gecode/int/view/constint.icc +0 -306
  831. data/ext/gecode-1.3.1/gecode/int/view/int.icc +0 -221
  832. data/ext/gecode-1.3.1/gecode/int/view/iter.icc +0 -49
  833. data/ext/gecode-1.3.1/gecode/int/view/minus.icc +0 -285
  834. data/ext/gecode-1.3.1/gecode/int/view/offset.icc +0 -274
  835. data/ext/gecode-1.3.1/gecode/int/view/print.cc +0 -109
  836. data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +0 -215
  837. data/ext/gecode-1.3.1/gecode/int/view/scale.icc +0 -373
  838. data/ext/gecode-1.3.1/gecode/iter.hh +0 -65
  839. data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +0 -130
  840. data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +0 -208
  841. data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +0 -123
  842. data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +0 -143
  843. data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +0 -206
  844. data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +0 -127
  845. data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +0 -96
  846. data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +0 -202
  847. data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +0 -103
  848. data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +0 -138
  849. data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +0 -112
  850. data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +0 -142
  851. data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +0 -224
  852. data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +0 -71
  853. data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +0 -131
  854. data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +0 -211
  855. data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +0 -125
  856. data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +0 -91
  857. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +0 -247
  858. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +0 -227
  859. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +0 -236
  860. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +0 -126
  861. data/ext/gecode-1.3.1/gecode/kernel.hh +0 -141
  862. data/ext/gecode-1.3.1/gecode/kernel/array.icc +0 -954
  863. data/ext/gecode-1.3.1/gecode/kernel/branching.icc +0 -233
  864. data/ext/gecode-1.3.1/gecode/kernel/core.cc +0 -417
  865. data/ext/gecode-1.3.1/gecode/kernel/core.icc +0 -1681
  866. data/ext/gecode-1.3.1/gecode/kernel/exception.cc +0 -49
  867. data/ext/gecode-1.3.1/gecode/kernel/exception.icc +0 -104
  868. data/ext/gecode-1.3.1/gecode/kernel/macros.icc +0 -98
  869. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +0 -41
  870. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +0 -438
  871. data/ext/gecode-1.3.1/gecode/kernel/memory.icc +0 -205
  872. data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +0 -53
  873. data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +0 -680
  874. data/ext/gecode-1.3.1/gecode/kernel/view.icc +0 -583
  875. data/ext/gecode-1.3.1/gecode/limits.hh +0 -87
  876. data/ext/gecode-1.3.1/gecode/minimodel.hh +0 -942
  877. data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +0 -137
  878. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +0 -207
  879. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +0 -191
  880. data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +0 -66
  881. data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +0 -59
  882. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +0 -103
  883. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +0 -192
  884. data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +0 -200
  885. data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +0 -118
  886. data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +0 -241
  887. data/ext/gecode-1.3.1/gecode/search.hh +0 -745
  888. data/ext/gecode-1.3.1/gecode/search/bab.cc +0 -153
  889. data/ext/gecode-1.3.1/gecode/search/bab.icc +0 -101
  890. data/ext/gecode-1.3.1/gecode/search/dfs.cc +0 -63
  891. data/ext/gecode-1.3.1/gecode/search/dfs.icc +0 -144
  892. data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +0 -109
  893. data/ext/gecode-1.3.1/gecode/search/lds.cc +0 -237
  894. data/ext/gecode-1.3.1/gecode/search/lds.icc +0 -57
  895. data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +0 -219
  896. data/ext/gecode-1.3.1/gecode/search/restart.icc +0 -76
  897. data/ext/gecode-1.3.1/gecode/search/statistics.icc +0 -30
  898. data/ext/gecode-1.3.1/gecode/search/stop.cc +0 -58
  899. data/ext/gecode-1.3.1/gecode/search/stop.icc +0 -100
  900. data/ext/gecode-1.3.1/gecode/set.hh +0 -419
  901. data/ext/gecode-1.3.1/gecode/set/array.cc +0 -114
  902. data/ext/gecode-1.3.1/gecode/set/array.icc +0 -134
  903. data/ext/gecode-1.3.1/gecode/set/branch.cc +0 -57
  904. data/ext/gecode-1.3.1/gecode/set/branch.hh +0 -176
  905. data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +0 -72
  906. data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +0 -112
  907. data/ext/gecode-1.3.1/gecode/set/cardinality.cc +0 -49
  908. data/ext/gecode-1.3.1/gecode/set/convex.cc +0 -43
  909. data/ext/gecode-1.3.1/gecode/set/convex.hh +0 -92
  910. data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +0 -81
  911. data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +0 -51
  912. data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +0 -100
  913. data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +0 -52
  914. data/ext/gecode-1.3.1/gecode/set/distinct.cc +0 -48
  915. data/ext/gecode-1.3.1/gecode/set/distinct.hh +0 -97
  916. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +0 -151
  917. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +0 -50
  918. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +0 -46
  919. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +0 -157
  920. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +0 -124
  921. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +0 -58
  922. data/ext/gecode-1.3.1/gecode/set/dom.cc +0 -224
  923. data/ext/gecode-1.3.1/gecode/set/exception.icc +0 -132
  924. data/ext/gecode-1.3.1/gecode/set/int.cc +0 -139
  925. data/ext/gecode-1.3.1/gecode/set/int.hh +0 -226
  926. data/ext/gecode-1.3.1/gecode/set/int/card.cc +0 -61
  927. data/ext/gecode-1.3.1/gecode/set/int/card.icc +0 -54
  928. data/ext/gecode-1.3.1/gecode/set/int/channel.cc +0 -100
  929. data/ext/gecode-1.3.1/gecode/set/int/channel.icc +0 -75
  930. data/ext/gecode-1.3.1/gecode/set/int/match.cc +0 -148
  931. data/ext/gecode-1.3.1/gecode/set/int/match.icc +0 -67
  932. data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +0 -109
  933. data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +0 -63
  934. data/ext/gecode-1.3.1/gecode/set/int/weights.cc +0 -182
  935. data/ext/gecode-1.3.1/gecode/set/int/weights.icc +0 -174
  936. data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +0 -148
  937. data/ext/gecode-1.3.1/gecode/set/projectors.cc +0 -109
  938. data/ext/gecode-1.3.1/gecode/set/projectors.hh +0 -319
  939. data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +0 -841
  940. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +0 -69
  941. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +0 -66
  942. data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +0 -125
  943. data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +0 -79
  944. data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +0 -127
  945. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +0 -96
  946. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +0 -106
  947. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +0 -76
  948. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +0 -53
  949. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +0 -306
  950. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +0 -192
  951. data/ext/gecode-1.3.1/gecode/set/propagator.icc +0 -96
  952. data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +0 -233
  953. data/ext/gecode-1.3.1/gecode/set/rel-op.cc +0 -96
  954. data/ext/gecode-1.3.1/gecode/set/rel-op.hh +0 -267
  955. data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +0 -528
  956. data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +0 -312
  957. data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +0 -131
  958. data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +0 -198
  959. data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +0 -150
  960. data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +0 -151
  961. data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +0 -292
  962. data/ext/gecode-1.3.1/gecode/set/rel.cc +0 -201
  963. data/ext/gecode-1.3.1/gecode/set/rel.hh +0 -250
  964. data/ext/gecode-1.3.1/gecode/set/rel/common.icc +0 -109
  965. data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +0 -101
  966. data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +0 -88
  967. data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +0 -132
  968. data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +0 -142
  969. data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +0 -121
  970. data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +0 -80
  971. data/ext/gecode-1.3.1/gecode/set/select.cc +0 -88
  972. data/ext/gecode-1.3.1/gecode/set/select.hh +0 -113
  973. data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +0 -267
  974. data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +0 -59
  975. data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +0 -91
  976. data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +0 -112
  977. data/ext/gecode-1.3.1/gecode/set/select/inter.icc +0 -300
  978. data/ext/gecode-1.3.1/gecode/set/sequence.cc +0 -48
  979. data/ext/gecode-1.3.1/gecode/set/sequence.hh +0 -97
  980. data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +0 -79
  981. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +0 -83
  982. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +0 -63
  983. data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +0 -61
  984. data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +0 -53
  985. data/ext/gecode-1.3.1/gecode/set/var-imp.vis +0 -205
  986. data/ext/gecode-1.3.1/gecode/set/var.icc +0 -1090
  987. data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +0 -192
  988. data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +0 -235
  989. data/ext/gecode-1.3.1/gecode/set/var/imp.cc +0 -127
  990. data/ext/gecode-1.3.1/gecode/set/var/imp.icc +0 -356
  991. data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +0 -256
  992. data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +0 -512
  993. data/ext/gecode-1.3.1/gecode/set/var/iter.icc +0 -47
  994. data/ext/gecode-1.3.1/gecode/set/var/set.cc +0 -99
  995. data/ext/gecode-1.3.1/gecode/set/var/set.icc +0 -282
  996. data/ext/gecode-1.3.1/gecode/set/view.icc +0 -1075
  997. data/ext/gecode-1.3.1/gecode/set/view/complement.icc +0 -525
  998. data/ext/gecode-1.3.1/gecode/set/view/const.icc +0 -651
  999. data/ext/gecode-1.3.1/gecode/set/view/print.cc +0 -120
  1000. data/ext/gecode-1.3.1/gecode/set/view/set.icc +0 -217
  1001. data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +0 -348
  1002. data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +0 -152
  1003. data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +0 -131
  1004. data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +0 -157
  1005. data/ext/gecode-1.3.1/gecode/support/random.hh +0 -100
  1006. data/ext/gecode-1.3.1/gecode/support/shared-array.hh +0 -255
  1007. data/ext/gecode-1.3.1/gecode/support/sort.hh +0 -193
  1008. data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +0 -240
  1009. data/ext/gecode-1.3.1/gecode/support/static-stack.hh +0 -117
  1010. data/ext/gecode-1.3.1/misc/debian/Makefile.am +0 -8
  1011. data/ext/gecode-1.3.1/misc/debian/copyright +0 -44
  1012. data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +0 -460
  1013. data/ext/gecode-1.3.1/misc/fixproperties.sh +0 -32
  1014. data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +0 -12
  1015. data/ext/gecode-1.3.1/misc/gecode-search.pc.in +0 -12
  1016. data/ext/gecode-1.3.1/misc/gecode.pc.in +0 -12
  1017. data/ext/gecode-1.3.1/misc/genchangelog.perl +0 -190
  1018. data/ext/gecode-1.3.1/misc/genlicense.perl +0 -113
  1019. data/ext/gecode-1.3.1/misc/genstatistics.perl +0 -155
  1020. data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +0 -170
  1021. data/ext/gecode-1.3.1/misc/genvarimp.perl +0 -666
  1022. data/ext/gecode-1.3.1/misc/getrevision.perl +0 -32
  1023. data/ext/gecode-1.3.1/misc/makedepend.perl +0 -66
  1024. data/ext/gecode-1.3.1/test/int.cc +0 -497
  1025. data/ext/gecode-1.3.1/test/int.hh +0 -119
  1026. data/ext/gecode-1.3.1/test/int/arithmetic.cc +0 -262
  1027. data/ext/gecode-1.3.1/test/int/basic.cc +0 -42
  1028. data/ext/gecode-1.3.1/test/int/bool.cc +0 -189
  1029. data/ext/gecode-1.3.1/test/int/channel.cc +0 -79
  1030. data/ext/gecode-1.3.1/test/int/count.cc +0 -264
  1031. data/ext/gecode-1.3.1/test/int/distinct.cc +0 -121
  1032. data/ext/gecode-1.3.1/test/int/dom.cc +0 -69
  1033. data/ext/gecode-1.3.1/test/int/element.cc +0 -132
  1034. data/ext/gecode-1.3.1/test/int/gcc.cc +0 -592
  1035. data/ext/gecode-1.3.1/test/int/linear.cc +0 -315
  1036. data/ext/gecode-1.3.1/test/int/minimodel.cc +0 -451
  1037. data/ext/gecode-1.3.1/test/int/regular.cc +0 -105
  1038. data/ext/gecode-1.3.1/test/int/rel.cc +0 -283
  1039. data/ext/gecode-1.3.1/test/int/scheduling.cc +0 -259
  1040. data/ext/gecode-1.3.1/test/int/sortedness.cc +0 -272
  1041. data/ext/gecode-1.3.1/test/intset.cc +0 -40
  1042. data/ext/gecode-1.3.1/test/log.cc +0 -515
  1043. data/ext/gecode-1.3.1/test/log.hh +0 -68
  1044. data/ext/gecode-1.3.1/test/set.cc +0 -542
  1045. data/ext/gecode-1.3.1/test/set.hh +0 -152
  1046. data/ext/gecode-1.3.1/test/set/convex.cc +0 -94
  1047. data/ext/gecode-1.3.1/test/set/distinct.cc +0 -148
  1048. data/ext/gecode-1.3.1/test/set/dom.cc +0 -67
  1049. data/ext/gecode-1.3.1/test/set/int.cc +0 -249
  1050. data/ext/gecode-1.3.1/test/set/projection.cc +0 -333
  1051. data/ext/gecode-1.3.1/test/set/rel-op.cc +0 -662
  1052. data/ext/gecode-1.3.1/test/set/rel.cc +0 -198
  1053. data/ext/gecode-1.3.1/test/set/select.cc +0 -108
  1054. data/ext/gecode-1.3.1/test/set/sequence.cc +0 -83
  1055. data/ext/gecode-1.3.1/test/stress.cc +0 -93
  1056. data/ext/gecode-1.3.1/test/stress.hh +0 -74
  1057. data/ext/gecode-1.3.1/test/stress/distinct.cc +0 -70
  1058. data/ext/gecode-1.3.1/test/stress/domain.cc +0 -69
  1059. data/ext/gecode-1.3.1/test/stress/exec.cc +0 -60
  1060. data/ext/gecode-1.3.1/test/stress/minsort.cc +0 -63
  1061. data/ext/gecode-1.3.1/test/stress/regular.cc +0 -112
  1062. data/ext/gecode-1.3.1/test/test.cc +0 -215
  1063. 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
+ ])