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,205 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2004
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:03:05 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3510 $
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
+ namespace Gecode {
23
+
24
+ /// Heap and automatic memory management
25
+ namespace Memory {
26
+
27
+ /**
28
+ * \defgroup FuncMemHeap Heap-memory management
29
+ *
30
+ * All routines throw an exception of MemoryExhausted, if request
31
+ * cannot be fulfilled.
32
+ * \ingroup FuncMem
33
+ */
34
+
35
+ //@{
36
+ /// Allocate \a s bytes from heap.
37
+ void* malloc(size_t s);
38
+ /// Try to change memory-block starting at \a p to size \a s
39
+ void* realloc(void* p, size_t s);
40
+ /// Free memory block starting at \a p
41
+ void free(void* p);
42
+
43
+ /// Allocate block of \a n objects of type \a T from heap
44
+ template <class T>
45
+ T* bmalloc(size_t n);
46
+ /// Reallocate block of \a n object starting at \a b to \a m objects of type \a T from heap
47
+ template <class T>
48
+ T* brealloc(T* b, size_t n);
49
+ /// Copy \a n objects starting at \a s to \a d
50
+ template <class T>
51
+ T* bcopy(T* d, const T* s, size_t n);
52
+
53
+ //@}
54
+
55
+
56
+ /*
57
+ * Implementations
58
+ *
59
+ */
60
+
61
+ forceinline void*
62
+ malloc(size_t s) {
63
+ void* p = ::malloc(s);
64
+ if (p != NULL)
65
+ return p;
66
+ throw MemoryExhausted();
67
+ }
68
+
69
+ forceinline void*
70
+ realloc(void *p, size_t s) {
71
+ p = ::realloc(p,s);
72
+ if (p != NULL)
73
+ return p;
74
+ throw MemoryExhausted();
75
+ }
76
+
77
+ forceinline void
78
+ free(void* p) {
79
+ ::free(p);
80
+ }
81
+
82
+
83
+ template <class T>
84
+ forceinline T*
85
+ bmalloc(size_t n) {
86
+ return reinterpret_cast<T*>(Memory::malloc(sizeof(T)*n));
87
+ }
88
+
89
+ template <class T>
90
+ forceinline T*
91
+ brealloc(T* b, size_t, size_t m) {
92
+ return reinterpret_cast<T*>(Memory::realloc(b,m*sizeof(T)));
93
+ }
94
+
95
+ template <class T>
96
+ forceinline T*
97
+ bcopy(T* d, const T* s, size_t n) {
98
+ return reinterpret_cast<T*>(memcpy(d,s,n*sizeof(T)));
99
+ }
100
+
101
+ }
102
+
103
+ }
104
+
105
+ /**
106
+ * \defgroup FuncMemAuto Automatic memory management
107
+ * \ingroup FuncMem
108
+ */
109
+
110
+ //@{
111
+
112
+ /**
113
+ * \def GECODE_AUTOARRAY(T,X,N)
114
+ * \brief Automatic (stack allocation) of memory
115
+ *
116
+ * Allocates automatic memory for \a N objects of type \a T and
117
+ * declares and initializes the pointer \a X to \a T to that
118
+ * block.
119
+ *
120
+ * As soon as the current scope is left, the memory is freed.
121
+ *
122
+ * Tries to allocate small blocks on the stack, bigger ones are
123
+ * allocated from the heap (however, management is still automatic).
124
+ */
125
+
126
+ //@}
127
+
128
+ /*
129
+ * Automatic stack memory management
130
+ *
131
+ */
132
+
133
+ #if defined(__GNUC__) && (! defined(_WIN32) )
134
+
135
+ #define GECODE_AUTOARRAY(T,X,N) \
136
+ char __GECODE__ ## X ## __LINE__ [(N)*sizeof(T)]; \
137
+ T* X = reinterpret_cast<T*>(__GECODE__ ## X ## __LINE__);
138
+
139
+ #elif defined(_MSC_VER) || (defined(__GNUC__) && defined(_WIN32))
140
+
141
+ #include <cstdlib>
142
+ #include <malloc.h>
143
+
144
+ namespace Gecode { namespace Memory {
145
+
146
+ /**
147
+ * \brief Helper class for large memory chunks obtained from heap
148
+ */
149
+ class ManageMemory {
150
+ private:
151
+ void* _x;
152
+ public:
153
+ ManageMemory(void) {}
154
+ void init(void* p) { _x = p; }
155
+ ~ManageMemory(void) {
156
+ if (_x != NULL)
157
+ ::free(_x);
158
+ }
159
+ };
160
+
161
+ }}
162
+
163
+
164
+ #define GECODE_AUTOARRAY(T,X,N) \
165
+ T* X; \
166
+ ::Gecode::Memory::ManageMemory __GECODE__ ## X ## __LINE__; \
167
+ if ((sizeof(T)*(N)) <= 2048) { \
168
+ X = reinterpret_cast<T*>(_alloca(sizeof(T)*(N))); \
169
+ __GECODE__ ## X ## __LINE__ .init(NULL); \
170
+ } else { \
171
+ X = reinterpret_cast<T*>(::malloc(sizeof(T)*(N))); \
172
+ __GECODE__ ## X ## __LINE__ .init(X); \
173
+ }
174
+
175
+ #else
176
+
177
+ #include <cstdlib>
178
+
179
+ namespace Gecode { namespace Memory {
180
+
181
+ /**
182
+ * \brief Helper class for large automatic memory chunks
183
+ */
184
+ template <class T>
185
+ class AutoArray {
186
+ private:
187
+ T* _x;
188
+ public:
189
+ AutoArray(const int n) {
190
+ _x = reinterpret_cast<T*>(::malloc(sizeof(T)*n));
191
+ }
192
+ ~AutoArray(void) {
193
+ ::free(_x);
194
+ }
195
+ T &operator [](const int i){ return _x[i]; }
196
+ operator T*(void) { return _x; }
197
+ };
198
+
199
+ }}
200
+
201
+ #define GECODE_AUTOARRAY(T,X,N) ::Gecode::Memory::AutoArray< T > X(N)
202
+
203
+ #endif
204
+
205
+ // STATISTICS: kernel-core
@@ -0,0 +1,53 @@
1
+ /*
2
+ * Main authors:
3
+ * Christian Schulte <schulte@gecode.org>
4
+ *
5
+ * Copyright:
6
+ * Christian Schulte, 2002
7
+ *
8
+ * Last modified:
9
+ * $Date: 2006-08-04 16:03:05 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
10
+ * $Revision: 3510 $
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
+ namespace Gecode {
23
+
24
+ /**
25
+ * \brief Check whether modification event \a me is failed.
26
+ * \ingroup TaskActor
27
+ */
28
+ bool me_failed(ModEvent me);
29
+ /**
30
+ * \brief Check whether modification event \a me describes variable modification.
31
+ * \ingroup TaskActor
32
+ */
33
+ bool me_modified(ModEvent me);
34
+
35
+
36
+ /*
37
+ * Modification events
38
+ *
39
+ */
40
+
41
+ forceinline bool
42
+ me_failed(ModEvent me) {
43
+ return me < ME_GEN_NONE;
44
+ }
45
+
46
+ forceinline bool
47
+ me_modified(ModEvent me) {
48
+ return me > ME_GEN_NONE;
49
+ }
50
+
51
+ }
52
+
53
+ // STATISTICS: kernel-other
@@ -0,0 +1,680 @@
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-08-04 16:03:05 +0200 (Fri, 04 Aug 2006) $ by $Author: schulte $
12
+ * $Revision: 3510 $
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
+ namespace Gecode {
25
+
26
+ /**
27
+ * \brief Dynamic low-propagation cost computation
28
+ *
29
+ * If \a n is less than 4, use constant low-costs, otherwise use \a pc.
30
+ * \ingroup TaskActor
31
+ */
32
+ PropCost cost_lo(int n, PropCost pc);
33
+ /**
34
+ * \brief Dynamic high-propagation cost computation
35
+ *
36
+ * If \a n is less than 4, use constant hight-costs, otherwise use \a pc.
37
+ * \ingroup TaskActor
38
+ */
39
+ PropCost cost_hi(int n, PropCost pc);
40
+
41
+
42
+ /**
43
+ * \defgroup TaskPropPat Propagator patterns
44
+ *
45
+ * The optional last Boolean argument (\a fd) to the constructor for creation
46
+ * defines whether disposal must be forced. That is, if \a fd is true
47
+ * the dispose member function of a propagator is called when the
48
+ * space containing the propagator is deleted.
49
+ * \ingroup TaskActor
50
+ */
51
+
52
+ //@{
53
+ /**
54
+ * \brief Unary propagator
55
+ *
56
+ * Stores single view of type \a View with propagation condition \a pc.
57
+ */
58
+ template <class View, PropCond pc>
59
+ class UnaryPropagator : public Propagator {
60
+ protected:
61
+ /// Single view
62
+ View x0;
63
+ /// Constructor for cloning \a p
64
+ UnaryPropagator(Space* home, bool share, UnaryPropagator& p);
65
+ /// Constructor for rewriting \a p during cloning
66
+ UnaryPropagator(Space* home, bool share, Propagator& p,
67
+ View x0);
68
+ /// Constructor for creation
69
+ UnaryPropagator(Space* home, View x0, bool fd=false);
70
+ public:
71
+ /// Cost function (defined as PC_UNARY_LO)
72
+ virtual PropCost cost(void) const;
73
+ /// Delete propagator and return its size
74
+ virtual size_t dispose(Space* home);
75
+ };
76
+
77
+ /**
78
+ * \brief Binary propagator
79
+ *
80
+ * Stores two views of type \a View with propagation condition \a pc.
81
+ */
82
+ template <class View, PropCond pc>
83
+ class BinaryPropagator : public Propagator {
84
+ protected:
85
+ /// Two views
86
+ View x0, x1;
87
+ /// Constructor for cloning \a p
88
+ BinaryPropagator(Space* home, bool share, BinaryPropagator& p);
89
+ /// Constructor for creation
90
+ BinaryPropagator(Space* home, View x0, View x1, bool fd=false);
91
+ /// Constructor for rewriting \a p during cloning
92
+ BinaryPropagator(Space* home, bool share, Propagator& p,
93
+ View x0, View x1);
94
+ public:
95
+ /// Cost function (defined as PC_BINARY_LO)
96
+ virtual PropCost cost(void) const;
97
+ /// Delete propagator and return its size
98
+ virtual size_t dispose(Space* home);
99
+ };
100
+
101
+ /**
102
+ * \brief Ternary propagator
103
+ *
104
+ * Stores three views of type \a View with propagation condition \a pc.
105
+ */
106
+ template <class View, PropCond pc>
107
+ class TernaryPropagator : public Propagator {
108
+ protected:
109
+ /// Three views
110
+ View x0, x1, x2;
111
+ /// Constructor for cloning \a p
112
+ TernaryPropagator(Space* home, bool share, TernaryPropagator& p);
113
+ /// Constructor for creation
114
+ TernaryPropagator(Space* home, View x0, View x1, View x2, bool fd=false);
115
+ /// Constructor for rewriting \a p during cloning
116
+ TernaryPropagator(Space* home, bool share, Propagator& p,
117
+ View x0, View x1, View x2);
118
+ public:
119
+ /// Cost function (defined as PC_TERNARY_LO)
120
+ virtual PropCost cost(void) const;
121
+ /// Delete propagator and return its size
122
+ virtual size_t dispose(Space* home);
123
+ };
124
+
125
+ /**
126
+ * \brief n-ary propagator
127
+ *
128
+ * Stores array of views of type \a View with propagation condition \a pc.
129
+ */
130
+ template <class View, PropCond pc>
131
+ class NaryPropagator : public Propagator {
132
+ protected:
133
+ /// Array of views
134
+ ViewArray<View> x;
135
+ /// Constructor for cloning \a p
136
+ NaryPropagator(Space* home, bool share, NaryPropagator& p);
137
+ /// Constructor for rewriting \a p during cloning
138
+ NaryPropagator(Space* home, bool share, Propagator& p,
139
+ ViewArray<View>& x);
140
+ /// Constructor for creation
141
+ NaryPropagator(Space* home, ViewArray<View>& x, bool fd=false);
142
+ public:
143
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
144
+ virtual PropCost cost(void) const;
145
+ /// Delete propagator and return its size
146
+ virtual size_t dispose(Space* home);
147
+ };
148
+
149
+ /**
150
+ * \brief (n+1)-ary propagator
151
+ *
152
+ * Stores array of views and single view of type \a View with propagation
153
+ * condition \a pc.
154
+ */
155
+ template <class View, PropCond pc>
156
+ class NaryOnePropagator : public Propagator {
157
+ protected:
158
+ /// Array of views
159
+ ViewArray<View> x;
160
+ /// Single view
161
+ View y;
162
+ /// Constructor for cloning \a p
163
+ NaryOnePropagator(Space* home, bool share, NaryOnePropagator& p);
164
+ /// Constructor for rewriting \a p during cloning
165
+ NaryOnePropagator(Space* home, bool share, Propagator& p,
166
+ ViewArray<View>& x, View y);
167
+ /// Constructor for creation
168
+ NaryOnePropagator(Space* home, ViewArray<View>& x, View y, bool fd=false);
169
+ public:
170
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
171
+ virtual PropCost cost(void) const;
172
+ /// Delete propagator and return its size
173
+ virtual size_t dispose(Space* home);
174
+ };
175
+
176
+ /**
177
+ * \brief Inhomogeneous binary propagator
178
+ *
179
+ * Stores two views of type \a View0 and \a View1 with propagation
180
+ * conditions \a pc0 and \a pc1.
181
+ */
182
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
183
+ class InhomBinaryPropagator : public Propagator {
184
+ protected:
185
+ View0 x0;
186
+ View1 x1;
187
+ /// Constructor for cloning
188
+ InhomBinaryPropagator(Space* home,bool,InhomBinaryPropagator&);
189
+ /// Constructor for creation
190
+ InhomBinaryPropagator(Space* home,View0,View1,bool=false);
191
+ /// Constructor for rewriting \a p during cloning
192
+ InhomBinaryPropagator(Space* home, bool share, Propagator& p,
193
+ View0 x0, View1 x1);
194
+ public:
195
+ /// Cost function (defined as PC_BINARY_LO)
196
+ virtual PropCost cost(void) const;
197
+ /// Delete propagator and return its size
198
+ virtual size_t dispose(Space* home);
199
+ };
200
+
201
+ /**
202
+ * \brief Inhomogeneous ternary propagator
203
+ *
204
+ * Stores three views of type \a View0, \a View1, and \a View2
205
+ * with propagation conditions \a pc0, \a pc1, and \a pc2.
206
+ */
207
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
208
+ class View2, PropCond pc2>
209
+ class InhomTernaryPropagator : public Propagator {
210
+ protected:
211
+ View0 x0;
212
+ View1 x1;
213
+ View2 x2;
214
+ /// Constructor for cloning
215
+ InhomTernaryPropagator(Space* home,bool,InhomTernaryPropagator&);
216
+ /// Constructor for creation
217
+ InhomTernaryPropagator(Space* home,View0,View1,View2,bool=false);
218
+ /// Constructor for rewriting \a p during cloning
219
+ InhomTernaryPropagator(Space* home, bool share, Propagator& p,
220
+ View0 x0, View1 x1, View2 x2);
221
+ public:
222
+ /// Cost function (defined as PC_TERNARY_LO)
223
+ virtual PropCost cost(void) const;
224
+ /// Delete propagator and return its size
225
+ virtual size_t dispose(Space* home);
226
+ };
227
+
228
+ /**
229
+ * \brief Inhomogeneous (n+1)-ary propagator
230
+ *
231
+ * Stores array of views of type \a View0 with propagation condition \a pc0
232
+ * and a single view of type \a View1 with propagation condition \a pc1.
233
+ */
234
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
235
+ class InhomNaryOnePropagator : public Propagator {
236
+ protected:
237
+ /// Array of views
238
+ ViewArray<View0> x;
239
+ /// Single view
240
+ View1 y;
241
+ /// Constructor for cloning \a p
242
+ InhomNaryOnePropagator(Space* home, bool share, InhomNaryOnePropagator& p);
243
+ /// Constructor for creation
244
+ InhomNaryOnePropagator(Space* home, ViewArray<View0>& x, View1 y,
245
+ bool fd=false);
246
+ /// Constructor for rewriting \a p during cloning
247
+ InhomNaryOnePropagator(Space* home, bool share, Propagator& p,
248
+ ViewArray<View0>& x, View1 y);
249
+ public:
250
+ /// Cost function (defined as dynamic PC_LINEAR_LO)
251
+ virtual PropCost cost(void) const;
252
+ /// Delete propagator and return its size
253
+ virtual size_t dispose(Space* home);
254
+ };
255
+ //@}
256
+
257
+
258
+
259
+
260
+
261
+
262
+ /*
263
+ * Dynamic cost computation
264
+ *
265
+ */
266
+
267
+ forceinline PropCost
268
+ cost_lo(int n, PropCost c) {
269
+ if (n > 3) return c;
270
+ if (n < 2) return PC_UNARY_LO;
271
+ return (n > 2) ? PC_TERNARY_LO : PC_BINARY_LO;
272
+ }
273
+
274
+ forceinline PropCost
275
+ cost_hi(int n, PropCost c) {
276
+ if (n > 3) return c;
277
+ if (n < 2) return PC_UNARY_HI;
278
+ return (n > 2) ? PC_TERNARY_HI : PC_BINARY_HI;
279
+ }
280
+
281
+ /*
282
+ * Unary propagators
283
+ *
284
+ */
285
+
286
+ template <class View, PropCond pc>
287
+ UnaryPropagator<View,pc>::UnaryPropagator
288
+ (Space* home, View y0, bool fd)
289
+ : Propagator(home,fd), x0(y0) {
290
+ x0.subscribe(home,this,pc);
291
+ }
292
+
293
+ template <class View, PropCond pc>
294
+ forceinline
295
+ UnaryPropagator<View,pc>::UnaryPropagator
296
+ (Space* home, bool share, UnaryPropagator<View,pc>& p)
297
+ : Propagator(home,share,p) {
298
+ x0.update(home,share,p.x0);
299
+ }
300
+
301
+ template <class View, PropCond pc>
302
+ forceinline
303
+ UnaryPropagator<View,pc>::UnaryPropagator
304
+ (Space* home, bool share, Propagator& p, View y0)
305
+ : Propagator(home,share,p) {
306
+ x0.update(home,share,y0);
307
+ }
308
+
309
+ template <class View, PropCond pc>
310
+ PropCost
311
+ UnaryPropagator<View,pc>::cost(void) const {
312
+ return PC_UNARY_LO;
313
+ }
314
+
315
+ template <class View, PropCond pc>
316
+ size_t
317
+ UnaryPropagator<View,pc>::dispose(Space* home) {
318
+ if (!home->failed())
319
+ x0.cancel(home,this,pc);
320
+ (void) Propagator::dispose(home);
321
+ return sizeof(*this);
322
+ }
323
+
324
+
325
+ /*
326
+ * Binary propagators
327
+ *
328
+ */
329
+
330
+ template <class View, PropCond pc>
331
+ BinaryPropagator<View,pc>::BinaryPropagator
332
+ (Space* home, View y0, View y1, bool fd)
333
+ : Propagator(home,fd), x0(y0), x1(y1) {
334
+ x0.subscribe(home,this,pc);
335
+ x1.subscribe(home,this,pc);
336
+ }
337
+
338
+ template <class View, PropCond pc>
339
+ forceinline
340
+ BinaryPropagator<View,pc>::BinaryPropagator
341
+ (Space* home, bool share, BinaryPropagator<View,pc>& p)
342
+ : Propagator(home,share,p) {
343
+ x0.update(home,share,p.x0);
344
+ x1.update(home,share,p.x1);
345
+ }
346
+
347
+ template <class View, PropCond pc>
348
+ forceinline
349
+ BinaryPropagator<View,pc>::BinaryPropagator
350
+ (Space* home, bool share, Propagator& p, View y0, View y1)
351
+ : Propagator(home,share,p) {
352
+ x0.update(home,share,y0);
353
+ x1.update(home,share,y1);
354
+ }
355
+
356
+ template <class View, PropCond pc>
357
+ PropCost
358
+ BinaryPropagator<View,pc>::cost(void) const {
359
+ return PC_BINARY_LO;
360
+ }
361
+
362
+ template <class View, PropCond pc>
363
+ size_t
364
+ BinaryPropagator<View,pc>::dispose(Space* home) {
365
+ if (!home->failed()) {
366
+ x0.cancel(home,this,pc);
367
+ x1.cancel(home,this,pc);
368
+ }
369
+ (void) Propagator::dispose(home);
370
+ return sizeof(*this);
371
+ }
372
+
373
+
374
+ /*
375
+ * Ternary propagators
376
+ *
377
+ */
378
+
379
+ template <class View, PropCond pc>
380
+ TernaryPropagator<View,pc>::TernaryPropagator
381
+ (Space* home, View y0, View y1, View y2, bool fd)
382
+ : Propagator(home,fd), x0(y0), x1(y1), x2(y2) {
383
+ x0.subscribe(home,this,pc);
384
+ x1.subscribe(home,this,pc);
385
+ x2.subscribe(home,this,pc);
386
+ }
387
+
388
+ template <class View, PropCond pc>
389
+ forceinline
390
+ TernaryPropagator<View,pc>::TernaryPropagator
391
+ (Space* home, bool share, TernaryPropagator<View,pc>& p)
392
+ : Propagator(home,share,p) {
393
+ x0.update(home,share,p.x0);
394
+ x1.update(home,share,p.x1);
395
+ x2.update(home,share,p.x2);
396
+ }
397
+
398
+ template <class View, PropCond pc>
399
+ forceinline
400
+ TernaryPropagator<View,pc>::TernaryPropagator
401
+ (Space* home, bool share, Propagator& p, View y0, View y1, View y2)
402
+ : Propagator(home,share,p) {
403
+ x0.update(home,share,y0);
404
+ x1.update(home,share,y1);
405
+ x2.update(home,share,y2);
406
+ }
407
+
408
+ template <class View, PropCond pc>
409
+ PropCost
410
+ TernaryPropagator<View,pc>::cost(void) const {
411
+ return PC_TERNARY_LO;
412
+ }
413
+
414
+ template <class View, PropCond pc>
415
+ size_t
416
+ TernaryPropagator<View,pc>::dispose(Space* home) {
417
+ if (!home->failed()) {
418
+ x0.cancel(home,this,pc);
419
+ x1.cancel(home,this,pc);
420
+ x2.cancel(home,this,pc);
421
+ }
422
+ (void) Propagator::dispose(home);
423
+ return sizeof(*this);
424
+ }
425
+
426
+
427
+ /*
428
+ * Nary propagators
429
+ *
430
+ */
431
+
432
+ template <class View, PropCond pc>
433
+ NaryPropagator<View,pc>::NaryPropagator
434
+ (Space* home, ViewArray<View>& y, bool fd)
435
+ : Propagator(home,fd), x(y) {
436
+ x.subscribe(home,this,pc);
437
+ }
438
+
439
+ template <class View, PropCond pc>
440
+ forceinline
441
+ NaryPropagator<View,pc>::NaryPropagator
442
+ (Space* home, bool share, NaryPropagator<View,pc>& p)
443
+ : Propagator(home,share,p) {
444
+ x.update(home,share,p.x);
445
+ }
446
+
447
+ template <class View, PropCond pc>
448
+ forceinline
449
+ NaryPropagator<View,pc>::NaryPropagator
450
+ (Space* home, bool share, Propagator& p, ViewArray<View>& x0)
451
+ : Propagator(home,share,p) {
452
+ x.update(home,share,x0);
453
+ }
454
+
455
+ template <class View, PropCond pc>
456
+ PropCost
457
+ NaryPropagator<View,pc>::cost(void) const {
458
+ return cost_lo(x.size(), PC_LINEAR_LO);
459
+ }
460
+
461
+ template <class View, PropCond pc>
462
+ size_t
463
+ NaryPropagator<View,pc>::dispose(Space* home) {
464
+ if (!home->failed())
465
+ x.cancel(home,this,pc);
466
+ (void) Propagator::dispose(home);
467
+ return sizeof(*this);
468
+ }
469
+
470
+
471
+ /*
472
+ * NaryOne (one additional variable) propagators
473
+ *
474
+ */
475
+
476
+ template <class View, PropCond pc>
477
+ NaryOnePropagator<View,pc>::NaryOnePropagator
478
+ (Space* home, ViewArray<View>& x0, View y0, bool fd)
479
+ : Propagator(home,fd), x(x0), y(y0) {
480
+ x.subscribe(home,this,pc);
481
+ y.subscribe(home,this,pc);
482
+ }
483
+
484
+ template <class View, PropCond pc>
485
+ forceinline
486
+ NaryOnePropagator<View,pc>::NaryOnePropagator
487
+ (Space* home, bool share, NaryOnePropagator<View,pc>& p)
488
+ : Propagator(home,share,p) {
489
+ x.update(home,share,p.x);
490
+ y.update(home,share,p.y);
491
+ }
492
+
493
+ template <class View, PropCond pc>
494
+ forceinline
495
+ NaryOnePropagator<View,pc>::NaryOnePropagator
496
+ (Space* home, bool share, Propagator& p, ViewArray<View>& x0, View y0)
497
+ : Propagator(home,share,p) {
498
+ x.update(home,share,x0);
499
+ y.update(home,share,y0);
500
+ }
501
+
502
+ template <class View, PropCond pc>
503
+ PropCost
504
+ NaryOnePropagator<View,pc>::cost(void) const {
505
+ return cost_lo(x.size()+1, PC_LINEAR_LO);
506
+ }
507
+
508
+ template <class View, PropCond pc>
509
+ size_t
510
+ NaryOnePropagator<View,pc>::dispose(Space* home) {
511
+ if (!home->failed()) {
512
+ x.cancel(home,this,pc);
513
+ y.cancel(home,this,pc);
514
+ }
515
+ (void) Propagator::dispose(home);
516
+ return sizeof(*this);
517
+ }
518
+
519
+
520
+ /*
521
+ * Inhomogeneous binary propagators
522
+ *
523
+ */
524
+
525
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
526
+ InhomBinaryPropagator<View0,pc0,View1,pc1>::InhomBinaryPropagator
527
+ (Space* home, View0 y0, View1 y1, bool fd)
528
+ : Propagator(home,fd), x0(y0), x1(y1) {
529
+ x0.subscribe(home,this,pc0);
530
+ x1.subscribe(home,this,pc1);
531
+ }
532
+
533
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
534
+ forceinline
535
+ InhomBinaryPropagator<View0,pc0,View1,pc1>::InhomBinaryPropagator
536
+ (Space* home, bool share, InhomBinaryPropagator<View0,pc0,View1,pc1>& p)
537
+ : Propagator(home,share,p) {
538
+ x0.update(home,share,p.x0);
539
+ x1.update(home,share,p.x1);
540
+ }
541
+
542
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
543
+ forceinline
544
+ InhomBinaryPropagator<View0,pc0,View1,pc1>::InhomBinaryPropagator
545
+ (Space* home, bool share, Propagator& p, View0 y0, View1 y1)
546
+ : Propagator(home,share,p) {
547
+ x0.update(home,share,y0);
548
+ x1.update(home,share,y1);
549
+ }
550
+
551
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
552
+ PropCost
553
+ InhomBinaryPropagator<View0,pc0,View1,pc1>::cost(void) const {
554
+ return PC_BINARY_LO;
555
+ }
556
+
557
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
558
+ size_t
559
+ InhomBinaryPropagator<View0,pc0,View1,pc1>::dispose(Space* home) {
560
+ if (!home->failed()) {
561
+ x0.cancel(home,this,pc0);
562
+ x1.cancel(home,this,pc1);
563
+ }
564
+ (void) Propagator::dispose(home);
565
+ return sizeof(*this);
566
+ }
567
+
568
+
569
+ /*
570
+ * Inhomogeneous ternary propagators
571
+ *
572
+ */
573
+
574
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
575
+ class View2, PropCond pc2>
576
+ InhomTernaryPropagator<View0,pc0,View1,pc1,View2,pc2>::
577
+ InhomTernaryPropagator(Space* home, View0 y0, View1 y1, View2 y2, bool fd)
578
+ : Propagator(home,fd), x0(y0), x1(y1), x2(y2) {
579
+ x0.subscribe(home,this,pc0);
580
+ x1.subscribe(home,this,pc1);
581
+ x2.subscribe(home,this,pc2);
582
+ }
583
+
584
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
585
+ class View2, PropCond pc2>
586
+ forceinline
587
+ InhomTernaryPropagator<View0,pc0,View1,pc1,View2,pc2>::
588
+ InhomTernaryPropagator(Space* home, bool share,
589
+ InhomTernaryPropagator<View0,pc0,View1,pc1,
590
+ View2,pc2>& p)
591
+ : Propagator(home,share,p) {
592
+ x0.update(home,share,p.x0);
593
+ x1.update(home,share,p.x1);
594
+ x2.update(home,share,p.x2);
595
+ }
596
+
597
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
598
+ class View2, PropCond pc2>
599
+ forceinline
600
+ InhomTernaryPropagator<View0,pc0,View1,pc1,View2,pc2>::InhomTernaryPropagator
601
+ (Space* home, bool share, Propagator& p, View0 y0, View1 y1, View2 y2)
602
+ : Propagator(home,share,p) {
603
+ x0.update(home,share,y0);
604
+ x1.update(home,share,y1);
605
+ x2.update(home,share,y2);
606
+ }
607
+
608
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
609
+ class View2, PropCond pc2>
610
+ PropCost
611
+ InhomTernaryPropagator<View0,pc0,View1,pc1,View2,pc2>::cost(void) const {
612
+ return PC_BINARY_LO;
613
+ }
614
+
615
+ template <class View0, PropCond pc0, class View1, PropCond pc1,
616
+ class View2, PropCond pc2>
617
+ size_t
618
+ InhomTernaryPropagator<View0,pc0,View1,pc1,View2,pc2>::
619
+ dispose(Space* home) {
620
+ if (!home->failed()) {
621
+ x0.cancel(home,this,pc0);
622
+ x1.cancel(home,this,pc1);
623
+ x2.cancel(home,this,pc2);
624
+ }
625
+ (void) Propagator::dispose(home);
626
+ return sizeof(*this);
627
+ }
628
+
629
+
630
+ /*
631
+ * InhomNaryOne (one additional variable) propagators
632
+ *
633
+ */
634
+
635
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
636
+ InhomNaryOnePropagator<View0,pc0,View1,pc1>::InhomNaryOnePropagator
637
+ (Space* home, ViewArray<View0>& x0, View1 y0, bool fd)
638
+ : Propagator(home,fd), x(x0), y(y0) {
639
+ x.subscribe(home,this,pc0);
640
+ y.subscribe(home,this,pc1);
641
+ }
642
+
643
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
644
+ forceinline
645
+ InhomNaryOnePropagator<View0,pc0,View1,pc1>::InhomNaryOnePropagator
646
+ (Space* home, bool share, InhomNaryOnePropagator<View0,pc0,View1,pc1>& p)
647
+ : Propagator(home,share,p) {
648
+ x.update(home,share,p.x);
649
+ y.update(home,share,p.y);
650
+ }
651
+
652
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
653
+ forceinline
654
+ InhomNaryOnePropagator<View0,pc0,View1,pc1>::InhomNaryOnePropagator
655
+ (Space* home, bool share, Propagator& p, ViewArray<View0>& x0, View1 y0)
656
+ : Propagator(home,share,p) {
657
+ x.update(home,share,x0);
658
+ y.update(home,share,y0);
659
+ }
660
+
661
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
662
+ PropCost
663
+ InhomNaryOnePropagator<View0,pc0,View1,pc1>::cost(void) const {
664
+ return cost_lo(x.size()+1, PC_LINEAR_LO);
665
+ }
666
+
667
+ template <class View0, PropCond pc0, class View1, PropCond pc1>
668
+ size_t
669
+ InhomNaryOnePropagator<View0,pc0,View1,pc1>::dispose(Space* home) {
670
+ if (!home->failed()) {
671
+ x.cancel(home,this,pc0);
672
+ y.cancel(home,this,pc1);
673
+ }
674
+ (void) Propagator::dispose(home);
675
+ return sizeof(*this);
676
+ }
677
+
678
+ }
679
+
680
+ // STATISTICS: kernel-other