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,198 @@
1
+ #
2
+ # Main authors:
3
+ # Christian Schulte <schulte@gecode.org>
4
+ #
5
+ # Copyright:
6
+ # Christian Schulte, 2006
7
+ #
8
+ # Last modified:
9
+ # $Date: 2006-07-28 16:27:48 +0200 (Fri, 28 Jul 2006) $ by $Author: tack $
10
+ # $Revision: 3477 $
11
+ #
12
+ # This file is part of Gecode, the generic constraint
13
+ # development environment:
14
+ # http://www.gecode.org
15
+ #
16
+ # See the file "LICENSE" for information on usage and
17
+ # redistribution of this file, and for a
18
+ # DISCLAIMER OF ALL WARRANTIES.
19
+ #
20
+
21
+ ##
22
+ ## Header of file to be generated
23
+ ##
24
+ [Header]
25
+
26
+ namespace Gecode { namespace Int {
27
+
28
+ ##
29
+ ## General settings
30
+ ##
31
+ ## Defines the name (Name) and the variable type identifier (VTI) of the
32
+ ## variable implementation to be generated.
33
+ ##
34
+ ## Export defines whether a special macro to be added in front
35
+ ## of a definition that needs external linkage (can be omitted)
36
+ ##
37
+ ## Forceinline defines whether a special macro for inlining should
38
+ ## be used. If it is omitted, inline will be used instead.
39
+ ##
40
+ ## Forcedispose defines whether this variable type provides a dispose
41
+ ## function that must be called for all variables in a space when the
42
+ ## space is destroyed. If it is omitted, false is assumed.
43
+ [General]
44
+ Name: Int
45
+ VTI: INT
46
+ Export: GECODE_INT_EXPORT
47
+ Forceinline: forceinline
48
+
49
+ ##
50
+ ## Definition of modification events
51
+ ##
52
+ ##
53
+ ## ModEventHeader: give some text that precedes the definition
54
+ ## of the modification events.
55
+ ##
56
+ ## ModEventFooter: give some text that comes after the definition
57
+ ## of the modification events.
58
+ ##
59
+ ## ModEvent: defines a modification event
60
+ ## The definition must always contain a Name line, either in the form
61
+ ## Name: <name>
62
+ ## or
63
+ ## Name: <name> = <special>
64
+ ## where <special> must be one of
65
+ ## - FAILED: this is the modification event used when an operation
66
+ ## resulted in failure.
67
+ ## - NONE: this is the modification event used when an operation
68
+ ## does nothing.
69
+ ## - ASSIGNED: when the operation assigned the variable.
70
+ ## - SUBSCRIBE: when a propagator subscribes to a variable, the
71
+ ## propagator will be processed with that event initially.
72
+ ##
73
+ ## Note that at least the special cases "FAILED", "NONE", and "ASSIGNED"
74
+ ## must be present. In case there are more events defined, then also
75
+ ## "SUBSCRIBE" must be present.
76
+ ##
77
+ ## Additionally, for all modfication events but the special cases
78
+ ## "FAILED" and "NONE" one needs to define the combination of
79
+ ## modification events by
80
+ ## Combine: <me1>=<me2>, ... (repeated)
81
+ ## This means that the combination of the currently defined
82
+ ## modification event together with <me1> results in <me2>.
83
+ ##
84
+ [ModEventHeader]
85
+ /**
86
+ * \defgroup TaskActorIntMEPC Integer modification events and propagation conditions
87
+ * \ingroup TaskActorInt
88
+ */
89
+
90
+ //@{
91
+ [ModEvent]
92
+ Name: FAILED=FAILED
93
+ /// Domain operation has resulted in failure
94
+ [ModEvent]
95
+ Name: NONE=NONE
96
+ /// Domain operation has not changed domain
97
+ [ModEvent]
98
+ Name: VAL=ASSIGNED
99
+ Combine: VAL=VAL, BND=VAL, DOM=VAL
100
+ /// Domain operation has resulted in a value (assigned variable)
101
+ [ModEvent]
102
+ Name: BND=SUBSCRIBE
103
+ Combine: VAL=VAL, BND=BND, DOM=BND
104
+ /**
105
+ * \brief Domain operation has changed the minimum or maximum of the domain
106
+ *
107
+ * Note that this implies that the domain has not resulted in a value.
108
+ *
109
+ * If a propagator subscribes to this variable, it will be processed
110
+ * assuming a ME_INT_BND modification event.
111
+ */
112
+ [ModEvent]
113
+ Name: DOM
114
+ Combine: VAL=VAL, BND=BND, DOM=DOM
115
+ /**
116
+ * \brief Domain operation has changed the domain
117
+ *
118
+ * Note that this implies that the domain has not resulted in a value
119
+ * and that also the minimum and maximum of the domain have not changed.
120
+ */
121
+ # [ModEventFooter]: Nothing
122
+
123
+
124
+ ##
125
+ ## Definition of propagation conditions
126
+ ##
127
+ ##
128
+ ## PropCondHeader: give some text that precedes the definition
129
+ ## of the propagation conditions. One can rely on the fact that
130
+ ## the definitions of the propgation conditions come immediately
131
+ ## after the definitions of the modification events.
132
+ ##
133
+ ## PropCondFooter: give some text that comes after the definition
134
+ ## of the propagation conditions.
135
+ ##
136
+ ## PropCond: defines a propagation condition
137
+ ## The definition must always contain a Name line, either in the form
138
+ ## Name: <name>
139
+ ## or
140
+ ## Name: <name> = <special>
141
+ ## where <special> must be
142
+ ## - ASSIGNED: the condition corresponding to executing a
143
+ ## propagator when a variable becomes assigned.
144
+ ##
145
+ ## Note that this special case must be present!
146
+ ##
147
+ ## Additionally, for all propagation conditions one must define
148
+ ## the modification events that trigger execution of a propagator
149
+ ## with the defined propagation condition. This is done by:
150
+ ## ModEvents: <me>, ... (repeeated)
151
+ ##
152
+ # [PropCondHeader]: Nothing
153
+ [PropCond]
154
+ Name: VAL=ASSIGNED
155
+ ModEvents: VAL
156
+ /**
157
+ * \brief Propagate when a view becomes assigned (single value)
158
+ *
159
+ * If a propagator \a p depends on a view \a x with propagation
160
+ * condition PC_INT_VAL, then \a p is propagated when a domain
161
+ * update operation on \a x returns the modification event ME_INT_VAL.
162
+ */
163
+ [PropCond]
164
+ Name: BND
165
+ ModEvents: VAL, BND
166
+ /**
167
+ * \brief Propagate when minimum or maximum of a view changes
168
+ *
169
+ * If a propagator \a p depends on a view \a x with propagation
170
+ * condition PC_INT_BND, then \a p is propagated when a domain
171
+ * update operation on \a x returns the modification events ME_INT_VAL
172
+ * or ME_INT_BND.
173
+ */
174
+ [PropCond]
175
+ Name: DOM
176
+ ModEvents: VAL, BND, DOM
177
+ /**
178
+ * \brief Propagate when domain changes
179
+ *
180
+ * If a propagator \a p depends on a view \a x with propagation
181
+ * condition PC_INT_DOM, then \a p is propagated when a domain
182
+ * update operation on \a x returns the modification event ME_INT_VAL,
183
+ * ME_INT_BND, or ME_INT_DOM.
184
+ */
185
+ [PropCondFooter]
186
+ //@}
187
+ ##
188
+ ## Footer of file to be generated
189
+ ##
190
+ [Footer]
191
+
192
+ }}
193
+
194
+ // STATISTICS: int-var
195
+ ##
196
+ ## At the end of the file there must be an [End] section.
197
+ ##
198
+ [End]
@@ -0,0 +1,590 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Contributing authors:
6
+ * Guido Tack <tack@gecode.org>
7
+ *
8
+ * Copyright:
9
+ * Christian Schulte, 2002
10
+ * Guido Tack, 2004
11
+ *
12
+ * Last modified:
13
+ * $Date: 2006-09-21 11:35:18 +0200 (Thu, 21 Sep 2006) $ by $Author: schulte $
14
+ * $Revision: 3686 $
15
+ *
16
+ * This file is part of Gecode, the generic constraint
17
+ * development environment:
18
+ * http://www.gecode.org
19
+ *
20
+ * See the file "LICENSE" for information on usage and
21
+ * redistribution of this file, and for a
22
+ * DISCLAIMER OF ALL WARRANTIES.
23
+ *
24
+ */
25
+
26
+ #include <cmath>
27
+
28
+ #include "gecode/int/var/imp-hdr.icc"
29
+
30
+ namespace Gecode { namespace Int {
31
+
32
+ class IntVarImpFwd;
33
+ class IntVarImpBwd;
34
+
35
+ /**
36
+ * \brief Integer variable implementation
37
+ *
38
+ * \ingroup Other
39
+ */
40
+ class IntVarImp : public IntVarImpBase {
41
+ friend class IntVarImpFwd;
42
+ friend class IntVarImpBwd;
43
+ protected:
44
+ /**
45
+ * \brief Lists of ranges (intervals)
46
+ *
47
+ * Range lists are doubly-linked storing the pointer to both
48
+ * the next and the previous element in a single pointer.
49
+ * That means that the next element is only available when
50
+ * the previous element is supplied as additional information.
51
+ * The same holds true for access to the previous element.
52
+ */
53
+ class RangeList : public FreeList {
54
+ protected:
55
+ /// Minimum of range
56
+ int _min;
57
+ /// Maximum of range
58
+ int _max;
59
+ public:
60
+ /// \name Constructors
61
+ //@{
62
+ /// Default constructor (noop)
63
+ RangeList(void);
64
+ /// Initialize with minimum \a min and maximum \a max
65
+ RangeList(int min, int max);
66
+ /// Initialize with minimum \a min and maximum \a max and predecessor \a p and successor \a n
67
+ RangeList(int min, int max, RangeList* p, RangeList* n);
68
+ //@}
69
+
70
+ /// \name Access
71
+ //@{
72
+ /// Return minimum
73
+ int min(void) const;
74
+ /// Return maximum
75
+ int max(void) const;
76
+ /// Return width (distance between maximum and minimum)
77
+ unsigned int width(void) const;
78
+
79
+ /// Return next element (from previous \a p)
80
+ RangeList* next(const RangeList* p) const;
81
+ /// Return previous element (from next \a n)
82
+ RangeList* prev(const RangeList* n) const;
83
+ //@}
84
+
85
+ /// \name Update
86
+ //@{
87
+ /// Set minimum to \a n
88
+ void min(int n);
89
+ /// Set maximum to \a n
90
+ void max(int n);
91
+
92
+ /// Set previous element to \a p and next element to \a n
93
+ void prevnext(RangeList* p, RangeList* n);
94
+ /// Set next element from \a o to \a n
95
+ void next(RangeList* o, RangeList* n);
96
+ /// Set previous element from \a o to \a n
97
+ void prev(RangeList* o, RangeList* n);
98
+ /// Restore simple link to next element (so that it becomes a true free list)
99
+ void fix(RangeList* n);
100
+ //@}
101
+
102
+ /// \name Memory management
103
+ //@{
104
+ /**
105
+ * \brief Free memory for all elements between this and \a l (inclusive)
106
+ *
107
+ * \a p must be the pointer to the previous element of \c this.
108
+ */
109
+ void dispose(Space* home, RangeList* p, RangeList* l);
110
+ /**
111
+ * \brief Free memory for all elements between this and \a l (inclusive)
112
+ *
113
+ * This routine assumes that the list has already been fixed.
114
+ */
115
+ void dispose(Space* home, RangeList* l);
116
+ /// Free memory for this element
117
+ void dispose(Space* home);
118
+
119
+ /// Allocate memory from space
120
+ static void* operator new(size_t s, Space* home);
121
+ /// No-op (for exceptions)
122
+ static void operator delete(void*);
123
+ /// No-op (use dispose instead)
124
+ static void operator delete(void*, Space*);
125
+ //@}
126
+ };
127
+
128
+ /**
129
+ * \brief Domain information
130
+ *
131
+ * Provides fast access to minimum and maximum of the
132
+ * entire domain and links to the first element
133
+ * of a RangeList defining the domain.
134
+ */
135
+ RangeList dom;
136
+ /// Link the last element
137
+ RangeList* _lst;
138
+ /// Return first element of rangelist
139
+ RangeList* fst(void) const;
140
+ /// Set first element of rangelist
141
+ void fst(RangeList* f);
142
+ /// Return last element of rangelist
143
+ RangeList* lst(void) const;
144
+ /// Set last element of rangelist
145
+ void lst(RangeList* l);
146
+ /// Size of holes in the domain
147
+ unsigned int holes;
148
+
149
+ protected:
150
+ /// Constructor for cloning \a x (\a is_bool whether this is a Boolean variable)
151
+ IntVarImp(Space* home, bool share, IntVarImp& x, bool is_bool);
152
+ public:
153
+ /// Initialize with range domain
154
+ IntVarImp(Space* home, int min, int max);
155
+ /// Initialize with domain specified by \a d
156
+ IntVarImp(Space* home, const IntSet& d);
157
+
158
+ /// \name Value access
159
+ //@{
160
+ /// Return minimum of domain
161
+ int min(void) const;
162
+ /// Return maximum of domain
163
+ int max(void) const;
164
+ /// Return assigned value (only if assigned)
165
+ int val(void) const;
166
+ /// Return median of domain
167
+ GECODE_INT_EXPORT int med(void) const;
168
+
169
+ /// Return size (cardinality) of domain
170
+ unsigned int size(void) const;
171
+ /// Return width of domain (distance between maximum and minimum)
172
+ unsigned int width(void) const;
173
+ /// Return regret of domain minimum (distance to next larger value)
174
+ unsigned int regret_min(void) const;
175
+ /// Return regret of domain maximum (distance to next smaller value)
176
+ unsigned int regret_max(void) const;
177
+ //@}
178
+
179
+ private:
180
+ /// Test whether \a n is contained in domain (full domain)
181
+ GECODE_INT_EXPORT bool in_full(int n) const;
182
+
183
+ public:
184
+ /// \name Domain tests
185
+ //@{
186
+ /// Test whether domain is a range
187
+ bool range(void) const;
188
+ /// Test whether variable is assigned
189
+ bool assigned(void) const;
190
+
191
+ /// Test whether \a n is contained in domain
192
+ bool in(int n) const;
193
+ /// Test whether \a n is contained in domain
194
+ bool in(double n) const;
195
+ //@}
196
+
197
+ protected:
198
+ /// \name Range list access for iteration
199
+ //@{
200
+ /// Return range list for forward iteration
201
+ const RangeList* ranges_fwd(void) const;
202
+ /// Return range list for backward iteration
203
+ const RangeList* ranges_bwd(void) const;
204
+ //@}
205
+
206
+ private:
207
+ /// Test whether \a n is closer to the minimum or maximum
208
+ bool closer_min(int b) const;
209
+ /// \name Domain update by value (full domain)
210
+ //@{
211
+ /// Restrict domain values to be less or equal than \a n
212
+ GECODE_INT_EXPORT void lq_full(Space* home, int n);
213
+ /// Restrict domain values to be greater or equal than \a n
214
+ GECODE_INT_EXPORT void gq_full(Space* home, int n);
215
+ /// Restrict domain values to be equal to \a n
216
+ GECODE_INT_EXPORT void eq_full(Space* home, int n);
217
+ /// Restrict domain values to be different from \a n
218
+ GECODE_INT_EXPORT ModEvent nq_full(Space* home, int n);
219
+ //@}
220
+ public:
221
+ /// \name Domain update by value
222
+ //@{
223
+ /// Restrict domain values to be less or equal than \a n
224
+ ModEvent lq(Space* home, int n);
225
+ /// Restrict domain values to be less or equal than \a n
226
+ ModEvent lq(Space* home, double n);
227
+
228
+ /// Restrict domain values to be greater or equal than \a n
229
+ ModEvent gq(Space* home, int n);
230
+ /// Restrict domain values to be greater or equal than \a n
231
+ ModEvent gq(Space* home, double n);
232
+
233
+ /// Restrict domain values to be different from \a n
234
+ ModEvent nq(Space* home, int n);
235
+ /// Restrict domain values to be different from \a n
236
+ ModEvent nq(Space* home, double n);
237
+
238
+ /// Restrict domain values to be equal to \a n
239
+ ModEvent eq(Space* home, int n);
240
+ /// Restrict domain values to be equal to \a n
241
+ ModEvent eq(Space* home, double n);
242
+ //@}
243
+
244
+ /// \name Domain update by range iterator
245
+ //@{
246
+ /// Replace domain by range sequence described by \a i
247
+ template <class I> ModEvent narrow(Space* home, I& i);
248
+ /// Intersect domain with range sequence described by \a i
249
+ template <class I> ModEvent inter(Space* home, I& i);
250
+ /// Remove from domain the range sequence described by \a i
251
+ template <class I> ModEvent minus(Space* home, I& i);
252
+ //@}
253
+
254
+ /// \name Boolean update operations
255
+ //@{
256
+ /// Assign unassigned variable to zero
257
+ void t_zero_none(Space* home);
258
+ /// Assign unassigned variable to one
259
+ void t_one_none(Space* home);
260
+ //@}
261
+
262
+ public:
263
+ /// \name Dependencies
264
+ //@{
265
+ /**
266
+ * \brief Subscribe propagator \a p with propagation condition \a pc to variable
267
+ *
268
+ * In case \a process is false, the propagator is just subscribed but
269
+ * not processed for execution (this must be used when creating
270
+ * subscriptions during propagation).
271
+ *
272
+ */
273
+ void subscribe(Space* home, Propagator* p, PropCond pc, bool process=true);
274
+ //@}
275
+
276
+ private:
277
+ /// Return copy of not-yet copied variable
278
+ GECODE_INT_EXPORT IntVarImp* perform_copy(Space* home, bool share);
279
+ /// Return copy of not-yet copied variable (Boolean)
280
+ GECODE_INT_EXPORT IntVarImp* perform_copy_bool(Space* home, bool share);
281
+ public:
282
+ /// \name Cloning
283
+ //@{
284
+ /// Return copy of this variable
285
+ IntVarImp* copy(Space* home, bool share);
286
+ /// Return copy of this variable (Boolean)
287
+ IntVarImp* copy_bool(Space* home, bool share);
288
+ //@}
289
+ };
290
+
291
+
292
+ /**
293
+ * \brief Range iterator for ranges of integer variable implementation
294
+ *
295
+ */
296
+ class IntVarImpFwd {
297
+ private:
298
+ /// Previous range
299
+ const IntVarImp::RangeList* p;
300
+ /// Current range
301
+ const IntVarImp::RangeList* c;
302
+ public:
303
+ /// \name Constructors and initialization
304
+ //@{
305
+ /// Default constructor
306
+ IntVarImpFwd(void);
307
+ /// Initialize with ranges from variable implementation \a x
308
+ IntVarImpFwd(const IntVarImp* x);
309
+ /// Initialize with ranges from variable implementation \a x
310
+ void init(const IntVarImp* x);
311
+ //@}
312
+
313
+ /// \name Iteration control
314
+ //@{
315
+ /// Test whether iterator is still at a range or done
316
+ bool operator()(void) const;
317
+ /// Move iterator to next range (if possible)
318
+ void operator++(void);
319
+ //@}
320
+
321
+ /// \name Range access
322
+ //@{
323
+ /// Return smallest value of range
324
+ int min(void) const;
325
+ /// Return largest value of range
326
+ int max(void) const;
327
+ /// Return width of range (distance between minimum and maximum)
328
+ unsigned int width(void) const;
329
+ //@}
330
+ };
331
+
332
+ /**
333
+ * \brief Backward iterator for ranges of integer variable implementations
334
+ *
335
+ * Note that this iterator is not a range iterator as the ranges
336
+ * are not iterated in increasing but in decreasing order.
337
+ *
338
+ */
339
+ class IntVarImpBwd {
340
+ private:
341
+ /// Next range
342
+ const IntVarImp::RangeList* n;
343
+ /// Current range
344
+ const IntVarImp::RangeList* c;
345
+ public:
346
+ /// \name Constructors and initialization
347
+ //@{
348
+ /// Default constructor
349
+ IntVarImpBwd(void);
350
+ /// Initialize with ranges from variable implementation \a x
351
+ IntVarImpBwd(const IntVarImp* x);
352
+ /// Initialize with ranges from variable implementation \a x
353
+ void init(const IntVarImp* x);
354
+ //@}
355
+
356
+ /// \name Iteration control
357
+ //@{
358
+ /// Test whether iterator is still at a range or done
359
+ bool operator()(void) const;
360
+ /// Move iterator to previous range (if possible)
361
+ void operator++(void);
362
+ //@}
363
+
364
+ /// \name Range access
365
+ //@{
366
+ /// Return smallest value of range
367
+ int min(void) const;
368
+ /// Return largest value of range
369
+ int max(void) const;
370
+ /// Return width of range (distance between minimum and maximum)
371
+ unsigned int width(void) const;
372
+ //@}
373
+ };
374
+
375
+
376
+ class IntView;
377
+ class BoolView;
378
+
379
+ }}
380
+
381
+ #include "gecode/int/var/imp.icc"
382
+
383
+
384
+ namespace Gecode {
385
+
386
+ /**
387
+ * \brief Integer variables
388
+ *
389
+ * \ingroup TaskIntIntVars
390
+ */
391
+ class IntVar {
392
+ protected:
393
+ /// Integer variable implementation used
394
+ Int::IntVarImp* var;
395
+ public:
396
+ /// \name Constructors and initialization
397
+ //@{
398
+ /// Default constructor
399
+ IntVar(void);
400
+ /// Initialize from integer variable \a x
401
+ IntVar(const IntVar& x);
402
+ /// Initialize from integer view \a x
403
+ IntVar(const Int::IntView& x);
404
+ /**
405
+ * \brief Initialize variable with range domain
406
+ *
407
+ * The variable is created with a domain ranging from \a min
408
+ * to \a max. The following exceptions might be thrown:
409
+ * - If \a min is greater than \a max, an exception of type
410
+ * Gecode::Int::VariableEmptyDomain is thrown.
411
+ * - If \a min or \a max exceed the limits for integers as defined
412
+ * in Gecode::Limits::Int, an exception of type
413
+ * Gecode::Int::VariableOutOfDomain is thrown.
414
+ */
415
+ GECODE_INT_EXPORT IntVar(Space* home, int min ,int max);
416
+ /**
417
+ * \brief Initialize variable with arbitrary domain
418
+ *
419
+ * The variable is created with a domain described by \a d.
420
+ * The following exceptions might be thrown:
421
+ * - If \a d is empty, an exception of type
422
+ * Gecode::Int::VariableEmptyDomain is thrown.
423
+ * - If \a d contains values that exceed the limits for integers
424
+ * as defined in Gecode::Limits::Int, an exception of type
425
+ * Gecode::Int::VariableOutOfDomain is thrown.
426
+ */
427
+ GECODE_INT_EXPORT IntVar(Space* home, const IntSet& d);
428
+ /**
429
+ * \brief Initialize variable with range domain
430
+ *
431
+ * The variable is created with a domain ranging from \a min
432
+ * to \a max. The following exceptions might be thrown:
433
+ * - If \a min is greater than \a max, an exception of type
434
+ * Gecode::Int::VariableEmptyDomain is thrown.
435
+ * - If \a min or \a max exceed the limits for integers as defined
436
+ * in Gecode::Limits::Int, an exception of type
437
+ * Gecode::Int::VariableOutOfDomain is thrown.
438
+ */
439
+ GECODE_INT_EXPORT void init(Space* home, int min, int max);
440
+ /**
441
+ * \brief Initialize variable with arbitrary domain
442
+ *
443
+ * The variable is created with a domain described by \a d.
444
+ * The following exceptions might be thrown:
445
+ * - If \a d is empty, an exception of type
446
+ * Gecode::Int::VariableEmptyDomain is thrown.
447
+ * - If \a d contains values that exceed the limits for integers
448
+ * as defined in Gecode::Limits::Int, an exception of type
449
+ * Gecode::Int::VariableOutOfDomain is thrown.
450
+ */
451
+ GECODE_INT_EXPORT void init(Space* home, const IntSet& d);
452
+ //@}
453
+
454
+ /// \name Variable implementation access
455
+ //@{
456
+ /// Return integer variable implementation
457
+ Int::IntVarImp* variable(void) const;
458
+ //@}
459
+
460
+ /// \name Value access
461
+ //@{
462
+ /// Return minimum of domain
463
+ int min(void) const;
464
+ /// Return maximum of domain
465
+ int max(void) const;
466
+ /// Return median of domain
467
+ int med(void) const;
468
+ /// Return assigned value (only if assigned)
469
+ int val(void) const;
470
+
471
+ /// Return size (cardinality) of domain
472
+ unsigned int size(void) const;
473
+ /// Return width of domain (distance between maximum and minimum)
474
+ unsigned int width(void) const;
475
+ /// Return degree (number of subscribed propagators)
476
+ unsigned int degree(void) const;
477
+ //@}
478
+
479
+ /// \name Domain tests
480
+ //@{
481
+ /// Test whether domain is a range
482
+ bool range(void) const;
483
+ /// Test whether view is assigned
484
+ bool assigned(void) const;
485
+
486
+ /// Test whether \a n is contained in domain
487
+ bool in(int n) const;
488
+ //@}
489
+
490
+ /// \name Cloning
491
+ //@{
492
+ /// Update this variable to be a clone of variable \a x
493
+ void update(Space* home, bool share, IntVar& x);
494
+ //@}
495
+ };
496
+
497
+
498
+ /**
499
+ * \brief %Range iterator for integer variables
500
+ * \ingroup TaskIntIntVars
501
+ */
502
+ class IntVarRanges : public Int::IntVarImpFwd {
503
+ public:
504
+ /// \name Constructors and initialization
505
+ //@{
506
+ /// Default constructor
507
+ IntVarRanges(void);
508
+ /// Initialize with ranges for integer variable \a x
509
+ IntVarRanges(const IntVar& x);
510
+ /// Initialize with ranges for integer variable \a x
511
+ void init(const IntVar& x);
512
+ //@}
513
+ };
514
+
515
+ /**
516
+ * \brief Value iterator for integer variables
517
+ * \ingroup TaskIntIntVars
518
+ */
519
+ class IntVarValues
520
+ : public Iter::Ranges::ToValues<IntVarRanges> {
521
+ public:
522
+ /// \name Constructors and initialization
523
+ //@{
524
+ /// Default constructor
525
+ IntVarValues(void);
526
+ /// Initialize with values for \a x
527
+ IntVarValues(const IntVar& x);
528
+ /// Initialize with values \a x
529
+ void init(const IntVar& x);
530
+ //@}
531
+ };
532
+
533
+ /**
534
+ * \brief Boolean integer variables
535
+ *
536
+ * \ingroup TaskIntIntVars
537
+ */
538
+ class BoolVar : public IntVar {
539
+ public:
540
+ /// \name Constructors and initialization
541
+ //@{
542
+ /// Default constructor
543
+ BoolVar(void);
544
+ /// Initialize from Boolean View \a x
545
+ BoolVar(const Int::BoolView& x);
546
+ /**
547
+ * \brief Initialize Boolean variable with range domain
548
+ *
549
+ * The variable is created with a domain ranging from \a min
550
+ * to \a max. The following exceptions might be thrown:
551
+ * - If \a min is greater than \a max, an exception of type
552
+ * Gecode::Int::VariableEmptyDomain is thrown.
553
+ * - If \a min is less than 0 or \a max is greater than 1,
554
+ * an exception of type
555
+ * Gecode::Int::VariableOutOfDomain is thrown.
556
+ */
557
+ BoolVar(Space* home, int min, int max);
558
+ /**
559
+ * \brief Initialize Boolean variable from integer variable
560
+ *
561
+ * If \a x.min() is less than 0 or \a x.max() is greater than 1,
562
+ * an exception of type Gecode::Int::VariableOutOfDomain is thrown.
563
+ */
564
+ explicit BoolVar(const IntVar& x);
565
+ //@}
566
+
567
+ /// \name Cloning
568
+ //@{
569
+ /// Update this variable to be a clone of variable \a x
570
+ void update(Space* home, bool share, BoolVar& x);
571
+ //@}
572
+ };
573
+
574
+ }
575
+
576
+ /**
577
+ * \brief Print integer variable \a x
578
+ * \relates Gecode::IntVar
579
+ */
580
+ std::ostream&
581
+ operator<<(std::ostream&, const Gecode::IntVar& x);
582
+
583
+ /*
584
+ * For initialization, IntVar and IntView are mutually dependent.
585
+ * Therefore, the inclusion of the variable definition is in view.hh
586
+ *
587
+ */
588
+
589
+ // STATISTICS: int-var
590
+