gecoder-with-gecode 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,433 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2002
8
+ *
9
+ * Last modified:
10
+ * $Date: 2008-03-06 10:39:58 +0100 (Thu, 06 Mar 2008) $ by $Author: tack $
11
+ * $Revision: 6446 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ #include "gecode/int/linear.hh"
39
+
40
+ namespace Gecode { namespace Int { namespace Linear {
41
+
42
+ void
43
+ post_pos_unit(Space* home,
44
+ Term<BoolView>* t_p, int n_p,
45
+ IntRelType r, IntView y, int c,
46
+ PropKind) {
47
+ switch (r) {
48
+ case IRT_EQ:
49
+ {
50
+ ViewArray<BoolView> x(home,n_p);
51
+ for (int i=n_p; i--; )
52
+ x[i]=t_p[i].x;
53
+ GECODE_ES_FAIL(home,(EqBoolView<BoolView,IntView>
54
+ ::post(home,x,y,c)));
55
+ }
56
+ break;
57
+ case IRT_NQ:
58
+ {
59
+ ViewArray<BoolView> x(home,n_p);
60
+ for (int i=n_p; i--; )
61
+ x[i]=t_p[i].x;
62
+ GECODE_ES_FAIL(home,(NqBoolView<BoolView,IntView>
63
+ ::post(home,x,y,c)));
64
+ }
65
+ break;
66
+ case IRT_GQ:
67
+ {
68
+ ViewArray<BoolView> x(home,n_p);
69
+ for (int i=n_p; i--; )
70
+ x[i]=t_p[i].x;
71
+ GECODE_ES_FAIL(home,(GqBoolView<BoolView,IntView>
72
+ ::post(home,x,y,c)));
73
+ }
74
+ break;
75
+ case IRT_LQ:
76
+ {
77
+ ViewArray<NegBoolView> x(home,n_p);
78
+ for (int i=n_p; i--; )
79
+ x[i]=t_p[i].x;
80
+ MinusView z(y);
81
+ GECODE_ES_FAIL(home,(GqBoolView<NegBoolView,MinusView>
82
+ ::post(home,x,z,n_p-c)));
83
+ }
84
+ break;
85
+ default: GECODE_NEVER;
86
+ }
87
+ }
88
+
89
+ void
90
+ post_pos_unit(Space* home,
91
+ Term<BoolView>* t_p, int n_p,
92
+ IntRelType r, ZeroIntView, int c,
93
+ PropKind pk) {
94
+ switch (r) {
95
+ case IRT_EQ:
96
+ {
97
+ ViewArray<BoolView> x(home,n_p);
98
+ for (int i=n_p; i--; )
99
+ x[i]=t_p[i].x;
100
+ GECODE_ES_FAIL(home,(EqBoolInt<BoolView>::post(home,x,c,pk)));
101
+ }
102
+ break;
103
+ case IRT_NQ:
104
+ {
105
+ ViewArray<BoolView> x(home,n_p);
106
+ for (int i=n_p; i--; )
107
+ x[i]=t_p[i].x;
108
+ GECODE_ES_FAIL(home,(NqBoolInt<BoolView>::post(home,x,c)));
109
+ }
110
+ break;
111
+ case IRT_GQ:
112
+ {
113
+ ViewArray<BoolView> x(home,n_p);
114
+ for (int i=n_p; i--; )
115
+ x[i]=t_p[i].x;
116
+ GECODE_ES_FAIL(home,(GqBoolInt<BoolView>::post(home,x,c,pk)));
117
+ }
118
+ break;
119
+ case IRT_LQ:
120
+ {
121
+ ViewArray<NegBoolView> x(home,n_p);
122
+ for (int i=n_p; i--; )
123
+ x[i]=t_p[i].x;
124
+ GECODE_ES_FAIL(home,(GqBoolInt<NegBoolView>::post(home,x,n_p-c,pk)));
125
+ }
126
+ break;
127
+ default: GECODE_NEVER;
128
+ }
129
+ }
130
+
131
+ void
132
+ post_neg_unit(Space* home,
133
+ Term<BoolView>* t_n, int n_n,
134
+ IntRelType r, IntView y, int c,
135
+ PropKind) {
136
+ switch (r) {
137
+ case IRT_EQ:
138
+ {
139
+ ViewArray<BoolView> x(home,n_n);
140
+ for (int i=n_n; i--; )
141
+ x[i]=t_n[i].x;
142
+ MinusView z(y);
143
+ GECODE_ES_FAIL(home,(EqBoolView<BoolView,MinusView>
144
+ ::post(home,x,z,-c)));
145
+ }
146
+ break;
147
+ case IRT_NQ:
148
+ {
149
+ ViewArray<BoolView> x(home,n_n);
150
+ for (int i=n_n; i--; )
151
+ x[i]=t_n[i].x;
152
+ MinusView z(y);
153
+ GECODE_ES_FAIL(home,(NqBoolView<BoolView,MinusView>
154
+ ::post(home,x,z,-c)));
155
+ }
156
+ break;
157
+ case IRT_GQ:
158
+ {
159
+ ViewArray<NegBoolView> x(home,n_n);
160
+ for (int i=n_n; i--; )
161
+ x[i]=t_n[i].x;
162
+ GECODE_ES_FAIL(home,(GqBoolView<NegBoolView,IntView>
163
+ ::post(home,x,y,n_n+c)));
164
+ }
165
+ break;
166
+ case IRT_LQ:
167
+ {
168
+ ViewArray<BoolView> x(home,n_n);
169
+ for (int i=n_n; i--; )
170
+ x[i]=t_n[i].x;
171
+ MinusView z(y);
172
+ GECODE_ES_FAIL(home,(GqBoolView<BoolView,MinusView>
173
+ ::post(home,x,z,-c)));
174
+ }
175
+ break;
176
+ default: GECODE_NEVER;
177
+ }
178
+ }
179
+
180
+ void
181
+ post_neg_unit(Space* home,
182
+ Term<BoolView>* t_n, int n_n,
183
+ IntRelType r, ZeroIntView, int c,
184
+ PropKind pk) {
185
+ switch (r) {
186
+ case IRT_EQ:
187
+ {
188
+ ViewArray<BoolView> x(home,n_n);
189
+ for (int i=n_n; i--; )
190
+ x[i]=t_n[i].x;
191
+ GECODE_ES_FAIL(home,(EqBoolInt<BoolView>::post(home,x,-c,pk)));
192
+ }
193
+ break;
194
+ case IRT_NQ:
195
+ {
196
+ ViewArray<BoolView> x(home,n_n);
197
+ for (int i=n_n; i--; )
198
+ x[i]=t_n[i].x;
199
+ GECODE_ES_FAIL(home,(NqBoolInt<BoolView>::post(home,x,-c)));
200
+ }
201
+ break;
202
+ case IRT_GQ:
203
+ {
204
+ ViewArray<NegBoolView> x(home,n_n);
205
+ for (int i=n_n; i--; )
206
+ x[i]=t_n[i].x;
207
+ GECODE_ES_FAIL(home,(GqBoolInt<NegBoolView>::post(home,x,n_n+c,pk)));
208
+ }
209
+ break;
210
+ case IRT_LQ:
211
+ {
212
+ ViewArray<BoolView> x(home,n_n);
213
+ for (int i=n_n; i--; )
214
+ x[i]=t_n[i].x;
215
+ GECODE_ES_FAIL(home,(GqBoolInt<BoolView>::post(home,x,-c,pk)));
216
+ }
217
+ break;
218
+ default: GECODE_NEVER;
219
+ }
220
+ }
221
+
222
+
223
+ void
224
+ post_mixed(Space* home,
225
+ Term<BoolView>* t_p, int n_p,
226
+ Term<BoolView>* t_n, int n_n,
227
+ IntRelType r, IntView y, int c) {
228
+ ScaleBoolArray b_p(home,n_p);
229
+ {
230
+ ScaleBool* f=b_p.fst();
231
+ for (int i=n_p; i--; ) {
232
+ f[i].x=t_p[i].x; f[i].a=t_p[i].a;
233
+ }
234
+ }
235
+ ScaleBoolArray b_n(home,n_n);
236
+ {
237
+ ScaleBool* f=b_n.fst();
238
+ for (int i=n_n; i--; ) {
239
+ f[i].x=t_n[i].x; f[i].a=t_n[i].a;
240
+ }
241
+ }
242
+ switch (r) {
243
+ case IRT_EQ:
244
+ GECODE_ES_FAIL(home,
245
+ (EqBoolScale<ScaleBoolArray,ScaleBoolArray,IntView>
246
+ ::post(home,b_p,b_n,y,c)));
247
+ break;
248
+ case IRT_NQ:
249
+ GECODE_ES_FAIL(home,
250
+ (NqBoolScale<ScaleBoolArray,ScaleBoolArray,IntView>
251
+ ::post(home,b_p,b_n,y,c)));
252
+ break;
253
+ case IRT_LQ:
254
+ GECODE_ES_FAIL(home,
255
+ (LqBoolScale<ScaleBoolArray,ScaleBoolArray,IntView>
256
+ ::post(home,b_p,b_n,y,c)));
257
+ break;
258
+ case IRT_GQ:
259
+ {
260
+ MinusView m(y);
261
+ GECODE_ES_FAIL(home,
262
+ (LqBoolScale<ScaleBoolArray,ScaleBoolArray,MinusView>
263
+ ::post(home,b_n,b_p,m,-c)));
264
+ }
265
+ break;
266
+ default:
267
+ GECODE_NEVER;
268
+ }
269
+ }
270
+
271
+
272
+ void
273
+ post_mixed(Space* home,
274
+ Term<BoolView>* t_p, int n_p,
275
+ Term<BoolView>* t_n, int n_n,
276
+ IntRelType r, ZeroIntView y, int c) {
277
+ ScaleBoolArray b_p(home,n_p);
278
+ {
279
+ ScaleBool* f=b_p.fst();
280
+ for (int i=n_p; i--; ) {
281
+ f[i].x=t_p[i].x; f[i].a=t_p[i].a;
282
+ }
283
+ }
284
+ ScaleBoolArray b_n(home,n_n);
285
+ {
286
+ ScaleBool* f=b_n.fst();
287
+ for (int i=n_n; i--; ) {
288
+ f[i].x=t_n[i].x; f[i].a=t_n[i].a;
289
+ }
290
+ }
291
+ switch (r) {
292
+ case IRT_EQ:
293
+ GECODE_ES_FAIL(home,
294
+ (EqBoolScale<ScaleBoolArray,ScaleBoolArray,ZeroIntView>
295
+ ::post(home,b_p,b_n,y,c)));
296
+ break;
297
+ case IRT_NQ:
298
+ GECODE_ES_FAIL(home,
299
+ (NqBoolScale<ScaleBoolArray,ScaleBoolArray,ZeroIntView>
300
+ ::post(home,b_p,b_n,y,c)));
301
+ break;
302
+ case IRT_LQ:
303
+ GECODE_ES_FAIL(home,
304
+ (LqBoolScale<ScaleBoolArray,ScaleBoolArray,ZeroIntView>
305
+ ::post(home,b_p,b_n,y,c)));
306
+ break;
307
+ case IRT_GQ:
308
+ GECODE_ES_FAIL(home,
309
+ (LqBoolScale<ScaleBoolArray,ScaleBoolArray,ZeroIntView>
310
+ ::post(home,b_n,b_p,y,-c)));
311
+ break;
312
+ default:
313
+ GECODE_NEVER;
314
+ }
315
+ }
316
+
317
+ template <class View>
318
+ forceinline void
319
+ post_all(Space* home,
320
+ Term<BoolView>* t, int n,
321
+ IntRelType r, View x, int c, PropKind pk) {
322
+
323
+ Limits::check(c,"Int::linear");
324
+
325
+ {
326
+ double d = c;
327
+
328
+ // Eliminate non-strict relations
329
+ switch (r) {
330
+ case IRT_EQ: case IRT_NQ: case IRT_LQ: case IRT_GQ:
331
+ break;
332
+ case IRT_LE:
333
+ d--; r = IRT_LQ; break;
334
+ case IRT_GR:
335
+ d++; r = IRT_GQ; break;
336
+ default:
337
+ throw UnknownRelation("Int::linear");
338
+ }
339
+
340
+ // Eliminate assigned views
341
+ for (int i=n; i--; )
342
+ if (t[i].x.one()) {
343
+ d -= t[i].a; t[i]=t[--n];
344
+ } else if (t[i].x.zero()) {
345
+ t[i]=t[--n];
346
+ }
347
+
348
+ Limits::check(d,"Int::linear");
349
+
350
+ c = static_cast<int>(d);
351
+ }
352
+
353
+ Term<BoolView> *t_p, *t_n;
354
+ int n_p, n_n;
355
+ bool unit = normalize<BoolView>(t,n,t_p,n_p,t_n,n_n);
356
+
357
+ if (n == 0) {
358
+ switch (r) {
359
+ case IRT_EQ: GECODE_ME_FAIL(home,x.eq(home,-c)); break;
360
+ case IRT_NQ: GECODE_ME_FAIL(home,x.nq(home,-c)); break;
361
+ case IRT_GQ: GECODE_ME_FAIL(home,x.lq(home,-c)); break;
362
+ case IRT_LQ: GECODE_ME_FAIL(home,x.gq(home,-c)); break;
363
+ default: GECODE_NEVER;
364
+ }
365
+ return;
366
+ }
367
+
368
+ // Check for overflow
369
+ {
370
+ double sl = x.max()+c;
371
+ double su = x.min()+c;
372
+ for (int i=n_p; i--; )
373
+ su -= t_p[i].a;
374
+ for (int i=n_n; i--; )
375
+ sl += t_n[i].a;
376
+ Limits::check(sl,"Int::linear");
377
+ Limits::check(su,"Int::linear");
378
+ }
379
+
380
+ if (unit && (n_n == 0)) {
381
+ /// All coefficients are 1
382
+ post_pos_unit(home,t_p,n_p,r,x,c,pk);
383
+ } else if (unit && (n_p == 0)) {
384
+ // All coefficients are -1
385
+ post_neg_unit(home,t_n,n_n,r,x,c,pk);
386
+ } else {
387
+ // Mixed coefficients
388
+ post_mixed(home,t_p,n_p,t_n,n_n,r,x,c);
389
+ }
390
+ }
391
+
392
+
393
+ void
394
+ post(Space* home,
395
+ Term<BoolView>* t, int n, IntRelType r, IntView x, int c,
396
+ IntConLevel, PropKind pk) {
397
+ post_all(home,t,n,r,x,c,pk);
398
+ }
399
+
400
+ void
401
+ post(Space* home,
402
+ Term<BoolView>* t, int n, IntRelType r, int c,
403
+ IntConLevel, PropKind pk) {
404
+ ZeroIntView x;
405
+ post_all(home,t,n,r,x,c,pk);
406
+ }
407
+
408
+ void
409
+ post(Space* home,
410
+ Term<BoolView>* t, int n, IntRelType r, IntView x, BoolView b,
411
+ IntConLevel icl, PropKind pk) {
412
+ int l, u;
413
+ estimate(t,n,0,l,u);
414
+ IntVar z(home,l,u); IntView zv(z);
415
+ post_all(home,t,n,IRT_EQ,zv,0,pk);
416
+ rel(home,z,r,x,b,icl,pk);
417
+ }
418
+
419
+ void
420
+ post(Space* home,
421
+ Term<BoolView>* t, int n, IntRelType r, int c, BoolView b,
422
+ IntConLevel icl, PropKind pk) {
423
+ int l, u;
424
+ estimate(t,n,0,l,u);
425
+ IntVar z(home,l,u); IntView zv(z);
426
+ post_all(home,t,n,IRT_EQ,zv,0,pk);
427
+ rel(home,z,r,c,b,icl,pk);
428
+ }
429
+
430
+ }}}
431
+
432
+ // STATISTICS: int-post
433
+
@@ -0,0 +1,854 @@
1
+ /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Main authors:
4
+ * Christian Schulte <schulte@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2006
8
+ *
9
+ * Last modified:
10
+ * $Date: 2008-02-18 15:29:18 +0100 (Mon, 18 Feb 2008) $ by $Author: tack $
11
+ * $Revision: 6215 $
12
+ *
13
+ * This file is part of Gecode, the generic constraint
14
+ * development environment:
15
+ * http://www.gecode.org
16
+ *
17
+ * Permission is hereby granted, free of charge, to any person obtaining
18
+ * a copy of this software and associated documentation files (the
19
+ * "Software"), to deal in the Software without restriction, including
20
+ * without limitation the rights to use, copy, modify, merge, publish,
21
+ * distribute, sublicense, and/or sell copies of the Software, and to
22
+ * permit persons to whom the Software is furnished to do so, subject to
23
+ * the following conditions:
24
+ *
25
+ * The above copyright notice and this permission notice shall be
26
+ * included in all copies or substantial portions of the Software.
27
+ *
28
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
+ * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
+ * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
+ * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
+ *
36
+ */
37
+
38
+ namespace Gecode { namespace Int { namespace Linear {
39
+
40
+ /*
41
+ * Array of scale Boolean views
42
+ *
43
+ */
44
+ forceinline
45
+ ScaleBoolArray::ScaleBoolArray(void) {}
46
+ forceinline
47
+ ScaleBoolArray::ScaleBoolArray(Space* home, int n) {
48
+ if (n > 0) {
49
+ _fst = static_cast<ScaleBool*>(home->alloc(n*sizeof(ScaleBool)));
50
+ _lst = _fst+n;
51
+ } else {
52
+ _fst = _lst = NULL;
53
+ }
54
+ }
55
+ forceinline void
56
+ ScaleBoolArray::subscribe(Space* home, Propagator* p) {
57
+ for (ScaleBool* f = _fst; f < _lst; f++)
58
+ f->x.subscribe(home,p,PC_BOOL_VAL);
59
+ }
60
+ forceinline void
61
+ ScaleBoolArray::cancel(Space* home, Propagator* p) {
62
+ for (ScaleBool* f = _fst; f < _lst; f++)
63
+ f->x.cancel(home,p,PC_BOOL_VAL);
64
+ }
65
+ forceinline void
66
+ ScaleBoolArray::update(Space* home, bool share, ScaleBoolArray& sba) {
67
+ int n = sba._lst - sba._fst;
68
+ if (n > 0) {
69
+ _fst = static_cast<ScaleBool*>(home->alloc(n*sizeof(ScaleBool)));
70
+ _lst = _fst+n;
71
+ for (int i=n; i--; ) {
72
+ _fst[i].a = sba._fst[i].a;
73
+ _fst[i].x.update(home,share,sba._fst[i].x);
74
+ }
75
+ } else {
76
+ _fst = _lst = NULL;
77
+ }
78
+ }
79
+ forceinline ScaleBool*
80
+ ScaleBoolArray::fst(void) const {
81
+ return _fst;
82
+ }
83
+ forceinline ScaleBool*
84
+ ScaleBoolArray::lst(void) const {
85
+ return _lst;
86
+ }
87
+ forceinline void
88
+ ScaleBoolArray::fst(ScaleBool* f) {
89
+ _fst = f;
90
+ }
91
+ forceinline void
92
+ ScaleBoolArray::lst(ScaleBool* l) {
93
+ _lst = l;
94
+ }
95
+ forceinline bool
96
+ ScaleBoolArray::empty(void) const {
97
+ return _fst == _lst;
98
+ }
99
+ forceinline int
100
+ ScaleBoolArray::size(void) const {
101
+ return static_cast<int>(_lst - _fst);
102
+ }
103
+ forceinline bool
104
+ ScaleBoolArray::ScaleDec::operator()(const ScaleBool& x,
105
+ const ScaleBool& y) {
106
+ return x.a > y.a;
107
+ }
108
+
109
+ inline void
110
+ ScaleBoolArray::sort(void) {
111
+ ScaleDec scale_dec;
112
+ Support::quicksort<ScaleBool,ScaleDec>(fst(), size(), scale_dec);
113
+ }
114
+
115
+ inline Support::Symbol
116
+ ScaleBoolArray::type(void) {
117
+ return Support::Symbol("Gecode::Int::Linear::ScaleBoolArray");
118
+ }
119
+
120
+ /*
121
+ * Empty array of scale Boolean views
122
+ *
123
+ */
124
+ forceinline
125
+ EmptyScaleBoolArray::EmptyScaleBoolArray(void) {}
126
+ forceinline
127
+ EmptyScaleBoolArray::EmptyScaleBoolArray(Space*, int) {}
128
+ forceinline void
129
+ EmptyScaleBoolArray::subscribe(Space*, Propagator*) {}
130
+ forceinline void
131
+ EmptyScaleBoolArray::cancel(Space*, Propagator*) {}
132
+ forceinline void
133
+ EmptyScaleBoolArray::update(Space*, bool, EmptyScaleBoolArray&) {}
134
+ forceinline ScaleBool*
135
+ EmptyScaleBoolArray::fst(void) const { return NULL; }
136
+ forceinline ScaleBool*
137
+ EmptyScaleBoolArray::lst(void) const { return NULL; }
138
+ forceinline void
139
+ EmptyScaleBoolArray::fst(ScaleBool*) {}
140
+ forceinline void
141
+ EmptyScaleBoolArray::lst(ScaleBool*) {}
142
+ forceinline bool
143
+ EmptyScaleBoolArray::empty(void) const { return true; }
144
+ forceinline int
145
+ EmptyScaleBoolArray::size(void) const { return 0; }
146
+ forceinline void
147
+ EmptyScaleBoolArray::sort(void) {}
148
+ inline Support::Symbol
149
+ EmptyScaleBoolArray::type(void) {
150
+ return Support::Symbol("Gecode::Int::Linear::EmptyScaleBoolArray");
151
+ }
152
+
153
+
154
+ /*
155
+ * Base-class for Boolean constraints with coefficients
156
+ *
157
+ */
158
+
159
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
160
+ forceinline
161
+ LinBoolScale<SBAP,SBAN,VX,pcx>::LinBoolScale(Space* home,
162
+ SBAP& p0, SBAN& n0,
163
+ VX x0, int c0)
164
+ : Propagator(home), p(p0), n(n0), x(x0), c(c0) {
165
+ x.subscribe(home,this,pcx);
166
+ p.subscribe(home,this);
167
+ n.subscribe(home,this);
168
+ }
169
+
170
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
171
+ PropCost
172
+ LinBoolScale<SBAP,SBAN,VX,pcx>::cost(ModEventDelta) const {
173
+ return cost_lo(p.size() + n.size(), PC_LINEAR_LO);
174
+ }
175
+
176
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
177
+ forceinline size_t
178
+ LinBoolScale<SBAP,SBAN,VX,pcx>::dispose(Space* home) {
179
+ x.cancel(home,this,pcx);
180
+ p.cancel(home,this);
181
+ n.cancel(home,this);
182
+ (void) Propagator::dispose(home);
183
+ return sizeof(*this);
184
+ }
185
+
186
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
187
+ forceinline
188
+ LinBoolScale<SBAP,SBAN,VX,pcx>::LinBoolScale(Space* home, bool share,
189
+ Propagator& pr,
190
+ SBAP& p0, SBAN& n0,
191
+ VX x0, int c0)
192
+ : Propagator(home,share,pr), c(c0) {
193
+ x.update(home,share,x0);
194
+ p.update(home,share,p0);
195
+ n.update(home,share,n0);
196
+ }
197
+
198
+ template<class SBAP, class SBAN, class VX, PropCond pcx>
199
+ Reflection::ActorSpec
200
+ LinBoolScale<SBAP,SBAN,VX,pcx>::spec(const Space* home,
201
+ Reflection::VarMap& m,
202
+ const Support::Symbol& ati) const {
203
+ Reflection::ActorSpec s(ati);
204
+
205
+ Reflection::IntArrayArg* c_p = Reflection::Arg::newIntArray(p.size());
206
+ Reflection::ArrayArg* b_p = Reflection::Arg::newArray(p.size());
207
+
208
+ int count = 0;
209
+ for (ScaleBool* f = p.fst(); f != p.lst(); f++) {
210
+ (*c_p)[count] = f->a;
211
+ (*b_p)[count++] = f->x.spec(home, m);
212
+ }
213
+
214
+ Reflection::IntArrayArg* c_n = Reflection::Arg::newIntArray(n.size());
215
+ Reflection::ArrayArg* b_n = Reflection::Arg::newArray(n.size());
216
+ count = 0;
217
+ for (ScaleBool* f = n.fst(); f != n.lst(); f++) {
218
+ (*c_n)[count] = f->a;
219
+ (*b_n)[count++] = f->x.spec(home, m);
220
+ }
221
+
222
+ return s << c_p << b_p
223
+ << c_n << b_n << x.spec(home, m)
224
+ << c;
225
+ }
226
+
227
+ /*
228
+ * Boolean equality with coefficients
229
+ *
230
+ */
231
+
232
+ template<class SBAP, class SBAN, class VX>
233
+ forceinline
234
+ EqBoolScale<SBAP,SBAN,VX>::EqBoolScale(Space* home,
235
+ SBAP& p, SBAN& n,
236
+ VX x, int c)
237
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>(home,p,n,x,c) {}
238
+
239
+ template<class SBAP, class SBAN, class VX>
240
+ forceinline
241
+ EqBoolScale<SBAP,SBAN,VX>::EqBoolScale(Space* home, bool share,
242
+ Propagator& pr,
243
+ SBAP& p, SBAN& n,
244
+ VX x, int c)
245
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>(home,share,pr,p,n,x,c) {}
246
+
247
+ template<class SBAP, class SBAN, class VX>
248
+ Actor*
249
+ EqBoolScale<SBAP,SBAN,VX>::copy(Space* home, bool share) {
250
+ if (p.empty()) {
251
+ EmptyScaleBoolArray ep;
252
+ if (x.assigned()) {
253
+ ZeroIntView z;
254
+ return new (home) EqBoolScale<EmptyScaleBoolArray,SBAN,ZeroIntView>
255
+ (home,share,*this,ep,n,z,c+x.val());
256
+ } else {
257
+ return new (home) EqBoolScale<EmptyScaleBoolArray,SBAN,VX>
258
+ (home,share,*this,ep,n,x,c);
259
+ }
260
+ } else if (n.empty()) {
261
+ EmptyScaleBoolArray en;
262
+ if (x.assigned()) {
263
+ ZeroIntView z;
264
+ return new (home) EqBoolScale<SBAP,EmptyScaleBoolArray,ZeroIntView>
265
+ (home,share,*this,p,en,z,c+x.val());
266
+ } else {
267
+ return new (home) EqBoolScale<SBAP,EmptyScaleBoolArray,VX>
268
+ (home,share,*this,p,en,x,c);
269
+ }
270
+ } else {
271
+ return new (home) EqBoolScale<SBAP,SBAN,VX>(home,share,*this,p,n,x,c);
272
+ }
273
+ }
274
+
275
+ template<class SBAP, class SBAN, class VX>
276
+ inline Support::Symbol
277
+ EqBoolScale<SBAP,SBAN,VX>::ati(void) {
278
+ return Reflection::mangle<SBAP,SBAN,VX>("Gecode::Int::Linear::EqBoolScale");
279
+ }
280
+
281
+ template<class SBAP, class SBAN, class VX>
282
+ Reflection::ActorSpec
283
+ EqBoolScale<SBAP,SBAN,VX>::spec(const Space* home,
284
+ Reflection::VarMap& m) const {
285
+ return LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::spec(home, m, ati());
286
+ }
287
+
288
+ template<class SBAP, class SBAN, class VX>
289
+ void
290
+ EqBoolScale<SBAP,SBAN,VX>::post(Space* home, Reflection::VarMap& vars,
291
+ const Reflection::ActorSpec& spec) {
292
+ spec.checkArity(6);
293
+ Reflection::IntArrayArg* c_p = spec[0]->toIntArray();
294
+ ViewArray<BoolView> b_pv(home, vars, spec[1]);
295
+ Reflection::IntArrayArg* c_n = spec[2]->toIntArray();
296
+ ViewArray<BoolView> b_nv(home, vars, spec[3]);
297
+ VX x(home, vars, spec[4]);
298
+ int c = spec[5]->toInt();
299
+ SBAP b_p(home,b_pv.size());
300
+ {
301
+ ScaleBool* f=b_p.fst();
302
+ for (int i=b_pv.size(); i--; ) {
303
+ f[i].x=b_pv[i]; f[i].a=(*c_p)[i];
304
+ }
305
+ }
306
+ SBAN b_n(home,b_nv.size());
307
+ {
308
+ ScaleBool* f=b_n.fst();
309
+ for (int i=b_nv.size(); i--; ) {
310
+ f[i].x=b_nv[i]; f[i].a=(*c_n)[i];
311
+ }
312
+ }
313
+ (void) new (home) EqBoolScale<SBAP,SBAN,VX>(home,b_p,b_n,x,c);
314
+ }
315
+
316
+ template<class SBAP, class SBAN, class VX>
317
+ ExecStatus
318
+ EqBoolScale<SBAP,SBAN,VX>::propagate(Space* home, ModEventDelta med) {
319
+ int sl_p = 0; // Lower bound, computed positive
320
+ int su_n = 0; // Upper bound, computed negative
321
+ if (BoolView::me(med) == ME_BOOL_VAL) {
322
+ // Eliminate assigned positive views while keeping order
323
+ {
324
+ // Skip not assigned views
325
+ ScaleBool* f = p.fst();
326
+ ScaleBool* l = p.lst();
327
+ while ((f < l) && f->x.none()) {
328
+ su_n += f->a; f++;
329
+ }
330
+ // Copy unassigned views to t
331
+ ScaleBool* t = f;
332
+ while (f < l) {
333
+ if (f->x.one()) {
334
+ c -= f->a;
335
+ } else if (f->x.none()) {
336
+ su_n += f->a; *t = *f; t++;
337
+ }
338
+ f++;
339
+ }
340
+ p.lst(t);
341
+ }
342
+ // Eliminate assigned negative views while keeping order
343
+ {
344
+ // Skip not assigned views
345
+ ScaleBool* f = n.fst();
346
+ ScaleBool* l = n.lst();
347
+ while ((f < l) && f->x.none()) {
348
+ sl_p += f->a; f++;
349
+ }
350
+ // Copy unassigned views to t
351
+ ScaleBool* t = f;
352
+ while (f < l) {
353
+ if (f->x.one()) {
354
+ c += f->a;
355
+ } else if (f->x.none()) {
356
+ sl_p += f->a; *t = *f; t++;
357
+ }
358
+ f++;
359
+ }
360
+ n.lst(t);
361
+ }
362
+ } else {
363
+ for (ScaleBool* f=p.fst(); f<p.lst(); f++)
364
+ su_n += f->a;
365
+ for (ScaleBool* f=n.fst(); f<n.lst(); f++)
366
+ sl_p += f->a;
367
+ }
368
+
369
+ if (p.empty() && n.empty()) {
370
+ GECODE_ME_CHECK(x.eq(home,-c));
371
+ return ES_SUBSUMED(this,sizeof(*this));
372
+ }
373
+
374
+ sl_p += x.max() + c;
375
+ su_n -= x.min() + c;
376
+
377
+ const int MOD_SL = 1 << 0;
378
+ const int MOD_SU = 1 << 1;
379
+
380
+ int mod = MOD_SL | MOD_SU;
381
+
382
+ do {
383
+ if ((mod & MOD_SL) != 0) {
384
+ mod -= MOD_SL;
385
+ // Propagate lower bound for positive Boolean views
386
+ {
387
+ ScaleBool* f=p.fst();
388
+ for (ScaleBool* l=p.lst(); (f < l) && (f->a > sl_p); f++) {
389
+ GECODE_ME_CHECK(f->x.zero_none(home));
390
+ su_n -= f->a;
391
+ }
392
+ if (f > p.fst()) {
393
+ p.fst(f); mod |= MOD_SU;
394
+ }
395
+ }
396
+ // Propagate lower bound for negative Boolean views
397
+ {
398
+ ScaleBool* f=n.fst();
399
+ for (ScaleBool* l=n.lst(); (f < l) && (f->a > sl_p); f++) {
400
+ GECODE_ME_CHECK(f->x.one_none(home)); c += f->a;
401
+ su_n -= f->a;
402
+ }
403
+ if (f > n.fst()) {
404
+ n.fst(f); mod |= MOD_SU;
405
+ }
406
+ }
407
+ // Propagate lower bound for integer view
408
+ {
409
+ const int x_min = x.min();
410
+ ModEvent me = x.gq(home,x.max() - sl_p);
411
+ if (me_failed(me))
412
+ return ES_FAILED;
413
+ if (me_modified(me)) {
414
+ su_n -= x.min() - x_min;
415
+ mod |= MOD_SU;
416
+ }
417
+ }
418
+ }
419
+ if ((mod & MOD_SU) != 0) {
420
+ mod -= MOD_SU;
421
+ // Propagate upper bound for positive Boolean views
422
+ {
423
+ ScaleBool* f=p.fst();
424
+ for (ScaleBool* l=p.lst(); (f < l) && (f->a > su_n); f++) {
425
+ GECODE_ME_CHECK(f->x.one_none(home)); c -= f->a;
426
+ sl_p -= f->a;
427
+ }
428
+ if (f > p.fst()) {
429
+ p.fst(f); mod |= MOD_SL;;
430
+ }
431
+ }
432
+ // Propagate upper bound for negative Boolean views
433
+ {
434
+ ScaleBool* f=n.fst();
435
+ for (ScaleBool* l=n.lst(); (f < l) && (f->a > su_n); f++) {
436
+ GECODE_ME_CHECK(f->x.zero_none(home));
437
+ sl_p -= f->a;
438
+ }
439
+ if (f > n.fst()) {
440
+ n.fst(f); mod |= MOD_SL;;
441
+ }
442
+ }
443
+ // Propagate upper bound for integer view
444
+ {
445
+ const int x_max = x.max();
446
+ ModEvent me = x.lq(home,x.min() + su_n);
447
+ if (me_failed(me))
448
+ return ES_FAILED;
449
+ if (me_modified(me)) {
450
+ sl_p += x.max() - x_max;
451
+ mod |= MOD_SL;;
452
+ }
453
+ }
454
+ }
455
+ } while (mod != 0);
456
+
457
+ return (sl_p == -su_n) ? ES_SUBSUMED(this,sizeof(*this)) : ES_FIX;
458
+ }
459
+
460
+
461
+
462
+ template<class SBAP, class SBAN, class VX>
463
+ ExecStatus
464
+ EqBoolScale<SBAP,SBAN,VX>::post(Space* home,
465
+ SBAP& p, SBAN& n, VX x, int c) {
466
+ p.sort(); n.sort();
467
+ if (p.empty()) {
468
+ EmptyScaleBoolArray ep;
469
+ (void) new (home) EqBoolScale<EmptyScaleBoolArray,SBAN,VX>
470
+ (home,ep,n,x,c);
471
+ } else if (n.empty()) {
472
+ EmptyScaleBoolArray en;
473
+ (void) new (home) EqBoolScale<SBAP,EmptyScaleBoolArray,VX>
474
+ (home,p,en,x,c);
475
+ } else {
476
+ (void) new (home) EqBoolScale<ScaleBoolArray,ScaleBoolArray,VX>
477
+ (home,p,n,x,c);
478
+ }
479
+ return ES_OK;
480
+ }
481
+
482
+
483
+ /*
484
+ * Boolean inequality with coefficients
485
+ *
486
+ */
487
+
488
+ template<class SBAP, class SBAN, class VX>
489
+ forceinline
490
+ LqBoolScale<SBAP,SBAN,VX>::LqBoolScale(Space* home,
491
+ SBAP& p, SBAN& n,
492
+ VX x, int c)
493
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>(home,p,n,x,c) {}
494
+
495
+ template<class SBAP, class SBAN, class VX>
496
+ forceinline
497
+ LqBoolScale<SBAP,SBAN,VX>::LqBoolScale(Space* home, bool share,
498
+ Propagator& pr,
499
+ SBAP& p, SBAN& n,
500
+ VX x, int c)
501
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>(home,share,pr,p,n,x,c) {}
502
+
503
+ template<class SBAP, class SBAN, class VX>
504
+ Actor*
505
+ LqBoolScale<SBAP,SBAN,VX>::copy(Space* home, bool share) {
506
+ if (p.empty()) {
507
+ EmptyScaleBoolArray ep;
508
+ if (x.assigned()) {
509
+ ZeroIntView z;
510
+ return new (home) LqBoolScale<EmptyScaleBoolArray,SBAN,ZeroIntView>
511
+ (home,share,*this,ep,n,z,c+x.val());
512
+ } else {
513
+ return new (home) LqBoolScale<EmptyScaleBoolArray,SBAN,VX>
514
+ (home,share,*this,ep,n,x,c);
515
+ }
516
+ } else if (n.empty()) {
517
+ EmptyScaleBoolArray en;
518
+ if (x.assigned()) {
519
+ ZeroIntView z;
520
+ return new (home) LqBoolScale<SBAP,EmptyScaleBoolArray,ZeroIntView>
521
+ (home,share,*this,p,en,z,c+x.val());
522
+ } else {
523
+ return new (home) LqBoolScale<SBAP,EmptyScaleBoolArray,VX>
524
+ (home,share,*this,p,en,x,c);
525
+ }
526
+ } else {
527
+ return new (home) LqBoolScale<SBAP,SBAN,VX>(home,share,*this,p,n,x,c);
528
+ }
529
+ }
530
+
531
+ template<class SBAP, class SBAN, class VX>
532
+ inline Support::Symbol
533
+ LqBoolScale<SBAP,SBAN,VX>::ati(void) {
534
+ return Reflection::mangle<SBAP,SBAN,VX>("Gecode::Int::Linear::LqBoolScale");
535
+ }
536
+
537
+ template<class SBAP, class SBAN, class VX>
538
+ Reflection::ActorSpec
539
+ LqBoolScale<SBAP,SBAN,VX>::spec(const Space* home,
540
+ Reflection::VarMap& m) const {
541
+ return LinBoolScale<SBAP,SBAN,VX,PC_INT_BND>::spec(home, m, ati());
542
+ }
543
+
544
+ template<class SBAP, class SBAN, class VX>
545
+ void
546
+ LqBoolScale<SBAP,SBAN,VX>::post(Space* home, Reflection::VarMap& vars,
547
+ const Reflection::ActorSpec& spec) {
548
+ spec.checkArity(6);
549
+ Reflection::IntArrayArg* c_p = spec[0]->toIntArray();
550
+ ViewArray<BoolView> b_pv(home, vars, spec[1]);
551
+ Reflection::IntArrayArg* c_n = spec[2]->toIntArray();
552
+ ViewArray<BoolView> b_nv(home, vars, spec[3]);
553
+ VX x(home, vars, spec[4]);
554
+ int c = spec[5]->toInt();
555
+ SBAP b_p(home,b_pv.size());
556
+ {
557
+ ScaleBool* f=b_p.fst();
558
+ for (int i=b_pv.size(); i--; ) {
559
+ f[i].x=b_pv[i]; f[i].a=(*c_p)[i];
560
+ }
561
+ }
562
+ SBAN b_n(home,b_nv.size());
563
+ {
564
+ ScaleBool* f=b_n.fst();
565
+ for (int i=b_nv.size(); i--; ) {
566
+ f[i].x=b_nv[i]; f[i].a=(*c_n)[i];
567
+ }
568
+ }
569
+ (void) new (home) LqBoolScale<SBAP,SBAN,VX>(home,b_p,b_n,x,c);
570
+ }
571
+
572
+ template<class SBAP, class SBAN, class VX>
573
+ ExecStatus
574
+ LqBoolScale<SBAP,SBAN,VX>::propagate(Space* home, ModEventDelta med) {
575
+ int sl = 0;
576
+ if (BoolView::me(med) == ME_BOOL_VAL) {
577
+ // Eliminate assigned positive views while keeping order
578
+ {
579
+ // Skip not assigned views
580
+ ScaleBool* f = p.fst();
581
+ ScaleBool* l = p.lst();
582
+ while ((f < l) && f->x.none())
583
+ f++;
584
+ // Copy unassigned views to t
585
+ ScaleBool* t = f;
586
+ while (f < l) {
587
+ if (f->x.one()) {
588
+ c -= f->a;
589
+ } else if (f->x.none()) {
590
+ *t = *f; t++;
591
+ }
592
+ f++;
593
+ }
594
+ p.lst(t);
595
+ }
596
+ // Eliminate assigned negative views while keeping order
597
+ {
598
+ // Skip not assigned views
599
+ ScaleBool* f = n.fst();
600
+ ScaleBool* l = n.lst();
601
+ while ((f < l) && f->x.none()) {
602
+ sl += f->a; f++;
603
+ }
604
+ // Copy unassigned views to t
605
+ ScaleBool* t = f;
606
+ while (f < l) {
607
+ if (f->x.one()) {
608
+ c += f->a;
609
+ } else if (f->x.none()) {
610
+ sl += f->a; *t = *f; t++;
611
+ }
612
+ f++;
613
+ }
614
+ n.lst(t);
615
+ }
616
+ } else {
617
+ for (ScaleBool* f=n.fst(); f<n.lst(); f++)
618
+ sl += f->a;
619
+ }
620
+
621
+ sl += x.max() + c;
622
+
623
+ // Propagate upper bound for positive Boolean views
624
+ {
625
+ ScaleBool* f=p.fst();
626
+ for (ScaleBool* l=p.lst(); (f < l) && (f->a > sl); f++)
627
+ GECODE_ME_CHECK(f->x.zero_none(home));
628
+ p.fst(f);
629
+ }
630
+ // Propagate lower bound for negative Boolean views
631
+ {
632
+ ScaleBool* f=n.fst();
633
+ for (ScaleBool* l=n.lst(); (f < l) && (f->a > sl); f++) {
634
+ c += f->a;
635
+ GECODE_ME_CHECK(f->x.one_none(home));
636
+ }
637
+ n.fst(f);
638
+ }
639
+ ExecStatus es = ES_FIX;
640
+ // Propagate lower bound for integer view
641
+ {
642
+ const int slx = x.max() - sl;
643
+ ModEvent me = x.gq(home,slx);
644
+ if (me_failed(me))
645
+ return ES_FAILED;
646
+ if (me_modified(me) && (slx != x.min()))
647
+ es = ES_NOFIX;
648
+ }
649
+
650
+ if (p.empty() && n.empty())
651
+ return ES_SUBSUMED(this,home);
652
+
653
+ return es;
654
+ }
655
+
656
+
657
+
658
+ template<class SBAP, class SBAN, class VX>
659
+ ExecStatus
660
+ LqBoolScale<SBAP,SBAN,VX>::post(Space* home,
661
+ SBAP& p, SBAN& n, VX x, int c) {
662
+ p.sort(); n.sort();
663
+ if (p.empty()) {
664
+ EmptyScaleBoolArray ep;
665
+ (void) new (home) LqBoolScale<EmptyScaleBoolArray,SBAN,VX>
666
+ (home,ep,n,x,c);
667
+ } else if (n.empty()) {
668
+ EmptyScaleBoolArray en;
669
+ (void) new (home) LqBoolScale<SBAP,EmptyScaleBoolArray,VX>
670
+ (home,p,en,x,c);
671
+ } else {
672
+ (void) new (home) LqBoolScale<ScaleBoolArray,ScaleBoolArray,VX>
673
+ (home,p,n,x,c);
674
+ }
675
+ return ES_OK;
676
+ }
677
+
678
+ /*
679
+ * Boolean disequality with coefficients
680
+ *
681
+ */
682
+
683
+ template<class SBAP, class SBAN, class VX>
684
+ forceinline
685
+ NqBoolScale<SBAP,SBAN,VX>::NqBoolScale(Space* home,
686
+ SBAP& p, SBAN& n,
687
+ VX x, int c)
688
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>(home,p,n,x,c) {}
689
+
690
+ template<class SBAP, class SBAN, class VX>
691
+ forceinline
692
+ NqBoolScale<SBAP,SBAN,VX>::NqBoolScale(Space* home, bool share,
693
+ Propagator& pr,
694
+ SBAP& p, SBAN& n,
695
+ VX x, int c)
696
+ : LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>(home,share,pr,p,n,x,c) {}
697
+
698
+ template<class SBAP, class SBAN, class VX>
699
+ Actor*
700
+ NqBoolScale<SBAP,SBAN,VX>::copy(Space* home, bool share) {
701
+ if (p.empty()) {
702
+ EmptyScaleBoolArray ep;
703
+ if (x.assigned()) {
704
+ ZeroIntView z;
705
+ return new (home) NqBoolScale<EmptyScaleBoolArray,SBAN,ZeroIntView>
706
+ (home,share,*this,ep,n,z,c+x.val());
707
+ } else {
708
+ return new (home) NqBoolScale<EmptyScaleBoolArray,SBAN,VX>
709
+ (home,share,*this,ep,n,x,c);
710
+ }
711
+ } else if (n.empty()) {
712
+ EmptyScaleBoolArray en;
713
+ if (x.assigned()) {
714
+ ZeroIntView z;
715
+ return new (home) NqBoolScale<SBAP,EmptyScaleBoolArray,ZeroIntView>
716
+ (home,share,*this,p,en,z,c+x.val());
717
+ } else {
718
+ return new (home) NqBoolScale<SBAP,EmptyScaleBoolArray,VX>
719
+ (home,share,*this,p,en,x,c);
720
+ }
721
+ } else {
722
+ return new (home) NqBoolScale<SBAP,SBAN,VX>(home,share,*this,p,n,x,c);
723
+ }
724
+ }
725
+
726
+ template<class SBAP, class SBAN, class VX>
727
+ inline Support::Symbol
728
+ NqBoolScale<SBAP,SBAN,VX>::ati(void) {
729
+ return Reflection::mangle<SBAP,SBAN,VX>("Gecode::Int::Linear::NqBoolScale");
730
+ }
731
+
732
+ template<class SBAP, class SBAN, class VX>
733
+ Reflection::ActorSpec
734
+ NqBoolScale<SBAP,SBAN,VX>::spec(const Space* home,
735
+ Reflection::VarMap& m) const {
736
+ return LinBoolScale<SBAP,SBAN,VX,PC_INT_VAL>::spec(home, m, ati());
737
+ }
738
+
739
+ template<class SBAP, class SBAN, class VX>
740
+ void
741
+ NqBoolScale<SBAP,SBAN,VX>::post(Space* home, Reflection::VarMap& vars,
742
+ const Reflection::ActorSpec& spec) {
743
+ spec.checkArity(6);
744
+ Reflection::IntArrayArg* c_p = spec[0]->toIntArray();
745
+ ViewArray<BoolView> b_pv(home, vars, spec[1]);
746
+ Reflection::IntArrayArg* c_n = spec[2]->toIntArray();
747
+ ViewArray<BoolView> b_nv(home, vars, spec[3]);
748
+ VX x(home, vars, spec[4]);
749
+ int c = spec[5]->toInt();
750
+ SBAP b_p(home,b_pv.size());
751
+ {
752
+ ScaleBool* f=b_p.fst();
753
+ for (int i=b_pv.size(); i--; ) {
754
+ f[i].x=b_pv[i]; f[i].a=(*c_p)[i];
755
+ }
756
+ }
757
+ SBAN b_n(home,b_nv.size());
758
+ {
759
+ ScaleBool* f=b_n.fst();
760
+ for (int i=b_nv.size(); i--; ) {
761
+ f[i].x=b_nv[i]; f[i].a=(*c_n)[i];
762
+ }
763
+ }
764
+ (void) new (home) NqBoolScale<SBAP,SBAN,VX>(home,b_p,b_n,x,c);
765
+ }
766
+
767
+ template<class SBAP, class SBAN, class VX>
768
+ ExecStatus
769
+ NqBoolScale<SBAP,SBAN,VX>::propagate(Space* home, ModEventDelta med) {
770
+ if (BoolView::me(med) == ME_BOOL_VAL) {
771
+ // Eliminate assigned positive views
772
+ {
773
+ ScaleBool* f = p.fst();
774
+ ScaleBool* t = f;
775
+ ScaleBool* l = p.lst();
776
+ while (f < l) {
777
+ if (f->x.one()) {
778
+ c -= f->a; *f = *(t++);
779
+ } else if (f->x.zero()) {
780
+ *f = *(t++);
781
+ }
782
+ f++;
783
+ }
784
+ p.fst(t);
785
+ }
786
+ // Eliminate assigned negative views
787
+ {
788
+ ScaleBool* f = n.fst();
789
+ ScaleBool* t = f;
790
+ ScaleBool* l = n.lst();
791
+ while (f < l) {
792
+ if (f->x.one()) {
793
+ c += f->a; *f = *(t++);
794
+ } else if (f->x.zero()) {
795
+ *f = *(t++);
796
+ }
797
+ f++;
798
+ }
799
+ n.fst(t);
800
+ }
801
+ }
802
+
803
+ if (p.empty() && n.empty()) {
804
+ GECODE_ME_CHECK(x.nq(home,-c));
805
+ return ES_SUBSUMED(this,home);
806
+ }
807
+
808
+ if (x.assigned()) {
809
+ int r = x.val()+c;
810
+ if (p.empty() && (n.size() == 1)) {
811
+ if (r == -n.fst()->a) {
812
+ GECODE_ME_CHECK(n.fst()->x.zero_none(home));
813
+ } else if (r == 0) {
814
+ GECODE_ME_CHECK(n.fst()->x.one_none(home));
815
+ }
816
+ return ES_SUBSUMED(this,home);
817
+ }
818
+ if ((p.size() == 1) && n.empty()) {
819
+ if (r == p.fst()->a) {
820
+ GECODE_ME_CHECK(p.fst()->x.zero_none(home));
821
+ } else if (r == 0) {
822
+ GECODE_ME_CHECK(p.fst()->x.one_none(home));
823
+ }
824
+ return ES_SUBSUMED(this,home);
825
+ }
826
+ }
827
+ return ES_FIX;
828
+ }
829
+
830
+
831
+
832
+ template<class SBAP, class SBAN, class VX>
833
+ ExecStatus
834
+ NqBoolScale<SBAP,SBAN,VX>::post(Space* home,
835
+ SBAP& p, SBAN& n, VX x, int c) {
836
+ if (p.empty()) {
837
+ EmptyScaleBoolArray ep;
838
+ (void) new (home) NqBoolScale<EmptyScaleBoolArray,SBAN,VX>
839
+ (home,ep,n,x,c);
840
+ } else if (n.empty()) {
841
+ EmptyScaleBoolArray en;
842
+ (void) new (home) NqBoolScale<SBAP,EmptyScaleBoolArray,VX>
843
+ (home,p,en,x,c);
844
+ } else {
845
+ (void) new (home) NqBoolScale<ScaleBoolArray,ScaleBoolArray,VX>
846
+ (home,p,n,x,c);
847
+ }
848
+ return ES_OK;
849
+ }
850
+
851
+ }}}
852
+
853
+ // STATISTICS: int-prop
854
+