gecoder-with-gecode 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
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,170 @@
1
+ #!/usr/bin/perl
2
+ #
3
+ # Main authors:
4
+ # Christian Schulte <schulte@gecode.org>
5
+ # Guido Tack <tack@gecode.org>
6
+ #
7
+ # Copyright:
8
+ # Christian Schulte, 2005
9
+ # Guido Tack, 2006
10
+ #
11
+ # Last modified:
12
+ # $Date: 2006-07-12 15:53:12 +0200 (Wed, 12 Jul 2006) $ by $Author: tack $
13
+ # $Revision: 3349 $
14
+ #
15
+ # This file is part of Gecode, the generic constraint
16
+ # development environment:
17
+ # http://www.gecode.org
18
+ #
19
+ # See the file "LICENSE" for information on usage and
20
+ # redistribution of this file, and for a
21
+ # DISCLAIMER OF ALL WARRANTIES.
22
+ #
23
+ #
24
+
25
+ print <<EOF
26
+ Changelog for Gecode
27
+ ================================================================================
28
+
29
+ EOF
30
+ ;
31
+
32
+
33
+ #
34
+ # Compile changelog
35
+ #
36
+
37
+ $first = 1;
38
+ $version = "";
39
+ $info = "";
40
+
41
+ $modclear{"kernel"} = "Kernel";
42
+ $modclear{"search"} = "Search engines";
43
+ $modclear{"int"} = "Finite domain integers";
44
+ $modclear{"set"} = "Finite integer sets";
45
+ $modclear{"minimodel"} = "Minimal modelling support";
46
+ $modclear{"iter"} = "Range and value iterators";
47
+ $modclear{"support"} = "Support algorithms and datastructures";
48
+ $modclear{"example"} = "Example scripts";
49
+ $modclear{"test"} = "Systematic tests";
50
+ $modclear{"other"} = "General";
51
+
52
+ $whatclear{"bug"} = "Bug fixes";
53
+ $whatclear{"performance"} = "Performance improvements";
54
+ $whatclear{"documentation"} = "Documentation fixes";
55
+ $whatclear{"new"} = "Additions";
56
+ $whatclear{"change"} = "Other changes";
57
+
58
+ $rankclear{"minor"} = "minor";
59
+ $rankclear{"major"} = "major";
60
+
61
+ @modorder = ("kernel","search","int","set","minimodel",
62
+ "iter","support","example","test","other");
63
+
64
+ @whatorder = ("new","change","bug","performance","documentation");
65
+
66
+ foreach $mod (@modorder) {
67
+ $hastext{$mod} = 0;
68
+ foreach $what (@whatorder) {
69
+ $text{"$mod-$what"} = "";
70
+ }
71
+ }
72
+
73
+ while ($l = <>) {
74
+ LINE:
75
+ next if ($l =~ /^\#/);
76
+ if ($l =~ /^\[RELEASE\]/) {
77
+ # Print previous
78
+ if (!$first) {
79
+ print "Changes in Version $version ($date)\n\n";
80
+
81
+ print "Scope:$info";
82
+
83
+ foreach $mod (@modorder) {
84
+ if ($hastext{$mod}) {
85
+ print "- " . $modclear{$mod} . "\n";
86
+ $hastext{$mod} = 0;
87
+ foreach $what (@whatorder) {
88
+ if (!($text{"$mod-$what"} eq "")) {
89
+ print " - " . $whatclear{$what} . "\n";
90
+ print $text{"$mod-$what"};
91
+ $text{"$mod-$what"} = "";
92
+ }
93
+ }
94
+
95
+ }
96
+ }
97
+ print "\n--------------------------------------------------------------------------------\n\n";
98
+ }
99
+ $first = 0;
100
+ $version = "";
101
+ $info = "";
102
+ $date = "";
103
+ while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) {
104
+ if ($l =~ /Version:[\t ]*(.*)$/) {
105
+ $version = $1;
106
+ } elsif ($l =~ /Date:[\t ]*(.*)$/) {
107
+ $date = $1;
108
+ }
109
+ }
110
+ while (($l = <>) && !($l =~ /\[ENTRY\]/)) {
111
+ # chop $l;
112
+ $info = $info . " " . $l;
113
+ }
114
+ goto LINE;
115
+ }
116
+ if ($l =~ /^\[ENTRY\]/) {
117
+ my $mod, $what, $rank, $bug, $desc, $thanks;
118
+ $desc = "";
119
+ $bug = "";
120
+ $rank = "";
121
+ $what = "";
122
+ $mod = "";
123
+ $thanks = "";
124
+ while (($l = <>) && !($l =~ /\[DESCRIPTION\]/)) {
125
+ if ($l =~ /Module:[\t ]*(.*)$/) {
126
+ $mod = $1;
127
+ } elsif ($l =~ /What:[\t ]*(.*)$/) {
128
+ $what = $1;
129
+ } elsif ($l =~ /Rank:[\t ]*(.*)$/) {
130
+ $rank = $1;
131
+ } elsif ($l =~ /Bug:[\t ]*(.*)$/) {
132
+ $bug = $1;
133
+ } elsif ($l =~ /Thanks:[\t ]*(.*)$/) {
134
+ $thanks = $1;
135
+ }
136
+ }
137
+
138
+ while (($l = <>) &&
139
+ !(($l =~ /\[ENTRY\]/) || ($l =~ /\[RELEASE\]/))) {
140
+ # chop $l;
141
+ if ($desc eq "") {
142
+ $desc = $l;
143
+ } else {
144
+ $desc = $desc . " " . $l;
145
+ }
146
+ }
147
+ chop $desc;
148
+ $hastext{$mod} = 1;
149
+ $rb = $rankclear{$rank};
150
+ if (!($bug eq "")) {
151
+ $rb = $rb . ", bugzilla entry $bug";
152
+ # $rb = $rb . ", <a href=\"http://www.gecode.org/bugzilla/show_bug.cgi?id="
153
+ # . $bug . "\">bugzilla entry</a>";
154
+ }
155
+ if (!($thanks eq "")) {
156
+ $rb = $rb . ", thanks to $thanks";
157
+ }
158
+ $text{"$mod-$what"} =
159
+ ($text{"$mod-$what"} . " - $desc(" . $rb . ")\n");
160
+ goto LINE;
161
+ }
162
+ }
163
+
164
+ print <<EOF
165
+ Initial release (2005-12-06)
166
+
167
+ No changes, of course.
168
+
169
+ EOF
170
+ ;
@@ -0,0 +1,666 @@
1
+ #!/usr/bin/perl
2
+ #
3
+ # Main authors:
4
+ # Christian Schulte <schulte@gecode.org>
5
+ #
6
+ # Copyright:
7
+ # Christian Schulte, 2006
8
+ #
9
+ # Last modified:
10
+ # $Date: 2006-10-25 13:51:24 +0200 (Wed, 25 Oct 2006) $ by $Author: schulte $
11
+ # $Revision: 3787 $
12
+ #
13
+ # This file is part of Gecode, the generic constraint
14
+ # development environment:
15
+ # http://www.gecode.org
16
+ #
17
+ # See the file "LICENSE" for information on usage and
18
+ # redistribution of this file, and for a
19
+ # DISCLAIMER OF ALL WARRANTIES.
20
+ #
21
+ #
22
+
23
+ while (($arg = $ARGV[$i]) && ($arg =~ /^-/)) {
24
+ $i++;
25
+ if ($arg eq "-header") {
26
+ $gen_header = 1;
27
+ } elsif ($arg eq "-body") {
28
+ $gen_header = 0;
29
+ }
30
+ }
31
+
32
+ $file = $ARGV[$i];
33
+
34
+ open FILE, $file;
35
+
36
+ ## General values
37
+ $name = "";
38
+ $VTI = "";
39
+ $export = "";
40
+ $forceinline = "inline";
41
+ $forcedispose = 0;
42
+
43
+ ##
44
+ ## Headers and footers
45
+ ##
46
+ $hdr = ""; # Header text
47
+ $ftr = ""; # Footer text
48
+
49
+ $mehdr = ""; # Header text for modification events
50
+ $meftr = ""; # Footer text for modification events
51
+
52
+ $pchdr = ""; # Header text for propagation conditions
53
+ $pcftr = ""; # Footer text for propagation conditions
54
+
55
+ ##
56
+ ## Real stuff
57
+ ##
58
+
59
+ # $mec : combination table
60
+ # $men : name table
61
+ # $meh : header table
62
+ $me_n = 0; # running number of modification events
63
+ $me_subscribe = "";
64
+
65
+ # $pcn : name table
66
+ # $pch : header table
67
+ $pc_n = 0; # running number of propagation conditions
68
+
69
+
70
+ while ($l = <FILE>) {
71
+ LINE:
72
+ next if ($l =~ /^\#/);
73
+ last if ($l =~ /^\[End\]/io);
74
+
75
+ if ($l =~ /^\[General\]/io) {
76
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
77
+ next if ($l =~ /^\#/);
78
+ if ($l =~ /^Name:\s*(\w+)/io) {
79
+ $name = $1;
80
+ } elsif ($l =~ /^VTI:\s*(\w+)/io) {
81
+ $VTI = $1;
82
+ } elsif ($l =~ /^Export:\s*(\w+)/io) {
83
+ $export = $1;
84
+ } elsif ($l =~ /^Forceinline:\s*(\w+)/io) {
85
+ $forceinline = $1;
86
+ } elsif ($l =~ /^Forcedispose:\s*true/io) {
87
+ $forcedispose = 1;
88
+ }
89
+ }
90
+ goto LINE;
91
+ } elsif ($l =~ /^\[ModEventHeader\]/io) {
92
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
93
+ next if ($l =~ /^\#/);
94
+ $mehdr = $mehdr . $l;
95
+ }
96
+ goto LINE;
97
+ } elsif ($l =~ /^\[ModEvent\]/io) {
98
+ $n = "";
99
+ $h = "";
100
+
101
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
102
+ next if ($l =~ /^\#/);
103
+ if ($l =~ /^Name:\s*(\w+)\s*=\s*(\w+)/io) {
104
+ # Found a special modification event
105
+ $lhs = $1; $rhs = $2;
106
+ if (!($rhs eq "FAILED") && !($rhs eq "NONE") &&
107
+ !($rhs eq "ASSIGNED") && !($rhs eq "SUBSCRIBE")) {
108
+ die "Unknown special modification event: $rhs\n";
109
+ }
110
+ if ($rhs eq "SUBSCRIBE") {
111
+ $me_subscribe = "ME_${VTI}_$lhs";
112
+ } else {
113
+ $mespecial{$lhs} = $rhs;
114
+ if ($rhs eq "ASSIGNED") {
115
+ $me_assigned = "ME_${VTI}_$lhs";
116
+ }
117
+ }
118
+ $n = $lhs;
119
+ } elsif ($l =~ /^Name:\s*(\w+)/io) {
120
+ # Found a normal modification event
121
+ $n = $1;
122
+ } elsif ($l =~ /^Combine:\s*(.+)/io) {
123
+ # Found combination information
124
+ $combines = $1;
125
+ while ($combines =~ /(\w+)\s*=(\w+)/g) {
126
+ $mec{$n}{$1} = $2;
127
+ $mec{$1}{$n} = $2;
128
+ }
129
+ } else {
130
+ $h = $h . $l;
131
+ }
132
+ }
133
+ $men[$me_n] = $n;
134
+ $meh[$me_n] = $h;
135
+ $me_n++;
136
+ goto LINE;
137
+ } elsif ($l =~ /^\[ModEventFooter\]/io) {
138
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
139
+ next if ($l =~ /^\#/);
140
+ $meftr = $meftr . $l;
141
+ }
142
+ goto LINE;
143
+ } elsif ($l =~ /^\[PropCondHeader\]/io) {
144
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
145
+ next if ($l =~ /^\#/);
146
+ $pchdr = $pchdr . $l;
147
+ }
148
+ goto LINE;
149
+ } elsif ($l =~ /^\[PropCond\]/io) {
150
+ $n = "";
151
+ $h = "";
152
+
153
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
154
+ next if ($l =~ /^\#/);
155
+ if ($l =~ /^Name:\s*(\w+)\s*=\s*(\w+)/io) {
156
+ # Found a special propagation condition
157
+ $lhs = $1; $rhs = $2;
158
+ if (!($rhs eq "ASSIGNED")) {
159
+ die "Unknown special propagation condition: $rhs\n";
160
+ }
161
+ $pcspecial{$lhs} = $rhs;
162
+ $n = $lhs;
163
+ } elsif ($l =~ /^Name:\s*(\w+)/io) {
164
+ # Found a normal modification event
165
+ $n = $1;
166
+ } elsif ($l =~ /^ModEvents:\s*(.+)/io) {
167
+ # Found relation to modification events
168
+ $events = $1;
169
+ while ($events =~ /(\w+)/g) {
170
+ $mepc{$1}{$n} = 1;
171
+ }
172
+ } else {
173
+ $h = $h . $l;
174
+ }
175
+ }
176
+ $pcn[$pc_n] = $n;
177
+ $pch[$pc_n] = $h;
178
+ $pc_n++;
179
+ goto LINE;
180
+ } elsif ($l =~ /^\[PropCondFooter\]/io) {
181
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
182
+ next if ($l =~ /^\#/);
183
+ $pcftr = $pcftr . $l;
184
+ }
185
+ goto LINE;
186
+ } elsif ($l =~ /^\[Header\]/io) {
187
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
188
+ next if ($l =~ /^\#/);
189
+ $hdr = $hdr . "$l";
190
+ }
191
+ goto LINE;
192
+ } elsif ($l =~ /^\[Footer\]/io) {
193
+ while (($l = <FILE>) && !($l =~ /^\[/)) {
194
+ next if ($l =~ /^\#/);
195
+ $ftr = $ftr . "$l";
196
+ }
197
+ goto LINE;
198
+ }
199
+
200
+ }
201
+
202
+ close FILE;
203
+
204
+ ##
205
+ ## Generate the output
206
+ ##
207
+
208
+ $maxpc = "PC_${VTI}_$pcn[$pc_n-1]";
209
+ $class = "${name}VarImpBase";
210
+ $diffc = "${name}MeDiff";
211
+ $base = "Gecode::Variable<VTI_$VTI,$maxpc,$diffc>";
212
+
213
+ ## Check whether there is only one real event
214
+ if ($me_n == 3) {
215
+ $me_subscribe = $me_assigned;
216
+ }
217
+
218
+ print <<EOF
219
+ /*
220
+ * CAUTION:
221
+ * This file has been automatically generated.
222
+ * Do not edit, edit the file "$file" instead.
223
+ *
224
+ * This file contains generated code fragments which are
225
+ * copyrighted as follows:
226
+ *
227
+ * Main author:
228
+ * Christian Schulte <schulte\@gecode.org>
229
+ *
230
+ * Copyright:
231
+ * Christian Schulte, 2006
232
+ *
233
+ * The generated code fragments are part of Gecode, the generic
234
+ * constraint development environment:
235
+ * http://www.gecode.org
236
+ *
237
+ * See the file "LICENSE" for information on usage and
238
+ * redistribution of this file, and for a
239
+ * DISCLAIMER OF ALL WARRANTIES.
240
+ *
241
+ */
242
+
243
+ EOF
244
+ ;
245
+ print "$hdr";
246
+
247
+ $o = 2;
248
+ for ($i=0; $i<$me_n; $i++) {
249
+ $n = $men[$i];
250
+ if ($mespecial{$n} eq "NONE") {
251
+ $val2me[0] = $n;
252
+ } elsif ($mespecial{$n} eq "ASSIGNED") {
253
+ $val2me[1] = $n;
254
+ } elsif (!$mespecial{$n}) {
255
+ $val2me[$o] = $n; $o++;
256
+ }
257
+ }
258
+ $me_max = "ME_${VTI}_" . $val2me[$o-1] . "+1";
259
+ $me_max_n = $o;
260
+
261
+ if ($gen_header) {
262
+
263
+ print "$mehdr";
264
+
265
+ $o = 1;
266
+ for ($i=0; $i<$me_n; $i++) {
267
+ $n = $men[$i];
268
+ print $meh[$i];
269
+ print " const Gecode::ModEvent ME_${VTI}_${n} = ";
270
+ if ($mespecial{$n}) {
271
+ print "Gecode::ME_GEN_" . $mespecial{$n};
272
+ } else {
273
+ print "Gecode::ME_GEN_ASSIGNED + " . $o;
274
+ $o++;
275
+ }
276
+ print ";\n\n";
277
+ }
278
+
279
+ print "$meftr";
280
+ print "$pchdr";
281
+
282
+ $o = 1;
283
+ for ($i=0; $i<$pc_n; $i++) {
284
+ $n = $pcn[$i];
285
+ print $pch[$i];
286
+ print " const Gecode::PropCond PC_${VTI}_${n} = ";
287
+ if ($pcspecial{$n}) {
288
+ $pc_assigned = "PC_${VTI}_${n}";
289
+ print "Gecode::PC_GEN_" . $pcspecial{$n};
290
+ } else {
291
+ print "Gecode::PC_GEN_ASSIGNED + " . $o;
292
+ $o++;
293
+ }
294
+ print ";\n\n";
295
+ }
296
+
297
+ print "$pcftr";
298
+
299
+ print <<EOF
300
+
301
+ /// Modification event difference for $name-variable implementations
302
+ class $diffc {
303
+ EOF
304
+ ;
305
+
306
+ if ($me_max_n > 4) {
307
+ print <<EOF
308
+ private:
309
+ $export static const Gecode::ModEvent med[$me_max][$me_max];
310
+ EOF
311
+ ;
312
+ }
313
+ print <<EOF
314
+ public:
315
+ /// Return difference when changing modification event \\a me2 to \\a me1
316
+ ModEvent operator()(ModEvent me1, ModEvent me2) const;
317
+ };
318
+
319
+ /// Base-class for $name-variable implementations
320
+ class $class : public $base {
321
+ protected:
322
+ /// Variable procesor for variables of this type
323
+ class Processor : public Gecode::VarTypeProcessor<VTI_${VTI},$maxpc,$diffc> {
324
+ public:
325
+ /// Process modified variables linked from \\a x
326
+ $export virtual void process(Space* home, VarBase* x);
327
+ EOF
328
+ ;
329
+ if ($forcedispose) {
330
+ print <<EOF
331
+ /// Dispose registered variables
332
+ $export virtual void dispose(Space* home, VarBase* x);
333
+ EOF
334
+ ;
335
+ }
336
+ print <<EOF
337
+ };
338
+ /// The processor used
339
+ $export static Processor p;
340
+ EOF
341
+ ;
342
+ if ($forcedispose) {
343
+ print <<EOF
344
+ /// Link to next variable, used for disposal
345
+ VarBase* _nextDispose;
346
+ EOF
347
+ ;
348
+ }
349
+
350
+ print <<EOF
351
+ /// Constructor for cloning \\a x
352
+ $class(Space* home, bool share, $class\& x);
353
+ public:
354
+ /// Constructor for creating variable
355
+ $class(Space* home);
356
+ /// \\name Dependencies
357
+ //\@{
358
+ /** \\brief Subscribe propagator \\a p with propagation condition \\a pc to variable
359
+ *
360
+ * In case \\a process is false, the propagator is just subscribed but
361
+ * not processed for execution (this must be used when creating
362
+ * subscriptions during propagation).
363
+ *
364
+ * In case the variable is assigned (that is, \\a assigned is
365
+ * true), the subscribing propagator is processed for execution.
366
+ * Otherwise, the propagator subscribes and is processed for execution
367
+ * with modification event \\a me provided that \\a pc is different
368
+ * from \\a PC_GEN_ASSIGNED.
369
+ */
370
+ void subscribe(Space* home, Propagator* p, PropCond pc, bool assigned, bool process);
371
+ /// Notify that variable implementation has been modified with modification event \\a me
372
+ void notify(Space* home, ModEvent me);
373
+ //\@}
374
+
375
+ EOF
376
+ ;
377
+ if ($forcedispose) {
378
+ print <<EOF
379
+ /// Return link to next variable, used for dispose
380
+ ${class}* nextDispose(void);
381
+ /// Set link to next variable, used for dispose
382
+ void nextDispose(${class}* next);
383
+ EOF
384
+ ;
385
+ }
386
+
387
+ print <<EOF
388
+
389
+ };
390
+
391
+
392
+ $forceinline ModEvent
393
+ ${diffc}::operator()(ModEvent me1, ModEvent me2) const {
394
+ EOF
395
+ ;
396
+
397
+ if ($me_max_n == 2) {
398
+ print " return me2^me1;\n";
399
+ } elsif ($me_max_n <= 4) {
400
+ print " const int med = (\n";
401
+
402
+ for ($i=0; $i<$me_max_n;$i++) {
403
+ $n1 = $val2me[$i];
404
+ print " (\n";
405
+ for ($j=0; $j<$me_max_n;$j++) {
406
+ $n2 = $val2me[$j];
407
+ if ($n1 eq "NONE") {
408
+ $n3 = $n2;
409
+ } elsif ($n2 eq "NONE") {
410
+ $n3 = $n1;
411
+ } else {
412
+ $n3 = $mec{$n1}{$n2};
413
+ }
414
+ print " ((ME_${VTI}_$n2 ^ ME_${VTI}_$n3) << ";
415
+ print (($i << 3) + ($j << 1));
416
+ if ($j+1 == $me_max_n) {
417
+ print ") ";
418
+ } else {
419
+ print ") | ";
420
+ }
421
+ print " // [ME_${VTI}_$n1][ME_${VTI}_$n2]\n";
422
+ }
423
+ if ($i+1 == $me_max_n) {
424
+ print " )\n";
425
+ } else {
426
+ print " ) |\n";
427
+ }
428
+ }
429
+
430
+
431
+ print " );\n";
432
+ print " return (((med >> (me1 << 3)) >> (me2 << 1)) & 3);\n";
433
+ } else {
434
+ print " return med[me1][me2];\n";
435
+ }
436
+ print " }\n";
437
+
438
+ if ($forcedispose) {
439
+ print <<EOF
440
+
441
+ $forceinline
442
+ ${class}::${class}(Space* home)
443
+ : $base(home), _nextDispose(home->varsDisposeList<VTI_${VTI}>()) {
444
+ home->varsDisposeList<VTI_${VTI}>(this);
445
+ }
446
+
447
+ $forceinline
448
+ ${class}::${class}(Space* home, bool share, $class\& x)
449
+ : $base(home,share,x), _nextDispose(home->varsDisposeList<VTI_${VTI}>()) {
450
+ home->varsDisposeList<VTI_${VTI}>(this);
451
+ }
452
+
453
+ forceinline ${class}*
454
+ ${class}::nextDispose(void) {
455
+ return static_cast<${class}*>(_nextDispose);
456
+ }
457
+
458
+ EOF
459
+ ;
460
+ } else {
461
+ print <<EOF
462
+
463
+ $forceinline
464
+ ${class}::${class}(Space* home)
465
+ : $base(home) {}
466
+
467
+ $forceinline
468
+ ${class}::${class}(Space* home, bool share, $class\& x)
469
+ : $base(home,share,x) {}
470
+ EOF
471
+ ;
472
+ }
473
+ print <<EOF
474
+
475
+ $forceinline void
476
+ ${class}::subscribe(Space* home, Propagator* p, PropCond pc, bool assigned, bool process) {
477
+ ${base}::subscribe(home,p,pc,assigned,$me_subscribe,process);
478
+ }
479
+
480
+ EOF
481
+ ;
482
+
483
+ if ($me_max_n == 2) {
484
+ print <<EOF
485
+ $forceinline void
486
+ ${class}::notify(Space* home, ModEvent) {
487
+ ${base}::notify(home);
488
+ }
489
+ EOF
490
+ ;
491
+ } else {
492
+ print <<EOF
493
+ $forceinline void
494
+ ${class}::notify(Space* home, ModEvent me) {
495
+ ${base}::notify(home,me);
496
+ }
497
+ EOF
498
+ ;
499
+ }
500
+
501
+ } else {
502
+
503
+ if ($me_max_n > 4) {
504
+ print <<EOF
505
+
506
+ /*
507
+ * Modification event difference for $name-variable implementations
508
+ *
509
+ */
510
+ const Gecode::ModEvent ${diffc}::med[$me_max][$me_max] = {
511
+ EOF
512
+ ;
513
+
514
+ for ($i=0; $i<$me_max_n;$i++) {
515
+ $n1 = $val2me[$i];
516
+ print " {\n";
517
+ for ($j=0; $j<$me_max_n;$j++) {
518
+ $n2 = $val2me[$j];
519
+ if ($n1 eq "NONE") {
520
+ $n3 = $n2;
521
+ } elsif ($n2 eq "NONE") {
522
+ $n3 = $n1;
523
+ } else {
524
+ $n3 = $mec{$n1}{$n2};
525
+ }
526
+ print " ME_${VTI}_$n2 ^ ME_${VTI}_$n3";
527
+ if ($j+1 == $me_max_n) {
528
+ print " ";
529
+ } else {
530
+ print ",";
531
+ }
532
+ print " // [ME_${VTI}_$n1][ME_${VTI}_$n2]\n";
533
+ }
534
+ if ($i+1 == $me_max_n) {
535
+ print " }\n";
536
+ } else {
537
+ print " },\n";
538
+ }
539
+ }
540
+ print " };\n";
541
+ }
542
+
543
+ if ($me_max_n == 2) {
544
+
545
+ print <<EOF
546
+
547
+
548
+ /*
549
+ * The variable processor for $class
550
+ *
551
+ */
552
+
553
+ void
554
+ ${class}::Processor::process(Space* home, VarBase* _x) {
555
+ // Process modified variables
556
+ ${base}* x =
557
+ static_cast<${base}*>(_x);
558
+ do {
559
+ x->process(home); x = x->next();
560
+ } while (x != NULL);
561
+ }
562
+
563
+ EOF
564
+ ;
565
+
566
+
567
+ } else {
568
+ print <<EOF
569
+
570
+
571
+ /*
572
+ * The variable processor for $class
573
+ *
574
+ */
575
+
576
+ void
577
+ ${class}::Processor::process(Space* home, VarBase* _x) {
578
+ // Process modified variables
579
+ ${base}* x =
580
+ static_cast<${base}*>(_x);
581
+ do {
582
+ switch (x->modevent()) {
583
+ EOF
584
+ ;
585
+
586
+ for ($i=0; $i<$pc_n; $i++) {
587
+ if ($pcspecial{$pcn[$i]} eq "ASSIGNED") {
588
+ $val2pc[0] = $pcn[$i];
589
+ }
590
+ }
591
+ $o = 1;
592
+ for ($i=0; $i<$pc_n; $i++) {
593
+ if (!($pcspecial{$pcn[$i]} eq "ASSIGNED")) {
594
+ $val2pc[$o] = $pcn[$i]; $o++;
595
+ }
596
+ }
597
+
598
+ for ($i=0; $i<$me_n; $i++) {
599
+ $n = $men[$i];
600
+ if ($mespecial{$n} eq "ASSIGNED") {
601
+ print " case ME_${VTI}_$n:\n";
602
+ print " x->process(home);\n";
603
+ print " break;\n";
604
+ } elsif (!($mespecial{$n} eq "NONE") && !($mespecial{$n} eq "FAILED")) {
605
+ print " case ME_${VTI}_$n:\n";
606
+ print " // Conditions: ";
607
+ for ($j=0; $j<$pc_n; $j++) {
608
+ if ($mepc{$men[$i]}{$pcn[$j]}) {
609
+ print $pcn[$j] . " ";
610
+ }
611
+ }
612
+ print "\n";
613
+ for ($j=0; $j<$pc_n; $j++) {
614
+ if ($mepc{$men[$i]}{$val2pc[$j]}) {
615
+ # Found initial entry (plus one for stopping)
616
+ print " x->process(home,PC_${VTI}_" . $val2pc[$j] . ",";
617
+ # Look for all connected entries
618
+ while ($mepc{$men[$i]}{$val2pc[$j+1]}) {
619
+ $j++;
620
+ }
621
+ # Found last entry
622
+ print "PC_${VTI}_" . $val2pc[$j] . ",ME_${VTI}_$n);\n";
623
+ }
624
+ }
625
+ print " break;\n";
626
+ }
627
+ }
628
+
629
+
630
+ print <<EOF
631
+ default: GECODE_NEVER;
632
+ }
633
+ x = x->next();
634
+ } while (x != NULL);
635
+ }
636
+
637
+ EOF
638
+ ;
639
+
640
+ }
641
+
642
+ if ($forcedispose) {
643
+ print <<EOF
644
+ void
645
+ ${class}::Processor::dispose(Space* home, VarBase* x) {
646
+ ${name}VarImp* _x = static_cast<${name}VarImp*>(x);
647
+ while (_x != NULL) {
648
+ _x->dispose(home);
649
+ _x = static_cast<${name}VarImp*>(_x->nextDispose());
650
+ }
651
+ }
652
+ EOF
653
+ ;
654
+ }
655
+
656
+ print <<EOF
657
+
658
+ ${class}::Processor ${class}::p;
659
+
660
+ EOF
661
+ ;
662
+
663
+ }
664
+
665
+ print "$ftr";
666
+