roby 0.8.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (644) hide show
  1. checksums.yaml +7 -0
  2. data/.deep-cover.rb +3 -0
  3. data/.gitattributes +1 -0
  4. data/.gitignore +24 -0
  5. data/.simplecov +10 -0
  6. data/.travis.yml +17 -0
  7. data/.yardopts +4 -0
  8. data/Gemfile +15 -0
  9. data/README.md +11 -0
  10. data/Rakefile +47 -177
  11. data/benchmark/{alloc_misc.rb → attic/alloc_misc.rb} +2 -2
  12. data/benchmark/{discovery_latency.rb → attic/discovery_latency.rb} +19 -19
  13. data/benchmark/{garbage_collection.rb → attic/garbage_collection.rb} +9 -9
  14. data/benchmark/{genom.rb → attic/genom.rb} +0 -0
  15. data/benchmark/attic/transactions.rb +62 -0
  16. data/benchmark/plan_basic_operations.rb +28 -0
  17. data/benchmark/relations/graph.rb +63 -0
  18. data/benchmark/ruby/identity.rb +18 -0
  19. data/benchmark/ruby/set_intersect_vs_hash_merge.rb +39 -0
  20. data/benchmark/ruby/yield_vs_block.rb +35 -0
  21. data/benchmark/run +5 -0
  22. data/benchmark/synthetic_plan_modifications_with_transactions.rb +79 -0
  23. data/benchmark/transactions.rb +99 -51
  24. data/bin/roby +38 -197
  25. data/bin/roby-display +14 -0
  26. data/bin/roby-log +3 -176
  27. data/doc/guide/{src → attic}/abstraction/achieve_with.page +1 -1
  28. data/doc/guide/{src → attic}/abstraction/forwarding.page +1 -1
  29. data/doc/guide/{src → attic}/abstraction/hierarchy.page +1 -1
  30. data/doc/guide/{src → attic}/abstraction/index.page +1 -1
  31. data/doc/guide/{src → attic}/abstraction/task_models.page +1 -1
  32. data/doc/guide/{overview.rdoc → attic/cycle/api_overview.rdoc} +6 -1
  33. data/doc/guide/{src → attic}/cycle/cycle-overview.png +0 -0
  34. data/doc/guide/{src → attic}/cycle/cycle-overview.svg +0 -0
  35. data/doc/guide/attic/cycle/error_handling.page +98 -0
  36. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.png +0 -0
  37. data/doc/guide/{src → attic}/cycle/error_instantaneous_repair.svg +0 -0
  38. data/doc/guide/{src/cycle/error_handling.page → attic/cycle/error_sources.page} +46 -89
  39. data/doc/guide/{src → attic}/cycle/garbage_collection.page +1 -1
  40. data/doc/guide/{src → attic}/cycle/index.page +1 -1
  41. data/doc/guide/{src → attic}/cycle/propagation.page +11 -1
  42. data/doc/guide/{src → attic}/cycle/propagation_diamond.png +0 -0
  43. data/doc/guide/{src → attic}/cycle/propagation_diamond.svg +0 -0
  44. data/doc/guide/attic/plans/building_plans.page +89 -0
  45. data/doc/guide/attic/plans/code.page +192 -0
  46. data/doc/guide/{src/basics → attic/plans}/events.page +3 -4
  47. data/doc/guide/attic/plans/index.page +7 -0
  48. data/doc/guide/{plan_modifications.rdoc → attic/plans/plan_modifications.rdoc} +5 -3
  49. data/doc/guide/{src/basics → attic/plans}/plan_objects.page +2 -1
  50. data/doc/guide/attic/plans/querying_plans.page +5 -0
  51. data/doc/guide/{src/basics → attic/plans}/tasks.page +20 -20
  52. data/doc/guide/config.yaml +7 -4
  53. data/doc/guide/ext/extended_menu.rb +29 -0
  54. data/doc/guide/ext/init.rb +6 -0
  55. data/doc/guide/ext/rdoc_links.rb +7 -6
  56. data/doc/guide/src/advanced_concepts/history.page +5 -0
  57. data/doc/guide/src/advanced_concepts/index.page +11 -0
  58. data/doc/guide/src/advanced_concepts/recognizing_patterns.page +83 -0
  59. data/doc/guide/src/advanced_concepts/scheduling.page +87 -0
  60. data/doc/guide/src/advanced_concepts/transactions.page +5 -0
  61. data/doc/guide/src/advanced_concepts/unreachability.page +42 -0
  62. data/doc/guide/src/base.template +96 -0
  63. data/doc/guide/src/basics_shell_header.txt +5 -7
  64. data/doc/guide/src/building/action_coordination.page +96 -0
  65. data/doc/guide/src/building/actions.page +124 -0
  66. data/doc/guide/src/building/file_layout.page +71 -0
  67. data/doc/guide/src/building/index.page +50 -0
  68. data/doc/guide/src/building/patterns.page +86 -0
  69. data/doc/guide/src/building/patterns_forwarding.png +0 -0
  70. data/doc/guide/src/building/patterns_forwarding.svg +277 -0
  71. data/doc/guide/src/building/runtime.page +95 -0
  72. data/doc/guide/src/building/task_models.page +94 -0
  73. data/doc/guide/src/building/tasks.page +284 -0
  74. data/doc/guide/src/concepts/error_handling.page +100 -0
  75. data/doc/guide/src/concepts/exception_propagation.png +0 -0
  76. data/doc/guide/src/concepts/exception_propagation.svg +445 -0
  77. data/doc/guide/src/concepts/execution.page +85 -0
  78. data/doc/guide/src/concepts/execution.png +0 -0
  79. data/doc/guide/src/concepts/execution.svg +573 -0
  80. data/doc/guide/src/concepts/execution_cycle.png +0 -0
  81. data/doc/guide/src/concepts/garbage_collection.page +57 -0
  82. data/doc/guide/src/concepts/index.page +27 -0
  83. data/doc/guide/src/concepts/plans.page +101 -0
  84. data/doc/guide/src/concepts/policy.page +31 -0
  85. data/doc/guide/src/concepts/reactor.page +61 -0
  86. data/doc/guide/src/concepts/simple_plan_example.png +0 -0
  87. data/doc/guide/src/concepts/simple_plan_example.svg +376 -0
  88. data/doc/guide/src/default.template +9 -74
  89. data/doc/guide/src/event_relations/forward.page +71 -0
  90. data/doc/guide/src/event_relations/index.page +12 -0
  91. data/doc/guide/src/event_relations/scheduling_constraints.page +43 -0
  92. data/doc/guide/src/event_relations/signal.page +55 -0
  93. data/doc/guide/src/event_relations/temporal_constraints.page +77 -0
  94. data/doc/guide/src/htmldoc.metainfo +21 -8
  95. data/doc/guide/src/index.page +8 -3
  96. data/doc/guide/src/{introduction/install.page → installation/index.page} +37 -25
  97. data/doc/guide/src/installation/publications.page +14 -0
  98. data/doc/guide/src/{introduction → installation}/videos.page +14 -7
  99. data/doc/guide/src/interacting/index.page +16 -0
  100. data/doc/guide/src/interacting/run.page +33 -0
  101. data/doc/guide/src/interacting/shell.page +95 -0
  102. data/doc/guide/src/plugins/creating_plugins.page +72 -0
  103. data/doc/guide/src/plugins/index.page +27 -5
  104. data/doc/guide/src/plugins/{fault_tolerance.page → standard_plugins/fault_tolerance.page} +2 -2
  105. data/doc/guide/src/plugins/standard_plugins/index.page +11 -0
  106. data/doc/guide/src/plugins/{subsystems.page → standard_plugins/subsystems.page} +2 -2
  107. data/doc/guide/src/style_screen.css +687 -0
  108. data/doc/guide/src/task_relations/dependency.page +107 -0
  109. data/doc/guide/src/task_relations/executed_by.page +77 -0
  110. data/doc/guide/src/task_relations/index.page +12 -0
  111. data/doc/guide/src/task_relations/new_relations.page +119 -0
  112. data/doc/guide/src/task_relations/planned_by.page +46 -0
  113. data/doc/guide/src/tutorial/app.page +117 -0
  114. data/doc/guide/src/{basics → tutorial}/code_examples.page +6 -5
  115. data/doc/guide/src/{basics → tutorial}/dry.page +15 -15
  116. data/doc/guide/src/{basics → tutorial}/errors.page +43 -68
  117. data/doc/guide/src/tutorial/events.page +195 -0
  118. data/doc/guide/src/{basics → tutorial}/hierarchy.page +53 -52
  119. data/doc/guide/src/tutorial/index.page +13 -0
  120. data/doc/guide/src/tutorial/log_replay/goForward_1.png +0 -0
  121. data/doc/guide/src/tutorial/log_replay/goForward_2.png +0 -0
  122. data/doc/guide/src/tutorial/log_replay/goForward_3.png +0 -0
  123. data/doc/guide/src/{basics → tutorial}/log_replay/goForward_4.png +0 -0
  124. data/doc/guide/src/tutorial/log_replay/goForward_5.png +0 -0
  125. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_1.png +0 -0
  126. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_2.png +0 -0
  127. data/doc/guide/src/{basics → tutorial}/log_replay/hierarchy_error_3.png +0 -0
  128. data/doc/guide/src/tutorial/log_replay/moveto_code_error.png +0 -0
  129. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_1.png +0 -0
  130. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_2.png +0 -0
  131. data/doc/guide/src/{basics → tutorial}/log_replay/plan_repair_3.png +0 -0
  132. data/doc/guide/src/tutorial/log_replay/plan_repair_4.png +0 -0
  133. data/doc/guide/src/tutorial/log_replay/roby_log_main_window.png +0 -0
  134. data/doc/guide/src/{basics → tutorial}/log_replay/roby_log_relation_window.png +0 -0
  135. data/doc/guide/src/{basics → tutorial}/log_replay/roby_replay_event_representation.png +0 -0
  136. data/doc/guide/src/tutorial/relations_display.page +153 -0
  137. data/doc/guide/src/{basics → tutorial}/roby_cycle_overview.png +0 -0
  138. data/doc/guide/src/tutorial/shell.page +121 -0
  139. data/doc/guide/src/{basics → tutorial}/summary.page +1 -1
  140. data/doc/guide/src/tutorial/tasks.page +374 -0
  141. data/lib/roby.rb +102 -47
  142. data/lib/roby/actions.rb +17 -0
  143. data/lib/roby/actions/action.rb +80 -0
  144. data/lib/roby/actions/interface.rb +45 -0
  145. data/lib/roby/actions/library.rb +23 -0
  146. data/lib/roby/actions/models/action.rb +224 -0
  147. data/lib/roby/actions/models/coordination_action.rb +58 -0
  148. data/lib/roby/actions/models/interface.rb +22 -0
  149. data/lib/roby/actions/models/interface_base.rb +294 -0
  150. data/lib/roby/actions/models/library.rb +12 -0
  151. data/lib/roby/actions/models/method_action.rb +90 -0
  152. data/lib/roby/actions/task.rb +114 -0
  153. data/lib/roby/and_generator.rb +125 -0
  154. data/lib/roby/app.rb +2795 -829
  155. data/lib/roby/app/autotest_console_reporter.rb +138 -0
  156. data/lib/roby/app/base.rb +21 -0
  157. data/lib/roby/app/cucumber.rb +2 -0
  158. data/lib/roby/app/cucumber/controller.rb +439 -0
  159. data/lib/roby/app/cucumber/helpers.rb +280 -0
  160. data/lib/roby/app/cucumber/world.rb +32 -0
  161. data/lib/roby/app/debug.rb +136 -0
  162. data/lib/roby/app/gen.rb +2 -0
  163. data/lib/roby/app/rake.rb +178 -38
  164. data/lib/roby/app/robot_config.rb +9 -0
  165. data/lib/roby/app/robot_names.rb +115 -0
  166. data/lib/roby/app/run.rb +3 -2
  167. data/lib/roby/app/scripts.rb +72 -0
  168. data/lib/roby/app/scripts/autotest.rb +173 -0
  169. data/lib/roby/app/scripts/display.rb +2 -0
  170. data/lib/roby/app/scripts/restart.rb +52 -0
  171. data/lib/roby/app/scripts/results.rb +17 -8
  172. data/lib/roby/app/scripts/run.rb +155 -24
  173. data/lib/roby/app/scripts/shell.rb +147 -62
  174. data/lib/roby/app/scripts/test.rb +107 -22
  175. data/lib/roby/app/test_reporter.rb +74 -0
  176. data/lib/roby/app/test_server.rb +159 -0
  177. data/lib/roby/app/vagrant.rb +47 -0
  178. data/lib/roby/backports.rb +16 -0
  179. data/lib/roby/cli/display.rb +190 -0
  180. data/lib/roby/cli/exceptions.rb +17 -0
  181. data/lib/roby/cli/gen/actions/class.rb +5 -0
  182. data/lib/roby/cli/gen/actions/test.rb +6 -0
  183. data/lib/roby/cli/gen/app/.yardopts +6 -0
  184. data/lib/roby/cli/gen/app/README.md +28 -0
  185. data/lib/roby/cli/gen/app/Rakefile +15 -0
  186. data/{app → lib/roby/cli/gen/app}/config/app.yml +29 -39
  187. data/lib/roby/cli/gen/app/models/.gitattributes +1 -0
  188. data/{app → lib/roby/cli/gen/app/scripts}/controllers/.gitattributes +0 -0
  189. data/{app/data/.gitattributes → lib/roby/cli/gen/app/test/.gitignore} +0 -0
  190. data/lib/roby/cli/gen/class/class.rb +6 -0
  191. data/lib/roby/cli/gen/class/test.rb +7 -0
  192. data/lib/roby/cli/gen/helpers.rb +203 -0
  193. data/lib/roby/cli/gen/module/module.rb +5 -0
  194. data/lib/roby/cli/gen/module/test.rb +6 -0
  195. data/lib/roby/cli/gen/roby_app/config/init.rb +17 -0
  196. data/lib/roby/cli/gen/roby_app/config/robots/robot.rb +40 -0
  197. data/lib/roby/cli/gen/task/class.rb +44 -0
  198. data/lib/roby/cli/gen/task/test.rb +6 -0
  199. data/lib/roby/cli/gen_main.rb +120 -0
  200. data/lib/roby/cli/log.rb +276 -0
  201. data/lib/roby/cli/log/flamegraph.html +499 -0
  202. data/lib/roby/cli/log/flamegraph_renderer.rb +88 -0
  203. data/lib/roby/cli/main.rb +153 -0
  204. data/lib/roby/coordination.rb +60 -0
  205. data/lib/roby/coordination/action_script.rb +25 -0
  206. data/lib/roby/coordination/action_state_machine.rb +125 -0
  207. data/lib/roby/coordination/actions.rb +106 -0
  208. data/lib/roby/coordination/base.rb +145 -0
  209. data/lib/roby/coordination/calculus.rb +40 -0
  210. data/lib/roby/coordination/child.rb +28 -0
  211. data/lib/roby/coordination/event.rb +29 -0
  212. data/lib/roby/coordination/fault_handler.rb +25 -0
  213. data/lib/roby/coordination/fault_handling_task.rb +13 -0
  214. data/lib/roby/coordination/fault_response_table.rb +110 -0
  215. data/lib/roby/coordination/models/action_script.rb +64 -0
  216. data/lib/roby/coordination/models/action_state_machine.rb +224 -0
  217. data/lib/roby/coordination/models/actions.rb +191 -0
  218. data/lib/roby/coordination/models/arguments.rb +55 -0
  219. data/lib/roby/coordination/models/base.rb +176 -0
  220. data/lib/roby/coordination/models/capture.rb +86 -0
  221. data/lib/roby/coordination/models/child.rb +35 -0
  222. data/lib/roby/coordination/models/event.rb +41 -0
  223. data/lib/roby/coordination/models/exceptions.rb +42 -0
  224. data/lib/roby/coordination/models/fault_handler.rb +219 -0
  225. data/lib/roby/coordination/models/fault_response_table.rb +77 -0
  226. data/lib/roby/coordination/models/root.rb +22 -0
  227. data/lib/roby/coordination/models/script.rb +283 -0
  228. data/lib/roby/coordination/models/task.rb +184 -0
  229. data/lib/roby/coordination/models/task_from_action.rb +50 -0
  230. data/lib/roby/coordination/models/task_from_as_plan.rb +33 -0
  231. data/lib/roby/coordination/models/task_from_instanciation_object.rb +31 -0
  232. data/lib/roby/coordination/models/task_from_variable.rb +27 -0
  233. data/lib/roby/coordination/models/task_with_dependencies.rb +48 -0
  234. data/lib/roby/coordination/models/variable.rb +32 -0
  235. data/lib/roby/coordination/script.rb +200 -0
  236. data/lib/roby/coordination/script_instruction.rb +12 -0
  237. data/lib/roby/coordination/task.rb +45 -0
  238. data/lib/roby/coordination/task_base.rb +69 -0
  239. data/lib/roby/coordination/task_script.rb +293 -0
  240. data/lib/roby/coordination/task_state_machine.rb +308 -0
  241. data/lib/roby/decision_control.rb +33 -21
  242. data/lib/roby/distributed_object.rb +76 -0
  243. data/lib/roby/droby.rb +17 -0
  244. data/lib/roby/droby/droby_id.rb +6 -0
  245. data/lib/roby/droby/enable.rb +153 -0
  246. data/lib/roby/droby/event_logger.rb +189 -0
  247. data/lib/roby/droby/event_logging.rb +57 -0
  248. data/lib/roby/droby/exceptions.rb +14 -0
  249. data/lib/roby/droby/identifiable.rb +22 -0
  250. data/lib/roby/droby/logfile.rb +141 -0
  251. data/lib/roby/droby/logfile/client.rb +176 -0
  252. data/lib/roby/droby/logfile/file_format.md +97 -0
  253. data/lib/roby/droby/logfile/index.rb +117 -0
  254. data/lib/roby/droby/logfile/reader.rb +139 -0
  255. data/lib/roby/droby/logfile/server.rb +199 -0
  256. data/lib/roby/droby/logfile/writer.rb +114 -0
  257. data/lib/roby/droby/marshal.rb +264 -0
  258. data/lib/roby/droby/marshallable.rb +12 -0
  259. data/lib/roby/droby/null_event_logger.rb +25 -0
  260. data/lib/roby/droby/object_manager.rb +205 -0
  261. data/lib/roby/droby/peer_id.rb +6 -0
  262. data/lib/roby/droby/plan_rebuilder.rb +373 -0
  263. data/lib/roby/droby/rebuilt_plan.rb +160 -0
  264. data/lib/roby/droby/remote_droby_id.rb +6 -0
  265. data/lib/roby/droby/timepoints.rb +205 -0
  266. data/lib/roby/droby/timepoints_ctf.metadata.erb +101 -0
  267. data/lib/roby/droby/timepoints_ctf.rb +125 -0
  268. data/lib/roby/droby/v5.rb +14 -0
  269. data/lib/roby/droby/v5/builtin.rb +120 -0
  270. data/lib/roby/droby/v5/droby_class.rb +45 -0
  271. data/lib/roby/droby/v5/droby_constant.rb +81 -0
  272. data/lib/roby/droby/v5/droby_dump.rb +1026 -0
  273. data/lib/roby/droby/v5/droby_id.rb +44 -0
  274. data/lib/roby/droby/v5/droby_model.rb +82 -0
  275. data/lib/roby/droby/v5/peer_id.rb +10 -0
  276. data/lib/roby/droby/v5/remote_droby_id.rb +42 -0
  277. data/lib/roby/event.rb +79 -957
  278. data/lib/roby/event_constraints.rb +835 -0
  279. data/lib/roby/event_generator.rb +1047 -0
  280. data/lib/roby/event_structure/causal_link.rb +6 -0
  281. data/lib/roby/event_structure/forwarding.rb +6 -0
  282. data/lib/roby/event_structure/precedence.rb +7 -0
  283. data/lib/roby/event_structure/signal.rb +8 -0
  284. data/lib/roby/event_structure/temporal_constraints.rb +640 -0
  285. data/lib/roby/exceptions.rb +446 -152
  286. data/lib/roby/executable_plan.rb +549 -0
  287. data/lib/roby/execution_engine.rb +1997 -950
  288. data/lib/roby/filter_generator.rb +26 -0
  289. data/lib/roby/gui/chronicle_view.rb +225 -0
  290. data/lib/roby/gui/chronicle_widget.rb +925 -0
  291. data/lib/roby/gui/dot_id.rb +11 -0
  292. data/lib/roby/gui/exception_view.rb +44 -0
  293. data/lib/roby/gui/log_display.rb +273 -0
  294. data/lib/roby/gui/model_views.rb +2 -0
  295. data/lib/roby/gui/model_views/action_interface.rb +53 -0
  296. data/lib/roby/gui/model_views/task.rb +47 -0
  297. data/lib/roby/gui/model_views/task.rhtml +41 -0
  298. data/lib/roby/gui/object_info_view.rb +89 -0
  299. data/lib/roby/gui/plan_dot_layout.rb +427 -0
  300. data/lib/roby/gui/plan_rebuilder_widget.rb +357 -0
  301. data/lib/roby/gui/qt4_toMSecsSinceEpoch.rb +8 -0
  302. data/lib/roby/gui/relations_view.rb +278 -0
  303. data/lib/roby/gui/relations_view/relations.ui +139 -0
  304. data/lib/roby/gui/relations_view/relations_canvas.rb +1088 -0
  305. data/lib/roby/gui/relations_view/relations_config.rb +292 -0
  306. data/lib/roby/gui/relations_view/relations_view.ui +53 -0
  307. data/lib/roby/gui/scheduler_view.css +24 -0
  308. data/lib/roby/gui/scheduler_view.rb +46 -0
  309. data/lib/roby/gui/scheduler_view.rhtml +53 -0
  310. data/lib/roby/gui/stepping.rb +93 -0
  311. data/lib/roby/gui/stepping.ui +181 -0
  312. data/lib/roby/gui/styles.rb +81 -0
  313. data/lib/roby/gui/task_display_configuration.rb +42 -0
  314. data/lib/roby/gui/task_state_at.rb +38 -0
  315. data/lib/roby/hooks.rb +26 -0
  316. data/lib/roby/interface.rb +136 -469
  317. data/lib/roby/interface/async.rb +20 -0
  318. data/lib/roby/interface/async/action_monitor.rb +188 -0
  319. data/lib/roby/interface/async/interface.rb +498 -0
  320. data/lib/roby/interface/async/job_monitor.rb +213 -0
  321. data/lib/roby/interface/async/log.rb +238 -0
  322. data/lib/roby/interface/async/new_job_listener.rb +79 -0
  323. data/lib/roby/interface/async/ui_connector.rb +183 -0
  324. data/lib/roby/interface/client.rb +553 -0
  325. data/lib/roby/interface/command.rb +24 -0
  326. data/lib/roby/interface/command_argument.rb +16 -0
  327. data/lib/roby/interface/command_library.rb +92 -0
  328. data/lib/roby/interface/droby_channel.rb +174 -0
  329. data/lib/roby/interface/exceptions.rb +22 -0
  330. data/lib/roby/interface/interface.rb +655 -0
  331. data/lib/roby/interface/job.rb +47 -0
  332. data/lib/roby/interface/rest.rb +10 -0
  333. data/lib/roby/interface/rest/api.rb +29 -0
  334. data/lib/roby/interface/rest/helpers.rb +24 -0
  335. data/lib/roby/interface/rest/server.rb +212 -0
  336. data/lib/roby/interface/server.rb +154 -0
  337. data/lib/roby/interface/shell_client.rb +468 -0
  338. data/lib/roby/interface/shell_subcommand.rb +24 -0
  339. data/lib/roby/interface/subcommand_client.rb +35 -0
  340. data/lib/roby/interface/tcp.rb +168 -0
  341. data/lib/roby/models/arguments.rb +112 -0
  342. data/lib/roby/models/plan_object.rb +83 -0
  343. data/lib/roby/models/task.rb +835 -0
  344. data/lib/roby/models/task_event.rb +62 -0
  345. data/lib/roby/models/task_service.rb +78 -0
  346. data/lib/roby/or_generator.rb +88 -0
  347. data/lib/roby/plan.rb +1751 -864
  348. data/lib/roby/plan_object.rb +611 -0
  349. data/lib/roby/plan_service.rb +200 -0
  350. data/lib/roby/promise.rb +332 -0
  351. data/lib/roby/queries.rb +23 -0
  352. data/lib/roby/queries/and_matcher.rb +32 -0
  353. data/lib/roby/queries/any.rb +27 -0
  354. data/lib/roby/queries/code_error_matcher.rb +58 -0
  355. data/lib/roby/queries/event_generator_matcher.rb +9 -0
  356. data/lib/roby/queries/execution_exception_matcher.rb +165 -0
  357. data/lib/roby/queries/index.rb +165 -0
  358. data/lib/roby/queries/localized_error_matcher.rb +149 -0
  359. data/lib/roby/queries/matcher_base.rb +107 -0
  360. data/lib/roby/queries/none.rb +27 -0
  361. data/lib/roby/queries/not_matcher.rb +30 -0
  362. data/lib/roby/queries/op_matcher.rb +8 -0
  363. data/lib/roby/queries/or_matcher.rb +30 -0
  364. data/lib/roby/queries/plan_object_matcher.rb +363 -0
  365. data/lib/roby/queries/query.rb +188 -0
  366. data/lib/roby/queries/task_event_generator_matcher.rb +86 -0
  367. data/lib/roby/queries/task_matcher.rb +344 -0
  368. data/lib/roby/relations.rb +42 -678
  369. data/lib/roby/relations/bidirectional_directed_adjacency_graph.rb +492 -0
  370. data/lib/roby/relations/directed_relation_support.rb +268 -0
  371. data/lib/roby/relations/event_relation_graph.rb +19 -0
  372. data/lib/roby/relations/fork_merge_visitor.rb +154 -0
  373. data/lib/roby/relations/graph.rb +533 -0
  374. data/lib/roby/relations/models/directed_relation_support.rb +11 -0
  375. data/lib/roby/relations/models/graph.rb +75 -0
  376. data/lib/roby/relations/models/task_relation_graph.rb +18 -0
  377. data/lib/roby/relations/space.rb +380 -0
  378. data/lib/roby/relations/task_relation_graph.rb +20 -0
  379. data/lib/roby/robot.rb +85 -38
  380. data/lib/roby/schedulers/basic.rb +155 -25
  381. data/lib/roby/schedulers/null.rb +20 -0
  382. data/lib/roby/schedulers/reporting.rb +31 -0
  383. data/lib/roby/schedulers/state.rb +129 -0
  384. data/lib/roby/schedulers/temporal.rb +91 -0
  385. data/lib/roby/singletons.rb +87 -0
  386. data/lib/roby/standalone.rb +4 -2
  387. data/lib/roby/standard_errors.rb +405 -82
  388. data/lib/roby/state.rb +6 -3
  389. data/lib/roby/state/conf_model.rb +5 -0
  390. data/lib/roby/state/events.rb +181 -95
  391. data/lib/roby/state/goal_model.rb +77 -0
  392. data/lib/roby/state/open_struct.rb +591 -0
  393. data/lib/roby/state/open_struct_model.rb +68 -0
  394. data/lib/roby/state/pos.rb +45 -45
  395. data/lib/roby/state/shapes.rb +11 -11
  396. data/lib/roby/state/state_model.rb +303 -0
  397. data/lib/roby/state/task.rb +43 -0
  398. data/lib/roby/support.rb +88 -148
  399. data/lib/roby/task.rb +1361 -1750
  400. data/lib/roby/task_arguments.rb +428 -0
  401. data/lib/roby/task_event.rb +127 -0
  402. data/lib/roby/task_event_generator.rb +337 -0
  403. data/lib/roby/task_service.rb +6 -0
  404. data/lib/roby/task_structure/conflicts.rb +104 -0
  405. data/lib/roby/task_structure/dependency.rb +932 -0
  406. data/lib/roby/task_structure/error_handling.rb +118 -0
  407. data/lib/roby/task_structure/executed_by.rb +234 -0
  408. data/lib/roby/task_structure/planned_by.rb +90 -0
  409. data/lib/roby/tasks/aggregator.rb +37 -0
  410. data/lib/roby/tasks/external_process.rb +275 -0
  411. data/lib/roby/tasks/group.rb +27 -0
  412. data/lib/roby/tasks/null.rb +19 -0
  413. data/lib/roby/tasks/parallel.rb +43 -0
  414. data/lib/roby/tasks/sequence.rb +88 -0
  415. data/lib/roby/tasks/simple.rb +21 -0
  416. data/lib/roby/{thread_task.rb → tasks/thread.rb} +50 -24
  417. data/lib/roby/tasks/timeout.rb +17 -0
  418. data/lib/roby/tasks/virtual.rb +55 -0
  419. data/lib/roby/template_plan.rb +7 -0
  420. data/lib/roby/test/aruba_minitest.rb +74 -0
  421. data/lib/roby/test/assertion.rb +16 -0
  422. data/lib/roby/test/assertions.rb +490 -0
  423. data/lib/roby/test/common.rb +368 -591
  424. data/lib/roby/test/dsl.rb +149 -0
  425. data/lib/roby/test/error.rb +18 -0
  426. data/lib/roby/test/event_reporter.rb +83 -0
  427. data/lib/roby/test/execution_expectations.rb +1134 -0
  428. data/lib/roby/test/expect_execution.rb +151 -0
  429. data/lib/roby/test/minitest_helpers.rb +166 -0
  430. data/lib/roby/test/roby_app_helpers.rb +200 -0
  431. data/lib/roby/test/run_planners.rb +155 -0
  432. data/lib/roby/test/self.rb +112 -0
  433. data/lib/roby/test/spec.rb +198 -0
  434. data/lib/roby/test/tasks/empty_task.rb +4 -4
  435. data/lib/roby/test/tasks/goto.rb +28 -27
  436. data/lib/roby/test/teardown_plans.rb +100 -0
  437. data/lib/roby/test/testcase.rb +239 -307
  438. data/lib/roby/test/tools.rb +159 -155
  439. data/lib/roby/test/validate_state_machine.rb +75 -0
  440. data/lib/roby/transaction.rb +1125 -0
  441. data/lib/roby/transaction/event_generator_proxy.rb +63 -0
  442. data/lib/roby/transaction/plan_object_proxy.rb +99 -0
  443. data/lib/roby/transaction/plan_service_proxy.rb +43 -0
  444. data/lib/roby/transaction/proxying.rb +120 -0
  445. data/lib/roby/transaction/task_event_generator_proxy.rb +19 -0
  446. data/lib/roby/transaction/task_proxy.rb +135 -0
  447. data/lib/roby/until_generator.rb +30 -0
  448. data/lib/roby/version.rb +5 -0
  449. data/lib/roby/yard.rb +169 -0
  450. data/lib/yard-roby.rb +1 -0
  451. data/manifest.xml +32 -6
  452. data/roby.gemspec +59 -0
  453. metadata +788 -587
  454. data/Manifest.txt +0 -321
  455. data/NOTES +0 -4
  456. data/README.txt +0 -166
  457. data/TODO.txt +0 -146
  458. data/app/README.txt +0 -24
  459. data/app/Rakefile +0 -8
  460. data/app/config/ROBOT.rb +0 -5
  461. data/app/config/init.rb +0 -33
  462. data/app/config/roby.yml +0 -3
  463. data/app/controllers/ROBOT.rb +0 -2
  464. data/app/planners/ROBOT/main.rb +0 -6
  465. data/app/planners/main.rb +0 -5
  466. data/app/scripts/distributed +0 -3
  467. data/app/scripts/generate/bookmarks +0 -3
  468. data/app/scripts/replay +0 -3
  469. data/app/scripts/results +0 -3
  470. data/app/scripts/run +0 -3
  471. data/app/scripts/server +0 -3
  472. data/app/scripts/shell +0 -3
  473. data/app/scripts/test +0 -3
  474. data/app/tasks/.gitattributes +0 -0
  475. data/app/tasks/ROBOT/.gitattributes +0 -0
  476. data/bin/roby-shell +0 -25
  477. data/doc/guide/src/basics/app.page +0 -139
  478. data/doc/guide/src/basics/index.page +0 -11
  479. data/doc/guide/src/basics/log_replay/goForward_1.png +0 -0
  480. data/doc/guide/src/basics/log_replay/goForward_2.png +0 -0
  481. data/doc/guide/src/basics/log_replay/goForward_3.png +0 -0
  482. data/doc/guide/src/basics/log_replay/goForward_5.png +0 -0
  483. data/doc/guide/src/basics/log_replay/plan_repair_4.png +0 -0
  484. data/doc/guide/src/basics/log_replay/roby_log_main_window.png +0 -0
  485. data/doc/guide/src/basics/relations_display.page +0 -203
  486. data/doc/guide/src/basics/shell.page +0 -102
  487. data/doc/guide/src/default.css +0 -319
  488. data/doc/guide/src/introduction/index.page +0 -29
  489. data/doc/guide/src/introduction/publications.page +0 -14
  490. data/doc/guide/src/relations/dependency.page +0 -89
  491. data/doc/guide/src/relations/index.page +0 -12
  492. data/ext/droby/dump.cc +0 -175
  493. data/ext/droby/extconf.rb +0 -3
  494. data/ext/graph/algorithm.cc +0 -746
  495. data/ext/graph/extconf.rb +0 -7
  496. data/ext/graph/graph.cc +0 -575
  497. data/ext/graph/graph.hh +0 -183
  498. data/ext/graph/iterator_sequence.hh +0 -102
  499. data/ext/graph/undirected_dfs.hh +0 -226
  500. data/ext/graph/undirected_graph.hh +0 -421
  501. data/lib/roby/app/scripts/generate/bookmarks.rb +0 -162
  502. data/lib/roby/app/scripts/replay.rb +0 -31
  503. data/lib/roby/app/scripts/server.rb +0 -18
  504. data/lib/roby/basic_object.rb +0 -151
  505. data/lib/roby/config.rb +0 -14
  506. data/lib/roby/distributed.rb +0 -36
  507. data/lib/roby/distributed/base.rb +0 -448
  508. data/lib/roby/distributed/communication.rb +0 -875
  509. data/lib/roby/distributed/connection_space.rb +0 -616
  510. data/lib/roby/distributed/distributed_object.rb +0 -206
  511. data/lib/roby/distributed/drb.rb +0 -62
  512. data/lib/roby/distributed/notifications.rb +0 -531
  513. data/lib/roby/distributed/peer.rb +0 -555
  514. data/lib/roby/distributed/protocol.rb +0 -529
  515. data/lib/roby/distributed/proxy.rb +0 -343
  516. data/lib/roby/distributed/subscription.rb +0 -311
  517. data/lib/roby/distributed/transaction.rb +0 -498
  518. data/lib/roby/external_process_task.rb +0 -225
  519. data/lib/roby/graph.rb +0 -160
  520. data/lib/roby/log.rb +0 -3
  521. data/lib/roby/log/chronicle.rb +0 -303
  522. data/lib/roby/log/console.rb +0 -74
  523. data/lib/roby/log/data_stream.rb +0 -275
  524. data/lib/roby/log/dot.rb +0 -279
  525. data/lib/roby/log/event_stream.rb +0 -161
  526. data/lib/roby/log/file.rb +0 -396
  527. data/lib/roby/log/gui/basic_display.ui +0 -83
  528. data/lib/roby/log/gui/basic_display_ui.rb +0 -89
  529. data/lib/roby/log/gui/chronicle.rb +0 -26
  530. data/lib/roby/log/gui/chronicle_view.rb +0 -40
  531. data/lib/roby/log/gui/chronicle_view.ui +0 -70
  532. data/lib/roby/log/gui/chronicle_view_ui.rb +0 -90
  533. data/lib/roby/log/gui/data_displays.rb +0 -171
  534. data/lib/roby/log/gui/data_displays.ui +0 -155
  535. data/lib/roby/log/gui/data_displays_ui.rb +0 -146
  536. data/lib/roby/log/gui/notifications.rb +0 -26
  537. data/lib/roby/log/gui/relations.rb +0 -269
  538. data/lib/roby/log/gui/relations.ui +0 -123
  539. data/lib/roby/log/gui/relations_ui.rb +0 -120
  540. data/lib/roby/log/gui/relations_view.rb +0 -185
  541. data/lib/roby/log/gui/relations_view.ui +0 -149
  542. data/lib/roby/log/gui/relations_view_ui.rb +0 -144
  543. data/lib/roby/log/gui/replay.rb +0 -366
  544. data/lib/roby/log/gui/replay_controls.rb +0 -206
  545. data/lib/roby/log/gui/replay_controls.ui +0 -282
  546. data/lib/roby/log/gui/replay_controls_ui.rb +0 -249
  547. data/lib/roby/log/gui/runtime.rb +0 -130
  548. data/lib/roby/log/hooks.rb +0 -186
  549. data/lib/roby/log/logger.rb +0 -203
  550. data/lib/roby/log/notifications.rb +0 -244
  551. data/lib/roby/log/plan_rebuilder.rb +0 -468
  552. data/lib/roby/log/relations.rb +0 -1084
  553. data/lib/roby/log/server.rb +0 -547
  554. data/lib/roby/log/sqlite.rb +0 -47
  555. data/lib/roby/log/timings.rb +0 -233
  556. data/lib/roby/plan-object.rb +0 -371
  557. data/lib/roby/planning.rb +0 -13
  558. data/lib/roby/planning/loops.rb +0 -309
  559. data/lib/roby/planning/model.rb +0 -1012
  560. data/lib/roby/planning/task.rb +0 -180
  561. data/lib/roby/query.rb +0 -655
  562. data/lib/roby/relations/conflicts.rb +0 -67
  563. data/lib/roby/relations/dependency.rb +0 -358
  564. data/lib/roby/relations/ensured.rb +0 -19
  565. data/lib/roby/relations/error_handling.rb +0 -22
  566. data/lib/roby/relations/events.rb +0 -7
  567. data/lib/roby/relations/executed_by.rb +0 -208
  568. data/lib/roby/relations/influence.rb +0 -10
  569. data/lib/roby/relations/planned_by.rb +0 -63
  570. data/lib/roby/state/information.rb +0 -55
  571. data/lib/roby/state/state.rb +0 -367
  572. data/lib/roby/task-operations.rb +0 -186
  573. data/lib/roby/task_index.rb +0 -80
  574. data/lib/roby/test/distributed.rb +0 -230
  575. data/lib/roby/test/tasks/simple_task.rb +0 -23
  576. data/lib/roby/transactions.rb +0 -507
  577. data/lib/roby/transactions/proxy.rb +0 -325
  578. data/plugins/fault_injection/History.txt +0 -4
  579. data/plugins/fault_injection/README.txt +0 -34
  580. data/plugins/fault_injection/Rakefile +0 -12
  581. data/plugins/fault_injection/TODO.txt +0 -0
  582. data/plugins/fault_injection/app.rb +0 -52
  583. data/plugins/fault_injection/fault_injection.rb +0 -89
  584. data/plugins/fault_injection/test/test_fault_injection.rb +0 -78
  585. data/plugins/subsystems/README.txt +0 -37
  586. data/plugins/subsystems/Rakefile +0 -13
  587. data/plugins/subsystems/app.rb +0 -182
  588. data/plugins/subsystems/test/app/README +0 -24
  589. data/plugins/subsystems/test/app/Rakefile +0 -8
  590. data/plugins/subsystems/test/app/config/app.yml +0 -71
  591. data/plugins/subsystems/test/app/config/init.rb +0 -12
  592. data/plugins/subsystems/test/app/config/roby.yml +0 -3
  593. data/plugins/subsystems/test/app/planners/main.rb +0 -20
  594. data/plugins/subsystems/test/app/scripts/distributed +0 -3
  595. data/plugins/subsystems/test/app/scripts/replay +0 -3
  596. data/plugins/subsystems/test/app/scripts/results +0 -3
  597. data/plugins/subsystems/test/app/scripts/run +0 -3
  598. data/plugins/subsystems/test/app/scripts/server +0 -3
  599. data/plugins/subsystems/test/app/scripts/shell +0 -3
  600. data/plugins/subsystems/test/app/scripts/test +0 -3
  601. data/plugins/subsystems/test/app/tasks/services.rb +0 -15
  602. data/plugins/subsystems/test/test_subsystems.rb +0 -78
  603. data/test/distributed/test_communication.rb +0 -195
  604. data/test/distributed/test_connection.rb +0 -284
  605. data/test/distributed/test_execution.rb +0 -378
  606. data/test/distributed/test_mixed_plan.rb +0 -341
  607. data/test/distributed/test_plan_notifications.rb +0 -238
  608. data/test/distributed/test_protocol.rb +0 -525
  609. data/test/distributed/test_query.rb +0 -106
  610. data/test/distributed/test_remote_plan.rb +0 -491
  611. data/test/distributed/test_transaction.rb +0 -466
  612. data/test/mockups/external_process +0 -28
  613. data/test/mockups/tasks.rb +0 -27
  614. data/test/planning/test_loops.rb +0 -432
  615. data/test/planning/test_model.rb +0 -427
  616. data/test/planning/test_task.rb +0 -126
  617. data/test/relations/test_conflicts.rb +0 -42
  618. data/test/relations/test_dependency.rb +0 -324
  619. data/test/relations/test_ensured.rb +0 -38
  620. data/test/relations/test_executed_by.rb +0 -224
  621. data/test/relations/test_planned_by.rb +0 -56
  622. data/test/suite_core.rb +0 -29
  623. data/test/suite_distributed.rb +0 -10
  624. data/test/suite_planning.rb +0 -4
  625. data/test/suite_relations.rb +0 -8
  626. data/test/tasks/test_external_process.rb +0 -126
  627. data/test/tasks/test_thread_task.rb +0 -70
  628. data/test/test_bgl.rb +0 -528
  629. data/test/test_event.rb +0 -969
  630. data/test/test_exceptions.rb +0 -591
  631. data/test/test_execution_engine.rb +0 -987
  632. data/test/test_gui.rb +0 -20
  633. data/test/test_interface.rb +0 -43
  634. data/test/test_log.rb +0 -125
  635. data/test/test_log_server.rb +0 -133
  636. data/test/test_plan.rb +0 -418
  637. data/test/test_query.rb +0 -424
  638. data/test/test_relations.rb +0 -260
  639. data/test/test_state.rb +0 -432
  640. data/test/test_support.rb +0 -16
  641. data/test/test_task.rb +0 -1181
  642. data/test/test_testcase.rb +0 -138
  643. data/test/test_transactions.rb +0 -610
  644. data/test/test_transactions_proxy.rb +0 -216
@@ -1,183 +0,0 @@
1
- #ifndef RUBY_BGL_GRAPH_HH
2
- #define RUBY_BGL_GRAPH_HH
3
-
4
- #include <ruby.h>
5
- #include <boost/graph/adjacency_list.hpp>
6
- #include <set>
7
- #include <boost/tuple/tuple.hpp>
8
-
9
- extern VALUE bglModule;
10
- extern VALUE bglGraph;
11
- extern VALUE bglReverseGraph;
12
- extern VALUE bglUndirectedGraph;
13
- extern VALUE bglVertex;
14
-
15
- /**********************************************************************
16
- * Definition of base C++ types
17
- */
18
-
19
- struct EdgeProperty
20
- {
21
- VALUE info;
22
- boost::default_color_type color; // needed by some algorithms
23
-
24
- EdgeProperty(VALUE info)
25
- : info(info) { }
26
- };
27
-
28
- typedef boost::adjacency_list< boost::setS, boost::setS
29
- , boost::bidirectionalS, VALUE, EdgeProperty> RubyGraph;
30
- typedef std::map<VALUE, RubyGraph::vertex_descriptor> graph_map;
31
-
32
- inline RubyGraph& graph_wrapped(VALUE self)
33
- {
34
- RubyGraph* object = 0;
35
- Data_Get_Struct(self, RubyGraph, object);
36
- return *object;
37
- }
38
-
39
- extern graph_map& vertex_descriptor_map(VALUE self);
40
-
41
- /* Return the vertex_descriptor of +self+ in +graph+. The boolean is true if
42
- * +self+ is in graph, and false otherwise.
43
- */
44
- inline std::pair<RubyGraph::vertex_descriptor, bool>
45
- rb_to_vertex(VALUE vertex, VALUE graph)
46
- {
47
- graph_map& descriptors = vertex_descriptor_map(vertex);
48
- graph_map::iterator it = descriptors.find(graph);
49
- if(it == descriptors.end())
50
- return std::make_pair(static_cast<void*>(0), false);
51
- else
52
- return std::make_pair(it->second, true);
53
- }
54
-
55
- /* Returns a range for all descriptors of +self+
56
- */
57
- inline std::pair<graph_map::iterator, graph_map::iterator> vertex_descriptors(VALUE self)
58
- {
59
- graph_map& descriptors = vertex_descriptor_map(self);
60
- return make_pair(descriptors.begin(), descriptors.end());
61
- }
62
-
63
-
64
- namespace details
65
- {
66
- template<typename Graph, bool direct> struct vertex_range;
67
-
68
- template<typename Graph>
69
- struct vertex_range<Graph, true>
70
- {
71
- typedef typename Graph::adjacency_iterator iterator;
72
- typedef std::pair<iterator, iterator> range;
73
-
74
- static range get(RubyGraph::vertex_descriptor v, Graph& graph)
75
- { return adjacent_vertices(v, graph); }
76
- static range get(RubyGraph::vertex_descriptor v, Graph const& graph)
77
- { return adjacent_vertices(v, graph); }
78
- };
79
-
80
- template<typename Graph>
81
- struct vertex_range<Graph, false>
82
- {
83
- typedef typename Graph::inv_adjacency_iterator iterator;
84
- typedef std::pair<iterator, iterator> range;
85
-
86
- static range get(RubyGraph::vertex_descriptor v, Graph& graph)
87
- { return inv_adjacent_vertices(v, graph); }
88
- static range get(RubyGraph::vertex_descriptor v, Graph const& graph)
89
- { return inv_adjacent_vertices(v, graph); }
90
- };
91
- }
92
-
93
- /** Iterates on all vertices in the range */
94
- template <typename Range, typename F>
95
- static bool for_each_value(Range range, RubyGraph& graph, F f)
96
- {
97
- typedef typename Range::first_type Iterator;
98
- Iterator it, end;
99
- for (boost::tie(it, end) = range; it != end; )
100
- {
101
- VALUE value = graph[*it];
102
- ++it;
103
-
104
- if (!f(value))
105
- return false;
106
- }
107
- return true;
108
- }
109
-
110
- /** Iterates on each adjacent vertex of +v+ in +graph+ which are not yet in +already_seen+ */
111
- template <typename Graph, bool direct>
112
- static bool for_each_adjacent_uniq(RubyGraph::vertex_descriptor v, Graph const& graph, std::set<VALUE>& already_seen)
113
- {
114
- typedef details::vertex_range<Graph, direct> getter;
115
- typedef typename getter::iterator Iterator;
116
-
117
- Iterator it, end;
118
- for (boost::tie(it, end) = details::vertex_range<Graph, direct>::get(v, graph); it != end; )
119
- {
120
- VALUE related_object = graph[*it];
121
- bool inserted;
122
- boost::tie(boost::tuples::ignore, inserted) = already_seen.insert(related_object);
123
- ++it;
124
-
125
- if (inserted)
126
- rb_yield_values(1, related_object);
127
- }
128
- return true;
129
- }
130
-
131
- /* Iterates on all graphs +vertex+ is part of, calling f(RubyGraph&, vertex_descriptor). If the calling
132
- * function returns false, stop iteration here */
133
- template<typename F>
134
- static bool for_each_graph(VALUE vertex, F f)
135
- {
136
- graph_map::iterator graph, graph_end;
137
- for (boost::tie(graph, graph_end) = vertex_descriptors(vertex); graph != graph_end;)
138
- {
139
- RubyGraph& g = graph_wrapped(graph->first);
140
- RubyGraph::vertex_descriptor v = graph->second;
141
- ++graph;
142
-
143
- if (!f(v, g))
144
- return false;
145
- }
146
- return true;
147
- }
148
-
149
- // Returns true if +v+ has either no child (if +direct+ is true) or no parents (if +direct+ is false)
150
- template<typename Graph, bool direct>
151
- bool vertex_has_adjacent_i(RubyGraph::vertex_descriptor v, Graph const& g)
152
- {
153
- typedef typename details::vertex_range<Graph, direct> getter;
154
- typename getter::iterator begin, end;
155
- boost::tie(begin, end) = getter::get(v, g);
156
- return begin == end;
157
- }
158
-
159
- template<bool direct>
160
- VALUE vertex_has_adjacent(int argc, VALUE* argv, VALUE self)
161
- {
162
- VALUE graph = Qnil;
163
- rb_scan_args(argc, argv, "01", &graph);
164
-
165
- bool result;
166
- if (NIL_P(graph))
167
- result = for_each_graph(self, vertex_has_adjacent_i<RubyGraph, direct>);
168
- else
169
- {
170
- RubyGraph::vertex_descriptor v; bool exists;
171
- boost::tie(v, exists) = rb_to_vertex(self, graph);
172
- if (! exists)
173
- return Qtrue;
174
-
175
- RubyGraph& g = graph_wrapped(graph);
176
- result = vertex_has_adjacent_i<RubyGraph, direct>(v, g);
177
- }
178
- return result ? Qtrue : Qfalse;
179
- }
180
-
181
-
182
- #endif
183
-
@@ -1,102 +0,0 @@
1
- #ifndef UTILMM_ITERATOR_SEQUENCE_HPP
2
- #define UTILMM_ITERATOR_SEQUENCE_HPP
3
-
4
- #include <boost/iterator/iterator_facade.hpp>
5
- #include <boost/iterator/iterator_traits.hpp>
6
-
7
- namespace utilmm {
8
- /**
9
- * The iterator_sequence template takes two iterator ranges and iterates in the two ranges
10
- * as if they were a single sequence. The only constraint is that both iterator types have
11
- * the same value_type.
12
- */
13
- template<typename It1, typename It2>
14
- class iterator_sequence :
15
- public boost::iterator_facade<
16
- iterator_sequence<It1, It2>,
17
- typename It1::value_type,
18
- typename boost::iterator_traversal<It1>::type,
19
- typename It1::reference >
20
- {
21
- typedef iterator_sequence<It1, It2> Self;
22
-
23
- public:
24
- /** Builds a new sequence
25
- * Note that for an iterator sequence (fb, fe) + (sb, se),
26
- * <ul>
27
- * <li> the begin iterator is i_s(fb, fe, sb, sb)
28
- * <li> the end iterator is i_s(fe, fe, se, se)
29
- * </ul>
30
- *
31
- * @param first the position in the first range
32
- * @param first_end the end of the first range
33
- * @param second_begin the beginning of the second range
34
- * @param second the position in the second range
35
- */
36
- iterator_sequence(
37
- It1 first, It1 first_end,
38
- It2 second_begin, It2 second)
39
- : m_first(first), m_first_end(first_end)
40
- , m_second_begin(second_begin), m_second(second) {}
41
- iterator_sequence() {}
42
-
43
- private:
44
- friend class boost::iterator_core_access;
45
-
46
- It1 m_first, m_first_end;
47
- It2 m_second_begin, m_second;
48
-
49
- typename Self::reference dereference() const
50
- {
51
- if (m_first == m_first_end)
52
- return *m_second;
53
- else
54
- return *m_first;
55
- }
56
- bool equal(Self x) const
57
- { return (x.m_first == m_first && x.m_second == m_second); }
58
- void increment()
59
- {
60
- if (m_first == m_first_end)
61
- ++m_second;
62
- else
63
- ++m_first;
64
- }
65
- void decrement()
66
- {
67
- if (m_second == m_second_begin)
68
- --m_first;
69
- else
70
- --m_second;
71
- }
72
- void advance(typename Self::difference_type i)
73
- {
74
- if (i > 0)
75
- {
76
- typename Self::difference_type remains = m_first_end - m_first;
77
- if (remains > i)
78
- m_first += i;
79
- else
80
- {
81
- m_first = m_first_end;
82
- m_second += i - remains;
83
- }
84
- }
85
- else
86
- {
87
- typename Self::difference_type remains = m_second_begin - m_second;
88
- if (remains < i)
89
- m_second += i;
90
- else
91
- {
92
- m_second = m_second_begin;
93
- m_first += i - remains;
94
- }
95
- }
96
- }
97
-
98
- typename Self::difference_type distance_to(Self x) const
99
- { return (x.m_first - m_first) + (x.m_second - m_second); }
100
- };
101
- }
102
- #endif
@@ -1,226 +0,0 @@
1
- //=======================================================================
2
- // Copyright 2006 Sylvain Joyeux
3
- // * added a terminator function to undirected_dfs_visit
4
- // * specialize for use with undirected_graph<>
5
- //
6
- // Copyright 1997, 1998, 1999, 2000 University of Notre Dame.
7
- // Authors: Andrew Lumsdaine, Lie-Quan Lee, Jeremy G. Siek
8
- //
9
- // Distributed under the Boost Software License, Version 1.0. (See
10
- // accompanying file LICENSE_1_0.txt or copy at
11
- // http://www.boost.org/LICENSE_1_0.txt)
12
- //=======================================================================
13
- //
14
- #ifndef UTILMM_GRAPH_UNDIRECTED_DFS_HPP
15
- #define UTILMM_GRAPH_UNDIRECTED_DFS_HPP
16
-
17
- #include <boost/graph/depth_first_search.hpp>
18
- #include <vector>
19
-
20
- namespace utilmm {
21
- namespace detail {
22
- using namespace boost;
23
- struct nontruth2 {
24
- template<class T, class T2>
25
- bool operator()(const T&, const T2&) const { return false; }
26
- };
27
-
28
- template <typename IncidenceGraph, typename DFSVisitor,
29
- typename VertexColorMap, typename EdgeColorMap,
30
- typename TerminatorFunc>
31
- void undir_dfv_impl_term
32
- (const IncidenceGraph& g,
33
- typename graph_traits<IncidenceGraph>::vertex_descriptor u,
34
- DFSVisitor& vis,
35
- VertexColorMap vertex_color,
36
- EdgeColorMap edge_color,
37
- TerminatorFunc func = TerminatorFunc())
38
- {
39
- function_requires<IncidenceGraphConcept<IncidenceGraph> >();
40
- function_requires<DFSVisitorConcept<DFSVisitor, IncidenceGraph> >();
41
- typedef typename graph_traits<IncidenceGraph>::vertex_descriptor Vertex;
42
- typedef typename graph_traits<IncidenceGraph>::edge_descriptor Edge;
43
- function_requires<ReadWritePropertyMapConcept<VertexColorMap,Vertex> >();
44
- function_requires<ReadWritePropertyMapConcept<EdgeColorMap,Edge> >();
45
- typedef typename property_traits<VertexColorMap>::value_type ColorValue;
46
- typedef typename property_traits<EdgeColorMap>::value_type EColorValue;
47
- function_requires< ColorValueConcept<ColorValue> >();
48
- function_requires< ColorValueConcept<EColorValue> >();
49
- typedef color_traits<ColorValue> Color;
50
- typedef color_traits<EColorValue> EColor;
51
- typedef typename graph_traits<IncidenceGraph>::out_edge_iterator Iter;
52
- typedef std::pair<Vertex, std::pair<Iter, Iter> > VertexInfo;
53
-
54
- std::vector<VertexInfo> stack;
55
-
56
- put(vertex_color, u, Color::gray());
57
- vis.discover_vertex(u, g);
58
-
59
- Iter ei, ei_end;
60
- tie(ei, ei_end) = out_edges(u, g);
61
- if (func(u, g))
62
- stack.push_back(std::make_pair(u, std::make_pair(ei_end, ei_end)));
63
- else
64
- stack.push_back(std::make_pair(u, std::make_pair(ei, ei_end)));
65
-
66
- while (!stack.empty()) {
67
- VertexInfo& back = stack.back();
68
- u = back.first;
69
- tie(ei, ei_end) = back.second;
70
- stack.pop_back();
71
- while (ei != ei_end) {
72
- Vertex v = target(*ei, g);
73
- vis.examine_edge(*ei, g);
74
- ColorValue v_color = get(vertex_color, v);
75
- EColorValue uv_color = get(edge_color, *ei);
76
- put(edge_color, *ei, EColor::black());
77
- if (v_color == Color::white()) {
78
- vis.tree_edge(*ei, g);
79
- stack.push_back(std::make_pair(u, std::make_pair(++ei, ei_end)));
80
- u = v;
81
- put(vertex_color, u, Color::gray());
82
- vis.discover_vertex(u, g);
83
- tie(ei, ei_end) = out_edges(u, g);
84
- if (func(u, g))
85
- ei = ei_end;
86
- } else if (v_color == Color::gray()) {
87
- if (uv_color == EColor::white()) vis.back_edge(*ei, g);
88
- ++ei;
89
- } else { // if (v_color == Color::black())
90
- vis.forward_or_cross_edge(*ei, g);
91
- ++ei;
92
- }
93
- }
94
- put(vertex_color, u, Color::black());
95
- vis.finish_vertex(u, g);
96
- }
97
- }
98
- } // namespace detail
99
-
100
- template <typename Graph, typename DFSVisitor,
101
- typename VertexColorMap, typename EdgeColorMap,
102
- typename Vertex>
103
- void
104
- undirected_dfs(const Graph& g, DFSVisitor vis,
105
- VertexColorMap vertex_color, EdgeColorMap edge_color,
106
- Vertex start_vertex)
107
- {
108
- using namespace boost;
109
- function_requires<DFSVisitorConcept<DFSVisitor, Graph> >();
110
- function_requires<EdgeListGraphConcept<Graph> >();
111
-
112
- typedef typename property_traits<VertexColorMap>::value_type ColorValue;
113
- typedef color_traits<ColorValue> Color;
114
-
115
- typename graph_traits<Graph>::vertex_iterator ui, ui_end;
116
- for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) {
117
- put(vertex_color, *ui, Color::white()); vis.initialize_vertex(*ui, g);
118
- }
119
- typename graph_traits<Graph>::edge_iterator ei, ei_end;
120
- for (tie(ei, ei_end) = edges(g); ei != ei_end; ++ei)
121
- put(edge_color, *ei, Color::white());
122
-
123
- if (start_vertex != *vertices(g).first){ vis.start_vertex(start_vertex, g);
124
- detail::undir_dfv_impl_term(g, start_vertex, vis, vertex_color, edge_color, detail::nontruth2());
125
- }
126
-
127
- for (tie(ui, ui_end) = vertices(g); ui != ui_end; ++ui) {
128
- ColorValue u_color = get(vertex_color, *ui);
129
- if (u_color == Color::white()) { vis.start_vertex(*ui, g);
130
- detail::undir_dfv_impl_term(g, *ui, vis, vertex_color, edge_color, detail::nontruth2());
131
- }
132
- }
133
- }
134
-
135
- template <typename Graph, typename DFSVisitor, typename VertexColorMap,
136
- typename EdgeColorMap>
137
- void
138
- undirected_dfs(const Graph& g, DFSVisitor vis,
139
- VertexColorMap vertex_color, EdgeColorMap edge_color)
140
- {
141
- using namespace boost;
142
- undirected_dfs(g, vis, vertex_color, edge_color, *vertices(g).first, detail::nontruth2());
143
- }
144
-
145
- namespace detail {
146
- template <typename VertexColorMap>
147
- struct udfs_dispatch {
148
-
149
- template <typename Graph, typename Vertex,
150
- typename DFSVisitor, typename EdgeColorMap,
151
- typename P, typename T, typename R>
152
- static void
153
- apply(const Graph& g, DFSVisitor vis, Vertex start_vertex,
154
- const bgl_named_params<P, T, R>&,
155
- EdgeColorMap edge_color,
156
- VertexColorMap vertex_color)
157
- {
158
- undirected_dfs(g, vis, vertex_color, edge_color, start_vertex);
159
- }
160
- };
161
-
162
- template <>
163
- struct udfs_dispatch<boost::detail::error_property_not_found> {
164
- template <typename Graph, typename Vertex, typename DFSVisitor,
165
- typename EdgeColorMap,
166
- typename P, typename T, typename R>
167
- static void
168
- apply(const Graph& g, DFSVisitor vis, Vertex start_vertex,
169
- const bgl_named_params<P, T, R>& params,
170
- EdgeColorMap edge_color,
171
- boost::detail::error_property_not_found)
172
- {
173
- std::vector<default_color_type> color_vec(num_vertices(g));
174
- default_color_type c = white_color; // avoid warning about un-init
175
- undirected_dfs
176
- (g, vis, make_iterator_property_map
177
- (color_vec.begin(),
178
- choose_const_pmap(get_param(params, vertex_index),
179
- g, vertex_index), c),
180
- edge_color,
181
- start_vertex);
182
- }
183
- };
184
-
185
- } // namespace detail
186
-
187
-
188
- // Named Parameter Variant
189
- template <typename Graph, typename P, typename T, typename R>
190
- void
191
- undirected_dfs(const Graph& g,
192
- const boost::bgl_named_params<P, T, R>& params)
193
- {
194
- using namespace boost;
195
- typedef typename property_value< bgl_named_params<P, T, R>,
196
- vertex_color_t>::type C;
197
- detail::udfs_dispatch<C>::apply
198
- (g,
199
- choose_param(get_param(params, graph_visitor),
200
- make_dfs_visitor(null_visitor())),
201
- choose_param(get_param(params, root_vertex_t()),
202
- *vertices(g).first),
203
- params,
204
- get_param(params, edge_color),
205
- get_param(params, vertex_color)
206
- );
207
- }
208
-
209
-
210
- template <typename IncidenceGraph, typename DFSVisitor,
211
- typename VertexColorMap, typename EdgeColorMap,
212
- typename TerminatorFunc>
213
- void undirected_depth_first_visit
214
- (const IncidenceGraph& g,
215
- typename boost::graph_traits<IncidenceGraph>::vertex_descriptor u,
216
- DFSVisitor vis, VertexColorMap vertex_color, EdgeColorMap edge_color,
217
- TerminatorFunc func = TerminatorFunc())
218
- {
219
- detail::undir_dfv_impl_term(g, u, vis, vertex_color, edge_color, func);
220
- }
221
-
222
-
223
- } // namespace boost
224
-
225
-
226
- #endif