gecoder-with-gecode 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. data/CHANGES +81 -0
  2. data/COPYING +17 -0
  3. data/LGPL-LICENSE +458 -0
  4. data/README +45 -0
  5. data/Rakefile +13 -0
  6. data/example/example_helper.rb +1 -0
  7. data/example/magic_sequence.rb +43 -0
  8. data/example/queens.rb +43 -0
  9. data/example/raw_bindings.rb +42 -0
  10. data/example/send_more_money.rb +43 -0
  11. data/example/send_most_money.rb +58 -0
  12. data/example/square_tiling.rb +84 -0
  13. data/example/sudoku-set.rb +110 -0
  14. data/example/sudoku.rb +61 -0
  15. data/ext/extconf.rb +29 -0
  16. data/ext/gecode-1.3.1/LICENSE +34 -0
  17. data/ext/gecode-1.3.1/Makefile.contribs +71 -0
  18. data/ext/gecode-1.3.1/Makefile.dep +3928 -0
  19. data/ext/gecode-1.3.1/Makefile.in +966 -0
  20. data/ext/gecode-1.3.1/changelog.in +1065 -0
  21. data/ext/gecode-1.3.1/configure +8590 -0
  22. data/ext/gecode-1.3.1/configure.ac +179 -0
  23. data/ext/gecode-1.3.1/configure.ac.in +175 -0
  24. data/ext/gecode-1.3.1/contribs/README +26 -0
  25. data/ext/gecode-1.3.1/contribs/graph/INSTALL +53 -0
  26. data/ext/gecode-1.3.1/contribs/graph/LICENSE +11 -0
  27. data/ext/gecode-1.3.1/contribs/graph/Makefile +167 -0
  28. data/ext/gecode-1.3.1/contribs/graph/Makefile.in.in +169 -0
  29. data/ext/gecode-1.3.1/contribs/graph/TODO +28 -0
  30. data/ext/gecode-1.3.1/contribs/graph/binarysimple.hh +82 -0
  31. data/ext/gecode-1.3.1/contribs/graph/binarysimple.icc +186 -0
  32. data/ext/gecode-1.3.1/contribs/graph/branch/branch.icc +257 -0
  33. data/ext/gecode-1.3.1/contribs/graph/configure +2160 -0
  34. data/ext/gecode-1.3.1/contribs/graph/configure.ac +33 -0
  35. data/ext/gecode-1.3.1/contribs/graph/doxygen.conf +1226 -0
  36. data/ext/gecode-1.3.1/contribs/graph/doxygen.hh +132 -0
  37. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-basic.cc +94 -0
  38. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-complement.cc +104 -0
  39. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-instUB.cc +105 -0
  40. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path.cc +92 -0
  41. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-path2.cc +273 -0
  42. data/ext/gecode-1.3.1/contribs/graph/examples/cpgraph-pathcost.cc +311 -0
  43. data/ext/gecode-1.3.1/contribs/graph/examples/g1.txt +1 -0
  44. data/ext/gecode-1.3.1/contribs/graph/examples/g2.txt +1 -0
  45. data/ext/gecode-1.3.1/contribs/graph/graph.hh +51 -0
  46. data/ext/gecode-1.3.1/contribs/graph/graphutils.h +46 -0
  47. data/ext/gecode-1.3.1/contribs/graph/graphutils.icc +140 -0
  48. data/ext/gecode-1.3.1/contribs/graph/misc/doxygen/footer.html +1 -0
  49. data/ext/gecode-1.3.1/contribs/graph/path.hh +116 -0
  50. data/ext/gecode-1.3.1/contribs/graph/path.icc +64 -0
  51. data/ext/gecode-1.3.1/contribs/graph/path/path.icc +139 -0
  52. data/ext/gecode-1.3.1/contribs/graph/path/pathdegree.icc +133 -0
  53. data/ext/gecode-1.3.1/contribs/graph/path/pathgraphs.icc +341 -0
  54. data/ext/gecode-1.3.1/contribs/graph/shortdesc.ac +1 -0
  55. data/ext/gecode-1.3.1/contribs/graph/stlutility.icc +105 -0
  56. data/ext/gecode-1.3.1/contribs/graph/var.icc +106 -0
  57. data/ext/gecode-1.3.1/contribs/graph/view.icc +373 -0
  58. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.cc +162 -0
  59. data/ext/gecode-1.3.1/contribs/graph/view/arcnode.hh +78 -0
  60. data/ext/gecode-1.3.1/contribs/graph/view/boundsgraphs.icc +349 -0
  61. data/ext/gecode-1.3.1/contribs/graph/view/constant.icc +148 -0
  62. data/ext/gecode-1.3.1/contribs/graph/view/iter.icc +337 -0
  63. data/ext/gecode-1.3.1/contribs/graph/view/nodearcsets.icc +493 -0
  64. data/ext/gecode-1.3.1/contribs/graph/view/nodeset.icc +60 -0
  65. data/ext/gecode-1.3.1/contribs/graph/view/outadjsets.icc +600 -0
  66. data/ext/gecode-1.3.1/contribs/graph/view/prop.icc +135 -0
  67. data/ext/gecode-1.3.1/contribs/map/COMPILING +68 -0
  68. data/ext/gecode-1.3.1/contribs/map/LICENSE +11 -0
  69. data/ext/gecode-1.3.1/contribs/map/Makefile.in.in +173 -0
  70. data/ext/gecode-1.3.1/contribs/map/configure +2285 -0
  71. data/ext/gecode-1.3.1/contribs/map/configure.ac +32 -0
  72. data/ext/gecode-1.3.1/contribs/map/constraints.hh +46 -0
  73. data/ext/gecode-1.3.1/contribs/map/constraints.icc +84 -0
  74. data/ext/gecode-1.3.1/contribs/map/doxygen.conf +1229 -0
  75. data/ext/gecode-1.3.1/contribs/map/doxygen.hh +33 -0
  76. data/ext/gecode-1.3.1/contribs/map/examples/approximateMatching.cc +199 -0
  77. data/ext/gecode-1.3.1/contribs/map/examples/g1.txt +1 -0
  78. data/ext/gecode-1.3.1/contribs/map/examples/g2.txt +1 -0
  79. data/ext/gecode-1.3.1/contribs/map/examples/graph-examples.tgz +0 -0
  80. data/ext/gecode-1.3.1/contribs/map/examples/isomorphism.cc +148 -0
  81. data/ext/gecode-1.3.1/contribs/map/examples/map +0 -0
  82. data/ext/gecode-1.3.1/contribs/map/examples/map.cc +80 -0
  83. data/ext/gecode-1.3.1/contribs/map/examples/subgraphmonomorphism.cc +155 -0
  84. data/ext/gecode-1.3.1/contribs/map/map.hh +65 -0
  85. data/ext/gecode-1.3.1/contribs/map/matching/mono.hh +235 -0
  86. data/ext/gecode-1.3.1/contribs/map/matching/mono.icc +771 -0
  87. data/ext/gecode-1.3.1/contribs/map/shortdesc.ac +2 -0
  88. data/ext/gecode-1.3.1/contribs/map/var.icc +346 -0
  89. data/ext/gecode-1.3.1/contribs/map/var/imp.cc +42 -0
  90. data/ext/gecode-1.3.1/contribs/map/var/imp.icc +436 -0
  91. data/ext/gecode-1.3.1/doxygen.conf.in +1225 -0
  92. data/ext/gecode-1.3.1/doxygen.hh.in +877 -0
  93. data/ext/gecode-1.3.1/examples/all-interval-sort.cc +201 -0
  94. data/ext/gecode-1.3.1/examples/all-interval.cc +114 -0
  95. data/ext/gecode-1.3.1/examples/alpha.cc +112 -0
  96. data/ext/gecode-1.3.1/examples/baseline.cc +71 -0
  97. data/ext/gecode-1.3.1/examples/bibd.cc +173 -0
  98. data/ext/gecode-1.3.1/examples/black-hole.cc +281 -0
  99. data/ext/gecode-1.3.1/examples/cars.cc +165 -0
  100. data/ext/gecode-1.3.1/examples/crew.cc +220 -0
  101. data/ext/gecode-1.3.1/examples/crowded-chess.cc +312 -0
  102. data/ext/gecode-1.3.1/examples/donald.cc +93 -0
  103. data/ext/gecode-1.3.1/examples/eq20.cc +111 -0
  104. data/ext/gecode-1.3.1/examples/golf.cc +242 -0
  105. data/ext/gecode-1.3.1/examples/golomb.cc +141 -0
  106. data/ext/gecode-1.3.1/examples/graph-color.cc +371 -0
  107. data/ext/gecode-1.3.1/examples/grocery.cc +107 -0
  108. data/ext/gecode-1.3.1/examples/hamming.cc +107 -0
  109. data/ext/gecode-1.3.1/examples/ind-set.cc +130 -0
  110. data/ext/gecode-1.3.1/examples/knights.cc +146 -0
  111. data/ext/gecode-1.3.1/examples/langfordnum.cc +244 -0
  112. data/ext/gecode-1.3.1/examples/magic-sequence-gcc.cc +93 -0
  113. data/ext/gecode-1.3.1/examples/magic-sequence.cc +108 -0
  114. data/ext/gecode-1.3.1/examples/magic-square.cc +120 -0
  115. data/ext/gecode-1.3.1/examples/money.cc +92 -0
  116. data/ext/gecode-1.3.1/examples/ortho-latin.cc +156 -0
  117. data/ext/gecode-1.3.1/examples/packing.cc +211 -0
  118. data/ext/gecode-1.3.1/examples/partition.cc +126 -0
  119. data/ext/gecode-1.3.1/examples/photo.cc +155 -0
  120. data/ext/gecode-1.3.1/examples/picture-puzzle.cc +481 -0
  121. data/ext/gecode-1.3.1/examples/queen-armies.cc +240 -0
  122. data/ext/gecode-1.3.1/examples/queens.cc +99 -0
  123. data/ext/gecode-1.3.1/examples/sports-league.cc +454 -0
  124. data/ext/gecode-1.3.1/examples/steiner.cc +148 -0
  125. data/ext/gecode-1.3.1/examples/stress-domain.cc +86 -0
  126. data/ext/gecode-1.3.1/examples/stress-element.cc +95 -0
  127. data/ext/gecode-1.3.1/examples/stress-exec.cc +74 -0
  128. data/ext/gecode-1.3.1/examples/stress-min.cc +84 -0
  129. data/ext/gecode-1.3.1/examples/stress-search.cc +72 -0
  130. data/ext/gecode-1.3.1/examples/sudoku-mixed.cc +282 -0
  131. data/ext/gecode-1.3.1/examples/sudoku-set.cc +162 -0
  132. data/ext/gecode-1.3.1/examples/sudoku.cc +188 -0
  133. data/ext/gecode-1.3.1/examples/sudoku.icc +703 -0
  134. data/ext/gecode-1.3.1/examples/support.cc +160 -0
  135. data/ext/gecode-1.3.1/examples/support.hh +98 -0
  136. data/ext/gecode-1.3.1/examples/support.icc +187 -0
  137. data/ext/gecode-1.3.1/examples/timer.cc +47 -0
  138. data/ext/gecode-1.3.1/examples/timer.hh +72 -0
  139. data/ext/gecode-1.3.1/examples/warehouses.cc +176 -0
  140. data/ext/gecode-1.3.1/extconf.rb +8 -0
  141. data/ext/gecode-1.3.1/gecode.m4 +736 -0
  142. data/ext/gecode-1.3.1/gecode/config.icc.in +50 -0
  143. data/ext/gecode-1.3.1/gecode/int.hh +1426 -0
  144. data/ext/gecode-1.3.1/gecode/int/arithmetic.cc +87 -0
  145. data/ext/gecode-1.3.1/gecode/int/arithmetic.hh +292 -0
  146. data/ext/gecode-1.3.1/gecode/int/arithmetic/abs.icc +213 -0
  147. data/ext/gecode-1.3.1/gecode/int/arithmetic/max.icc +196 -0
  148. data/ext/gecode-1.3.1/gecode/int/arithmetic/mult.icc +478 -0
  149. data/ext/gecode-1.3.1/gecode/int/array.cc +61 -0
  150. data/ext/gecode-1.3.1/gecode/int/array.icc +264 -0
  151. data/ext/gecode-1.3.1/gecode/int/bool.cc +187 -0
  152. data/ext/gecode-1.3.1/gecode/int/bool.hh +255 -0
  153. data/ext/gecode-1.3.1/gecode/int/bool/base.icc +123 -0
  154. data/ext/gecode-1.3.1/gecode/int/bool/eq.icc +89 -0
  155. data/ext/gecode-1.3.1/gecode/int/bool/eqv.icc +132 -0
  156. data/ext/gecode-1.3.1/gecode/int/bool/or.icc +380 -0
  157. data/ext/gecode-1.3.1/gecode/int/branch.cc +81 -0
  158. data/ext/gecode-1.3.1/gecode/int/branch.hh +444 -0
  159. data/ext/gecode-1.3.1/gecode/int/branch/assign.cc +83 -0
  160. data/ext/gecode-1.3.1/gecode/int/branch/assign.icc +76 -0
  161. data/ext/gecode-1.3.1/gecode/int/branch/select-val.icc +104 -0
  162. data/ext/gecode-1.3.1/gecode/int/branch/select-view.icc +219 -0
  163. data/ext/gecode-1.3.1/gecode/int/channel.cc +62 -0
  164. data/ext/gecode-1.3.1/gecode/int/channel.hh +144 -0
  165. data/ext/gecode-1.3.1/gecode/int/channel/base.icc +60 -0
  166. data/ext/gecode-1.3.1/gecode/int/channel/dom.icc +313 -0
  167. data/ext/gecode-1.3.1/gecode/int/channel/stack.icc +59 -0
  168. data/ext/gecode-1.3.1/gecode/int/channel/val.icc +239 -0
  169. data/ext/gecode-1.3.1/gecode/int/count.cc +174 -0
  170. data/ext/gecode-1.3.1/gecode/int/count.hh +401 -0
  171. data/ext/gecode-1.3.1/gecode/int/count/int.icc +495 -0
  172. data/ext/gecode-1.3.1/gecode/int/count/rel.icc +100 -0
  173. data/ext/gecode-1.3.1/gecode/int/count/view.icc +332 -0
  174. data/ext/gecode-1.3.1/gecode/int/cumulatives.cc +210 -0
  175. data/ext/gecode-1.3.1/gecode/int/cumulatives.hh +118 -0
  176. data/ext/gecode-1.3.1/gecode/int/cumulatives/val.icc +377 -0
  177. data/ext/gecode-1.3.1/gecode/int/distinct.cc +77 -0
  178. data/ext/gecode-1.3.1/gecode/int/distinct.hh +272 -0
  179. data/ext/gecode-1.3.1/gecode/int/distinct/bilink.icc +73 -0
  180. data/ext/gecode-1.3.1/gecode/int/distinct/bnd.icc +335 -0
  181. data/ext/gecode-1.3.1/gecode/int/distinct/combptr.icc +62 -0
  182. data/ext/gecode-1.3.1/gecode/int/distinct/dom.icc +740 -0
  183. data/ext/gecode-1.3.1/gecode/int/distinct/edge.icc +96 -0
  184. data/ext/gecode-1.3.1/gecode/int/distinct/node.icc +107 -0
  185. data/ext/gecode-1.3.1/gecode/int/distinct/ter-dom.icc +97 -0
  186. data/ext/gecode-1.3.1/gecode/int/distinct/val.icc +171 -0
  187. data/ext/gecode-1.3.1/gecode/int/dom.cc +81 -0
  188. data/ext/gecode-1.3.1/gecode/int/dom.hh +101 -0
  189. data/ext/gecode-1.3.1/gecode/int/dom/range.icc +85 -0
  190. data/ext/gecode-1.3.1/gecode/int/dom/spec.icc +85 -0
  191. data/ext/gecode-1.3.1/gecode/int/element.cc +58 -0
  192. data/ext/gecode-1.3.1/gecode/int/element.hh +203 -0
  193. data/ext/gecode-1.3.1/gecode/int/element/int.icc +396 -0
  194. data/ext/gecode-1.3.1/gecode/int/element/view.icc +443 -0
  195. data/ext/gecode-1.3.1/gecode/int/exception.icc +137 -0
  196. data/ext/gecode-1.3.1/gecode/int/gcc.cc +708 -0
  197. data/ext/gecode-1.3.1/gecode/int/gcc.hh +338 -0
  198. data/ext/gecode-1.3.1/gecode/int/gcc/bnd.icc +629 -0
  199. data/ext/gecode-1.3.1/gecode/int/gcc/dom.icc +504 -0
  200. data/ext/gecode-1.3.1/gecode/int/gcc/gccbndsup.icc +760 -0
  201. data/ext/gecode-1.3.1/gecode/int/gcc/graphsup.icc +2375 -0
  202. data/ext/gecode-1.3.1/gecode/int/gcc/lbc.icc +375 -0
  203. data/ext/gecode-1.3.1/gecode/int/gcc/occur.icc +687 -0
  204. data/ext/gecode-1.3.1/gecode/int/gcc/ubc.icc +236 -0
  205. data/ext/gecode-1.3.1/gecode/int/gcc/val.icc +373 -0
  206. data/ext/gecode-1.3.1/gecode/int/int-set.cc +115 -0
  207. data/ext/gecode-1.3.1/gecode/int/int-set.icc +151 -0
  208. data/ext/gecode-1.3.1/gecode/int/linear.cc +247 -0
  209. data/ext/gecode-1.3.1/gecode/int/linear.hh +1056 -0
  210. data/ext/gecode-1.3.1/gecode/int/linear/binary.icc +439 -0
  211. data/ext/gecode-1.3.1/gecode/int/linear/bool-int.icc +422 -0
  212. data/ext/gecode-1.3.1/gecode/int/linear/bool-view.icc +311 -0
  213. data/ext/gecode-1.3.1/gecode/int/linear/dom.icc +503 -0
  214. data/ext/gecode-1.3.1/gecode/int/linear/nary.icc +857 -0
  215. data/ext/gecode-1.3.1/gecode/int/linear/noview.icc +264 -0
  216. data/ext/gecode-1.3.1/gecode/int/linear/post.cc +542 -0
  217. data/ext/gecode-1.3.1/gecode/int/linear/ternary.icc +255 -0
  218. data/ext/gecode-1.3.1/gecode/int/propagator.icc +194 -0
  219. data/ext/gecode-1.3.1/gecode/int/regular.cc +40 -0
  220. data/ext/gecode-1.3.1/gecode/int/regular.hh +83 -0
  221. data/ext/gecode-1.3.1/gecode/int/regular/dfa.cc +466 -0
  222. data/ext/gecode-1.3.1/gecode/int/regular/dfa.icc +172 -0
  223. data/ext/gecode-1.3.1/gecode/int/regular/dom.icc +480 -0
  224. data/ext/gecode-1.3.1/gecode/int/regular/reg.cc +738 -0
  225. data/ext/gecode-1.3.1/gecode/int/rel.cc +293 -0
  226. data/ext/gecode-1.3.1/gecode/int/rel.hh +526 -0
  227. data/ext/gecode-1.3.1/gecode/int/rel/eq.icc +640 -0
  228. data/ext/gecode-1.3.1/gecode/int/rel/lex.icc +212 -0
  229. data/ext/gecode-1.3.1/gecode/int/rel/lq-le.icc +246 -0
  230. data/ext/gecode-1.3.1/gecode/int/rel/nq.icc +188 -0
  231. data/ext/gecode-1.3.1/gecode/int/sortedness.cc +124 -0
  232. data/ext/gecode-1.3.1/gecode/int/sortedness.hh +108 -0
  233. data/ext/gecode-1.3.1/gecode/int/sortedness/matching.icc +177 -0
  234. data/ext/gecode-1.3.1/gecode/int/sortedness/narrowing.icc +243 -0
  235. data/ext/gecode-1.3.1/gecode/int/sortedness/order.icc +232 -0
  236. data/ext/gecode-1.3.1/gecode/int/sortedness/sortedness.icc +727 -0
  237. data/ext/gecode-1.3.1/gecode/int/sortedness/sortsup.icc +666 -0
  238. data/ext/gecode-1.3.1/gecode/int/var-imp.vis +198 -0
  239. data/ext/gecode-1.3.1/gecode/int/var.icc +590 -0
  240. data/ext/gecode-1.3.1/gecode/int/var/bool.icc +52 -0
  241. data/ext/gecode-1.3.1/gecode/int/var/imp-body.icc +65 -0
  242. data/ext/gecode-1.3.1/gecode/int/var/imp-hdr.icc +191 -0
  243. data/ext/gecode-1.3.1/gecode/int/var/imp.cc +361 -0
  244. data/ext/gecode-1.3.1/gecode/int/var/imp.icc +579 -0
  245. data/ext/gecode-1.3.1/gecode/int/var/int.cc +63 -0
  246. data/ext/gecode-1.3.1/gecode/int/var/int.icc +135 -0
  247. data/ext/gecode-1.3.1/gecode/int/view.icc +1219 -0
  248. data/ext/gecode-1.3.1/gecode/int/view/bool.icc +270 -0
  249. data/ext/gecode-1.3.1/gecode/int/view/constint.icc +306 -0
  250. data/ext/gecode-1.3.1/gecode/int/view/int.icc +221 -0
  251. data/ext/gecode-1.3.1/gecode/int/view/iter.icc +49 -0
  252. data/ext/gecode-1.3.1/gecode/int/view/minus.icc +285 -0
  253. data/ext/gecode-1.3.1/gecode/int/view/offset.icc +274 -0
  254. data/ext/gecode-1.3.1/gecode/int/view/print.cc +109 -0
  255. data/ext/gecode-1.3.1/gecode/int/view/rtest.icc +215 -0
  256. data/ext/gecode-1.3.1/gecode/int/view/scale.icc +373 -0
  257. data/ext/gecode-1.3.1/gecode/iter.hh +65 -0
  258. data/ext/gecode-1.3.1/gecode/iter/ranges-add.icc +130 -0
  259. data/ext/gecode-1.3.1/gecode/iter/ranges-append.icc +208 -0
  260. data/ext/gecode-1.3.1/gecode/iter/ranges-array.icc +123 -0
  261. data/ext/gecode-1.3.1/gecode/iter/ranges-cache.icc +143 -0
  262. data/ext/gecode-1.3.1/gecode/iter/ranges-compl.icc +206 -0
  263. data/ext/gecode-1.3.1/gecode/iter/ranges-diff.icc +127 -0
  264. data/ext/gecode-1.3.1/gecode/iter/ranges-empty.icc +96 -0
  265. data/ext/gecode-1.3.1/gecode/iter/ranges-inter.icc +202 -0
  266. data/ext/gecode-1.3.1/gecode/iter/ranges-minmax.icc +103 -0
  267. data/ext/gecode-1.3.1/gecode/iter/ranges-minus.icc +138 -0
  268. data/ext/gecode-1.3.1/gecode/iter/ranges-offset.icc +112 -0
  269. data/ext/gecode-1.3.1/gecode/iter/ranges-operations.icc +142 -0
  270. data/ext/gecode-1.3.1/gecode/iter/ranges-scale.icc +224 -0
  271. data/ext/gecode-1.3.1/gecode/iter/ranges-singleton.icc +71 -0
  272. data/ext/gecode-1.3.1/gecode/iter/ranges-size.icc +131 -0
  273. data/ext/gecode-1.3.1/gecode/iter/ranges-union.icc +211 -0
  274. data/ext/gecode-1.3.1/gecode/iter/ranges-values.icc +125 -0
  275. data/ext/gecode-1.3.1/gecode/iter/values-ranges.icc +91 -0
  276. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-compl.icc +247 -0
  277. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-inter.icc +227 -0
  278. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges-union.icc +236 -0
  279. data/ext/gecode-1.3.1/gecode/iter/virtual-ranges.icc +126 -0
  280. data/ext/gecode-1.3.1/gecode/kernel.hh +141 -0
  281. data/ext/gecode-1.3.1/gecode/kernel/array.icc +954 -0
  282. data/ext/gecode-1.3.1/gecode/kernel/branching.icc +233 -0
  283. data/ext/gecode-1.3.1/gecode/kernel/core.cc +417 -0
  284. data/ext/gecode-1.3.1/gecode/kernel/core.icc +1681 -0
  285. data/ext/gecode-1.3.1/gecode/kernel/exception.cc +49 -0
  286. data/ext/gecode-1.3.1/gecode/kernel/exception.icc +104 -0
  287. data/ext/gecode-1.3.1/gecode/kernel/macros.icc +98 -0
  288. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.cc +41 -0
  289. data/ext/gecode-1.3.1/gecode/kernel/memory-manager.icc +438 -0
  290. data/ext/gecode-1.3.1/gecode/kernel/memory.icc +205 -0
  291. data/ext/gecode-1.3.1/gecode/kernel/modevent.icc +53 -0
  292. data/ext/gecode-1.3.1/gecode/kernel/propagator.icc +680 -0
  293. data/ext/gecode-1.3.1/gecode/kernel/view.icc +583 -0
  294. data/ext/gecode-1.3.1/gecode/limits.hh +87 -0
  295. data/ext/gecode-1.3.1/gecode/minimodel.hh +942 -0
  296. data/ext/gecode-1.3.1/gecode/minimodel/arithmetic.cc +137 -0
  297. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.cc +207 -0
  298. data/ext/gecode-1.3.1/gecode/minimodel/bool-expr.icc +191 -0
  299. data/ext/gecode-1.3.1/gecode/minimodel/bool-rel.icc +66 -0
  300. data/ext/gecode-1.3.1/gecode/minimodel/exception.icc +59 -0
  301. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.cc +103 -0
  302. data/ext/gecode-1.3.1/gecode/minimodel/lin-expr.icc +192 -0
  303. data/ext/gecode-1.3.1/gecode/minimodel/lin-rel.icc +200 -0
  304. data/ext/gecode-1.3.1/gecode/minimodel/matrix.icc +118 -0
  305. data/ext/gecode-1.3.1/gecode/minimodel/scheduling.cc +241 -0
  306. data/ext/gecode-1.3.1/gecode/search.hh +745 -0
  307. data/ext/gecode-1.3.1/gecode/search/bab.cc +153 -0
  308. data/ext/gecode-1.3.1/gecode/search/bab.icc +101 -0
  309. data/ext/gecode-1.3.1/gecode/search/dfs.cc +63 -0
  310. data/ext/gecode-1.3.1/gecode/search/dfs.icc +144 -0
  311. data/ext/gecode-1.3.1/gecode/search/engine-ctrl.icc +109 -0
  312. data/ext/gecode-1.3.1/gecode/search/lds.cc +237 -0
  313. data/ext/gecode-1.3.1/gecode/search/lds.icc +57 -0
  314. data/ext/gecode-1.3.1/gecode/search/reco-stack.icc +219 -0
  315. data/ext/gecode-1.3.1/gecode/search/restart.icc +76 -0
  316. data/ext/gecode-1.3.1/gecode/search/statistics.icc +30 -0
  317. data/ext/gecode-1.3.1/gecode/search/stop.cc +58 -0
  318. data/ext/gecode-1.3.1/gecode/search/stop.icc +100 -0
  319. data/ext/gecode-1.3.1/gecode/set.hh +419 -0
  320. data/ext/gecode-1.3.1/gecode/set/array.cc +114 -0
  321. data/ext/gecode-1.3.1/gecode/set/array.icc +134 -0
  322. data/ext/gecode-1.3.1/gecode/set/branch.cc +57 -0
  323. data/ext/gecode-1.3.1/gecode/set/branch.hh +176 -0
  324. data/ext/gecode-1.3.1/gecode/set/branch/select-val.icc +72 -0
  325. data/ext/gecode-1.3.1/gecode/set/branch/select-view.icc +112 -0
  326. data/ext/gecode-1.3.1/gecode/set/cardinality.cc +49 -0
  327. data/ext/gecode-1.3.1/gecode/set/convex.cc +43 -0
  328. data/ext/gecode-1.3.1/gecode/set/convex.hh +92 -0
  329. data/ext/gecode-1.3.1/gecode/set/convex/conv.cc +81 -0
  330. data/ext/gecode-1.3.1/gecode/set/convex/conv.icc +51 -0
  331. data/ext/gecode-1.3.1/gecode/set/convex/hull.cc +100 -0
  332. data/ext/gecode-1.3.1/gecode/set/convex/hull.icc +52 -0
  333. data/ext/gecode-1.3.1/gecode/set/distinct.cc +48 -0
  334. data/ext/gecode-1.3.1/gecode/set/distinct.hh +97 -0
  335. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.cc +151 -0
  336. data/ext/gecode-1.3.1/gecode/set/distinct/atmostOne.icc +50 -0
  337. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.cc +46 -0
  338. data/ext/gecode-1.3.1/gecode/set/distinct/binomial.icc +157 -0
  339. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.cc +124 -0
  340. data/ext/gecode-1.3.1/gecode/set/distinct/distinct.icc +58 -0
  341. data/ext/gecode-1.3.1/gecode/set/dom.cc +224 -0
  342. data/ext/gecode-1.3.1/gecode/set/exception.icc +132 -0
  343. data/ext/gecode-1.3.1/gecode/set/int.cc +139 -0
  344. data/ext/gecode-1.3.1/gecode/set/int.hh +226 -0
  345. data/ext/gecode-1.3.1/gecode/set/int/card.cc +61 -0
  346. data/ext/gecode-1.3.1/gecode/set/int/card.icc +54 -0
  347. data/ext/gecode-1.3.1/gecode/set/int/channel.cc +100 -0
  348. data/ext/gecode-1.3.1/gecode/set/int/channel.icc +75 -0
  349. data/ext/gecode-1.3.1/gecode/set/int/match.cc +148 -0
  350. data/ext/gecode-1.3.1/gecode/set/int/match.icc +67 -0
  351. data/ext/gecode-1.3.1/gecode/set/int/minmax.cc +109 -0
  352. data/ext/gecode-1.3.1/gecode/set/int/minmax.icc +63 -0
  353. data/ext/gecode-1.3.1/gecode/set/int/weights.cc +182 -0
  354. data/ext/gecode-1.3.1/gecode/set/int/weights.icc +174 -0
  355. data/ext/gecode-1.3.1/gecode/set/projectors-compiler.hh +148 -0
  356. data/ext/gecode-1.3.1/gecode/set/projectors.cc +109 -0
  357. data/ext/gecode-1.3.1/gecode/set/projectors.hh +319 -0
  358. data/ext/gecode-1.3.1/gecode/set/projectors/compiler.cc +841 -0
  359. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.cc +69 -0
  360. data/ext/gecode-1.3.1/gecode/set/projectors/projector-set.icc +66 -0
  361. data/ext/gecode-1.3.1/gecode/set/projectors/projector.cc +125 -0
  362. data/ext/gecode-1.3.1/gecode/set/projectors/projector.icc +79 -0
  363. data/ext/gecode-1.3.1/gecode/set/projectors/propagator.hh +127 -0
  364. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/card.icc +96 -0
  365. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/nary.icc +106 -0
  366. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.cc +76 -0
  367. data/ext/gecode-1.3.1/gecode/set/projectors/propagator/re-nary.icc +53 -0
  368. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.cc +306 -0
  369. data/ext/gecode-1.3.1/gecode/set/projectors/set-expr.icc +192 -0
  370. data/ext/gecode-1.3.1/gecode/set/propagator.icc +96 -0
  371. data/ext/gecode-1.3.1/gecode/set/rel-op-const.cc +233 -0
  372. data/ext/gecode-1.3.1/gecode/set/rel-op.cc +96 -0
  373. data/ext/gecode-1.3.1/gecode/set/rel-op.hh +267 -0
  374. data/ext/gecode-1.3.1/gecode/set/rel-op/common.icc +528 -0
  375. data/ext/gecode-1.3.1/gecode/set/rel-op/inter.icc +312 -0
  376. data/ext/gecode-1.3.1/gecode/set/rel-op/partition.icc +131 -0
  377. data/ext/gecode-1.3.1/gecode/set/rel-op/post.icc +198 -0
  378. data/ext/gecode-1.3.1/gecode/set/rel-op/subofunion.icc +150 -0
  379. data/ext/gecode-1.3.1/gecode/set/rel-op/superofinter.icc +151 -0
  380. data/ext/gecode-1.3.1/gecode/set/rel-op/union.icc +292 -0
  381. data/ext/gecode-1.3.1/gecode/set/rel.cc +201 -0
  382. data/ext/gecode-1.3.1/gecode/set/rel.hh +250 -0
  383. data/ext/gecode-1.3.1/gecode/set/rel/common.icc +109 -0
  384. data/ext/gecode-1.3.1/gecode/set/rel/eq.icc +101 -0
  385. data/ext/gecode-1.3.1/gecode/set/rel/nosubset.icc +88 -0
  386. data/ext/gecode-1.3.1/gecode/set/rel/nq.icc +132 -0
  387. data/ext/gecode-1.3.1/gecode/set/rel/re-eq.icc +142 -0
  388. data/ext/gecode-1.3.1/gecode/set/rel/re-subset.icc +121 -0
  389. data/ext/gecode-1.3.1/gecode/set/rel/subset.icc +80 -0
  390. data/ext/gecode-1.3.1/gecode/set/select.cc +88 -0
  391. data/ext/gecode-1.3.1/gecode/set/select.hh +113 -0
  392. data/ext/gecode-1.3.1/gecode/set/select/disjoint.cc +267 -0
  393. data/ext/gecode-1.3.1/gecode/set/select/disjoint.icc +59 -0
  394. data/ext/gecode-1.3.1/gecode/set/select/idxarray.hh +91 -0
  395. data/ext/gecode-1.3.1/gecode/set/select/idxarray.icc +112 -0
  396. data/ext/gecode-1.3.1/gecode/set/select/inter.icc +300 -0
  397. data/ext/gecode-1.3.1/gecode/set/sequence.cc +48 -0
  398. data/ext/gecode-1.3.1/gecode/set/sequence.hh +97 -0
  399. data/ext/gecode-1.3.1/gecode/set/sequence/common.icc +79 -0
  400. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.cc +83 -0
  401. data/ext/gecode-1.3.1/gecode/set/sequence/seq-u.icc +63 -0
  402. data/ext/gecode-1.3.1/gecode/set/sequence/seq.cc +61 -0
  403. data/ext/gecode-1.3.1/gecode/set/sequence/seq.icc +53 -0
  404. data/ext/gecode-1.3.1/gecode/set/var-imp.vis +205 -0
  405. data/ext/gecode-1.3.1/gecode/set/var.icc +1090 -0
  406. data/ext/gecode-1.3.1/gecode/set/var/imp-body.icc +192 -0
  407. data/ext/gecode-1.3.1/gecode/set/var/imp-hdr.icc +235 -0
  408. data/ext/gecode-1.3.1/gecode/set/var/imp.cc +127 -0
  409. data/ext/gecode-1.3.1/gecode/set/var/imp.icc +356 -0
  410. data/ext/gecode-1.3.1/gecode/set/var/integerset.cc +256 -0
  411. data/ext/gecode-1.3.1/gecode/set/var/integerset.icc +512 -0
  412. data/ext/gecode-1.3.1/gecode/set/var/iter.icc +47 -0
  413. data/ext/gecode-1.3.1/gecode/set/var/set.cc +99 -0
  414. data/ext/gecode-1.3.1/gecode/set/var/set.icc +282 -0
  415. data/ext/gecode-1.3.1/gecode/set/view.icc +1075 -0
  416. data/ext/gecode-1.3.1/gecode/set/view/complement.icc +525 -0
  417. data/ext/gecode-1.3.1/gecode/set/view/const.icc +651 -0
  418. data/ext/gecode-1.3.1/gecode/set/view/print.cc +120 -0
  419. data/ext/gecode-1.3.1/gecode/set/view/set.icc +217 -0
  420. data/ext/gecode-1.3.1/gecode/set/view/singleton.icc +348 -0
  421. data/ext/gecode-1.3.1/gecode/support/block-allocator.hh +152 -0
  422. data/ext/gecode-1.3.1/gecode/support/dynamic-array.hh +131 -0
  423. data/ext/gecode-1.3.1/gecode/support/dynamic-stack.hh +157 -0
  424. data/ext/gecode-1.3.1/gecode/support/random.hh +100 -0
  425. data/ext/gecode-1.3.1/gecode/support/shared-array.hh +255 -0
  426. data/ext/gecode-1.3.1/gecode/support/sort.hh +193 -0
  427. data/ext/gecode-1.3.1/gecode/support/static-pqueue.hh +240 -0
  428. data/ext/gecode-1.3.1/gecode/support/static-stack.hh +117 -0
  429. data/ext/gecode-1.3.1/install-sh +323 -0
  430. data/ext/gecode-1.3.1/misc/debian/Makefile.am +8 -0
  431. data/ext/gecode-1.3.1/misc/debian/changelog +6 -0
  432. data/ext/gecode-1.3.1/misc/debian/control +11 -0
  433. data/ext/gecode-1.3.1/misc/debian/copyright +44 -0
  434. data/ext/gecode-1.3.1/misc/debian/gecode.info +9 -0
  435. data/ext/gecode-1.3.1/misc/debian/gecode.install +2 -0
  436. data/ext/gecode-1.3.1/misc/debian/gecode.spec +58 -0
  437. data/ext/gecode-1.3.1/misc/debian/rules +81 -0
  438. data/ext/gecode-1.3.1/misc/doxygen/back.png +0 -0
  439. data/ext/gecode-1.3.1/misc/doxygen/footer.html +3 -0
  440. data/ext/gecode-1.3.1/misc/doxygen/gecode-logo-100.png +0 -0
  441. data/ext/gecode-1.3.1/misc/doxygen/header.html +46 -0
  442. data/ext/gecode-1.3.1/misc/doxygen/stylesheet.css +460 -0
  443. data/ext/gecode-1.3.1/misc/fixproperties.sh +32 -0
  444. data/ext/gecode-1.3.1/misc/gecode-minimodel.pc.in +12 -0
  445. data/ext/gecode-1.3.1/misc/gecode-search.pc.in +12 -0
  446. data/ext/gecode-1.3.1/misc/gecode.pc.in +12 -0
  447. data/ext/gecode-1.3.1/misc/genchangelog.perl +190 -0
  448. data/ext/gecode-1.3.1/misc/genlicense.perl +113 -0
  449. data/ext/gecode-1.3.1/misc/genstatistics.perl +155 -0
  450. data/ext/gecode-1.3.1/misc/gentxtchangelog.perl +170 -0
  451. data/ext/gecode-1.3.1/misc/genvarimp.perl +666 -0
  452. data/ext/gecode-1.3.1/misc/getrevision.perl +32 -0
  453. data/ext/gecode-1.3.1/misc/makedepend.perl +66 -0
  454. data/ext/gecode-1.3.1/test/int.cc +497 -0
  455. data/ext/gecode-1.3.1/test/int.hh +119 -0
  456. data/ext/gecode-1.3.1/test/int/arithmetic.cc +262 -0
  457. data/ext/gecode-1.3.1/test/int/basic.cc +42 -0
  458. data/ext/gecode-1.3.1/test/int/bool.cc +189 -0
  459. data/ext/gecode-1.3.1/test/int/channel.cc +79 -0
  460. data/ext/gecode-1.3.1/test/int/count.cc +264 -0
  461. data/ext/gecode-1.3.1/test/int/distinct.cc +121 -0
  462. data/ext/gecode-1.3.1/test/int/dom.cc +69 -0
  463. data/ext/gecode-1.3.1/test/int/element.cc +132 -0
  464. data/ext/gecode-1.3.1/test/int/gcc.cc +592 -0
  465. data/ext/gecode-1.3.1/test/int/linear.cc +315 -0
  466. data/ext/gecode-1.3.1/test/int/minimodel.cc +451 -0
  467. data/ext/gecode-1.3.1/test/int/regular.cc +105 -0
  468. data/ext/gecode-1.3.1/test/int/rel.cc +283 -0
  469. data/ext/gecode-1.3.1/test/int/scheduling.cc +259 -0
  470. data/ext/gecode-1.3.1/test/int/sortedness.cc +272 -0
  471. data/ext/gecode-1.3.1/test/intset.cc +40 -0
  472. data/ext/gecode-1.3.1/test/log.cc +515 -0
  473. data/ext/gecode-1.3.1/test/log.hh +68 -0
  474. data/ext/gecode-1.3.1/test/set.cc +542 -0
  475. data/ext/gecode-1.3.1/test/set.hh +152 -0
  476. data/ext/gecode-1.3.1/test/set/convex.cc +94 -0
  477. data/ext/gecode-1.3.1/test/set/distinct.cc +148 -0
  478. data/ext/gecode-1.3.1/test/set/dom.cc +67 -0
  479. data/ext/gecode-1.3.1/test/set/int.cc +249 -0
  480. data/ext/gecode-1.3.1/test/set/projection.cc +333 -0
  481. data/ext/gecode-1.3.1/test/set/rel-op.cc +662 -0
  482. data/ext/gecode-1.3.1/test/set/rel.cc +198 -0
  483. data/ext/gecode-1.3.1/test/set/select.cc +108 -0
  484. data/ext/gecode-1.3.1/test/set/sequence.cc +83 -0
  485. data/ext/gecode-1.3.1/test/stress.cc +93 -0
  486. data/ext/gecode-1.3.1/test/stress.hh +74 -0
  487. data/ext/gecode-1.3.1/test/stress/distinct.cc +70 -0
  488. data/ext/gecode-1.3.1/test/stress/domain.cc +69 -0
  489. data/ext/gecode-1.3.1/test/stress/exec.cc +60 -0
  490. data/ext/gecode-1.3.1/test/stress/minsort.cc +63 -0
  491. data/ext/gecode-1.3.1/test/stress/regular.cc +112 -0
  492. data/ext/gecode-1.3.1/test/test.cc +215 -0
  493. data/ext/gecode-1.3.1/test/test.hh +107 -0
  494. data/ext/missing.cpp +328 -0
  495. data/ext/missing.h +120 -0
  496. data/ext/vararray.cpp +330 -0
  497. data/ext/vararray.h +149 -0
  498. data/lib/gecoder.rb +5 -0
  499. data/lib/gecoder/bindings.rb +34 -0
  500. data/lib/gecoder/bindings/bindings.rb +2209 -0
  501. data/lib/gecoder/interface.rb +8 -0
  502. data/lib/gecoder/interface/binding_changes.rb +313 -0
  503. data/lib/gecoder/interface/branch.rb +152 -0
  504. data/lib/gecoder/interface/constraints.rb +397 -0
  505. data/lib/gecoder/interface/constraints/bool/boolean.rb +246 -0
  506. data/lib/gecoder/interface/constraints/bool/linear.rb +29 -0
  507. data/lib/gecoder/interface/constraints/bool_enum/boolean.rb +84 -0
  508. data/lib/gecoder/interface/constraints/bool_enum_constraints.rb +8 -0
  509. data/lib/gecoder/interface/constraints/bool_var_constraints.rb +75 -0
  510. data/lib/gecoder/interface/constraints/int/arithmetic.rb +71 -0
  511. data/lib/gecoder/interface/constraints/int/domain.rb +78 -0
  512. data/lib/gecoder/interface/constraints/int/linear.rb +295 -0
  513. data/lib/gecoder/interface/constraints/int_enum/arithmetic.rb +72 -0
  514. data/lib/gecoder/interface/constraints/int_enum/channel.rb +100 -0
  515. data/lib/gecoder/interface/constraints/int_enum/count.rb +92 -0
  516. data/lib/gecoder/interface/constraints/int_enum/distinct.rb +69 -0
  517. data/lib/gecoder/interface/constraints/int_enum/element.rb +82 -0
  518. data/lib/gecoder/interface/constraints/int_enum/equality.rb +38 -0
  519. data/lib/gecoder/interface/constraints/int_enum/sort.rb +126 -0
  520. data/lib/gecoder/interface/constraints/int_enum_constraints.rb +37 -0
  521. data/lib/gecoder/interface/constraints/int_var_constraints.rb +58 -0
  522. data/lib/gecoder/interface/constraints/reifiable_constraints.rb +78 -0
  523. data/lib/gecoder/interface/constraints/set/cardinality.rb +75 -0
  524. data/lib/gecoder/interface/constraints/set/connection.rb +193 -0
  525. data/lib/gecoder/interface/constraints/set/domain.rb +109 -0
  526. data/lib/gecoder/interface/constraints/set/operation.rb +132 -0
  527. data/lib/gecoder/interface/constraints/set/relation.rb +178 -0
  528. data/lib/gecoder/interface/constraints/set_enum/channel.rb +18 -0
  529. data/lib/gecoder/interface/constraints/set_enum/distinct.rb +80 -0
  530. data/lib/gecoder/interface/constraints/set_enum/operation.rb +60 -0
  531. data/lib/gecoder/interface/constraints/set_enum/selection.rb +217 -0
  532. data/lib/gecoder/interface/constraints/set_enum_constraints.rb +34 -0
  533. data/lib/gecoder/interface/constraints/set_var_constraints.rb +72 -0
  534. data/lib/gecoder/interface/enum_matrix.rb +64 -0
  535. data/lib/gecoder/interface/enum_wrapper.rb +153 -0
  536. data/lib/gecoder/interface/model.rb +251 -0
  537. data/lib/gecoder/interface/search.rb +123 -0
  538. data/lib/gecoder/interface/variables.rb +254 -0
  539. data/lib/gecoder/version.rb +4 -0
  540. data/specs/binding_changes.rb +76 -0
  541. data/specs/bool_var.rb +74 -0
  542. data/specs/branch.rb +170 -0
  543. data/specs/constraints/arithmetic.rb +266 -0
  544. data/specs/constraints/bool_enum.rb +140 -0
  545. data/specs/constraints/boolean.rb +232 -0
  546. data/specs/constraints/cardinality.rb +154 -0
  547. data/specs/constraints/channel.rb +126 -0
  548. data/specs/constraints/connection.rb +373 -0
  549. data/specs/constraints/constraint_helper.rb +180 -0
  550. data/specs/constraints/constraints.rb +74 -0
  551. data/specs/constraints/count.rb +139 -0
  552. data/specs/constraints/distinct.rb +218 -0
  553. data/specs/constraints/element.rb +106 -0
  554. data/specs/constraints/equality.rb +31 -0
  555. data/specs/constraints/int_domain.rb +69 -0
  556. data/specs/constraints/int_relation.rb +78 -0
  557. data/specs/constraints/linear.rb +332 -0
  558. data/specs/constraints/reification_sugar.rb +96 -0
  559. data/specs/constraints/selection.rb +292 -0
  560. data/specs/constraints/set_domain.rb +181 -0
  561. data/specs/constraints/set_operation.rb +285 -0
  562. data/specs/constraints/set_relation.rb +201 -0
  563. data/specs/constraints/sort.rb +175 -0
  564. data/specs/enum_matrix.rb +43 -0
  565. data/specs/enum_wrapper.rb +122 -0
  566. data/specs/int_var.rb +144 -0
  567. data/specs/logging.rb +24 -0
  568. data/specs/model.rb +190 -0
  569. data/specs/search.rb +246 -0
  570. data/specs/set_var.rb +68 -0
  571. data/specs/spec_helper.rb +93 -0
  572. data/tasks/all_tasks.rb +1 -0
  573. data/tasks/distribution.rake +129 -0
  574. data/tasks/rcov.rake +17 -0
  575. data/tasks/specs.rake +15 -0
  576. data/tasks/svn.rake +11 -0
  577. data/tasks/website.rake +51 -0
  578. data/vendor/rust/README +28 -0
  579. data/vendor/rust/bin/cxxgenerator.rb +93 -0
  580. data/vendor/rust/include/rust_checks.hh +115 -0
  581. data/vendor/rust/include/rust_conversions.hh +102 -0
  582. data/vendor/rust/rust.rb +67 -0
  583. data/vendor/rust/rust/attribute.rb +51 -0
  584. data/vendor/rust/rust/bindings.rb +172 -0
  585. data/vendor/rust/rust/class.rb +339 -0
  586. data/vendor/rust/rust/constants.rb +48 -0
  587. data/vendor/rust/rust/container.rb +110 -0
  588. data/vendor/rust/rust/cppifaceparser.rb +129 -0
  589. data/vendor/rust/rust/cwrapper.rb +72 -0
  590. data/vendor/rust/rust/cxxclass.rb +98 -0
  591. data/vendor/rust/rust/element.rb +81 -0
  592. data/vendor/rust/rust/enum.rb +63 -0
  593. data/vendor/rust/rust/function.rb +407 -0
  594. data/vendor/rust/rust/namespace.rb +61 -0
  595. data/vendor/rust/rust/templates/AttributeDefinition.rusttpl +17 -0
  596. data/vendor/rust/rust/templates/AttributeInitBinding.rusttpl +9 -0
  597. data/vendor/rust/rust/templates/BindingsHeader.rusttpl +24 -0
  598. data/vendor/rust/rust/templates/BindingsUnit.rusttpl +46 -0
  599. data/vendor/rust/rust/templates/CWrapperClassDefinitions.rusttpl +64 -0
  600. data/vendor/rust/rust/templates/ClassDeclarations.rusttpl +7 -0
  601. data/vendor/rust/rust/templates/ClassInitialize.rusttpl +6 -0
  602. data/vendor/rust/rust/templates/ConstructorStub.rusttpl +21 -0
  603. data/vendor/rust/rust/templates/CxxClassDefinitions.rusttpl +91 -0
  604. data/vendor/rust/rust/templates/CxxMethodStub.rusttpl +12 -0
  605. data/vendor/rust/rust/templates/CxxStandaloneClassDefinitions.rusttpl +26 -0
  606. data/vendor/rust/rust/templates/EnumDeclarations.rusttpl +3 -0
  607. data/vendor/rust/rust/templates/EnumDefinitions.rusttpl +29 -0
  608. data/vendor/rust/rust/templates/FunctionDefinition.rusttpl +9 -0
  609. data/vendor/rust/rust/templates/FunctionInitAlias.rusttpl +5 -0
  610. data/vendor/rust/rust/templates/FunctionInitBinding.rusttpl +9 -0
  611. data/vendor/rust/rust/templates/MethodInitBinding.rusttpl +9 -0
  612. data/vendor/rust/rust/templates/ModuleDeclarations.rusttpl +3 -0
  613. data/vendor/rust/rust/templates/ModuleDefinitions.rusttpl +3 -0
  614. data/vendor/rust/rust/templates/StandaloneClassDeclarations.rusttpl +7 -0
  615. data/vendor/rust/rust/templates/VariableFunctionCall.rusttpl +14 -0
  616. data/vendor/rust/rust/type.rb +98 -0
  617. data/vendor/rust/test/Makefile +4 -0
  618. data/vendor/rust/test/constants.rb +36 -0
  619. data/vendor/rust/test/cppclass.cc +45 -0
  620. data/vendor/rust/test/cppclass.hh +67 -0
  621. data/vendor/rust/test/cppclass.rb +59 -0
  622. data/vendor/rust/test/cwrapper.c +74 -0
  623. data/vendor/rust/test/cwrapper.h +41 -0
  624. data/vendor/rust/test/cwrapper.rb +56 -0
  625. data/vendor/rust/test/dummyclass.hh +31 -0
  626. data/vendor/rust/test/lib/extension-test.rb +98 -0
  627. data/vendor/rust/test/operators.cc +41 -0
  628. data/vendor/rust/test/operators.hh +39 -0
  629. data/vendor/rust/test/operators.rb +39 -0
  630. data/vendor/rust/test/test-constants.rb +43 -0
  631. data/vendor/rust/test/test-cppclass.rb +82 -0
  632. data/vendor/rust/test/test-cwrapper.rb +80 -0
  633. data/vendor/rust/test/test-operators.rb +42 -0
  634. metadata +826 -0
@@ -0,0 +1,1056 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ * Guido Tack <tack@gecode.org>
5
+ *
6
+ * Copyright:
7
+ * Christian Schulte, 2002
8
+ * Guido Tack, 2004
9
+ *
10
+ * Last modified:
11
+ * $Date: 2006-09-06 15:51:28 +0200 (Wed, 06 Sep 2006) $ by $Author: schulte $
12
+ * $Revision: 3604 $
13
+ *
14
+ * This file is part of Gecode, the generic constraint
15
+ * development environment:
16
+ * http://www.gecode.org
17
+ *
18
+ * See the file "LICENSE" for information on usage and
19
+ * redistribution of this file, and for a
20
+ * DISCLAIMER OF ALL WARRANTIES.
21
+ *
22
+ */
23
+
24
+ #ifndef __GECODE_INT_LINEAR_HH__
25
+ #define __GECODE_INT_LINEAR_HH__
26
+
27
+ #include "gecode/int.hh"
28
+
29
+ /**
30
+ * \namespace Gecode::Int::Linear
31
+ * \brief %Linear propagators
32
+ */
33
+
34
+ namespace Gecode { namespace Int { namespace Linear {
35
+
36
+ /*
37
+ * Binary propagators
38
+ *
39
+ */
40
+
41
+ /**
42
+ * \brief Base-class for binary linear propagators
43
+ *
44
+ * The type \a Val can be either \c double or \c int, defining the
45
+ * numerical precision during propagation. The types \a A and \a B
46
+ * give the types of the views.
47
+ *
48
+ * The propagation condition \a pc refers to both views.
49
+ */
50
+ template <class Val, class A, class B, PropCond pc>
51
+ class LinBin : public Propagator {
52
+ protected:
53
+ /// View of type \a A
54
+ A x0;
55
+ /// View of type \a B
56
+ B x1;
57
+ /// Value of type \a Val
58
+ Val c;
59
+ /// Constructor for cloning \a p
60
+ LinBin(Space* home, bool share, LinBin& p);
61
+ /// Constructor for rewriting \a p during cloning
62
+ LinBin(Space* home, bool share, Propagator& p, A x0, B x1, Val c);
63
+ /// Constructor for creation
64
+ LinBin(Space* home, A x0, B x1, Val c);
65
+ public:
66
+ /// Cost function (defined as PC_BINARY_LO)
67
+ virtual PropCost cost(void) const;
68
+ /// Delete propagator and return its size
69
+ virtual size_t dispose(Space* home);
70
+ };
71
+
72
+ /**
73
+ * \brief Base-class for reified binary linear propagators
74
+ *
75
+ * The type \a Val can be either \c double or \c int, defining the
76
+ * numerical precision during propagation. The types \a A and \a B
77
+ * give the types of the views.
78
+ *
79
+ * The propagation condition \a pc refers to both views.
80
+ */
81
+ template <class Val, class A, class B, PropCond pc, class Ctrl>
82
+ class ReLinBin : public Propagator {
83
+ protected:
84
+ /// View of type \a A
85
+ A x0;
86
+ /// View of type \a B
87
+ B x1;
88
+ /// Value of type \a Val
89
+ Val c;
90
+ /// Control view for reification
91
+ Ctrl b;
92
+ /// Constructor for cloning \a p
93
+ ReLinBin(Space* home, bool share, ReLinBin& p);
94
+ /// Constructor for creation
95
+ ReLinBin(Space* home, A x0, B x1, Val c, Ctrl b);
96
+ public:
97
+ /// Cost function (defined as PC_BINARY_LO)
98
+ virtual PropCost cost(void) const;
99
+ /// Delete propagator and return its size
100
+ virtual size_t dispose(Space* home);
101
+ };
102
+
103
+ /**
104
+ * \brief %Propagator for bounds-consistent binary linear equality
105
+ *
106
+ * The type \a Val can be either \c double or \c int, defining the
107
+ * numerical precision during propagation. The types \a A and \a B
108
+ * give the types of the views.
109
+ *
110
+ * The propagation condition \a pc refers to both views.
111
+ *
112
+ * Requires \code #include "gecode/int/linear.hh" \endcode
113
+ * \ingroup FuncIntProp
114
+ */
115
+ template <class Val, class A, class B>
116
+ class EqBin : public LinBin<Val,A,B,PC_INT_BND> {
117
+ protected:
118
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
119
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
120
+ using LinBin<Val,A,B,PC_INT_BND>::c;
121
+
122
+ /// Constructor for cloning \a p
123
+ EqBin(Space* home, bool share, EqBin& p);
124
+ /// Constructor for creation
125
+ EqBin(Space* home, A x0, B x1, Val c);
126
+ public:
127
+ /// Constructor for rewriting \a p during cloning
128
+ EqBin(Space* home, bool share, Propagator& p, A x0, B x1, Val c);
129
+ /// Create copy during cloning
130
+ virtual Actor* copy(Space* home, bool share);
131
+ /// Perform propagation
132
+ virtual ExecStatus propagate(Space* home);
133
+ /// Post propagator for \f$x_0+x_1 = c\f$
134
+ static ExecStatus post(Space* home, A x0, B x1, Val c);
135
+ };
136
+
137
+ /**
138
+ * \brief %Propagator for reified bounds-consistent binary linear equality
139
+ *
140
+ * The type \a Val can be either \c double or \c int, defining the
141
+ * numerical precision during propagation. The types \a A and \a B
142
+ * give the types of the views.
143
+ *
144
+ * The propagation condition \a pc refers to both views.
145
+ *
146
+ * Requires \code #include "gecode/int/linear.hh" \endcode
147
+ * \ingroup FuncIntProp
148
+ */
149
+ template <class Val, class A, class B, class Ctrl>
150
+ class ReEqBin : public ReLinBin<Val,A,B,PC_INT_BND,Ctrl> {
151
+ protected:
152
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::x0;
153
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::x1;
154
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::c;
155
+ using ReLinBin<Val,A,B,PC_INT_BND,Ctrl>::b;
156
+
157
+ /// Constructor for cloning \a p
158
+ ReEqBin(Space* home, bool share, ReEqBin& p);
159
+ /// Constructor for creation
160
+ ReEqBin(Space* home,A,B,Val,Ctrl);
161
+ public:
162
+ /// Create copy during cloning
163
+ virtual Actor* copy(Space* home, bool share);
164
+ /// Perform propagation
165
+ virtual ExecStatus propagate(Space* home);
166
+ /// Post propagator for \f$(x_0+x_1 = c)\Leftrightarrow b\f$
167
+ static ExecStatus post(Space* home, A x0, B x1, Val c, Ctrl b);
168
+ };
169
+
170
+ /**
171
+ * \brief %Propagator for bounds-consistent binary linear disequality
172
+ *
173
+ * The type \a Val can be either \c double or \c int, defining the
174
+ * numerical precision during propagation. The types \a A and \a B
175
+ * give the types of the views.
176
+ *
177
+ * The propagation condition \a pc refers to both views.
178
+ *
179
+ * Requires \code #include "gecode/int/linear.hh" \endcode
180
+ * \ingroup FuncIntProp
181
+ */
182
+ template <class Val, class A, class B>
183
+ class NqBin : public LinBin<Val,A,B,PC_INT_VAL> {
184
+ protected:
185
+ using LinBin<Val,A,B,PC_INT_VAL>::x0;
186
+ using LinBin<Val,A,B,PC_INT_VAL>::x1;
187
+ using LinBin<Val,A,B,PC_INT_VAL>::c;
188
+
189
+ /// Constructor for cloning \a p
190
+ NqBin(Space* home, bool share, NqBin& p);
191
+ /// Constructor for creation
192
+ NqBin(Space* home, A x0, B x1, Val c);
193
+ public:
194
+ /// Constructor for rewriting \a p during cloning
195
+ NqBin(Space* home, bool share, Propagator& p, A x0, B x1, Val c);
196
+ /// Create copy during cloning
197
+ virtual Actor* copy(Space* home, bool share);
198
+ /// Perform propagation
199
+ virtual ExecStatus propagate(Space* home);
200
+ /// Cost function (defined as PC_UNARY_LO)
201
+ virtual PropCost cost(void) const;
202
+ /// Post propagator for \f$x_0+x_1 \neq c\f$
203
+ static ExecStatus post(Space* home, A x0, B x1, Val c);
204
+ };
205
+
206
+ /**
207
+ * \brief %Propagator for bounds-consistent binary linear less or equal
208
+ *
209
+ * The type \a Val can be either \c double or \c int, defining the
210
+ * numerical precision during propagation. The types \a A and \a B
211
+ * give the types of the views.
212
+ *
213
+ * The propagation condition \a pc refers to both views.
214
+ *
215
+ * Requires \code #include "gecode/int/linear.hh" \endcode
216
+ * \ingroup FuncIntProp
217
+ */
218
+ template <class Val, class A, class B>
219
+ class LqBin : public LinBin<Val,A,B,PC_INT_BND> {
220
+ protected:
221
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
222
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
223
+ using LinBin<Val,A,B,PC_INT_BND>::c;
224
+
225
+ /// Constructor for cloning \a p
226
+ LqBin(Space* home, bool share, LqBin& p);
227
+ /// Constructor for creation
228
+ LqBin(Space* home, A x0, B x1, Val c);
229
+ public:
230
+ /// Constructor for rewriting \a p during cloning
231
+ LqBin(Space* home, bool share, Propagator& p, A x0, B x1, Val c);
232
+ /// Create copy during cloning
233
+ virtual Actor* copy(Space* home, bool share);
234
+ /// Perform propagation
235
+ virtual ExecStatus propagate(Space* home);
236
+ /// Post propagator for \f$x_0+x_1 \leq c\f$
237
+ static ExecStatus post(Space* home, A x0, B x1, Val c);
238
+ };
239
+
240
+ /**
241
+ * \brief %Propagator for bounds-consistent binary linear greater or equal
242
+ *
243
+ * The type \a Val can be either \c double or \c int, defining the
244
+ * numerical precision during propagation. The types \a A and \a B
245
+ * give the types of the views.
246
+ *
247
+ * The propagation condition \a pc refers to both views.
248
+ *
249
+ * Requires \code #include "gecode/int/linear.hh" \endcode
250
+ * \ingroup FuncIntProp
251
+ */
252
+ template <class Val, class A, class B>
253
+ class GqBin : public LinBin<Val,A,B,PC_INT_BND> {
254
+ protected:
255
+ using LinBin<Val,A,B,PC_INT_BND>::x0;
256
+ using LinBin<Val,A,B,PC_INT_BND>::x1;
257
+ using LinBin<Val,A,B,PC_INT_BND>::c;
258
+
259
+ /// Constructor for cloning \a p
260
+ GqBin(Space* home, bool share, GqBin& p);
261
+ /// Constructor for creation
262
+ GqBin(Space* home, A x0, B x1, Val c);
263
+ public:
264
+ /// Constructor for rewriting \a p during cloning
265
+ GqBin(Space* home, bool share, Propagator& p, A x0, B x1, Val c);
266
+ /// Create copy during cloning
267
+ virtual Actor* copy(Space* home, bool share);
268
+ /// Perform propagation
269
+ virtual ExecStatus propagate(Space* home);
270
+ /// Post propagator for \f$x_0+x_1 \geq c\f$
271
+ static ExecStatus post(Space* home, A x0, B x1, Val c);
272
+ };
273
+
274
+ /**
275
+ * \brief %Propagator for reified bounds-consistent binary linear less or equal
276
+ *
277
+ * The type \a Val can be either \c double or \c int, defining the
278
+ * numerical precision during propagation. The types \a A and \a B
279
+ * give the types of the views.
280
+ *
281
+ * The propagation condition \a pc refers to both views.
282
+ *
283
+ * Requires \code #include "gecode/int/linear.hh" \endcode
284
+ * \ingroup FuncIntProp
285
+ */
286
+ template <class Val, class A, class B>
287
+ class ReLqBin : public ReLinBin<Val,A,B,PC_INT_BND,BoolView> {
288
+ protected:
289
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::x0;
290
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::x1;
291
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::c;
292
+ using ReLinBin<Val,A,B,PC_INT_BND,BoolView>::b;
293
+
294
+ /// Constructor for cloning \a p
295
+ ReLqBin(Space* home, bool share, ReLqBin& p);
296
+ /// Constructor for creation
297
+ ReLqBin(Space* home, A x0, B x1, Val c, BoolView b);
298
+ public:
299
+ /// Create copy during cloning
300
+ virtual Actor* copy(Space* home, bool share);
301
+ /// Perform propagation
302
+ virtual ExecStatus propagate(Space* home);
303
+ /// Post propagator for \f$(x_0+x_1 \leq c)\Leftrightarrow b\f$
304
+ static ExecStatus post(Space* home, A x0, B x1, Val c, BoolView b);
305
+ };
306
+
307
+ }}}
308
+
309
+ #include "gecode/int/linear/binary.icc"
310
+
311
+ namespace Gecode { namespace Int { namespace Linear {
312
+
313
+ /*
314
+ * Ternary propagators
315
+ *
316
+ */
317
+
318
+ /**
319
+ * \brief Base-class for ternary linear propagators
320
+ *
321
+ * The type \a Val can be either \c double or \c int, defining the
322
+ * numerical precision during propagation. The types \a A, \a B,
323
+ * and \a C give the types of the views.
324
+ *
325
+ * The propagation condition \a pc refers to all three views.
326
+ */
327
+ template <class Val, class A, class B, class C, PropCond pc>
328
+ class LinTer : public Propagator {
329
+ protected:
330
+ /// View of type \a A
331
+ A x0;
332
+ /// View of type \a B
333
+ B x1;
334
+ /// View of type \a C
335
+ C x2;
336
+ /// Value of type \a Val
337
+ Val c;
338
+ /// Constructor for cloning \a p
339
+ LinTer(Space* home, bool share, LinTer& p);
340
+ /// Constructor for creation
341
+ LinTer(Space* home, A x0, B x1, C x2, Val c);
342
+ /// Constructor for rewriting \a p during cloning
343
+ LinTer(Space* home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
344
+ public:
345
+ /// Cost function (defined as PC_TERNARY_LO)
346
+ virtual PropCost cost(void) const;
347
+ /// Delete propagator and return its size
348
+ virtual size_t dispose(Space* home);
349
+ };
350
+
351
+ /**
352
+ * \brief %Propagator for bounds-consistent ternary linear equality
353
+ *
354
+ * The type \a Val can be either \c double or \c int, defining the
355
+ * numerical precision during propagation. The types \a A, \a B,
356
+ * and \a C give the types of the views.
357
+ *
358
+ * The propagation condition \a pc refers to all three views.
359
+ *
360
+ * Requires \code #include "gecode/int/linear.hh" \endcode
361
+ * \ingroup FuncIntProp
362
+ */
363
+ template <class Val, class A, class B, class C>
364
+ class EqTer : public LinTer<Val,A,B,C,PC_INT_BND> {
365
+ protected:
366
+ using LinTer<Val,A,B,C,PC_INT_BND>::x0;
367
+ using LinTer<Val,A,B,C,PC_INT_BND>::x1;
368
+ using LinTer<Val,A,B,C,PC_INT_BND>::x2;
369
+ using LinTer<Val,A,B,C,PC_INT_BND>::c;
370
+
371
+ /// Constructor for cloning \a p
372
+ EqTer(Space* home, bool share, EqTer& p);
373
+ /// Constructor for creation
374
+ EqTer(Space* home, A x0, B x1, C x2, Val c);
375
+ public:
376
+ /// Constructor for rewriting \a p during cloning
377
+ EqTer(Space* home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
378
+ /// Create copy during cloning
379
+ virtual Actor* copy(Space* home, bool share);
380
+ /// Perform propagation
381
+ virtual ExecStatus propagate(Space* home);
382
+ /// Post propagator for \f$x_0+x_1+x_2 = c\f$
383
+ static ExecStatus post(Space* home, A x0, B x1, C x2, Val c);
384
+ };
385
+
386
+ /**
387
+ * \brief %Propagator for bounds-consistent ternary linear disquality
388
+ *
389
+ * The type \a Val can be either \c double or \c int, defining the
390
+ * numerical precision during propagation. The types \a A, \a B,
391
+ * and \a C give the types of the views.
392
+ *
393
+ * The propagation condition \a pc refers to all three views.
394
+ *
395
+ * Requires \code #include "gecode/int/linear.hh" \endcode
396
+ * \ingroup FuncIntProp
397
+ */
398
+ template <class Val, class A, class B, class C>
399
+ class NqTer : public LinTer<Val,A,B,C,PC_INT_VAL> {
400
+ protected:
401
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x0;
402
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x1;
403
+ using LinTer<Val,A,B,C,PC_INT_VAL>::x2;
404
+ using LinTer<Val,A,B,C,PC_INT_VAL>::c;
405
+
406
+ /// Constructor for cloning \a p
407
+ NqTer(Space* home, bool share, NqTer& p);
408
+ /// Constructor for creation
409
+ NqTer(Space* home, A x0, B x1, C x2, Val c);
410
+ public:
411
+ /// Constructor for rewriting \a p during cloning
412
+ NqTer(Space* home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
413
+ /// Create copy during cloning
414
+ virtual Actor* copy(Space* home, bool share);
415
+ /// Perform propagation
416
+ virtual ExecStatus propagate(Space* home);
417
+ /// Post propagator for \f$x_0+x_1+x_2 \neq c\f$
418
+ static ExecStatus post(Space* home, A x0, B x1, C x2, Val c);
419
+ };
420
+
421
+ /**
422
+ * \brief %Propagator for bounds-consistent ternary linear less or equal
423
+ *
424
+ * The type \a Val can be either \c double or \c int, defining the
425
+ * numerical precision during propagation. The types \a A, \a B,
426
+ * and \a C give the types of the views.
427
+ *
428
+ * The propagation condition \a pc refers to all three views.
429
+ *
430
+ * Requires \code #include "gecode/int/linear.hh" \endcode
431
+ * \ingroup FuncIntProp
432
+ */
433
+ template <class Val, class A, class B, class C>
434
+ class LqTer : public LinTer<Val,A,B,C,PC_INT_BND> {
435
+ protected:
436
+ using LinTer<Val,A,B,C,PC_INT_BND>::x0;
437
+ using LinTer<Val,A,B,C,PC_INT_BND>::x1;
438
+ using LinTer<Val,A,B,C,PC_INT_BND>::x2;
439
+ using LinTer<Val,A,B,C,PC_INT_BND>::c;
440
+
441
+ /// Constructor for cloning \a p
442
+ LqTer(Space* home, bool share, LqTer& p);
443
+ /// Constructor for creation
444
+ LqTer(Space* home, A x0, B x1, C x2, Val c);
445
+ public:
446
+ /// Constructor for rewriting \a p during cloning
447
+ LqTer(Space* home, bool share, Propagator& p, A x0, B x1, C x2, Val c);
448
+ /// Create copy during cloning
449
+ virtual Actor* copy(Space* home, bool share);
450
+ /// Perform propagation
451
+ virtual ExecStatus propagate(Space* home);
452
+ /// Post propagator for \f$x_0+x_1+x_2 \leq c\f$
453
+ static ExecStatus post(Space* home, A x0, B x1, C x2, Val c);
454
+ };
455
+
456
+ }}}
457
+
458
+ #include "gecode/int/linear/ternary.icc"
459
+
460
+ namespace Gecode { namespace Int { namespace Linear {
461
+
462
+ /*
463
+ * n-ary propagators
464
+ *
465
+ */
466
+
467
+ /**
468
+ * \brief Base-class for n-ary linear propagators
469
+ *
470
+ * The type \a Val can be either \c double or \c int, defining the
471
+ * numerical precision during propagation. Positive views are of
472
+ * type \a P whereas negative views are of type \a N.
473
+ *
474
+ * The propagation condition \a pc refers to all views.
475
+ */
476
+ template <class Val, class P, class N, PropCond pc>
477
+ class Lin : public Propagator {
478
+ protected:
479
+ /// Array of positive views
480
+ ViewArray<P> x;
481
+ /// Array of negative views
482
+ ViewArray<N> y;
483
+ /// Constant value
484
+ Val c;
485
+
486
+ /// Constructor for cloning \a p
487
+ Lin(Space* home, bool share, Lin& p);
488
+ /// Constructor for creation
489
+ Lin(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
490
+ public:
491
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
492
+ virtual PropCost cost(void) const;
493
+ /// Delete propagator and return its size
494
+ virtual size_t dispose(Space* home);
495
+ };
496
+
497
+ /**
498
+ * \brief Base-class for reified n-ary linear propagators
499
+ *
500
+ * The type \a Val can be either \c double or \c int, defining the
501
+ * numerical precision during propagation. Positive views are of
502
+ * type \a P whereas negative views are of type \a N.
503
+ *
504
+ * The propagation condition \a pc refers to all views.
505
+ */
506
+ template <class Val, class P, class N, PropCond pc, class Ctrl>
507
+ class ReLin : public Lin<Val,P,N,pc> {
508
+ protected:
509
+ /// Control view for reification
510
+ Ctrl b;
511
+ /// Constructor for cloning \a p
512
+ ReLin(Space* home, bool share, ReLin& p);
513
+ /// Constructor for creation
514
+ ReLin(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
515
+ public:
516
+ /// Delete propagator and return its size
517
+ virtual size_t dispose(Space* home);
518
+ };
519
+
520
+ /**
521
+ * \brief Compute bounds information for positive views
522
+ *
523
+ * \relates Lin
524
+ */
525
+ template <class Val, class View>
526
+ void bounds_p(const Propagator*, ViewArray<View>& x,
527
+ Val& c, Val& sl, Val& su);
528
+
529
+ /**
530
+ * \brief Compute bounds information for negative views
531
+ *
532
+ * \relates Lin
533
+ */
534
+ template <class Val, class View>
535
+ void bounds_n(const Propagator*, ViewArray<View>& y,
536
+ Val& c, Val& sl, Val& su);
537
+
538
+ /**
539
+ * \brief %Propagator for bounds-consistent n-ary linear equality
540
+ *
541
+ * The type \a Val can be either \c double or \c int, defining the
542
+ * numerical precision during propagation. The types \a P and \a N
543
+ * give the types of the views.
544
+ *
545
+ * The propagation condition \a pc refers to both views.
546
+ *
547
+ * Requires \code #include "gecode/int/linear.hh" \endcode
548
+ * \ingroup FuncIntProp
549
+ */
550
+ template <class Val, class P, class N>
551
+ class Eq : public Lin<Val,P,N,PC_INT_BND> {
552
+ protected:
553
+ using Lin<Val,P,N,PC_INT_BND>::x;
554
+ using Lin<Val,P,N,PC_INT_BND>::y;
555
+ using Lin<Val,P,N,PC_INT_BND>::c;
556
+
557
+ /// Constructor for cloning \a p
558
+ Eq(Space* home, bool share, Eq& p);
559
+ public:
560
+ /// Constructor for creation
561
+ Eq(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
562
+ /// Create copy during cloning
563
+ virtual Actor* copy(Space* home, bool share);
564
+ /// Perform propagation
565
+ virtual ExecStatus propagate(Space* home);
566
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\f$
567
+ static ExecStatus
568
+ post(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
569
+ };
570
+
571
+ /**
572
+ * \brief %Propagator for domain-consistent n-ary linear equality
573
+ *
574
+ * The type \a Val can be either \c double or \c int, defining the
575
+ * numerical precision during propagation. The types \a View
576
+ * give the type of the view.
577
+ *
578
+ * Requires \code #include "gecode/int/linear.hh" \endcode
579
+ * \ingroup FuncIntProp
580
+ */
581
+ template <class Val, class View>
582
+ class DomEq
583
+ : public Lin<Val,View,View,PC_INT_DOM> {
584
+ protected:
585
+ using Lin<Val,View,View,PC_INT_DOM>::x;
586
+ using Lin<Val,View,View,PC_INT_DOM>::y;
587
+ using Lin<Val,View,View,PC_INT_DOM>::c;
588
+
589
+ /// Constructor for cloning \a p
590
+ DomEq(Space* home, bool share, DomEq& p);
591
+ public:
592
+ /// Constructor for creation
593
+ DomEq(Space* home, ViewArray<View>& x, ViewArray<View>& y, Val c);
594
+ /// Create copy during cloning
595
+ virtual Actor* copy(Space* home, bool share);
596
+ /// Propagation cost
597
+ virtual PropCost cost(void) const;
598
+ /// Perform propagation
599
+ virtual ExecStatus propagate(Space* home);
600
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\f$
601
+ static ExecStatus
602
+ post(Space* home, ViewArray<View>& x, ViewArray<View>& y, Val c);
603
+ };
604
+
605
+ /**
606
+ * \brief %Propagator for reified bounds-consistent n-ary linear equality
607
+ *
608
+ * The type \a Val can be either \c double or \c int, defining the
609
+ * numerical precision during propagation. The types \a P and \a N
610
+ * give the types of the views.
611
+ *
612
+ * The propagation condition \a pc refers to both views.
613
+ *
614
+ * Requires \code #include "gecode/int/linear.hh" \endcode
615
+ * \ingroup FuncIntProp
616
+ */
617
+ template <class Val, class P, class N, class Ctrl>
618
+ class ReEq : public ReLin<Val,P,N,PC_INT_BND,Ctrl> {
619
+ protected:
620
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::x;
621
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::y;
622
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::c;
623
+ using ReLin<Val,P,N,PC_INT_BND,Ctrl>::b;
624
+
625
+ /// Constructor for cloning \a p
626
+ ReEq(Space* home, bool share, ReEq& p);
627
+ public:
628
+ /// Constructor for creation
629
+ ReEq(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
630
+ /// Create copy during cloning
631
+ virtual Actor* copy(Space* home, bool share);
632
+ /// Perform propagation
633
+ virtual ExecStatus propagate(Space* home);
634
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i=c\right)\Leftrightarrow b\f$
635
+ static ExecStatus
636
+ post(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c, Ctrl b);
637
+ };
638
+
639
+ /**
640
+ * \brief %Propagator for bounds-consistent n-ary linear disequality
641
+ *
642
+ * The type \a Val can be either \c double or \c int, defining the
643
+ * numerical precision during propagation. The types \a P and \a N
644
+ * give the types of the views.
645
+ *
646
+ * The propagation condition \a pc refers to both views.
647
+ *
648
+ * Requires \code #include "gecode/int/linear.hh" \endcode
649
+ * \ingroup FuncIntProp
650
+ */
651
+ template <class Val, class P, class N>
652
+ class Nq : public Lin<Val,P,N,PC_INT_VAL> {
653
+ protected:
654
+ using Lin<Val,P,N,PC_INT_VAL>::x;
655
+ using Lin<Val,P,N,PC_INT_VAL>::y;
656
+ using Lin<Val,P,N,PC_INT_VAL>::c;
657
+
658
+ /// Constructor for cloning \a p
659
+ Nq(Space* home, bool share, Nq& p);
660
+ public:
661
+ /// Constructor for creation
662
+ Nq(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
663
+ /// Create copy during cloning
664
+ virtual Actor* copy(Space* home, bool share);
665
+ /// Perform propagation
666
+ virtual ExecStatus propagate(Space* home);
667
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\neq c\f$
668
+ static ExecStatus
669
+ post(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
670
+ };
671
+
672
+ /**
673
+ * \brief %Propagator for bounds-consistent n-ary linear less or equal
674
+ *
675
+ * The type \a Val can be either \c double or \c int, defining the
676
+ * numerical precision during propagation. The types \a P and \a N
677
+ * give the types of the views.
678
+ *
679
+ * The propagation condition \a pc refers to both views.
680
+ *
681
+ * Requires \code #include "gecode/int/linear.hh" \endcode
682
+ * \ingroup FuncIntProp
683
+ */
684
+ template <class Val, class P, class N>
685
+ class Lq : public Lin<Val,P,N,PC_INT_BND> {
686
+ protected:
687
+ using Lin<Val,P,N,PC_INT_BND>::x;
688
+ using Lin<Val,P,N,PC_INT_BND>::y;
689
+ using Lin<Val,P,N,PC_INT_BND>::c;
690
+
691
+ /// Constructor for cloning \a p
692
+ Lq(Space* home, bool share, Lq& p);
693
+ public:
694
+ /// Constructor for creation
695
+ Lq(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
696
+ /// Create copy during cloning
697
+ virtual Actor* copy(Space* home, bool share);
698
+ /// Perform propagation
699
+ virtual ExecStatus propagate(Space* home);
700
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\leq c\f$
701
+ static ExecStatus
702
+ post(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c);
703
+ };
704
+
705
+ /**
706
+ * \brief %Propagator for reified bounds-consistent n-ary linear less or equal
707
+ *
708
+ * The type \a Val can be either \c double or \c int, defining the
709
+ * numerical precision during propagation. The types \a P and \a N
710
+ * give the types of the views.
711
+ *
712
+ * The propagation condition \a pc refers to both views.
713
+ *
714
+ * Requires \code #include "gecode/int/linear.hh" \endcode
715
+ * \ingroup FuncIntProp
716
+ */
717
+ template <class Val, class P, class N>
718
+ class ReLq : public ReLin<Val,P,N,PC_INT_BND,BoolView> {
719
+ protected:
720
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::x;
721
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::y;
722
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::c;
723
+ using ReLin<Val,P,N,PC_INT_BND,BoolView>::b;
724
+
725
+ /// Constructor for cloning \a p
726
+ ReLq(Space* home, bool share, ReLq& p);
727
+ public:
728
+ /// Constructor for creation
729
+ ReLq(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c, BoolView b);
730
+ /// Create copy during cloning
731
+ virtual Actor* copy(Space* home, bool share);
732
+ /// Perform propagation
733
+ virtual ExecStatus propagate(Space* home);
734
+ /// Post propagator for \f$\left(\sum_{i=0}^{|x|-1}x_i-\sum_{i=0}^{|y|-1}y_i\leq c\right)\Leftrightarrow b\f$
735
+ static ExecStatus
736
+ post(Space* home, ViewArray<P>& x, ViewArray<N>& y, Val c, BoolView b);
737
+ };
738
+
739
+ }}}
740
+
741
+ #include "gecode/int/linear/nary.icc"
742
+ #include "gecode/int/linear/dom.icc"
743
+
744
+ namespace Gecode { namespace Int { namespace Linear {
745
+
746
+ /*
747
+ * Boolean linear propagators
748
+ *
749
+ */
750
+
751
+ /**
752
+ * \brief Baseclass for integer Boolean sum
753
+ *
754
+ */
755
+ template <class VX>
756
+ class LinBoolInt : public Propagator {
757
+ protected:
758
+ /// Boolean views
759
+ ViewArray<VX> x;
760
+ /// Views from x[0] ... x[n_s-1] have subscriptions
761
+ int n_s;
762
+ /// Righthandside
763
+ int c;
764
+ /// Constructor for cloning \a p
765
+ LinBoolInt(Space* home, bool share, LinBoolInt& p);
766
+ /// Constructor for creation
767
+ LinBoolInt(Space* home, ViewArray<VX>& x, int n_s, int c);
768
+ public:
769
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
770
+ virtual PropCost cost(void) const;
771
+ /// Delete propagator and return its size
772
+ virtual size_t dispose(Space* home);
773
+ };
774
+
775
+ /**
776
+ * \brief %Propagator for integer equal to Boolean sum (cardinality)
777
+ *
778
+ * Requires \code #include "gecode/int/linear.hh" \endcode
779
+ * \ingroup FuncIntProp
780
+ */
781
+ template <class VX>
782
+ class EqBoolInt : public LinBoolInt<VX> {
783
+ protected:
784
+ using LinBoolInt<VX>::x;
785
+ using LinBoolInt<VX>::n_s;
786
+ using LinBoolInt<VX>::c;
787
+ /// Constructor for cloning \a p
788
+ EqBoolInt(Space* home, bool share, EqBoolInt& p);
789
+ /// Constructor for creation
790
+ EqBoolInt(Space* home, ViewArray<VX>& x, int n_s, int c);
791
+ public:
792
+ /// Create copy during cloning
793
+ virtual Actor* copy(Space* home, bool share);
794
+ /// Perform propagation
795
+ virtual ExecStatus propagate(Space* home);
796
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i = c\f$
797
+ static ExecStatus post(Space* home, ViewArray<VX>& x, int c);
798
+ };
799
+
800
+ /**
801
+ * \brief %Propagator for integer less or equal to Boolean sum (cardinality)
802
+ *
803
+ * Requires \code #include "gecode/int/linear.hh" \endcode
804
+ * \ingroup FuncIntProp
805
+ */
806
+ template <class VX>
807
+ class GqBoolInt : public LinBoolInt<VX> {
808
+ protected:
809
+ using LinBoolInt<VX>::x;
810
+ using LinBoolInt<VX>::n_s;
811
+ using LinBoolInt<VX>::c;
812
+ /// Constructor for cloning \a p
813
+ GqBoolInt(Space* home, bool share, GqBoolInt& p);
814
+ /// Constructor for creation
815
+ GqBoolInt(Space* home, ViewArray<VX>& x, int n_s, int c);
816
+ public:
817
+ /// Create copy during cloning
818
+ virtual Actor* copy(Space* home, bool share);
819
+ /// Perform propagation
820
+ virtual ExecStatus propagate(Space* home);
821
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \geq c\f$
822
+ static ExecStatus post(Space* home, ViewArray<VX>& x, int c);
823
+ };
824
+
825
+ /**
826
+ * \brief %Propagator for integer disequal to Boolean sum (cardinality)
827
+ *
828
+ * Requires \code #include "gecode/int/linear.hh" \endcode
829
+ * \ingroup FuncIntProp
830
+ */
831
+ template<class VX>
832
+ class NqBoolInt : public BinaryPropagator<VX,PC_INT_VAL> {
833
+ protected:
834
+ using BinaryPropagator<VX,PC_INT_VAL>::x0;
835
+ using BinaryPropagator<VX,PC_INT_VAL>::x1;
836
+ /// Views not yet subscribed to
837
+ ViewArray<VX> x;
838
+ /// Righthandside
839
+ int c;
840
+ /// Update subscription
841
+ bool resubscribe(Space* home, VX& y);
842
+ /// Constructor for posting
843
+ NqBoolInt(Space* home, ViewArray<VX>& b, int c);
844
+ /// Constructor for cloning \a p
845
+ NqBoolInt(Space* home, bool share, NqBoolInt<VX>& p);
846
+ public:
847
+ /// Copy propagator during cloning
848
+ virtual Actor* copy(Space* home, bool share);
849
+ /// Cost function (defined as PC_LINEAR_LO)
850
+ virtual PropCost cost(void) const;
851
+ /// Perform propagation
852
+ virtual ExecStatus propagate(Space* home);
853
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i \neq c\f$
854
+ static ExecStatus post(Space* home, ViewArray<VX>& b, int c);
855
+ };
856
+
857
+ }}}
858
+
859
+ #include "gecode/int/linear/bool-int.icc"
860
+
861
+ namespace Gecode { namespace Int { namespace Linear {
862
+
863
+ /**
864
+ * \brief Base-class for Boolean linear propagators
865
+ *
866
+ */
867
+ template <class XV, class YV>
868
+ class LinBoolView : public Propagator {
869
+ protected:
870
+ /// Boolean views
871
+ ViewArray<XV> x;
872
+ /// View to compare number of assigned Boolean views to
873
+ YV y;
874
+ /// Righthandside (constant part from Boolean views assigned to 1)
875
+ int c;
876
+ /// Constructor for cloning \a p
877
+ LinBoolView(Space* home, bool share, LinBoolView& p);
878
+ /// Constructor for creation
879
+ LinBoolView(Space* home, ViewArray<XV>& x, YV y, int c);
880
+ public:
881
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
882
+ virtual PropCost cost(void) const;
883
+ /// Delete propagator and return its size
884
+ virtual size_t dispose(Space* home);
885
+ };
886
+
887
+
888
+ /**
889
+ * \brief %Propagator for equality to Boolean sum (cardinality)
890
+ *
891
+ * Requires \code #include "gecode/int/linear.hh" \endcode
892
+ * \ingroup FuncIntProp
893
+ */
894
+ template <class XV, class YV>
895
+ class EqBoolView : public LinBoolView<XV,YV> {
896
+ protected:
897
+ using LinBoolView<XV,YV>::x;
898
+ using LinBoolView<XV,YV>::y;
899
+ using LinBoolView<XV,YV>::c;
900
+
901
+ /// Constructor for cloning \a p
902
+ EqBoolView(Space* home, bool share, EqBoolView& p);
903
+ /// Constructor for creation
904
+ EqBoolView(Space* home, ViewArray<XV>& x, YV y, int c);
905
+ public:
906
+ /// Create copy during cloning
907
+ virtual Actor* copy(Space* home, bool share);
908
+ /// Perform propagation
909
+ virtual ExecStatus propagate(Space* home);
910
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i+n = y\f$
911
+ static ExecStatus post(Space* home, ViewArray<XV>& x, YV y, int c);
912
+ };
913
+
914
+ /**
915
+ * \brief %Propagator for disequality to Boolean sum (cardinality)
916
+ *
917
+ * Requires \code #include "gecode/int/linear.hh" \endcode
918
+ * \ingroup FuncIntProp
919
+ */
920
+ template <class XV, class YV>
921
+ class NqBoolView : public LinBoolView<XV,YV> {
922
+ protected:
923
+ using LinBoolView<XV,YV>::x;
924
+ using LinBoolView<XV,YV>::y;
925
+ using LinBoolView<XV,YV>::c;
926
+
927
+ /// Constructor for cloning \a p
928
+ NqBoolView(Space* home, bool share, NqBoolView& p);
929
+ /// Constructor for creation
930
+ NqBoolView(Space* home, ViewArray<XV>& x, YV y, int c);
931
+ public:
932
+ /// Create copy during cloning
933
+ virtual Actor* copy(Space* home, bool share);
934
+ /// Perform propagation
935
+ virtual ExecStatus propagate(Space* home);
936
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i+n \neq y\f$
937
+ static ExecStatus post(Space* home, ViewArray<XV>& x, YV y, int c);
938
+ };
939
+
940
+ /**
941
+ * \brief %Propagator for greater or equal to Boolean sum (cardinality)
942
+ *
943
+ * Requires \code #include "gecode/int/linear.hh" \endcode
944
+ * \ingroup FuncIntProp
945
+ */
946
+ template <class XV, class YV>
947
+ class GqBoolView : public LinBoolView<XV,YV> {
948
+ protected:
949
+ using LinBoolView<XV,YV>::x;
950
+ using LinBoolView<XV,YV>::y;
951
+ using LinBoolView<XV,YV>::c;
952
+
953
+ /// Constructor for cloning \a p
954
+ GqBoolView(Space* home, bool share, GqBoolView& p);
955
+ /// Constructor for creation
956
+ GqBoolView(Space* home, ViewArray<XV>& x, YV y, int c);
957
+ public:
958
+ /// Create copy during cloning
959
+ virtual Actor* copy(Space* home, bool share);
960
+ /// Perform propagation
961
+ virtual ExecStatus propagate(Space* home);
962
+ /// Post propagator for \f$\sum_{i=0}^{|x|-1}x_i+n \geq y\f$
963
+ static ExecStatus post(Space* home, ViewArray<XV>& x, YV y, int c);
964
+ };
965
+
966
+ }}}
967
+
968
+ #include "gecode/int/linear/bool-view.icc"
969
+
970
+ namespace Gecode { namespace Int { namespace Linear {
971
+
972
+
973
+ /*
974
+ * Support for preprocessing and posting
975
+ *
976
+ */
977
+
978
+ /**
979
+ * \brief Class for describing linear term \f$a\cdot x\f$
980
+ *
981
+ */
982
+ class Term {
983
+ public:
984
+ /// Coefficient
985
+ int a;
986
+ /// View
987
+ IntView x;
988
+ };
989
+
990
+ /**
991
+ * \brief Post propagator for linear constraint
992
+ * \param e array of linear terms
993
+ * \param n size of array
994
+ * \param r type of relation
995
+ * \param c result of linear constraint
996
+ *
997
+ * All variants for linear constraints share the following properties:
998
+ * - Only bounds-consistency is supported.
999
+ * - Variables occuring multiply in the term array are replaced
1000
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1001
+ * \f$(a+b)x\f$.
1002
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1003
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1004
+ * defined in Limits::Int, an exception of type
1005
+ * Int::NumericalOverflow is thrown.
1006
+ * - Assume linear terms for the constraint
1007
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1008
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1009
+ * for doubles as defined in Limits::Int, an exception of
1010
+ * type Int::NumericalOverflow is thrown.
1011
+ * - In all other cases, the created propagators are accurate (that
1012
+ * is, they will not silently overflow during propagation).
1013
+ *
1014
+ * Requires \code #include "gecode/int/linear.hh" \endcode
1015
+ * \ingroup FuncIntProp
1016
+ */
1017
+ GECODE_INT_EXPORT void
1018
+ post(Space* home, Term t[], int n, IntRelType r, int c, IntConLevel=ICL_DEF);
1019
+
1020
+ /**
1021
+ * \brief Post reified propagator for linear constraint
1022
+ * \param e array of linear terms
1023
+ * \param n size of array
1024
+ * \param r type of relation
1025
+ * \param c result of linear constraint
1026
+ * \param b Boolean control view
1027
+ *
1028
+ * All variants for linear constraints share the following properties:
1029
+ * - Only bounds-consistency is supported.
1030
+ * - Variables occuring multiply in the term array are replaced
1031
+ * by a single occurence: for example, \f$ax+bx\f$ becomes
1032
+ * \f$(a+b)x\f$.
1033
+ * - If in the above simplification the value for \f$(a+b)\f$ (or for
1034
+ * \f$a\f$ and \f$b\f$) exceeds the limits for integers as
1035
+ * defined in Limits::Int, an exception of type
1036
+ * Int::NumericalOverflow is thrown.
1037
+ * - Assume linear terms for the constraint
1038
+ * \f$\sum_{i=0}^{|x|-1}a_i\cdot x_i\sim_r c\f$.
1039
+ * If \f$|c|+\sum_{i=0}^{|x|-1}a_i\cdot x_i\f$ exceeds the limits
1040
+ * for doubles as defined in Limits::Int, an exception of
1041
+ * type Int::NumericalOverflow is thrown.
1042
+ * - In all other cases, the created propagators are accurate (that
1043
+ * is, they will not silently overflow during propagation).
1044
+ *
1045
+ * Requires \code #include "gecode/int/linear.hh" \endcode
1046
+ * \ingroup FuncIntProp
1047
+ */
1048
+ GECODE_INT_EXPORT void
1049
+ post(Space* home, Term t[], int n, IntRelType r, int c, BoolView b);
1050
+
1051
+ }}}
1052
+
1053
+ #endif
1054
+
1055
+ // STATISTICS: int-prop
1056
+