From fc53c8114237354ceea84fadca523e20647bff40 Mon Sep 17 00:00:00 2001 From: facontidavide Date: Fri, 9 May 2025 18:36:29 +0000 Subject: [PATCH 1/8] Initial gh-pages commit From b76061e3d1298d9f19845427522cbe4eb84466f2 Mon Sep 17 00:00:00 2001 From: facontidavide Date: Fri, 9 May 2025 18:36:29 +0000 Subject: [PATCH 2/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@3c62813b84fa9b26d8cb88dc38da17deb852f?= =?UTF-8?q?6a7=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .nojekyll | 0 annotated.html | 246 ++ annotated_dup.js | 125 + bc_s.png | Bin 0 -> 676 bytes bc_sd.png | Bin 0 -> 635 bytes bdwn.png | Bin 0 -> 147 bytes classes.html | 177 ++ closed.png | Bin 0 -> 132 bytes .../class_b_t_1_1_stateful_action_node.html | 492 ++++ d0/d1f/class_b_t_1_1_stateful_action_node.js | 8 + ...truct_b_t_1_1_protected_queue-members.html | 110 + ...rammar_1_1_expression_1_1math__prefix.html | 144 ++ ...truct_b_t_1_1_ast_1_1_expr_if-members.html | 115 + d0/d34/class_b_t_1_1_type_info.html | 158 ++ d0/d3a/class_b_t_1_1_any-members.html | 134 ++ ...ass_b_t_1_1_parallel_node__coll__graph.map | 6 + ...ass_b_t_1_1_parallel_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_parallel_node__coll__graph.png | Bin 0 -> 12430 bytes d0/d48/class_b_t_1_1_leaf_node-members.html | 163 ++ d0/d51/class_b_t_1_1_blackboard.html | 351 +++ d0/d51/class_b_t_1_1_blackboard.js | 8 + d0/d54/inverter__node_8h_source.html | 145 ++ d0/d55/bt__minitrace__logger_8h_source.html | 135 ++ ..._1has__static__method__provided_ports.html | 127 ++ d0/d59/struct_b_t_1_1_timestamp.html | 122 + d0/d5d/if__then__else__node_8h_source.html | 160 ++ d0/d64/class_b_t_1_1_json_exporter.html | 342 +++ d0/d64/class_b_t_1_1_json_exporter.js | 10 + d0/d88/retry__node_8h_source.html | 192 ++ ...lass_b_t_1_1_timeout_node__coll__graph.map | 5 + ...lass_b_t_1_1_timeout_node__coll__graph.md5 | 1 + ...lass_b_t_1_1_timeout_node__coll__graph.png | Bin 0 -> 7091 bytes ...lass_b_t_1_1_minitrace_logger-members.html | 123 + ..._t_1_1_grammar_1_1_expression-members.html | 111 + d0/d9c/class_b_t_1_1_always_failure_node.html | 333 +++ ...ass_b_t_1_1_sequence_node__coll__graph.map | 6 + ...ass_b_t_1_1_sequence_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_sequence_node__coll__graph.png | Bin 0 -> 12859 bytes ..._b_t_1_1_sync_action_node__coll__graph.map | 6 + ..._b_t_1_1_sync_action_node__coll__graph.md5 | 1 + ..._b_t_1_1_sync_action_node__coll__graph.png | Bin 0 -> 8867 bytes d0/dc6/sequence__node_8h_source.html | 162 ++ ...truct_b_t_1_1_node_config__coll__graph.map | 19 + ...truct_b_t_1_1_node_config__coll__graph.md5 | 1 + ...truct_b_t_1_1_node_config__coll__graph.png | Bin 0 -> 105518 bytes d0/dcf/class_b_t_1_1_delay_node-members.html | 173 ++ ...t_1_1_grammar_1_1_real__inherit__graph.map | 4 + ...t_1_1_grammar_1_1_real__inherit__graph.md5 | 1 + ...t_1_1_grammar_1_1_real__inherit__graph.png | Bin 0 -> 4502 bytes .../struct_b_t_1_1_ast_1_1_environment.html | 143 ++ ..._grammar_1_1_expression_1_1comparison.html | 173 ++ d0/df1/class_b_t_1_1_loop_node-members.html | 172 ++ ...ammar_1_1_boolean_literal__coll__graph.map | 4 + ...ammar_1_1_boolean_literal__coll__graph.md5 | 1 + ...ammar_1_1_boolean_literal__coll__graph.png | Bin 0 -> 5113 bytes ...ass_b_t_1_1_sub_tree_node__coll__graph.map | 5 + ...ass_b_t_1_1_sub_tree_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_sub_tree_node__coll__graph.png | Bin 0 -> 7257 bytes d1/d0e/bt__file__logger__v2_8h_source.html | 180 ++ ...t_1_1_set_blackboard_node__coll__graph.map | 7 + ...t_1_1_set_blackboard_node__coll__graph.md5 | 1 + ...t_1_1_set_blackboard_node__coll__graph.png | Bin 0 -> 11933 bytes ...ss_b_t_1_1_script_node__inherit__graph.map | 7 + ...ss_b_t_1_1_script_node__inherit__graph.md5 | 1 + ...ss_b_t_1_1_script_node__inherit__graph.png | Bin 0 -> 11488 bytes d1/d31/parallel__all__node_8h_source.html | 174 ++ ...ss_b_t_1_1_decorator_node__coll__graph.map | 4 + ...ss_b_t_1_1_decorator_node__coll__graph.md5 | 1 + ...ss_b_t_1_1_decorator_node__coll__graph.png | Bin 0 -> 4990 bytes ...lass_b_t_1_1_test_node__inherit__graph.map | 7 + ...lass_b_t_1_1_test_node__inherit__graph.md5 | 1 + ...lass_b_t_1_1_test_node__inherit__graph.png | Bin 0 -> 11284 bytes ..._b_t_1_1_stateful_action_node-members.html | 171 ++ d1/d4f/repeat__node_8h_source.html | 173 ++ ..._expression_1_1comparison__coll__graph.map | 4 + ..._expression_1_1comparison__coll__graph.md5 | 1 + ..._expression_1_1comparison__coll__graph.png | Bin 0 -> 6134 bytes d1/d52/class_b_t_1_1_std_cout_logger.html | 211 ++ ...lass_b_t_1_1_groot2_publisher-members.html | 127 ++ ...t_b_t_1_1_protected_queue__coll__graph.map | 4 + ...t_b_t_1_1_protected_queue__coll__graph.md5 | 1 + ...t_b_t_1_1_protected_queue__coll__graph.png | Bin 0 -> 4826 bytes ...lass_b_t_1_1_script_condition-members.html | 167 ++ d1/d73/class_b_t_1_1_signal.html | 137 ++ ...mar_1_1_string_literal__inherit__graph.map | 4 + ...mar_1_1_string_literal__inherit__graph.md5 | 1 + ...mar_1_1_string_literal__inherit__graph.png | Bin 0 -> 5353 bytes .../class_b_t_1_1_unset_blackboard_node.html | 340 +++ d1/d79/class_b_t_1_1_tree.html | 300 +++ d1/d79/class_b_t_1_1_tree.js | 9 + ...st_1_1_expr_binary_arithmetic-members.html | 127 ++ ...class_b_t_1_1_entry_updated_decorator.html | 351 +++ ..._grammar_1_1_any_value__inherit__graph.map | 4 + ..._grammar_1_1_any_value__inherit__graph.md5 | 1 + ..._grammar_1_1_any_value__inherit__graph.png | Bin 0 -> 5243 bytes ...afe_any_1_1_simple_string__coll__graph.map | 4 + ...afe_any_1_1_simple_string__coll__graph.md5 | 1 + ...afe_any_1_1_simple_string__coll__graph.png | Bin 0 -> 6284 bytes ...lass_b_t_1_1_tree_node__inherit__graph.map | 51 + ...lass_b_t_1_1_tree_node__inherit__graph.md5 | 1 + ...lass_b_t_1_1_tree_node__inherit__graph.png | Bin 0 -> 212810 bytes ..._b_t_1_1has__static__method__metadata.html | 127 ++ d1/da6/tree__node_8h_source.html | 780 +++++++ ..._t_1_1_retry_node_typo__inherit__graph.map | 6 + ..._t_1_1_retry_node_typo__inherit__graph.md5 | 1 + ..._t_1_1_retry_node_typo__inherit__graph.png | Bin 0 -> 8574 bytes ...ass_b_t_1_1_queue_size__inherit__graph.map | 7 + ...ass_b_t_1_1_queue_size__inherit__graph.md5 | 1 + ...ass_b_t_1_1_queue_size__inherit__graph.png | Bin 0 -> 11445 bytes d1/dbb/abstract__logger_8h_source.html | 208 ++ ..._1_1_if_then_else_node__inherit__graph.map | 5 + ..._1_1_if_then_else_node__inherit__graph.md5 | 1 + ..._1_1_if_then_else_node__inherit__graph.png | Bin 0 -> 5817 bytes ...grammar_1_1_expression_1_1conditional.html | 168 ++ ...td_1_1a54ce4b1df967e2f357835de76111d01.map | 4 + ...td_1_1a54ce4b1df967e2f357835de76111d01.md5 | 1 + ...td_1_1a54ce4b1df967e2f357835de76111d01.png | Bin 0 -> 13193 bytes d1/de2/class_b_t_1_1_leaf_node.html | 322 +++ d1/de7/class_b_t_1_1_decorator_node.html | 455 ++++ d1/de7/class_b_t_1_1_decorator_node.js | 7 + ..._1_1_precondition_node__inherit__graph.map | 5 + ..._1_1_precondition_node__inherit__graph.md5 | 1 + ..._1_1_precondition_node__inherit__graph.png | Bin 0 -> 6125 bytes ..._3_01s0a27870d8d352ab348a9b2d749bed9e1.map | 4 + ..._3_01s0a27870d8d352ab348a9b2d749bed9e1.md5 | 1 + ..._3_01s0a27870d8d352ab348a9b2d749bed9e1.png | Bin 0 -> 13729 bytes d1/dee/class_b_t_1_1_parallel_node.html | 408 ++++ d1/dee/class_b_t_1_1_parallel_node.js | 4 + d1/def/class_b_t_1_1_retry_node_typo.html | 355 +++ ...1_1_expression_1_1bit__prefix-members.html | 110 + ..._b_t_1_1_fallback_node__inherit__graph.map | 5 + ..._b_t_1_1_fallback_node__inherit__graph.md5 | 1 + ..._b_t_1_1_fallback_node__inherit__graph.png | Bin 0 -> 5889 bytes ...method__provided_ports__inherit__graph.map | 4 + ...method__provided_ports__inherit__graph.md5 | 1 + ...method__provided_ports__inherit__graph.png | Bin 0 -> 7447 bytes ..._t_1_1_force_success_node__coll__graph.map | 5 + ..._t_1_1_force_success_node__coll__graph.md5 | 1 + ..._t_1_1_force_success_node__coll__graph.png | Bin 0 -> 7517 bytes .../struct_b_t_1_1_stamped_value-members.html | 110 + ...t_1_1_behavior_tree_exception-members.html | 111 + ...ss_b_t_1_1_pop_from_queue__coll__graph.map | 7 + ...ss_b_t_1_1_pop_from_queue__coll__graph.md5 | 1 + ...ss_b_t_1_1_pop_from_queue__coll__graph.png | Bin 0 -> 11810 bytes ...ss_b_t_1_1_logic_error__inherit__graph.map | 5 + ...ss_b_t_1_1_logic_error__inherit__graph.md5 | 1 + ...ss_b_t_1_1_logic_error__inherit__graph.png | Bin 0 -> 6731 bytes ...ass_b_t_1_1_run_once_node__coll__graph.map | 5 + ...ass_b_t_1_1_run_once_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_run_once_node__coll__graph.png | Bin 0 -> 7405 bytes d2/d2b/class_b_t_1_1_tree_observer.html | 236 ++ d2/d2b/class_b_t_1_1_tree_observer.js | 4 + d2/d39/json__export_8h_source.html | 382 ++++ ...pression_1_1comparison__inherit__graph.map | 4 + ...pression_1_1comparison__inherit__graph.md5 | 1 + ...pression_1_1comparison__inherit__graph.png | Bin 0 -> 6134 bytes ...unning_until_failure_node__coll__graph.map | 5 + ...unning_until_failure_node__coll__graph.md5 | 1 + ...unning_until_failure_node__coll__graph.png | Bin 0 -> 8281 bytes ..._b_t_1_1_sequence_with_memory-members.html | 174 ++ .../class_b_t_1_1_pop_from_queue-members.html | 170 ++ d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html | 187 ++ ..._t_1_1_ast_1_1_expr_if__inherit__graph.map | 4 + ..._t_1_1_ast_1_1_expr_if__inherit__graph.md5 | 1 + ..._t_1_1_ast_1_1_expr_if__inherit__graph.png | Bin 0 -> 4312 bytes d2/d61/class_b_t_1_1_threaded_action.html | 398 ++++ d2/d61/class_b_t_1_1_threaded_action.js | 5 + d2/d62/class_b_t_1_1_timer_queue-members.html | 113 + ...t_1_1_always_failure_node__coll__graph.map | 7 + ...t_1_1_always_failure_node__coll__graph.md5 | 1 + ...t_1_1_always_failure_node__coll__graph.png | Bin 0 -> 12113 bytes ...grammar_1_1_expression__inherit__graph.map | 4 + ...grammar_1_1_expression__inherit__graph.md5 | 1 + ...grammar_1_1_expression__inherit__graph.png | Bin 0 -> 5332 bytes .../class_b_t_1_1_leaf_node__coll__graph.map | 4 + .../class_b_t_1_1_leaf_node__coll__graph.md5 | 1 + .../class_b_t_1_1_leaf_node__coll__graph.png | Bin 0 -> 3454 bytes d2/d7b/class_b_t_1_1_file_logger2.html | 326 +++ d2/d7b/class_b_t_1_1_file_logger2.js | 5 + ...expr_binary_arithmetic__inherit__graph.map | 4 + ...expr_binary_arithmetic__inherit__graph.md5 | 1 + ...expr_binary_arithmetic__inherit__graph.png | Bin 0 -> 5523 bytes d2/d7e/class_b_t_1_1_signal-members.html | 112 + ...1_1_unset_blackboard_node__coll__graph.map | 7 + ...1_1_unset_blackboard_node__coll__graph.md5 | 1 + ...1_1_unset_blackboard_node__coll__graph.png | Bin 0 -> 12199 bytes d2/d8d/namespace_b_t.html | 1704 ++++++++++++++ d2/d8d/namespace_b_t.js | 136 ++ ...1_grammar_1_1_expression_1_1math__sum.html | 173 ++ ...t_1_1_ast_1_1_environment__coll__graph.map | 9 + ...t_1_1_ast_1_1_environment__coll__graph.md5 | 1 + ...t_1_1_ast_1_1_environment__coll__graph.png | Bin 0 -> 19092 bytes d2/d9d/behavior__tree_8h_source.html | 221 ++ d2/da9/reactive__fallback_8h_source.html | 165 ++ d2/dae/timeout__node_8h_source.html | 195 ++ d2/db6/sleep__node_8h_source.html | 159 ++ ...atic__method__metadata__inherit__graph.map | 4 + ...atic__method__metadata__inherit__graph.md5 | 1 + ...atic__method__metadata__inherit__graph.png | Bin 0 -> 6722 bytes d2/dbf/timer__queue_8h_source.html | 382 ++++ d2/dc1/force__success__node_8h_source.html | 164 ++ ..._expression_1_1assignment__coll__graph.map | 4 + ..._expression_1_1assignment__coll__graph.md5 | 1 + ..._expression_1_1assignment__coll__graph.png | Bin 0 -> 6399 bytes d2/dc8/reactive__sequence_8h_source.html | 166 ++ d2/dd4/wakeup__signal_8hpp_source.html | 148 ++ ..._1_1_entry_updated_action__coll__graph.map | 7 + ..._1_1_entry_updated_action__coll__graph.md5 | 1 + ..._1_1_entry_updated_action__coll__graph.png | Bin 0 -> 11996 bytes d2/ddd/class_b_t_1_1_shared_library.html | 409 ++++ d2/ddd/class_b_t_1_1_shared_library.js | 16 + d2/ded/class_b_t_1_1_inverter_node.html | 343 +++ ...lass_b_t_1_1_action_node_base-members.html | 165 ++ ..._grammar_1_1_expression_1_1assignment.html | 174 ++ ...1_ast_1_1_expr_assignment__coll__graph.map | 5 + ...1_ast_1_1_expr_assignment__coll__graph.md5 | 1 + ...1_ast_1_1_expr_assignment__coll__graph.png | Bin 0 -> 12058 bytes .../class_b_t_1_1_queue_size__coll__graph.map | 7 + .../class_b_t_1_1_queue_size__coll__graph.md5 | 1 + .../class_b_t_1_1_queue_size__coll__graph.png | Bin 0 -> 11445 bytes d3/d02/class_b_t_1_1_parallel_all_node.html | 397 ++++ d3/d02/class_b_t_1_1_parallel_all_node.js | 4 + ...1_1_force_success_node__inherit__graph.map | 5 + ...1_1_force_success_node__inherit__graph.md5 | 1 + ...1_1_force_success_node__inherit__graph.png | Bin 0 -> 6402 bytes ..._b_t_1_1_minitrace_logger__coll__graph.map | 4 + ..._b_t_1_1_minitrace_logger__coll__graph.md5 | 1 + ..._b_t_1_1_minitrace_logger__coll__graph.png | Bin 0 -> 5383 bytes d3/d11/struct_b_t_1_1_timestamp-members.html | 110 + d3/d22/bt__cout__logger_8h_source.html | 141 ++ d3/d23/struct_b_t_1_1_tree_1_1_subtree.html | 150 ++ ...ss_b_t_1_1_switch_node__inherit__graph.map | 5 + ...ss_b_t_1_1_switch_node__inherit__graph.md5 | 1 + ...ss_b_t_1_1_switch_node__inherit__graph.png | Bin 0 -> 7971 bytes ..._1_monitor_1_1_request_header-members.html | 116 + d3/d2f/switch__node_8h_source.html | 279 +++ ...ruct_b_t_1_1_test_node_config-members.html | 114 + .../class_b_t_1_1_simple_decorator_node.html | 397 ++++ d3/d37/class_b_t_1_1_simple_decorator_node.js | 4 + d3/d42/class_b_t_1_1_tree_node-members.html | 165 ++ ..._1_grammar_1_1_expression_1_1bit__and.html | 171 ++ ...ression_1_1bit__prefix__inherit__graph.map | 4 + ...ression_1_1bit__prefix__inherit__graph.md5 | 1 + ...ression_1_1bit__prefix__inherit__graph.png | Bin 0 -> 5875 bytes .../class_b_t_1_1_control_node-members.html | 173 ++ d3/d60/platform_8hpp_source.html | 226 ++ ...b_t_1_1_condition_node__inherit__graph.map | 7 + ...b_t_1_1_condition_node__inherit__graph.md5 | 1 + ...b_t_1_1_condition_node__inherit__graph.png | Bin 0 -> 11410 bytes ...c__method__provided_ports__coll__graph.map | 4 + ...c__method__provided_ports__coll__graph.md5 | 1 + ...c__method__provided_ports__coll__graph.png | Bin 0 -> 7447 bytes d3/d86/script__node_8h_source.html | 188 ++ .../class_b_t_1_1scoped__demangled__name.html | 128 ++ d3/d96/bt__observer_8h_source.html | 185 ++ ...ntry_updated_decorator__inherit__graph.map | 5 + ...ntry_updated_decorator__inherit__graph.md5 | 1 + ...ntry_updated_decorator__inherit__graph.png | Bin 0 -> 6831 bytes .../class_b_t_1_1_sub_tree_node-members.html | 175 ++ d3/db1/decorator__node_8h_source.html | 188 ++ ...ruct_b_t_1_1_grammar_1_1_real-members.html | 110 + ...t_1_1_grammar_1_1_integer__coll__graph.map | 4 + ...t_1_1_grammar_1_1_integer__coll__graph.md5 | 1 + ...t_1_1_grammar_1_1_integer__coll__graph.png | Bin 0 -> 4750 bytes d3/dbc/fallback__node_8h_source.html | 160 ++ ..._b_t_1_1_status_change_logger-members.html | 121 + ...1_expression_1_1math__product-members.html | 110 + ...ass_b_t_1_1_consume_queue__coll__graph.map | 5 + ...ass_b_t_1_1_consume_queue__coll__graph.md5 | 1 + ...ass_b_t_1_1_consume_queue__coll__graph.png | Bin 0 -> 7812 bytes d3/de2/class_b_t_1_1_action_node_base.html | 361 +++ ..._t_1_1_force_failure_node__coll__graph.map | 5 + ..._t_1_1_force_failure_node__coll__graph.md5 | 1 + ..._t_1_1_force_failure_node__coll__graph.png | Bin 0 -> 7287 bytes d4/d03/exceptions_8h_source.html | 181 ++ ...1_manual_selector_node__inherit__graph.map | 5 + ...1_manual_selector_node__inherit__graph.md5 | 1 + ...1_manual_selector_node__inherit__graph.png | Bin 0 -> 6386 bytes ..._b_t_1_1_monitor_1_1_hook__coll__graph.map | 4 + ..._b_t_1_1_monitor_1_1_hook__coll__graph.md5 | 1 + ..._b_t_1_1_monitor_1_1_hook__coll__graph.png | Bin 0 -> 4196 bytes d4/d20/class_b_t_1_1_timeout_node.html | 356 +++ ...pression_1_1math__product__coll__graph.map | 4 + ...pression_1_1math__product__coll__graph.md5 | 1 + ...pression_1_1math__product__coll__graph.png | Bin 0 -> 6772 bytes ...ass_b_t_1_1_reactive_sequence-members.html | 173 ++ ...b_t_1_1_unset_blackboard_node-members.html | 169 ++ ...class_b_t_1_1_threaded_action-members.html | 168 ++ ..._1_grammar_1_1_integer__inherit__graph.map | 4 + ..._1_grammar_1_1_integer__inherit__graph.md5 | 1 + ..._1_grammar_1_1_integer__inherit__graph.png | Bin 0 -> 4750 bytes ...lass_b_t_1_1_file_logger2__coll__graph.map | 4 + ...lass_b_t_1_1_file_logger2__coll__graph.md5 | 1 + ...lass_b_t_1_1_file_logger2__coll__graph.png | Bin 0 -> 4823 bytes d4/d53/safe__any_8hpp_source.html | 648 ++++++ d4/d56/class_b_t_1_1_delay_node.html | 389 ++++ d4/d56/class_b_t_1_1_delay_node.js | 4 + ..._expr_unary_arithmetic__inherit__graph.map | 4 + ..._expr_unary_arithmetic__inherit__graph.md5 | 1 + ..._expr_unary_arithmetic__inherit__graph.png | Bin 0 -> 5682 bytes ...t_1_1_coro_action_node__inherit__graph.map | 6 + ...t_1_1_coro_action_node__inherit__graph.md5 | 1 + ...t_1_1_coro_action_node__inherit__graph.png | Bin 0 -> 8382 bytes ...ss_b_t_1_1_force_success_node-members.html | 170 ++ ..._simple_condition_node__inherit__graph.map | 6 + ..._simple_condition_node__inherit__graph.md5 | 1 + ..._simple_condition_node__inherit__graph.png | Bin 0 -> 8614 bytes ..._static__method__metadata__coll__graph.map | 4 + ..._static__method__metadata__coll__graph.md5 | 1 + ..._static__method__metadata__coll__graph.png | Bin 0 -> 6722 bytes ...b_t_1_1_reactive_sequence__coll__graph.map | 6 + ...b_t_1_1_reactive_sequence__coll__graph.md5 | 1 + ...b_t_1_1_reactive_sequence__coll__graph.png | Bin 0 -> 13165 bytes d4/d86/class_b_t_1_1_logic_error-members.html | 113 + d4/d8c/class_b_t_1_1_force_failure_node.html | 343 +++ d4/d98/class_b_t_1_1_locked_ptr.html | 162 ++ ...ss_b_t_1_1_repeat_node__inherit__graph.map | 5 + ...ss_b_t_1_1_repeat_node__inherit__graph.md5 | 1 + ...ss_b_t_1_1_repeat_node__inherit__graph.png | Bin 0 -> 6208 bytes ..._t_1_1_grammar_1_1_integer_1_1integer.html | 122 + d4/dac/script__condition_8h_source.html | 190 ++ ...t_1_1_groot2_publisher__inherit__graph.map | 4 + ...t_1_1_groot2_publisher__inherit__graph.md5 | 1 + ...t_1_1_groot2_publisher__inherit__graph.png | Bin 0 -> 5537 bytes ..._b_t_1_1details_1_1_semaphore-members.html | 112 + d4/dd1/locked__reference_8hpp_source.html | 219 ++ ...rammar_1_1_integer_1_1integer-members.html | 110 + ..._1_1_ast_1_1_expr_base__inherit__graph.map | 10 + ..._1_1_ast_1_1_expr_base__inherit__graph.md5 | 1 + ..._1_1_ast_1_1_expr_base__inherit__graph.png | Bin 0 -> 29771 bytes ...1_1_expr_unary_arithmetic__coll__graph.map | 5 + ...1_1_expr_unary_arithmetic__coll__graph.md5 | 1 + ...1_1_expr_unary_arithmetic__coll__graph.png | Bin 0 -> 11728 bytes .../class_b_t_1_1_sequence_node-members.html | 174 ++ ...b_t_1_1_grammar_1_1_any_value-members.html | 110 + d4/df1/struct_b_t_1_1_any_type_allowed.html | 109 + .../class_b_t_1_1_decorator_node-members.html | 170 ++ d5/d03/class_b_t_1_1_switch_node-members.html | 175 ++ ..._t_1_1_while_do_else_node__coll__graph.map | 6 + ..._t_1_1_while_do_else_node__coll__graph.md5 | 1 + ..._t_1_1_while_do_else_node__coll__graph.png | Bin 0 -> 13084 bytes .../class_b_t_1_1_parser__inherit__graph.map | 4 + .../class_b_t_1_1_parser__inherit__graph.md5 | 1 + .../class_b_t_1_1_parser__inherit__graph.png | Bin 0 -> 3380 bytes ...1_1_expression_1_1bit__or__coll__graph.map | 4 + ...1_1_expression_1_1bit__or__coll__graph.md5 | 1 + ...1_1_expression_1_1bit__or__coll__graph.png | Bin 0 -> 5977 bytes ...lass_b_t_1_1_coro_action_node-members.html | 172 ++ d5/d71/blackboard_8h_source.html | 482 ++++ ...s_b_t_1_1_always_failure_node-members.html | 168 ++ ...ression_1_1conditional__inherit__graph.map | 4 + ...ression_1_1conditional__inherit__graph.md5 | 1 + ...ression_1_1conditional__inherit__graph.png | Bin 0 -> 6745 bytes d5/d7a/bt__flatbuffer__helper_8h_source.html | 277 +++ d5/d7f/class_b_t_1_1_test_node.html | 492 ++++ d5/d7f/class_b_t_1_1_test_node.js | 6 + d5/d82/class_b_t_1_1_type_info-members.html | 118 + d5/d89/class_b_t_1_1_port_info-members.html | 126 ++ ...lass_b_t_1_1_sync_action_node-members.html | 168 ++ .../struct_b_t_1_1_node_config-members.html | 119 + ...ct_b_t_1_1_tree_node_manifest-members.html | 112 + ...ast_1_1_expr_unary_arithmetic-members.html | 118 + ...1_behavior_tree_exception__coll__graph.map | 4 + ...1_behavior_tree_exception__coll__graph.md5 | 1 + ...1_behavior_tree_exception__coll__graph.png | Bin 0 -> 4953 bytes ..._observer_1_1_node_statistics-members.html | 115 + ...1_1_expression_1_1conditional-members.html | 110 + d5/dd6/shared__library_8h_source.html | 266 +++ ...b_t_1_1_pop_from_queue__inherit__graph.map | 7 + ...b_t_1_1_pop_from_queue__inherit__graph.md5 | 1 + ...b_t_1_1_pop_from_queue__inherit__graph.png | Bin 0 -> 11810 bytes ...1_sequence_with_memory__inherit__graph.map | 5 + ...1_sequence_with_memory__inherit__graph.md5 | 1 + ...1_sequence_with_memory__inherit__graph.png | Bin 0 -> 6816 bytes ...3_01s8432b5486894de4ea455ef2f702667bd.html | 127 ++ ...1_grammar_1_1nested__expr__coll__graph.map | 4 + ...1_grammar_1_1nested__expr__coll__graph.md5 | 1 + ...1_grammar_1_1nested__expr__coll__graph.png | Bin 0 -> 5715 bytes ...truct_b_t_1_1_ast_1_1_expr_comparison.html | 203 ++ d6/d2e/updated__action_8h_source.html | 157 ++ ...1_1_simple_action_node__inherit__graph.map | 7 + ...1_1_simple_action_node__inherit__graph.md5 | 1 + ...1_1_simple_action_node__inherit__graph.png | Bin 0 -> 12031 bytes ...expression_1_1bit__prefix__coll__graph.map | 4 + ...expression_1_1bit__prefix__coll__graph.md5 | 1 + ...expression_1_1bit__prefix__coll__graph.png | Bin 0 -> 5875 bytes d6/d58/struct_b_t_1_1_test_node_config.html | 164 ++ d6/d58/struct_b_t_1_1_test_node_config.js | 9 + ...t_1_1_always_success_node__coll__graph.map | 7 + ...t_1_1_always_success_node__coll__graph.md5 | 1 + ...t_1_1_always_success_node__coll__graph.png | Bin 0 -> 12349 bytes d6/d6c/class_b_t_1_1_script_node-members.html | 169 ++ d6/d78/class_b_t_1_1_repeat_node.html | 357 +++ ...lass_b_t_1_1_port_info__inherit__graph.map | 4 + ...lass_b_t_1_1_port_info__inherit__graph.md5 | 1 + ...lass_b_t_1_1_port_info__inherit__graph.png | Bin 0 -> 3327 bytes ...rammar_1_1nested__expr__inherit__graph.map | 4 + ...rammar_1_1nested__expr__inherit__graph.md5 | 1 + ...rammar_1_1nested__expr__inherit__graph.png | Bin 0 -> 5715 bytes ..._1_grammar_1_1_expression__coll__graph.map | 4 + ..._1_grammar_1_1_expression__coll__graph.md5 | 1 + ..._1_grammar_1_1_expression__coll__graph.png | Bin 0 -> 5332 bytes ...lass_b_t_1_1_loop_node__inherit__graph.map | 5 + ...lass_b_t_1_1_loop_node__inherit__graph.md5 | 1 + ...lass_b_t_1_1_loop_node__inherit__graph.png | Bin 0 -> 6133 bytes d6/dae/run__once__node_8h_source.html | 197 ++ d6/db1/struct_b_t_1_1_grammar_1_1stmt.html | 153 ++ ...ass_b_t_1_1_fallback_node__coll__graph.map | 6 + ...ass_b_t_1_1_fallback_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_fallback_node__coll__graph.png | Bin 0 -> 12661 bytes d6/db6/class_b_t_1_1_repeat_node-members.html | 172 ++ .../class_b_t_1_1_inverter_node-members.html | 171 ++ d6/dc8/script__precondition_8h_source.html | 212 ++ ...s_b_t_1_1_threaded_action__coll__graph.map | 6 + ...s_b_t_1_1_threaded_action__coll__graph.md5 | 1 + ...s_b_t_1_1_threaded_action__coll__graph.png | Bin 0 -> 8351 bytes ..._1_1_expression_1_1assignment-members.html | 110 + d6/dcc/test__node_8h_source.html | 219 ++ .../class_b_t_1_1_behavior_tree_factory.html | 874 +++++++ d6/dcd/class_b_t_1_1_behavior_tree_factory.js | 28 + ..._simple_decorator_node__inherit__graph.map | 5 + ..._simple_decorator_node__inherit__graph.md5 | 1 + ..._simple_decorator_node__inherit__graph.png | Bin 0 -> 6817 bytes d6/ddb/class_b_t_1_1_control_node.html | 427 ++++ d6/ddb/class_b_t_1_1_control_node.js | 7 + ...1_1_boolean_literal_1_1_false-members.html | 110 + d6/dee/struct_b_t_1_1_protected_queue.html | 131 ++ d6/dfa/struct_b_t_1_1_stamped_value.html | 131 ++ ...s_b_t_1_1_file_logger2__inherit__graph.map | 4 + ...s_b_t_1_1_file_logger2__inherit__graph.md5 | 1 + ...s_b_t_1_1_file_logger2__inherit__graph.png | Bin 0 -> 4823 bytes ...1_status_change_logger__inherit__graph.map | 9 + ...1_status_change_logger__inherit__graph.md5 | 1 + ...1_status_change_logger__inherit__graph.png | Bin 0 -> 23083 bytes d7/d10/control__node_8h_source.html | 177 ++ ...1_entry_updated_action__inherit__graph.map | 7 + ...1_entry_updated_action__inherit__graph.md5 | 1 + ...1_entry_updated_action__inherit__graph.png | Bin 0 -> 11996 bytes ..._b_t_1_1_inverter_node__inherit__graph.map | 5 + ..._b_t_1_1_inverter_node__inherit__graph.md5 | 1 + ..._b_t_1_1_inverter_node__inherit__graph.png | Bin 0 -> 6043 bytes d7/d26/updated__decorator_8h_source.html | 162 ++ ...ss_b_t_1_1_condition_node__coll__graph.map | 5 + ...ss_b_t_1_1_condition_node__coll__graph.md5 | 1 + ...ss_b_t_1_1_condition_node__coll__graph.png | Bin 0 -> 5596 bytes d7/d33/class_b_t_1_1_tree__coll__graph.map | 14 + d7/d33/class_b_t_1_1_tree__coll__graph.md5 | 1 + d7/d33/class_b_t_1_1_tree__coll__graph.png | Bin 0 -> 53269 bytes d7/d3a/class_b_t_1_1_pop_from_queue.html | 371 +++ d7/d3a/class_b_t_1_1_pop_from_queue.js | 4 + d7/d3f/strcat_8hpp_source.html | 215 ++ d7/d4f/class_b_t_1_1_set_blackboard_node.html | 349 +++ d7/d54/class_b_t_1_1_while_do_else_node.html | 385 ++++ d7/d54/class_b_t_1_1_while_do_else_node.js | 4 + ..._1_1_ast_1_1_expr_name__inherit__graph.map | 4 + ..._1_1_ast_1_1_expr_name__inherit__graph.md5 | 1 + ..._1_1_ast_1_1_expr_name__inherit__graph.png | Bin 0 -> 4936 bytes .../struct_b_t_1_1_grammar_1_1_any_value.html | 164 ++ d7/d68/action__node_8h_source.html | 365 +++ ...t_1_1_action_node_base__inherit__graph.map | 20 + ...t_1_1_action_node_base__inherit__graph.md5 | 1 + ...t_1_1_action_node_base__inherit__graph.png | Bin 0 -> 64434 bytes ...struct_b_t_1_1_grammar_1_1_expression.html | 243 ++ .../struct_b_t_1_1_grammar_1_1_expression.js | 15 + d7/d91/struct_b_t_1_1_grammar_1_1_name.html | 146 ++ ...ing_until_failure_node__inherit__graph.map | 5 + ...ing_until_failure_node__inherit__graph.md5 | 1 + ...ing_until_failure_node__inherit__graph.png | Bin 0 -> 7153 bytes ...1_1_tree_observer_1_1_node_statistics.html | 137 ++ ..._expression_1_1logical__inherit__graph.map | 4 + ..._expression_1_1logical__inherit__graph.md5 | 1 + ..._expression_1_1logical__inherit__graph.png | Bin 0 -> 6213 bytes d7/da7/class_b_t_1_1_simple_action_node.html | 390 ++++ d7/da7/class_b_t_1_1_simple_action_node.js | 4 + d7/db8/class_b_t_1_1_force_success_node.html | 343 +++ ...ssion_1_1math__product__inherit__graph.map | 4 + ...ssion_1_1math__product__inherit__graph.md5 | 1 + ...ssion_1_1math__product__inherit__graph.png | Bin 0 -> 6772 bytes d7/dc2/class_b_t_1_1_retry_node-members.html | 173 ++ d7/dd5/class_b_t_1_1_precondition_node.html | 343 +++ ...1_1_while_do_else_node__inherit__graph.map | 5 + ...1_1_while_do_else_node__inherit__graph.md5 | 1 + ...1_1_while_do_else_node__inherit__graph.png | Bin 0 -> 6368 bytes ...t_1_1_entry_updated_decorator-members.html | 171 ++ d7/dee/class_b_t_1_1_test_node-members.html | 181 ++ d7/df1/delay__node_8h_source.html | 180 ++ d7/df4/class_b_t_1_1_any.html | 194 ++ ...r_1_1_expression_1_1expected__operand.html | 119 + d8/d05/class_b_t_1_1_x_m_l_parser.html | 363 +++ d8/d08/class_b_t_1_1_if_then_else_node.html | 386 ++++ d8/d08/class_b_t_1_1_if_then_else_node.js | 4 + ..._1_expr_binary_arithmetic__coll__graph.map | 5 + ..._1_expr_binary_arithmetic__coll__graph.md5 | 1 + ..._1_expr_binary_arithmetic__coll__graph.png | Bin 0 -> 12472 bytes d8/d1a/groot2__publisher_8h_source.html | 191 ++ ...s_b_t_1_1_timeout_node__inherit__graph.map | 5 + ...s_b_t_1_1_timeout_node__inherit__graph.md5 | 1 + ...s_b_t_1_1_timeout_node__inherit__graph.png | Bin 0 -> 6044 bytes ...b_t_1_1_behavior_tree_factory-members.html | 143 ++ ...mar_1_1_expression_1_1bit__or-members.html | 110 + ..._3_01s42c8177728f1911e56c4bf0046fadf9d.map | 4 + ..._3_01s42c8177728f1911e56c4bf0046fadf9d.md5 | 1 + ..._3_01s42c8177728f1911e56c4bf0046fadf9d.png | Bin 0 -> 13729 bytes ..._1_integer_1_1invalid__suffix-members.html | 109 + ...s_b_t_1_1_set_blackboard_node-members.html | 169 ++ d8/d39/signal_8h_source.html | 157 ++ ...s_b_t_1_1_std_cout_logger__coll__graph.map | 4 + ...s_b_t_1_1_std_cout_logger__coll__graph.md5 | 1 + ...s_b_t_1_1_std_cout_logger__coll__graph.png | Bin 0 -> 5386 bytes ..._t_1_1_simple_action_node__coll__graph.map | 7 + ..._t_1_1_simple_action_node__coll__graph.md5 | 1 + ..._t_1_1_simple_action_node__coll__graph.png | Bin 0 -> 12031 bytes d8/d5e/class_b_t_1_1_port_info.html | 193 ++ ...nning__until__failure__node_8h_source.html | 176 ++ ..._1__xid__start__character__coll__graph.map | 4 + ..._1__xid__start__character__coll__graph.md5 | 1 + ..._1__xid__start__character__coll__graph.png | Bin 0 -> 7231 bytes ...b_t_1_1_decorator_node__inherit__graph.map | 20 + ...b_t_1_1_decorator_node__inherit__graph.md5 | 1 + ...b_t_1_1_decorator_node__inherit__graph.png | Bin 0 -> 80862 bytes ...b_t_1_1_precondition_node__coll__graph.map | 5 + ...b_t_1_1_precondition_node__coll__graph.md5 | 1 + ...b_t_1_1_precondition_node__coll__graph.png | Bin 0 -> 7284 bytes ..._b_t_1_1_blackboard_1_1_entry-members.html | 116 + ...t_b_t_1_1_grammar_1_1_boolean_literal.html | 148 ++ ...uct_b_t_1_1_grammar_1_1_boolean_literal.js | 5 + ..._1_1_ast_1_1_expr_literal__coll__graph.map | 5 + ..._1_1_ast_1_1_expr_literal__coll__graph.md5 | 1 + ..._1_1_ast_1_1_expr_literal__coll__graph.png | Bin 0 -> 7445 bytes ..._1_expression_1_1bit__and__coll__graph.map | 4 + ..._1_expression_1_1bit__and__coll__graph.md5 | 1 + ..._1_expression_1_1bit__and__coll__graph.png | Bin 0 -> 5908 bytes ...ass_b_t_1_1_tree_observer__coll__graph.map | 4 + ...ass_b_t_1_1_tree_observer__coll__graph.md5 | 1 + ...ass_b_t_1_1_tree_observer__coll__graph.png | Bin 0 -> 4943 bytes d8/d9e/loop__node_8h_source.html | 290 +++ ...pression_1_1expected__operand-members.html | 109 + ...b_t_1_1_simple_condition_node-members.html | 170 ++ d8/dce/class_b_t_1_1_parser-members.html | 119 + d8/dd4/class_b_t_1_1_coro_action_node.html | 415 ++++ d8/dd4/class_b_t_1_1_coro_action_node.js | 6 + ...1_1_expression_1_1logical__coll__graph.map | 4 + ...1_1_expression_1_1logical__coll__graph.md5 | 1 + ...1_1_expression_1_1logical__coll__graph.png | Bin 0 -> 6213 bytes ...class_b_t_1_1_logic_error__coll__graph.map | 5 + ...class_b_t_1_1_logic_error__coll__graph.md5 | 1 + ...class_b_t_1_1_logic_error__coll__graph.png | Bin 0 -> 6731 bytes ...b_t_1_1_simple_decorator_node-members.html | 174 ++ .../struct_b_t_1_1_blackboard_1_1_entry.html | 155 ++ ..._expression_1_1bit__or__inherit__graph.map | 4 + ..._expression_1_1bit__or__inherit__graph.md5 | 1 + ..._expression_1_1bit__or__inherit__graph.png | Bin 0 -> 5977 bytes d8/dff/consume__queue_8h_source.html | 224 ++ d9/d04/any__types_8hpp_source.html | 281 +++ ...grammar_1_1_boolean_literal_1_1_false.html | 122 + ...ruct_b_t_1_1_grammar_1_1_name-members.html | 110 + ..._t_1_1_std_cout_logger__inherit__graph.map | 4 + ..._t_1_1_std_cout_logger__inherit__graph.md5 | 1 + ..._t_1_1_std_cout_logger__inherit__graph.png | Bin 0 -> 5386 bytes ...ass_b_t_1_1_delay_node__inherit__graph.map | 5 + ...ass_b_t_1_1_delay_node__inherit__graph.md5 | 1 + ...ass_b_t_1_1_delay_node__inherit__graph.png | Bin 0 -> 6197 bytes ...t_1_1_ast_1_1_expr_assignment-members.html | 123 + ...ass_b_t_1_1_sqlite_logger__coll__graph.map | 4 + ...ass_b_t_1_1_sqlite_logger__coll__graph.md5 | 1 + ...ass_b_t_1_1_sqlite_logger__coll__graph.png | Bin 0 -> 5138 bytes .../class_b_t_1_1details_1_1_semaphore.html | 129 ++ d9/d33/class_b_t_1_1_sleep_node.html | 447 ++++ d9/d33/class_b_t_1_1_sleep_node.js | 6 + ..._t_1_1scoped__demangled__name-members.html | 113 + ..._b_t_1_1_script_condition__coll__graph.map | 6 + ..._b_t_1_1_script_condition__coll__graph.md5 | 1 + ..._b_t_1_1_script_condition__coll__graph.png | Bin 0 -> 8164 bytes ...st_1_1_expr_comparison__inherit__graph.map | 4 + ...st_1_1_expr_comparison__inherit__graph.md5 | 1 + ...st_1_1_expr_comparison__inherit__graph.png | Bin 0 -> 5209 bytes ..._b_t_1_1_grammar_1_1_real__coll__graph.map | 4 + ..._b_t_1_1_grammar_1_1_real__coll__graph.md5 | 1 + ..._b_t_1_1_grammar_1_1_real__coll__graph.png | Bin 0 -> 4502 bytes .../class_b_t_1_1_run_once_node-members.html | 171 ++ ..._b_t_1_1_tree_observer__inherit__graph.map | 4 + ..._b_t_1_1_tree_observer__inherit__graph.md5 | 1 + ..._b_t_1_1_tree_observer__inherit__graph.png | Bin 0 -> 4943 bytes d9/d8c/class_b_t_1_1_queue_size.html | 377 ++++ d9/d8c/class_b_t_1_1_queue_size.js | 4 + d9/d95/class_b_t_1_1_locked_ptr-members.html | 122 + ...ss_b_t_1_1_while_do_else_node-members.html | 174 ++ ...sion_1_1string__concat__inherit__graph.map | 4 + ...sion_1_1string__concat__inherit__graph.md5 | 1 + ...sion_1_1string__concat__inherit__graph.png | Bin 0 -> 6700 bytes ..._b_t_1_1_parallel_node__inherit__graph.map | 5 + ..._b_t_1_1_parallel_node__inherit__graph.md5 | 1 + ..._b_t_1_1_parallel_node__inherit__graph.png | Bin 0 -> 5657 bytes ..._b_t_1_1_test_node_config__coll__graph.map | 5 + ..._b_t_1_1_test_node_config__coll__graph.md5 | 1 + ..._b_t_1_1_test_node_config__coll__graph.png | Bin 0 -> 9485 bytes .../class_b_t_1_1_json_exporter-members.html | 118 + ...t_b_t_1_1_grammar_1_1_integer-members.html | 110 + ..._1_1_reactive_sequence__inherit__graph.map | 5 + ..._1_1_reactive_sequence__inherit__graph.md5 | 1 + ..._1_1_reactive_sequence__inherit__graph.png | Bin 0 -> 6446 bytes .../class_b_t_1_1_status_change_logger.html | 166 ++ ...xpression_1_1math__sum__inherit__graph.map | 4 + ...xpression_1_1math__sum__inherit__graph.md5 | 1 + ...xpression_1_1math__sum__inherit__graph.png | Bin 0 -> 6278 bytes d9/ddd/class_b_t_1_1_sequence_node.html | 386 ++++ d9/ddd/class_b_t_1_1_sequence_node.js | 4 + ..._1_1_reactive_fallback__inherit__graph.map | 5 + ..._1_1_reactive_fallback__inherit__graph.md5 | 1 + ..._1_1_reactive_fallback__inherit__graph.png | Bin 0 -> 6002 bytes ...ehavior_tree_exception__inherit__graph.map | 6 + ...ehavior_tree_exception__inherit__graph.md5 | 1 + ...ehavior_tree_exception__inherit__graph.png | Bin 0 -> 9762 bytes ..._b_t_1_1_ast_1_1_expr_literal-members.html | 113 + ...b_t_1_1_reactive_fallback__coll__graph.map | 6 + ...b_t_1_1_reactive_fallback__coll__graph.md5 | 1 + ...b_t_1_1_reactive_fallback__coll__graph.png | Bin 0 -> 12715 bytes ...1_ast_1_1_expr_comparison__coll__graph.map | 7 + ...1_ast_1_1_expr_comparison__coll__graph.md5 | 1 + ...1_ast_1_1_expr_comparison__coll__graph.png | Bin 0 -> 20951 bytes ...t_1_1_ast_1_1_expr_comparison-members.html | 121 + da/d1e/basic__types_8h_source.html | 761 +++++++ ...ar_1_1_expression_1_1bit__and-members.html | 110 + ...rammar_1_1_integer_1_1invalid__suffix.html | 119 + da/d26/class_b_t_1_1_script_condition.html | 333 +++ ..._t_1_1_ast_1_1_expr_binary_arithmetic.html | 212 ++ da/d2f/class_b_t_1_1_wake_up_signal.html | 149 ++ da/d2f/class_b_t_1_1_wake_up_signal.js | 4 + ...s_b_t_1_1_control_node__inherit__graph.map | 15 + ...s_b_t_1_1_control_node__inherit__graph.md5 | 1 + ...s_b_t_1_1_control_node__inherit__graph.png | Bin 0 -> 50608 bytes da/d35/class_b_t_1_1_runtime_error.html | 154 ++ ...1_ast_1_1_expr_literal__inherit__graph.map | 4 + ...1_ast_1_1_expr_literal__inherit__graph.md5 | 1 + ...1_ast_1_1_expr_literal__inherit__graph.png | Bin 0 -> 4740 bytes ...ass_b_t_1_1_sleep_node__inherit__graph.map | 7 + ...ass_b_t_1_1_sleep_node__inherit__graph.md5 | 1 + ...ass_b_t_1_1_sleep_node__inherit__graph.png | Bin 0 -> 11479 bytes da/d52/condition__node_8h_source.html | 185 ++ ...uct_b_t_1_1_ast_1_1_expr_name-members.html | 113 + da/d61/class_b_t_1_1_tree_node.html | 922 ++++++++ da/d61/class_b_t_1_1_tree_node.js | 25 + .../class_b_t_1_1_test_node__coll__graph.map | 12 + .../class_b_t_1_1_test_node__coll__graph.md5 | 1 + .../class_b_t_1_1_test_node__coll__graph.png | Bin 0 -> 30332 bytes da/d65/set__blackboard__node_8h_source.html | 232 ++ da/d67/class_b_t_1_1_blackboard-members.html | 136 ++ da/d6d/subtree__node_8h_source.html | 196 ++ da/d73/class_b_t_1_1_sync_action_node.html | 398 ++++ da/d73/class_b_t_1_1_sync_action_node.js | 5 + da/d75/bt__sqlite__logger_8h_source.html | 218 ++ da/d76/manual__node_8h_source.html | 171 ++ ...1_1_grammar_1_1_any_value__coll__graph.map | 4 + ...1_1_grammar_1_1_any_value__coll__graph.md5 | 1 + ...1_1_grammar_1_1_any_value__coll__graph.png | Bin 0 -> 5243 bytes ...uct_b_t_1_1_stamped_value__coll__graph.map | 4 + ...uct_b_t_1_1_stamped_value__coll__graph.md5 | 1 + ...uct_b_t_1_1_stamped_value__coll__graph.png | Bin 0 -> 5509 bytes ...b_t_1_1_if_then_else_node__coll__graph.map | 6 + ...b_t_1_1_if_then_else_node__coll__graph.md5 | 1 + ...b_t_1_1_if_then_else_node__coll__graph.png | Bin 0 -> 12575 bytes .../class_b_t_1_1_parallel_node-members.html | 180 ++ ...1_1_grammar_1_1_expression_1_1bit__or.html | 172 ++ .../class_b_t_1_1_x_m_l_parser-members.html | 125 + ...ss_safe_any_1_1_simple_string-members.html | 132 ++ ..._b_t_1_1_sequence_node__inherit__graph.map | 5 + ..._b_t_1_1_sequence_node__inherit__graph.md5 | 1 + ..._b_t_1_1_sequence_node__inherit__graph.png | Bin 0 -> 6151 bytes ...ar_1_1__xid__start__character-members.html | 112 + .../class_b_t_1_1_consume_queue-members.html | 172 ++ ..._1_1_manual_selector_node__coll__graph.map | 6 + ..._1_1_manual_selector_node__coll__graph.md5 | 1 + ..._1_1_manual_selector_node__coll__graph.png | Bin 0 -> 13171 bytes ...class_b_t_1_1_retry_node_typo-members.html | 176 ++ da/df5/class_b_t_1_1_groot2_publisher.html | 222 ++ da/df5/class_b_t_1_1_groot2_publisher.js | 4 + ..._1_1_blackboard_1_1_entry__coll__graph.map | 6 + ..._1_1_blackboard_1_1_entry__coll__graph.md5 | 1 + ..._1_1_blackboard_1_1_entry__coll__graph.png | Bin 0 -> 10297 bytes db/d0e/force__failure__node_8h_source.html | 164 ++ db/d0f/class_b_t_1_1_script_node.html | 336 +++ db/d10/always__failure__node_8h_source.html | 146 ++ ...t_1_1_sync_action_node__inherit__graph.map | 15 + ...t_1_1_sync_action_node__inherit__graph.md5 | 1 + ...t_1_1_sync_action_node__inherit__graph.png | Bin 0 -> 47678 bytes ...1_expression_1_1math__sum__coll__graph.map | 4 + ...1_expression_1_1math__sum__coll__graph.md5 | 1 + ...1_expression_1_1math__sum__coll__graph.png | Bin 0 -> 6278 bytes ..._b_t_1_1_groot2_publisher__coll__graph.map | 4 + ..._b_t_1_1_groot2_publisher__coll__graph.md5 | 1 + ..._b_t_1_1_groot2_publisher__coll__graph.png | Bin 0 -> 5537 bytes db/d57/demangle__util_8h_source.html | 233 ++ ...ass_b_t_1_1_if_then_else_node-members.html | 174 ++ db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html | 192 ++ db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html | 141 ++ ..._1_1_monitor_1_1_reply_header-members.html | 112 + ...uct_b_t_1_1_ast_1_1_expr_base-members.html | 111 + ...truct_b_t_1_1_ast_1_1_expr_assignment.html | 207 ++ db/d7e/leaf__node_8h_source.html | 143 ++ db/d81/bt__factory_8h_source.html | 708 ++++++ db/d84/pop__from__queue_8hpp_source.html | 259 +++ db/d85/bt__parser_8h_source.html | 162 ++ ...1_file_logger2_1_1_transition-members.html | 111 + ...xpression_1_1math__prefix__coll__graph.map | 4 + ...xpression_1_1math__prefix__coll__graph.md5 | 1 + ...xpression_1_1math__prefix__coll__graph.png | Bin 0 -> 6432 bytes ..._unset_blackboard_node__inherit__graph.map | 7 + ..._unset_blackboard_node__inherit__graph.md5 | 1 + ..._unset_blackboard_node__inherit__graph.png | Bin 0 -> 12199 bytes .../class_b_t_1_1_condition_node-members.html | 166 ++ ...b_t_1_1_ast_1_1_expr_name__coll__graph.map | 6 + ...b_t_1_1_ast_1_1_expr_name__coll__graph.md5 | 1 + ...b_t_1_1_ast_1_1_expr_name__coll__graph.png | Bin 0 -> 11547 bytes ...t_b_t_1_1_ast_1_1_expr_if__coll__graph.map | 5 + ...t_b_t_1_1_ast_1_1_expr_if__coll__graph.md5 | 1 + ...t_b_t_1_1_ast_1_1_expr_if__coll__graph.png | Bin 0 -> 12039 bytes ...1_grammar_1_1_real_1_1invalid__suffix.html | 119 + ..._b_t_1_1_sub_tree_node__inherit__graph.map | 5 + ..._b_t_1_1_sub_tree_node__inherit__graph.md5 | 1 + ..._b_t_1_1_sub_tree_node__inherit__graph.png | Bin 0 -> 6193 bytes ..._1_expression_1_1math__prefix-members.html | 110 + ..._1_grammar_1_1_string_literal-members.html | 110 + dc/d04/class_b_t_1_1_reactive_fallback.html | 391 ++++ ...ct_b_t_1_1_monitor_1_1_request_header.html | 145 ++ .../class_b_t_1_1_manual_selector_node.html | 388 ++++ dc/d0b/class_b_t_1_1_manual_selector_node.js | 4 + ...d_1_1065d166f8cc1b3c83dbdb1c2230484f1.html | 127 ++ dc/d13/struct_b_t_1_1_grammar_1_1_real.html | 206 ++ dc/d13/struct_b_t_1_1_grammar_1_1_real.js | 4 + ...t_1_1_script_condition__inherit__graph.map | 6 + ...t_1_1_script_condition__inherit__graph.md5 | 1 + ...t_1_1_script_condition__inherit__graph.png | Bin 0 -> 8164 bytes ...ression_1_1string__concat__coll__graph.map | 4 + ...ression_1_1string__concat__coll__graph.md5 | 1 + ...ression_1_1string__concat__coll__graph.png | Bin 0 -> 6700 bytes .../class_b_t_1_1_port_info__coll__graph.map | 4 + .../class_b_t_1_1_port_info__coll__graph.md5 | 1 + .../class_b_t_1_1_port_info__coll__graph.png | Bin 0 -> 3327 bytes dc/d26/struct_b_t_1_1_node_config.html | 170 ++ dc/d27/unset__blackboard__node_8h_source.html | 159 ++ ..._1_always_success_node__inherit__graph.map | 7 + ..._1_always_success_node__inherit__graph.md5 | 1 + ..._1_always_success_node__inherit__graph.png | Bin 0 -> 12349 bytes .../class_b_t_1_1_timeout_node-members.html | 172 ++ .../class_b_t_1_1_simple_condition_node.html | 380 ++++ dc/d49/class_b_t_1_1_simple_condition_node.js | 4 + dc/d4e/script__parser_8hpp_source.html | 160 ++ dc/d4f/class_b_t_1_1_sleep_node-members.html | 174 ++ ...truct_b_t_1_1_grammar_1_1stmt-members.html | 111 + ..._t_1_1_tree_node_manifest__coll__graph.map | 9 + ..._t_1_1_tree_node_manifest__coll__graph.md5 | 1 + ..._t_1_1_tree_node_manifest__coll__graph.png | Bin 0 -> 29229 bytes ...t_b_t_1_1_file_logger2_1_1_transition.html | 125 + dc/d6c/struct_b_t_1_1_tree_node_manifest.html | 149 ++ dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html | 167 ++ ...ruct_b_t_1_1_monitor_1_1_reply_header.html | 139 ++ .../struct_b_t_1_1_grammar_1_1_integer.html | 180 ++ dc/d75/struct_b_t_1_1_grammar_1_1_integer.js | 5 + ..._b_t_1_1_tree_1_1_subtree__coll__graph.map | 10 + ..._b_t_1_1_tree_1_1_subtree__coll__graph.md5 | 1 + ..._b_t_1_1_tree_1_1_subtree__coll__graph.png | Bin 0 -> 23852 bytes .../class_b_t_1_1_wake_up_signal-members.html | 110 + dc/da6/class_b_t_1_1_fallback_node.html | 386 ++++ dc/da6/class_b_t_1_1_fallback_node.js | 4 + dc/dae/class_b_t_1_1_switch_node.html | 383 ++++ dc/dae/class_b_t_1_1_switch_node.js | 4 + ...b_t_1_1_parallel_all_node__coll__graph.map | 6 + ...b_t_1_1_parallel_all_node__coll__graph.md5 | 1 + ...b_t_1_1_parallel_all_node__coll__graph.png | Bin 0 -> 12596 bytes ...1_1_simple_condition_node__coll__graph.map | 6 + ...1_1_simple_condition_node__coll__graph.md5 | 1 + ...1_1_simple_condition_node__coll__graph.png | Bin 0 -> 8614 bytes ...grammar_1_1_expression_1_1bit__prefix.html | 173 ++ dc/dfc/class_b_t_1_1_condition_node.html | 371 +++ dc/dfc/class_b_t_1_1_condition_node.js | 4 + ...class_b_t_1_1_script_node__coll__graph.map | 7 + ...class_b_t_1_1_script_node__coll__graph.md5 | 1 + ...class_b_t_1_1_script_node__coll__graph.png | Bin 0 -> 11488 bytes ..._b_t_1_1_manual_selector_node-members.html | 175 ++ ...expression_1_1bit__and__inherit__graph.map | 4 + ...expression_1_1bit__and__inherit__graph.md5 | 1 + ...expression_1_1bit__and__inherit__graph.png | Bin 0 -> 5908 bytes .../class_b_t_1_1_runtime_error-members.html | 113 + ...ep_running_until_failure_node-members.html | 170 ++ ...lass_b_t_1_1_type_info__inherit__graph.map | 4 + ...lass_b_t_1_1_type_info__inherit__graph.md5 | 1 + ...lass_b_t_1_1_type_info__inherit__graph.png | Bin 0 -> 3357 bytes dd/d31/class_b_t_1_1_tree-members.html | 128 ++ dd/d32/class_b_t_1_1_loop_node.html | 388 ++++ dd/d32/class_b_t_1_1_loop_node.js | 4 + ..._1_set_blackboard_node__inherit__graph.map | 7 + ..._1_set_blackboard_node__inherit__graph.md5 | 1 + ..._1_set_blackboard_node__inherit__graph.png | Bin 0 -> 11933 bytes ...ass_b_t_1_1_runtime_error__coll__graph.map | 5 + ...ass_b_t_1_1_runtime_error__coll__graph.md5 | 1 + ...ass_b_t_1_1_runtime_error__coll__graph.png | Bin 0 -> 7003 bytes dd/d3d/simple__string_8hpp_source.html | 298 +++ ..._b_t_1_1_sqlite_logger__inherit__graph.map | 4 + ..._b_t_1_1_sqlite_logger__inherit__graph.md5 | 1 + ..._b_t_1_1_sqlite_logger__inherit__graph.png | Bin 0 -> 5138 bytes dd/d5c/xml__parsing_8h_source.html | 201 ++ .../class_b_t_1_1_loop_node__coll__graph.map | 5 + .../class_b_t_1_1_loop_node__coll__graph.md5 | 1 + .../class_b_t_1_1_loop_node__coll__graph.png | Bin 0 -> 7297 bytes ...s_b_t_1_1_retry_node_typo__coll__graph.map | 6 + ...s_b_t_1_1_retry_node_typo__coll__graph.md5 | 1 + ...s_b_t_1_1_retry_node_typo__coll__graph.png | Bin 0 -> 9793 bytes ...class_b_t_1_1_switch_node__coll__graph.map | 6 + ...class_b_t_1_1_switch_node__coll__graph.md5 | 1 + ...class_b_t_1_1_switch_node__coll__graph.png | Bin 0 -> 14738 bytes .../class_b_t_1_1_fallback_node-members.html | 174 ++ ...pression_1_1assignment__inherit__graph.map | 4 + ...pression_1_1assignment__inherit__graph.md5 | 1 + ...pression_1_1assignment__inherit__graph.png | Bin 0 -> 6399 bytes ...ass_b_t_1_1_retry_node__inherit__graph.map | 6 + ...ass_b_t_1_1_retry_node__inherit__graph.md5 | 1 + ...ass_b_t_1_1_retry_node__inherit__graph.png | Bin 0 -> 8591 bytes ...ss_b_t_1_1_simple_action_node-members.html | 172 ++ ..._1_1_expression_1_1comparison-members.html | 110 + dd/dae/parallel__node_8h_source.html | 196 ++ ..._1_1_sequence_with_memory__coll__graph.map | 6 + ..._1_1_sequence_with_memory__coll__graph.md5 | 1 + ..._1_1_sequence_with_memory__coll__graph.png | Bin 0 -> 13576 bytes ...1_stateful_action_node__inherit__graph.map | 8 + ...1_stateful_action_node__inherit__graph.md5 | 1 + ...1_stateful_action_node__inherit__graph.png | Bin 0 -> 14491 bytes dd/dbd/class_b_t_1_1_run_once_node.html | 355 +++ dd/dc2/always__success__node_8h_source.html | 146 ++ ...rammar_1_1_string_literal__coll__graph.map | 4 + ...rammar_1_1_string_literal__coll__graph.md5 | 1 + ...rammar_1_1_string_literal__coll__graph.png | Bin 0 -> 5353 bytes dd/dcd/operators_8hpp_source.html | 1021 +++++++++ ..._b_t_1_1_action_node_base__coll__graph.map | 5 + ..._b_t_1_1_action_node_base__coll__graph.md5 | 1 + ..._b_t_1_1_action_node_base__coll__graph.png | Bin 0 -> 6056 bytes dd/dce/class_b_t_1_1_always_success_node.html | 333 +++ ...lass_b_t_1_1_leaf_node__inherit__graph.map | 23 + ...lass_b_t_1_1_leaf_node__inherit__graph.md5 | 1 + ...lass_b_t_1_1_leaf_node__inherit__graph.png | Bin 0 -> 71758 bytes .../struct_b_t_1_1_ast_1_1_expr_literal.html | 186 ++ ..._1_1_parallel_all_node__inherit__graph.map | 5 + ..._1_1_parallel_all_node__inherit__graph.md5 | 1 + ..._1_1_parallel_all_node__inherit__graph.png | Bin 0 -> 5843 bytes dd/de4/class_b_t_1_1_retry_node.html | 392 ++++ dd/de4/class_b_t_1_1_retry_node.js | 4 + ..._b_t_1_1_runtime_error__inherit__graph.map | 5 + ..._b_t_1_1_runtime_error__inherit__graph.md5 | 1 + ..._b_t_1_1_runtime_error__inherit__graph.png | Bin 0 -> 7003 bytes .../class_b_t_1_1_sqlite_logger-members.html | 126 ++ ..._xid__start__character__inherit__graph.map | 4 + ..._xid__start__character__inherit__graph.md5 | 1 + ..._xid__start__character__inherit__graph.png | Bin 0 -> 7231 bytes ...t_1_1_keep_running_until_failure_node.html | 343 +++ ...lass_b_t_1_1_control_node__coll__graph.map | 5 + ...lass_b_t_1_1_control_node__coll__graph.md5 | 1 + ...lass_b_t_1_1_control_node__coll__graph.png | Bin 0 -> 10413 bytes ...ruct_b_t_1_1_tree_1_1_subtree-members.html | 113 + ...r_1_1_expression_1_1math__sum-members.html | 110 + de/d34/class_safe_any_1_1_simple_string.html | 183 ++ ...class_b_t_1_1_std_cout_logger-members.html | 122 + .../class_b_t_1_1_shared_library-members.html | 123 + de/d4f/class_b_t_1_1_minitrace_logger.html | 256 +++ .../class_b_t_1_1_retry_node__coll__graph.map | 5 + .../class_b_t_1_1_retry_node__coll__graph.md5 | 1 + .../class_b_t_1_1_retry_node__coll__graph.png | Bin 0 -> 7191 bytes .../class_b_t_1_1_sequence_with_memory.html | 386 ++++ de/d69/class_b_t_1_1_sequence_with_memory.js | 4 + ...ass_b_t_1_1_reactive_fallback-members.html | 173 ++ de/d78/convert__impl_8hpp_source.html | 310 +++ de/d79/groot2__protocol_8h_source.html | 379 ++++ ...expression_1_1conditional__coll__graph.map | 4 + ...expression_1_1conditional__coll__graph.md5 | 1 + ...expression_1_1conditional__coll__graph.png | Bin 0 -> 6745 bytes ...b_t_1_1_ast_1_1_expr_unary_arithmetic.html | 195 ++ ..._1_1_stateful_action_node__coll__graph.map | 6 + ..._1_1_stateful_action_node__coll__graph.md5 | 1 + ..._1_1_stateful_action_node__coll__graph.png | Bin 0 -> 9042 bytes ...td_1_1d9ac82cf338f5ce081c7960e49c98c14.map | 4 + ...td_1_1d9ac82cf338f5ce081c7960e49c98c14.md5 | 1 + ...td_1_1d9ac82cf338f5ce081c7960e49c98c14.png | Bin 0 -> 13193 bytes ...1_entry_updated_decorator__coll__graph.map | 5 + ...1_entry_updated_decorator__coll__graph.md5 | 1 + ...1_entry_updated_decorator__coll__graph.png | Bin 0 -> 7943 bytes ..._t_1_1_threaded_action__inherit__graph.map | 6 + ..._t_1_1_threaded_action__inherit__graph.md5 | 1 + ..._t_1_1_threaded_action__inherit__graph.png | Bin 0 -> 8351 bytes ..._monitor_1_1_reply_header__coll__graph.map | 5 + ..._monitor_1_1_reply_header__coll__graph.md5 | 1 + ..._monitor_1_1_reply_header__coll__graph.png | Bin 0 -> 9814 bytes de/d9f/class_b_t_1_1_reactive_sequence.html | 391 ++++ de/da6/class_b_t_1_1_parser.html | 159 ++ ...t_b_t_1_1_ast_1_1_environment-members.html | 110 + ..._expression_1_1string__concat-members.html | 110 + .../class_b_t_1_1_file_logger2-members.html | 127 ++ ...1_1_grammar_1_1_expression_1_1logical.html | 169 ++ ...mmar_1_1_expression_1_1string__concat.html | 169 ++ .../class_b_t_1_1_sleep_node__coll__graph.map | 7 + .../class_b_t_1_1_sleep_node__coll__graph.md5 | 1 + .../class_b_t_1_1_sleep_node__coll__graph.png | Bin 0 -> 11479 bytes .../class_b_t_1_1_tree_observer-members.html | 128 ++ ...mar_1_1_expression_1_1logical-members.html | 110 + ..._b_t_1_1_consume_queue__inherit__graph.map | 5 + ..._b_t_1_1_consume_queue__inherit__graph.md5 | 1 + ..._b_t_1_1_consume_queue__inherit__graph.png | Bin 0 -> 6690 bytes de/dfa/while__do__else__node_8h_source.html | 157 ++ ...ession_1_1math__prefix__inherit__graph.map | 4 + ...ession_1_1math__prefix__inherit__graph.md5 | 1 + ...ession_1_1math__prefix__inherit__graph.png | Bin 0 -> 6432 bytes ...s_b_t_1_1_x_m_l_parser__inherit__graph.map | 4 + ...s_b_t_1_1_x_m_l_parser__inherit__graph.md5 | 1 + ...s_b_t_1_1_x_m_l_parser__inherit__graph.png | Bin 0 -> 3408 bytes ...t_1_1_grammar_1_1nested__expr-members.html | 111 + ..._b_t_1_1_coro_action_node__coll__graph.map | 7 + ..._b_t_1_1_coro_action_node__coll__graph.md5 | 1 + ..._b_t_1_1_coro_action_node__coll__graph.png | Bin 0 -> 13202 bytes ...class_b_t_1_1_repeat_node__coll__graph.map | 5 + ...class_b_t_1_1_repeat_node__coll__graph.md5 | 1 + ...class_b_t_1_1_repeat_node__coll__graph.png | Bin 0 -> 7269 bytes ..._1_grammar_1_1__xid__start__character.html | 147 ++ df/d34/class_b_t_1_1_sub_tree_node.html | 442 ++++ df/d34/class_b_t_1_1_sub_tree_node.js | 4 + df/d38/class_b_t_1_1_queue_size-members.html | 170 ++ ...ruct_b_t_1_1_monitor_1_1_hook-members.html | 120 + ...ass_b_t_1_1_precondition_node-members.html | 172 ++ ..._b_t_1_1_entry_updated_action-members.html | 170 ++ ...ct_b_t_1_1_grammar_1_1_string_literal.html | 164 ++ df/d4c/class_b_t_1_1_timer_queue.html | 129 ++ df/d4c/class_b_t_1_1_timer_queue.js | 6 + df/d4f/class_b_t_1_1_logic_error.html | 154 ++ ...t_1_1_minitrace_logger__inherit__graph.map | 4 + ...t_1_1_minitrace_logger__inherit__graph.md5 | 1 + ...t_1_1_minitrace_logger__inherit__graph.png | Bin 0 -> 5383 bytes ...ammar_1_1_expression_1_1math__product.html | 173 ++ ...ss_b_t_1_1_force_failure_node-members.html | 170 ++ ...ass_b_t_1_1_parallel_all_node-members.html | 177 ++ ...1_grammar_1_1_boolean_literal-members.html | 110 + ...lass_b_t_1_1_x_m_l_parser__coll__graph.map | 4 + ...lass_b_t_1_1_x_m_l_parser__coll__graph.md5 | 1 + ...lass_b_t_1_1_x_m_l_parser__coll__graph.png | Bin 0 -> 3408 bytes ...s_b_t_1_1_always_success_node-members.html | 168 ++ ...class_b_t_1_1_behavior_tree_exception.html | 146 ++ ..._1_1_boolean_literal_1_1_true-members.html | 110 + ...truct_b_t_1_1_grammar_1_1nested__expr.html | 143 ++ ..._1_always_failure_node__inherit__graph.map | 7 + ..._1_always_failure_node__inherit__graph.md5 | 1 + ..._1_always_failure_node__inherit__graph.png | Bin 0 -> 12113 bytes .../class_b_t_1_1_entry_updated_action.html | 344 +++ ...equence__with__memory__node_8h_source.html | 161 ++ .../class_b_t_1_1_delay_node__coll__graph.map | 5 + .../class_b_t_1_1_delay_node__coll__graph.md5 | 1 + .../class_b_t_1_1_delay_node__coll__graph.png | Bin 0 -> 7247 bytes df/da8/namespace_b_t_1_1details.html | 134 ++ df/da8/namespace_b_t_1_1details.js | 4 + ...1_1_force_failure_node__inherit__graph.map | 5 + ...1_1_force_failure_node__inherit__graph.md5 | 1 + ...1_1_force_failure_node__inherit__graph.png | Bin 0 -> 6171 bytes ...ass_b_t_1_1_inverter_node__coll__graph.map | 5 + ...ass_b_t_1_1_inverter_node__coll__graph.md5 | 1 + ...ass_b_t_1_1_inverter_node__coll__graph.png | Bin 0 -> 7102 bytes ..._grammar_1_1_boolean_literal_1_1_true.html | 122 + ..._b_t_1_1_run_once_node__inherit__graph.map | 5 + ..._b_t_1_1_run_once_node__inherit__graph.md5 | 1 + ..._b_t_1_1_run_once_node__inherit__graph.png | Bin 0 -> 6347 bytes ...ar_1_1_boolean_literal__inherit__graph.map | 4 + ...ar_1_1_boolean_literal__inherit__graph.md5 | 1 + ...ar_1_1_boolean_literal__inherit__graph.png | Bin 0 -> 5113 bytes ...1_1_simple_decorator_node__coll__graph.map | 5 + ...1_1_simple_decorator_node__coll__graph.md5 | 1 + ...1_1_simple_decorator_node__coll__graph.png | Bin 0 -> 7969 bytes df/dc2/class_b_t_1_1_consume_queue.html | 384 ++++ df/dc2/class_b_t_1_1_consume_queue.js | 4 + ...st_1_1_expr_assignment__inherit__graph.map | 4 + ...st_1_1_expr_assignment__inherit__graph.md5 | 1 + ...st_1_1_expr_assignment__inherit__graph.png | Bin 0 -> 5120 bytes df/ddb/class_b_t_1_1_sqlite_logger.html | 330 +++ df/ddb/class_b_t_1_1_sqlite_logger.js | 4 + ...r_1_1_real_1_1invalid__suffix-members.html | 109 + dir_0079e7ae641af117c6a457ee281e6635.html | 147 ++ dir_0079e7ae641af117c6a457ee281e6635.js | 17 + dir_0079e7ae641af117c6a457ee281e6635_dep.map | 4 + dir_0079e7ae641af117c6a457ee281e6635_dep.md5 | 1 + dir_0079e7ae641af117c6a457ee281e6635_dep.png | Bin 0 -> 3300 bytes dir_1573ea42ce800d213ff17f25e5e834ef.html | 141 ++ dir_1573ea42ce800d213ff17f25e5e834ef.js | 14 + dir_1573ea42ce800d213ff17f25e5e834ef_dep.map | 4 + dir_1573ea42ce800d213ff17f25e5e834ef_dep.md5 | 1 + dir_1573ea42ce800d213ff17f25e5e834ef_dep.png | Bin 0 -> 2590 bytes dir_235a16759d8d8fc57a402b291db0fa77.html | 125 + dir_235a16759d8d8fc57a402b291db0fa77.js | 6 + dir_235a16759d8d8fc57a402b291db0fa77_dep.map | 4 + dir_235a16759d8d8fc57a402b291db0fa77_dep.md5 | 1 + dir_235a16759d8d8fc57a402b291db0fa77_dep.png | Bin 0 -> 3186 bytes dir_65bce70eeebcad5aa886bc98b14fc221.html | 141 ++ dir_65bce70eeebcad5aa886bc98b14fc221.js | 14 + dir_65bce70eeebcad5aa886bc98b14fc221_dep.map | 4 + dir_65bce70eeebcad5aa886bc98b14fc221_dep.md5 | 1 + dir_65bce70eeebcad5aa886bc98b14fc221_dep.png | Bin 0 -> 2975 bytes dir_7bd192d5a3f968f9ea7d18b0796c3811.html | 171 ++ dir_7bd192d5a3f968f9ea7d18b0796c3811.js | 24 + dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.map | 11 + dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.md5 | 1 + dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.png | Bin 0 -> 10146 bytes dir_84e7dcb321defd2b6d86aae3d71dd2bc.html | 139 ++ dir_84e7dcb321defd2b6d86aae3d71dd2bc.js | 13 + dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.map | 4 + dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.md5 | 1 + dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.png | Bin 0 -> 2669 bytes dir_be504959e339b6de8c9618e774fdc689.html | 121 + dir_be504959e339b6de8c9618e774fdc689.js | 4 + dir_be504959e339b6de8c9618e774fdc689_dep.map | 4 + dir_be504959e339b6de8c9618e774fdc689_dep.md5 | 1 + dir_be504959e339b6de8c9618e774fdc689_dep.png | Bin 0 -> 3207 bytes dir_d44c64559bbebec7f509842c48db8b23.html | 112 + dir_d44c64559bbebec7f509842c48db8b23.js | 4 + dir_dbe048a79b774cd1d4dcb0e6934684ec.html | 135 ++ dir_dbe048a79b774cd1d4dcb0e6934684ec.js | 11 + dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.map | 4 + dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.md5 | 1 + dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.png | Bin 0 -> 3063 bytes doc.png | Bin 0 -> 746 bytes docd.png | Bin 0 -> 756 bytes doxygen.css | 2007 +++++++++++++++++ doxygen.svg | 26 + dynsections.js | 123 + files.html | 190 ++ files_dup.js | 4 + folderclosed.png | Bin 0 -> 616 bytes folderopen.png | Bin 0 -> 597 bytes functions.html | 275 +++ functions_enum.html | 105 + functions_eval.html | 106 + functions_func.html | 265 +++ functions_type.html | 105 + functions_vars.html | 110 + graph_legend.html | 165 ++ graph_legend.md5 | 1 + graph_legend.png | Bin 0 -> 22495 bytes hierarchy.html | 253 +++ hierarchy.js | 170 ++ index.html | 105 + inherit_graph_0.map | 3 + inherit_graph_0.md5 | 1 + inherit_graph_0.png | Bin 0 -> 1223 bytes inherit_graph_1.map | 3 + inherit_graph_1.md5 | 1 + inherit_graph_1.png | Bin 0 -> 2270 bytes inherit_graph_10.map | 3 + inherit_graph_10.md5 | 1 + inherit_graph_10.png | Bin 0 -> 2526 bytes inherit_graph_11.map | 3 + inherit_graph_11.md5 | 1 + inherit_graph_11.png | Bin 0 -> 3989 bytes inherit_graph_12.map | 3 + inherit_graph_12.md5 | 1 + inherit_graph_12.png | Bin 0 -> 2892 bytes inherit_graph_13.map | 3 + inherit_graph_13.md5 | 1 + inherit_graph_13.png | Bin 0 -> 3350 bytes inherit_graph_14.map | 3 + inherit_graph_14.md5 | 1 + inherit_graph_14.png | Bin 0 -> 1683 bytes inherit_graph_15.map | 3 + inherit_graph_15.md5 | 1 + inherit_graph_15.png | Bin 0 -> 2906 bytes inherit_graph_16.map | 3 + inherit_graph_16.md5 | 1 + inherit_graph_16.png | Bin 0 -> 1597 bytes inherit_graph_17.map | 3 + inherit_graph_17.md5 | 1 + inherit_graph_17.png | Bin 0 -> 2035 bytes inherit_graph_18.map | 3 + inherit_graph_18.md5 | 1 + inherit_graph_18.png | Bin 0 -> 2137 bytes inherit_graph_19.map | 3 + inherit_graph_19.md5 | 1 + inherit_graph_19.png | Bin 0 -> 1748 bytes inherit_graph_2.map | 3 + inherit_graph_2.md5 | 1 + inherit_graph_2.png | Bin 0 -> 2048 bytes inherit_graph_20.map | 3 + inherit_graph_20.md5 | 1 + inherit_graph_20.png | Bin 0 -> 2594 bytes inherit_graph_21.map | 3 + inherit_graph_21.md5 | 1 + inherit_graph_21.png | Bin 0 -> 2641 bytes inherit_graph_22.map | 3 + inherit_graph_22.md5 | 1 + inherit_graph_22.png | Bin 0 -> 2153 bytes inherit_graph_23.map | 4 + inherit_graph_23.md5 | 1 + inherit_graph_23.png | Bin 0 -> 3081 bytes inherit_graph_24.map | 3 + inherit_graph_24.md5 | 1 + inherit_graph_24.png | Bin 0 -> 2505 bytes inherit_graph_25.map | 3 + inherit_graph_25.md5 | 1 + inherit_graph_25.png | Bin 0 -> 2604 bytes inherit_graph_26.map | 3 + inherit_graph_26.md5 | 1 + inherit_graph_26.png | Bin 0 -> 2154 bytes inherit_graph_27.map | 3 + inherit_graph_27.md5 | 1 + inherit_graph_27.png | Bin 0 -> 3042 bytes inherit_graph_28.map | 3 + inherit_graph_28.md5 | 1 + inherit_graph_28.png | Bin 0 -> 2732 bytes inherit_graph_29.map | 9 + inherit_graph_29.md5 | 1 + inherit_graph_29.png | Bin 0 -> 23141 bytes inherit_graph_3.map | 10 + inherit_graph_3.md5 | 1 + inherit_graph_3.png | Bin 0 -> 29702 bytes inherit_graph_30.map | 3 + inherit_graph_30.md5 | 1 + inherit_graph_30.png | Bin 0 -> 2445 bytes inherit_graph_31.map | 3 + inherit_graph_31.md5 | 1 + inherit_graph_31.png | Bin 0 -> 3665 bytes inherit_graph_32.map | 3 + inherit_graph_32.md5 | 1 + inherit_graph_32.png | Bin 0 -> 1746 bytes inherit_graph_33.map | 3 + inherit_graph_33.md5 | 1 + inherit_graph_33.png | Bin 0 -> 869 bytes inherit_graph_34.map | 3 + inherit_graph_34.md5 | 1 + inherit_graph_34.png | Bin 0 -> 1518 bytes inherit_graph_35.map | 52 + inherit_graph_35.md5 | 1 + inherit_graph_35.png | Bin 0 -> 212020 bytes inherit_graph_36.map | 3 + inherit_graph_36.md5 | 1 + inherit_graph_36.png | Bin 0 -> 2265 bytes inherit_graph_37.map | 3 + inherit_graph_37.md5 | 1 + inherit_graph_37.png | Bin 0 -> 2896 bytes inherit_graph_38.map | 4 + inherit_graph_38.md5 | 1 + inherit_graph_38.png | Bin 0 -> 3105 bytes inherit_graph_39.map | 3 + inherit_graph_39.md5 | 1 + inherit_graph_39.png | Bin 0 -> 2527 bytes inherit_graph_4.map | 3 + inherit_graph_4.md5 | 1 + inherit_graph_4.png | Bin 0 -> 2328 bytes inherit_graph_40.map | 9 + inherit_graph_40.md5 | 1 + inherit_graph_40.png | Bin 0 -> 33121 bytes inherit_graph_41.map | 4 + inherit_graph_41.md5 | 1 + inherit_graph_41.png | Bin 0 -> 6274 bytes inherit_graph_42.map | 5 + inherit_graph_42.md5 | 1 + inherit_graph_42.png | Bin 0 -> 11033 bytes inherit_graph_43.map | 5 + inherit_graph_43.md5 | 1 + inherit_graph_43.png | Bin 0 -> 10534 bytes inherit_graph_44.map | 4 + inherit_graph_44.md5 | 1 + inherit_graph_44.png | Bin 0 -> 5175 bytes inherit_graph_45.map | 8 + inherit_graph_45.md5 | 1 + inherit_graph_45.png | Bin 0 -> 19166 bytes inherit_graph_46.map | 4 + inherit_graph_46.md5 | 1 + inherit_graph_46.png | Bin 0 -> 5450 bytes inherit_graph_47.map | 4 + inherit_graph_47.md5 | 1 + inherit_graph_47.png | Bin 0 -> 5605 bytes inherit_graph_48.map | 3 + inherit_graph_48.md5 | 1 + inherit_graph_48.png | Bin 0 -> 2536 bytes inherit_graph_49.map | 6 + inherit_graph_49.md5 | 1 + inherit_graph_49.png | Bin 0 -> 9541 bytes inherit_graph_5.map | 3 + inherit_graph_5.md5 | 1 + inherit_graph_5.png | Bin 0 -> 1665 bytes inherit_graph_50.map | 5 + inherit_graph_50.md5 | 1 + inherit_graph_50.png | Bin 0 -> 12147 bytes inherit_graph_51.map | 5 + inherit_graph_51.md5 | 1 + inherit_graph_51.png | Bin 0 -> 26747 bytes inherit_graph_6.map | 3 + inherit_graph_6.md5 | 1 + inherit_graph_6.png | Bin 0 -> 2376 bytes inherit_graph_7.map | 3 + inherit_graph_7.md5 | 1 + inherit_graph_7.png | Bin 0 -> 2533 bytes inherit_graph_8.map | 3 + inherit_graph_8.md5 | 1 + inherit_graph_8.png | Bin 0 -> 2458 bytes inherit_graph_9.map | 3 + inherit_graph_9.md5 | 1 + inherit_graph_9.png | Bin 0 -> 2718 bytes inherits.html | 459 ++++ jquery.js | 34 + menu.js | 136 ++ menudata.js | 98 + namespacemembers.html | 186 ++ namespacemembers_enum.html | 106 + namespacemembers_func.html | 125 + namespacemembers_type.html | 109 + namespaces.html | 202 ++ namespaces_dup.js | 4 + nav_f.png | Bin 0 -> 153 bytes nav_fd.png | Bin 0 -> 169 bytes nav_g.png | Bin 0 -> 95 bytes nav_h.png | Bin 0 -> 98 bytes nav_hd.png | Bin 0 -> 114 bytes navtree.css | 150 ++ navtree.js | 549 +++++ navtreedata.js | 64 + navtreeindex0.js | 253 +++ navtreeindex1.js | 253 +++ navtreeindex2.js | 137 ++ open.png | Bin 0 -> 123 bytes resize.js | 155 ++ search/all_0.js | 4 + search/all_1.js | 17 + search/all_10.js | 13 + search/all_11.js | 4 + search/all_12.js | 31 + search/all_13.js | 45 + search/all_14.js | 22 + search/all_15.js | 7 + search/all_16.js | 4 + search/all_17.js | 10 + search/all_18.js | 4 + search/all_19.js | 4 + search/all_2.js | 19 + search/all_3.js | 20 + search/all_4.js | 5 + search/all_5.js | 24 + search/all_6.js | 12 + search/all_7.js | 13 + search/all_8.js | 12 + search/all_9.js | 15 + search/all_a.js | 4 + search/all_b.js | 4 + search/all_c.js | 10 + search/all_d.js | 9 + search/all_e.js | 11 + search/all_f.js | 7 + search/classes_0.js | 4 + search/classes_1.js | 10 + search/classes_10.js | 4 + search/classes_11.js | 13 + search/classes_12.js | 29 + search/classes_13.js | 16 + search/classes_14.js | 4 + search/classes_15.js | 5 + search/classes_16.js | 4 + search/classes_2.js | 10 + search/classes_3.js | 9 + search/classes_4.js | 5 + search/classes_5.js | 17 + search/classes_6.js | 8 + search/classes_7.js | 4 + search/classes_8.js | 8 + search/classes_9.js | 8 + search/classes_a.js | 4 + search/classes_b.js | 4 + search/classes_c.js | 8 + search/classes_d.js | 8 + search/classes_e.js | 7 + search/classes_f.js | 10 + search/close.svg | 31 + search/enums_0.js | 4 + search/enums_1.js | 5 + search/enumvalues_0.js | 5 + search/functions_0.js | 8 + search/functions_1.js | 10 + search/functions_10.js | 6 + search/functions_11.js | 4 + search/functions_12.js | 8 + search/functions_13.js | 4 + search/functions_2.js | 13 + search/functions_3.js | 8 + search/functions_4.js | 6 + search/functions_5.js | 12 + search/functions_6.js | 7 + search/functions_7.js | 10 + search/functions_8.js | 5 + search/functions_9.js | 4 + search/functions_a.js | 4 + search/functions_b.js | 7 + search/functions_c.js | 5 + search/functions_d.js | 19 + search/functions_e.js | 18 + search/functions_f.js | 10 + search/mag.svg | 37 + search/mag_d.svg | 37 + search/mag_sel.svg | 74 + search/mag_seld.svg | 74 + search/namespaces_0.js | 5 + search/search.css | 291 +++ search/search.js | 816 +++++++ search/searchdata.js | 36 + search/typedefs_0.js | 4 + search/typedefs_1.js | 6 + search/typedefs_2.js | 4 + search/typedefs_3.js | 4 + search/variables_0.js | 4 + search/variables_1.js | 4 + search/variables_2.js | 4 + search/variables_3.js | 4 + search/variables_4.js | 4 + search/variables_5.js | 4 + splitbar.png | Bin 0 -> 314 bytes splitbard.png | Bin 0 -> 282 bytes sync_off.png | Bin 0 -> 853 bytes sync_on.png | Bin 0 -> 845 bytes tab_a.png | Bin 0 -> 142 bytes tab_ad.png | Bin 0 -> 135 bytes tab_b.png | Bin 0 -> 169 bytes tab_bd.png | Bin 0 -> 173 bytes tab_h.png | Bin 0 -> 177 bytes tab_hd.png | Bin 0 -> 180 bytes tab_s.png | Bin 0 -> 184 bytes tab_sd.png | Bin 0 -> 188 bytes tabs.css | 1 + 1323 files changed, 84853 insertions(+) create mode 100644 .nojekyll create mode 100644 annotated.html create mode 100644 annotated_dup.js create mode 100644 bc_s.png create mode 100644 bc_sd.png create mode 100644 bdwn.png create mode 100644 classes.html create mode 100644 closed.png create mode 100644 d0/d1f/class_b_t_1_1_stateful_action_node.html create mode 100644 d0/d1f/class_b_t_1_1_stateful_action_node.js create mode 100644 d0/d20/struct_b_t_1_1_protected_queue-members.html create mode 100644 d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html create mode 100644 d0/d2c/struct_b_t_1_1_ast_1_1_expr_if-members.html create mode 100644 d0/d34/class_b_t_1_1_type_info.html create mode 100644 d0/d3a/class_b_t_1_1_any-members.html create mode 100644 d0/d43/class_b_t_1_1_parallel_node__coll__graph.map create mode 100644 d0/d43/class_b_t_1_1_parallel_node__coll__graph.md5 create mode 100644 d0/d43/class_b_t_1_1_parallel_node__coll__graph.png create mode 100644 d0/d48/class_b_t_1_1_leaf_node-members.html create mode 100644 d0/d51/class_b_t_1_1_blackboard.html create mode 100644 d0/d51/class_b_t_1_1_blackboard.js create mode 100644 d0/d54/inverter__node_8h_source.html create mode 100644 d0/d55/bt__minitrace__logger_8h_source.html create mode 100644 d0/d56/struct_b_t_1_1has__static__method__provided_ports.html create mode 100644 d0/d59/struct_b_t_1_1_timestamp.html create mode 100644 d0/d5d/if__then__else__node_8h_source.html create mode 100644 d0/d64/class_b_t_1_1_json_exporter.html create mode 100644 d0/d64/class_b_t_1_1_json_exporter.js create mode 100644 d0/d88/retry__node_8h_source.html create mode 100644 d0/d8c/class_b_t_1_1_timeout_node__coll__graph.map create mode 100644 d0/d8c/class_b_t_1_1_timeout_node__coll__graph.md5 create mode 100644 d0/d8c/class_b_t_1_1_timeout_node__coll__graph.png create mode 100644 d0/d8d/class_b_t_1_1_minitrace_logger-members.html create mode 100644 d0/d97/struct_b_t_1_1_grammar_1_1_expression-members.html create mode 100644 d0/d9c/class_b_t_1_1_always_failure_node.html create mode 100644 d0/d9d/class_b_t_1_1_sequence_node__coll__graph.map create mode 100644 d0/d9d/class_b_t_1_1_sequence_node__coll__graph.md5 create mode 100644 d0/d9d/class_b_t_1_1_sequence_node__coll__graph.png create mode 100644 d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.map create mode 100644 d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.md5 create mode 100644 d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.png create mode 100644 d0/dc6/sequence__node_8h_source.html create mode 100644 d0/dc6/struct_b_t_1_1_node_config__coll__graph.map create mode 100644 d0/dc6/struct_b_t_1_1_node_config__coll__graph.md5 create mode 100644 d0/dc6/struct_b_t_1_1_node_config__coll__graph.png create mode 100644 d0/dcf/class_b_t_1_1_delay_node-members.html create mode 100644 d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.map create mode 100644 d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.md5 create mode 100644 d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.png create mode 100644 d0/de8/struct_b_t_1_1_ast_1_1_environment.html create mode 100644 d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html create mode 100644 d0/df1/class_b_t_1_1_loop_node-members.html create mode 100644 d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.map create mode 100644 d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.md5 create mode 100644 d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.png create mode 100644 d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.map create mode 100644 d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.md5 create mode 100644 d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.png create mode 100644 d1/d0e/bt__file__logger__v2_8h_source.html create mode 100644 d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.map create mode 100644 d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.md5 create mode 100644 d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.png create mode 100644 d1/d31/class_b_t_1_1_script_node__inherit__graph.map create mode 100644 d1/d31/class_b_t_1_1_script_node__inherit__graph.md5 create mode 100644 d1/d31/class_b_t_1_1_script_node__inherit__graph.png create mode 100644 d1/d31/parallel__all__node_8h_source.html create mode 100644 d1/d36/class_b_t_1_1_decorator_node__coll__graph.map create mode 100644 d1/d36/class_b_t_1_1_decorator_node__coll__graph.md5 create mode 100644 d1/d36/class_b_t_1_1_decorator_node__coll__graph.png create mode 100644 d1/d43/class_b_t_1_1_test_node__inherit__graph.map create mode 100644 d1/d43/class_b_t_1_1_test_node__inherit__graph.md5 create mode 100644 d1/d43/class_b_t_1_1_test_node__inherit__graph.png create mode 100644 d1/d4a/class_b_t_1_1_stateful_action_node-members.html create mode 100644 d1/d4f/repeat__node_8h_source.html create mode 100644 d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.map create mode 100644 d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.md5 create mode 100644 d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.png create mode 100644 d1/d52/class_b_t_1_1_std_cout_logger.html create mode 100644 d1/d56/class_b_t_1_1_groot2_publisher-members.html create mode 100644 d1/d66/struct_b_t_1_1_protected_queue__coll__graph.map create mode 100644 d1/d66/struct_b_t_1_1_protected_queue__coll__graph.md5 create mode 100644 d1/d66/struct_b_t_1_1_protected_queue__coll__graph.png create mode 100644 d1/d72/class_b_t_1_1_script_condition-members.html create mode 100644 d1/d73/class_b_t_1_1_signal.html create mode 100644 d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.map create mode 100644 d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.md5 create mode 100644 d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.png create mode 100644 d1/d77/class_b_t_1_1_unset_blackboard_node.html create mode 100644 d1/d79/class_b_t_1_1_tree.html create mode 100644 d1/d79/class_b_t_1_1_tree.js create mode 100644 d1/d7a/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic-members.html create mode 100644 d1/d7b/class_b_t_1_1_entry_updated_decorator.html create mode 100644 d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.map create mode 100644 d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.md5 create mode 100644 d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.png create mode 100644 d1/d8d/class_safe_any_1_1_simple_string__coll__graph.map create mode 100644 d1/d8d/class_safe_any_1_1_simple_string__coll__graph.md5 create mode 100644 d1/d8d/class_safe_any_1_1_simple_string__coll__graph.png create mode 100644 d1/d97/class_b_t_1_1_tree_node__inherit__graph.map create mode 100644 d1/d97/class_b_t_1_1_tree_node__inherit__graph.md5 create mode 100644 d1/d97/class_b_t_1_1_tree_node__inherit__graph.png create mode 100644 d1/da6/struct_b_t_1_1has__static__method__metadata.html create mode 100644 d1/da6/tree__node_8h_source.html create mode 100644 d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.map create mode 100644 d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.md5 create mode 100644 d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.png create mode 100644 d1/dae/class_b_t_1_1_queue_size__inherit__graph.map create mode 100644 d1/dae/class_b_t_1_1_queue_size__inherit__graph.md5 create mode 100644 d1/dae/class_b_t_1_1_queue_size__inherit__graph.png create mode 100644 d1/dbb/abstract__logger_8h_source.html create mode 100644 d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.map create mode 100644 d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.md5 create mode 100644 d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.png create mode 100644 d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html create mode 100644 d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.map create mode 100644 d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.md5 create mode 100644 d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.png create mode 100644 d1/de2/class_b_t_1_1_leaf_node.html create mode 100644 d1/de7/class_b_t_1_1_decorator_node.html create mode 100644 d1/de7/class_b_t_1_1_decorator_node.js create mode 100644 d1/ded/class_b_t_1_1_precondition_node__inherit__graph.map create mode 100644 d1/ded/class_b_t_1_1_precondition_node__inherit__graph.md5 create mode 100644 d1/ded/class_b_t_1_1_precondition_node__inherit__graph.png create mode 100644 d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.map create mode 100644 d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.md5 create mode 100644 d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.png create mode 100644 d1/dee/class_b_t_1_1_parallel_node.html create mode 100644 d1/dee/class_b_t_1_1_parallel_node.js create mode 100644 d1/def/class_b_t_1_1_retry_node_typo.html create mode 100644 d1/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix-members.html create mode 100644 d2/d01/class_b_t_1_1_fallback_node__inherit__graph.map create mode 100644 d2/d01/class_b_t_1_1_fallback_node__inherit__graph.md5 create mode 100644 d2/d01/class_b_t_1_1_fallback_node__inherit__graph.png create mode 100644 d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.map create mode 100644 d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.md5 create mode 100644 d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.png create mode 100644 d2/d0d/class_b_t_1_1_force_success_node__coll__graph.map create mode 100644 d2/d0d/class_b_t_1_1_force_success_node__coll__graph.md5 create mode 100644 d2/d0d/class_b_t_1_1_force_success_node__coll__graph.png create mode 100644 d2/d0e/struct_b_t_1_1_stamped_value-members.html create mode 100644 d2/d11/class_b_t_1_1_behavior_tree_exception-members.html create mode 100644 d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.map create mode 100644 d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.md5 create mode 100644 d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.png create mode 100644 d2/d1d/class_b_t_1_1_logic_error__inherit__graph.map create mode 100644 d2/d1d/class_b_t_1_1_logic_error__inherit__graph.md5 create mode 100644 d2/d1d/class_b_t_1_1_logic_error__inherit__graph.png create mode 100644 d2/d27/class_b_t_1_1_run_once_node__coll__graph.map create mode 100644 d2/d27/class_b_t_1_1_run_once_node__coll__graph.md5 create mode 100644 d2/d27/class_b_t_1_1_run_once_node__coll__graph.png create mode 100644 d2/d2b/class_b_t_1_1_tree_observer.html create mode 100644 d2/d2b/class_b_t_1_1_tree_observer.js create mode 100644 d2/d39/json__export_8h_source.html create mode 100644 d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.map create mode 100644 d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.md5 create mode 100644 d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.png create mode 100644 d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.map create mode 100644 d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.md5 create mode 100644 d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.png create mode 100644 d2/d51/class_b_t_1_1_sequence_with_memory-members.html create mode 100644 d2/d52/class_b_t_1_1_pop_from_queue-members.html create mode 100644 d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html create mode 100644 d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.map create mode 100644 d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.md5 create mode 100644 d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.png create mode 100644 d2/d61/class_b_t_1_1_threaded_action.html create mode 100644 d2/d61/class_b_t_1_1_threaded_action.js create mode 100644 d2/d62/class_b_t_1_1_timer_queue-members.html create mode 100644 d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.map create mode 100644 d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.md5 create mode 100644 d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.png create mode 100644 d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.map create mode 100644 d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.md5 create mode 100644 d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.png create mode 100644 d2/d77/class_b_t_1_1_leaf_node__coll__graph.map create mode 100644 d2/d77/class_b_t_1_1_leaf_node__coll__graph.md5 create mode 100644 d2/d77/class_b_t_1_1_leaf_node__coll__graph.png create mode 100644 d2/d7b/class_b_t_1_1_file_logger2.html create mode 100644 d2/d7b/class_b_t_1_1_file_logger2.js create mode 100644 d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.map create mode 100644 d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.md5 create mode 100644 d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.png create mode 100644 d2/d7e/class_b_t_1_1_signal-members.html create mode 100644 d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.map create mode 100644 d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.md5 create mode 100644 d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.png create mode 100644 d2/d8d/namespace_b_t.html create mode 100644 d2/d8d/namespace_b_t.js create mode 100644 d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html create mode 100644 d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.map create mode 100644 d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.md5 create mode 100644 d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.png create mode 100644 d2/d9d/behavior__tree_8h_source.html create mode 100644 d2/da9/reactive__fallback_8h_source.html create mode 100644 d2/dae/timeout__node_8h_source.html create mode 100644 d2/db6/sleep__node_8h_source.html create mode 100644 d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.map create mode 100644 d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.md5 create mode 100644 d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.png create mode 100644 d2/dbf/timer__queue_8h_source.html create mode 100644 d2/dc1/force__success__node_8h_source.html create mode 100644 d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.map create mode 100644 d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.md5 create mode 100644 d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.png create mode 100644 d2/dc8/reactive__sequence_8h_source.html create mode 100644 d2/dd4/wakeup__signal_8hpp_source.html create mode 100644 d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.map create mode 100644 d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.md5 create mode 100644 d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.png create mode 100644 d2/ddd/class_b_t_1_1_shared_library.html create mode 100644 d2/ddd/class_b_t_1_1_shared_library.js create mode 100644 d2/ded/class_b_t_1_1_inverter_node.html create mode 100644 d2/df8/class_b_t_1_1_action_node_base-members.html create mode 100644 d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html create mode 100644 d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.map create mode 100644 d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.md5 create mode 100644 d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.png create mode 100644 d2/dfc/class_b_t_1_1_queue_size__coll__graph.map create mode 100644 d2/dfc/class_b_t_1_1_queue_size__coll__graph.md5 create mode 100644 d2/dfc/class_b_t_1_1_queue_size__coll__graph.png create mode 100644 d3/d02/class_b_t_1_1_parallel_all_node.html create mode 100644 d3/d02/class_b_t_1_1_parallel_all_node.js create mode 100644 d3/d06/class_b_t_1_1_force_success_node__inherit__graph.map create mode 100644 d3/d06/class_b_t_1_1_force_success_node__inherit__graph.md5 create mode 100644 d3/d06/class_b_t_1_1_force_success_node__inherit__graph.png create mode 100644 d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.map create mode 100644 d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.md5 create mode 100644 d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.png create mode 100644 d3/d11/struct_b_t_1_1_timestamp-members.html create mode 100644 d3/d22/bt__cout__logger_8h_source.html create mode 100644 d3/d23/struct_b_t_1_1_tree_1_1_subtree.html create mode 100644 d3/d25/class_b_t_1_1_switch_node__inherit__graph.map create mode 100644 d3/d25/class_b_t_1_1_switch_node__inherit__graph.md5 create mode 100644 d3/d25/class_b_t_1_1_switch_node__inherit__graph.png create mode 100644 d3/d28/struct_b_t_1_1_monitor_1_1_request_header-members.html create mode 100644 d3/d2f/switch__node_8h_source.html create mode 100644 d3/d31/struct_b_t_1_1_test_node_config-members.html create mode 100644 d3/d37/class_b_t_1_1_simple_decorator_node.html create mode 100644 d3/d37/class_b_t_1_1_simple_decorator_node.js create mode 100644 d3/d42/class_b_t_1_1_tree_node-members.html create mode 100644 d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html create mode 100644 d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.map create mode 100644 d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.md5 create mode 100644 d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.png create mode 100644 d3/d59/class_b_t_1_1_control_node-members.html create mode 100644 d3/d60/platform_8hpp_source.html create mode 100644 d3/d64/class_b_t_1_1_condition_node__inherit__graph.map create mode 100644 d3/d64/class_b_t_1_1_condition_node__inherit__graph.md5 create mode 100644 d3/d64/class_b_t_1_1_condition_node__inherit__graph.png create mode 100644 d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.map create mode 100644 d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.md5 create mode 100644 d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.png create mode 100644 d3/d86/script__node_8h_source.html create mode 100644 d3/d8c/class_b_t_1_1scoped__demangled__name.html create mode 100644 d3/d96/bt__observer_8h_source.html create mode 100644 d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.map create mode 100644 d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.md5 create mode 100644 d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.png create mode 100644 d3/da8/class_b_t_1_1_sub_tree_node-members.html create mode 100644 d3/db1/decorator__node_8h_source.html create mode 100644 d3/db1/struct_b_t_1_1_grammar_1_1_real-members.html create mode 100644 d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.map create mode 100644 d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.md5 create mode 100644 d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.png create mode 100644 d3/dbc/fallback__node_8h_source.html create mode 100644 d3/dc4/class_b_t_1_1_status_change_logger-members.html create mode 100644 d3/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1math__product-members.html create mode 100644 d3/ddf/class_b_t_1_1_consume_queue__coll__graph.map create mode 100644 d3/ddf/class_b_t_1_1_consume_queue__coll__graph.md5 create mode 100644 d3/ddf/class_b_t_1_1_consume_queue__coll__graph.png create mode 100644 d3/de2/class_b_t_1_1_action_node_base.html create mode 100644 d3/de4/class_b_t_1_1_force_failure_node__coll__graph.map create mode 100644 d3/de4/class_b_t_1_1_force_failure_node__coll__graph.md5 create mode 100644 d3/de4/class_b_t_1_1_force_failure_node__coll__graph.png create mode 100644 d4/d03/exceptions_8h_source.html create mode 100644 d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.map create mode 100644 d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.md5 create mode 100644 d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.png create mode 100644 d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.map create mode 100644 d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.md5 create mode 100644 d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.png create mode 100644 d4/d20/class_b_t_1_1_timeout_node.html create mode 100644 d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.map create mode 100644 d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.md5 create mode 100644 d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.png create mode 100644 d4/d35/class_b_t_1_1_reactive_sequence-members.html create mode 100644 d4/d37/class_b_t_1_1_unset_blackboard_node-members.html create mode 100644 d4/d3d/class_b_t_1_1_threaded_action-members.html create mode 100644 d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.map create mode 100644 d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.md5 create mode 100644 d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.png create mode 100644 d4/d4f/class_b_t_1_1_file_logger2__coll__graph.map create mode 100644 d4/d4f/class_b_t_1_1_file_logger2__coll__graph.md5 create mode 100644 d4/d4f/class_b_t_1_1_file_logger2__coll__graph.png create mode 100644 d4/d53/safe__any_8hpp_source.html create mode 100644 d4/d56/class_b_t_1_1_delay_node.html create mode 100644 d4/d56/class_b_t_1_1_delay_node.js create mode 100644 d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.map create mode 100644 d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.md5 create mode 100644 d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.png create mode 100644 d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.map create mode 100644 d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.md5 create mode 100644 d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.png create mode 100644 d4/d6a/class_b_t_1_1_force_success_node-members.html create mode 100644 d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.map create mode 100644 d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.md5 create mode 100644 d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.png create mode 100644 d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.map create mode 100644 d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.md5 create mode 100644 d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.png create mode 100644 d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.map create mode 100644 d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.md5 create mode 100644 d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.png create mode 100644 d4/d86/class_b_t_1_1_logic_error-members.html create mode 100644 d4/d8c/class_b_t_1_1_force_failure_node.html create mode 100644 d4/d98/class_b_t_1_1_locked_ptr.html create mode 100644 d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.map create mode 100644 d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.md5 create mode 100644 d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.png create mode 100644 d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html create mode 100644 d4/dac/script__condition_8h_source.html create mode 100644 d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.map create mode 100644 d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.md5 create mode 100644 d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.png create mode 100644 d4/dcb/class_b_t_1_1details_1_1_semaphore-members.html create mode 100644 d4/dd1/locked__reference_8hpp_source.html create mode 100644 d4/dd2/struct_b_t_1_1_grammar_1_1_integer_1_1integer-members.html create mode 100644 d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.map create mode 100644 d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.md5 create mode 100644 d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.png create mode 100644 d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.map create mode 100644 d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.md5 create mode 100644 d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.png create mode 100644 d4/de8/class_b_t_1_1_sequence_node-members.html create mode 100644 d4/dea/struct_b_t_1_1_grammar_1_1_any_value-members.html create mode 100644 d4/df1/struct_b_t_1_1_any_type_allowed.html create mode 100644 d4/df7/class_b_t_1_1_decorator_node-members.html create mode 100644 d5/d03/class_b_t_1_1_switch_node-members.html create mode 100644 d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.map create mode 100644 d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.md5 create mode 100644 d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.png create mode 100644 d5/d41/class_b_t_1_1_parser__inherit__graph.map create mode 100644 d5/d41/class_b_t_1_1_parser__inherit__graph.md5 create mode 100644 d5/d41/class_b_t_1_1_parser__inherit__graph.png create mode 100644 d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.map create mode 100644 d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.md5 create mode 100644 d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.png create mode 100644 d5/d6d/class_b_t_1_1_coro_action_node-members.html create mode 100644 d5/d71/blackboard_8h_source.html create mode 100644 d5/d77/class_b_t_1_1_always_failure_node-members.html create mode 100644 d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.map create mode 100644 d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.md5 create mode 100644 d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.png create mode 100644 d5/d7a/bt__flatbuffer__helper_8h_source.html create mode 100644 d5/d7f/class_b_t_1_1_test_node.html create mode 100644 d5/d7f/class_b_t_1_1_test_node.js create mode 100644 d5/d82/class_b_t_1_1_type_info-members.html create mode 100644 d5/d89/class_b_t_1_1_port_info-members.html create mode 100644 d5/d89/class_b_t_1_1_sync_action_node-members.html create mode 100644 d5/da2/struct_b_t_1_1_node_config-members.html create mode 100644 d5/db4/struct_b_t_1_1_tree_node_manifest-members.html create mode 100644 d5/dc9/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic-members.html create mode 100644 d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.map create mode 100644 d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.md5 create mode 100644 d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.png create mode 100644 d5/dce/struct_b_t_1_1_tree_observer_1_1_node_statistics-members.html create mode 100644 d5/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1conditional-members.html create mode 100644 d5/dd6/shared__library_8h_source.html create mode 100644 d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.map create mode 100644 d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.md5 create mode 100644 d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.png create mode 100644 d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.map create mode 100644 d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.md5 create mode 100644 d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.png create mode 100644 d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html create mode 100644 d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.map create mode 100644 d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.md5 create mode 100644 d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.png create mode 100644 d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html create mode 100644 d6/d2e/updated__action_8h_source.html create mode 100644 d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.map create mode 100644 d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.md5 create mode 100644 d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.png create mode 100644 d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.map create mode 100644 d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.md5 create mode 100644 d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.png create mode 100644 d6/d58/struct_b_t_1_1_test_node_config.html create mode 100644 d6/d58/struct_b_t_1_1_test_node_config.js create mode 100644 d6/d5d/class_b_t_1_1_always_success_node__coll__graph.map create mode 100644 d6/d5d/class_b_t_1_1_always_success_node__coll__graph.md5 create mode 100644 d6/d5d/class_b_t_1_1_always_success_node__coll__graph.png create mode 100644 d6/d6c/class_b_t_1_1_script_node-members.html create mode 100644 d6/d78/class_b_t_1_1_repeat_node.html create mode 100644 d6/d7e/class_b_t_1_1_port_info__inherit__graph.map create mode 100644 d6/d7e/class_b_t_1_1_port_info__inherit__graph.md5 create mode 100644 d6/d7e/class_b_t_1_1_port_info__inherit__graph.png create mode 100644 d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.map create mode 100644 d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.md5 create mode 100644 d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.png create mode 100644 d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.map create mode 100644 d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.md5 create mode 100644 d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.png create mode 100644 d6/da4/class_b_t_1_1_loop_node__inherit__graph.map create mode 100644 d6/da4/class_b_t_1_1_loop_node__inherit__graph.md5 create mode 100644 d6/da4/class_b_t_1_1_loop_node__inherit__graph.png create mode 100644 d6/dae/run__once__node_8h_source.html create mode 100644 d6/db1/struct_b_t_1_1_grammar_1_1stmt.html create mode 100644 d6/db4/class_b_t_1_1_fallback_node__coll__graph.map create mode 100644 d6/db4/class_b_t_1_1_fallback_node__coll__graph.md5 create mode 100644 d6/db4/class_b_t_1_1_fallback_node__coll__graph.png create mode 100644 d6/db6/class_b_t_1_1_repeat_node-members.html create mode 100644 d6/dbf/class_b_t_1_1_inverter_node-members.html create mode 100644 d6/dc8/script__precondition_8h_source.html create mode 100644 d6/dc9/class_b_t_1_1_threaded_action__coll__graph.map create mode 100644 d6/dc9/class_b_t_1_1_threaded_action__coll__graph.md5 create mode 100644 d6/dc9/class_b_t_1_1_threaded_action__coll__graph.png create mode 100644 d6/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1assignment-members.html create mode 100644 d6/dcc/test__node_8h_source.html create mode 100644 d6/dcd/class_b_t_1_1_behavior_tree_factory.html create mode 100644 d6/dcd/class_b_t_1_1_behavior_tree_factory.js create mode 100644 d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.map create mode 100644 d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.md5 create mode 100644 d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.png create mode 100644 d6/ddb/class_b_t_1_1_control_node.html create mode 100644 d6/ddb/class_b_t_1_1_control_node.js create mode 100644 d6/de7/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false-members.html create mode 100644 d6/dee/struct_b_t_1_1_protected_queue.html create mode 100644 d6/dfa/struct_b_t_1_1_stamped_value.html create mode 100644 d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.map create mode 100644 d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.md5 create mode 100644 d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.png create mode 100644 d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.map create mode 100644 d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.md5 create mode 100644 d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.png create mode 100644 d7/d10/control__node_8h_source.html create mode 100644 d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.map create mode 100644 d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.md5 create mode 100644 d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.png create mode 100644 d7/d21/class_b_t_1_1_inverter_node__inherit__graph.map create mode 100644 d7/d21/class_b_t_1_1_inverter_node__inherit__graph.md5 create mode 100644 d7/d21/class_b_t_1_1_inverter_node__inherit__graph.png create mode 100644 d7/d26/updated__decorator_8h_source.html create mode 100644 d7/d28/class_b_t_1_1_condition_node__coll__graph.map create mode 100644 d7/d28/class_b_t_1_1_condition_node__coll__graph.md5 create mode 100644 d7/d28/class_b_t_1_1_condition_node__coll__graph.png create mode 100644 d7/d33/class_b_t_1_1_tree__coll__graph.map create mode 100644 d7/d33/class_b_t_1_1_tree__coll__graph.md5 create mode 100644 d7/d33/class_b_t_1_1_tree__coll__graph.png create mode 100644 d7/d3a/class_b_t_1_1_pop_from_queue.html create mode 100644 d7/d3a/class_b_t_1_1_pop_from_queue.js create mode 100644 d7/d3f/strcat_8hpp_source.html create mode 100644 d7/d4f/class_b_t_1_1_set_blackboard_node.html create mode 100644 d7/d54/class_b_t_1_1_while_do_else_node.html create mode 100644 d7/d54/class_b_t_1_1_while_do_else_node.js create mode 100644 d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.map create mode 100644 d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.md5 create mode 100644 d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.png create mode 100644 d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html create mode 100644 d7/d68/action__node_8h_source.html create mode 100644 d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.map create mode 100644 d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.md5 create mode 100644 d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.png create mode 100644 d7/d86/struct_b_t_1_1_grammar_1_1_expression.html create mode 100644 d7/d86/struct_b_t_1_1_grammar_1_1_expression.js create mode 100644 d7/d91/struct_b_t_1_1_grammar_1_1_name.html create mode 100644 d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.map create mode 100644 d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.md5 create mode 100644 d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.png create mode 100644 d7/d9d/struct_b_t_1_1_tree_observer_1_1_node_statistics.html create mode 100644 d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.map create mode 100644 d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.md5 create mode 100644 d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.png create mode 100644 d7/da7/class_b_t_1_1_simple_action_node.html create mode 100644 d7/da7/class_b_t_1_1_simple_action_node.js create mode 100644 d7/db8/class_b_t_1_1_force_success_node.html create mode 100644 d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.map create mode 100644 d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.md5 create mode 100644 d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.png create mode 100644 d7/dc2/class_b_t_1_1_retry_node-members.html create mode 100644 d7/dd5/class_b_t_1_1_precondition_node.html create mode 100644 d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.map create mode 100644 d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.md5 create mode 100644 d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.png create mode 100644 d7/ded/class_b_t_1_1_entry_updated_decorator-members.html create mode 100644 d7/dee/class_b_t_1_1_test_node-members.html create mode 100644 d7/df1/delay__node_8h_source.html create mode 100644 d7/df4/class_b_t_1_1_any.html create mode 100644 d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html create mode 100644 d8/d05/class_b_t_1_1_x_m_l_parser.html create mode 100644 d8/d08/class_b_t_1_1_if_then_else_node.html create mode 100644 d8/d08/class_b_t_1_1_if_then_else_node.js create mode 100644 d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.map create mode 100644 d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.md5 create mode 100644 d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.png create mode 100644 d8/d1a/groot2__publisher_8h_source.html create mode 100644 d8/d20/class_b_t_1_1_timeout_node__inherit__graph.map create mode 100644 d8/d20/class_b_t_1_1_timeout_node__inherit__graph.md5 create mode 100644 d8/d20/class_b_t_1_1_timeout_node__inherit__graph.png create mode 100644 d8/d29/class_b_t_1_1_behavior_tree_factory-members.html create mode 100644 d8/d29/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or-members.html create mode 100644 d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.map create mode 100644 d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.md5 create mode 100644 d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.png create mode 100644 d8/d36/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix-members.html create mode 100644 d8/d39/class_b_t_1_1_set_blackboard_node-members.html create mode 100644 d8/d39/signal_8h_source.html create mode 100644 d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.map create mode 100644 d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.md5 create mode 100644 d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.png create mode 100644 d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.map create mode 100644 d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.md5 create mode 100644 d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.png create mode 100644 d8/d5e/class_b_t_1_1_port_info.html create mode 100644 d8/d5e/keep__running__until__failure__node_8h_source.html create mode 100644 d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.map create mode 100644 d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.md5 create mode 100644 d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.png create mode 100644 d8/d74/class_b_t_1_1_decorator_node__inherit__graph.map create mode 100644 d8/d74/class_b_t_1_1_decorator_node__inherit__graph.md5 create mode 100644 d8/d74/class_b_t_1_1_decorator_node__inherit__graph.png create mode 100644 d8/d7b/class_b_t_1_1_precondition_node__coll__graph.map create mode 100644 d8/d7b/class_b_t_1_1_precondition_node__coll__graph.md5 create mode 100644 d8/d7b/class_b_t_1_1_precondition_node__coll__graph.png create mode 100644 d8/d7c/struct_b_t_1_1_blackboard_1_1_entry-members.html create mode 100644 d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html create mode 100644 d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.js create mode 100644 d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.map create mode 100644 d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.md5 create mode 100644 d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.png create mode 100644 d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.map create mode 100644 d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.md5 create mode 100644 d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.png create mode 100644 d8/d9a/class_b_t_1_1_tree_observer__coll__graph.map create mode 100644 d8/d9a/class_b_t_1_1_tree_observer__coll__graph.md5 create mode 100644 d8/d9a/class_b_t_1_1_tree_observer__coll__graph.png create mode 100644 d8/d9e/loop__node_8h_source.html create mode 100644 d8/da8/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand-members.html create mode 100644 d8/db9/class_b_t_1_1_simple_condition_node-members.html create mode 100644 d8/dce/class_b_t_1_1_parser-members.html create mode 100644 d8/dd4/class_b_t_1_1_coro_action_node.html create mode 100644 d8/dd4/class_b_t_1_1_coro_action_node.js create mode 100644 d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.map create mode 100644 d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.md5 create mode 100644 d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.png create mode 100644 d8/de2/class_b_t_1_1_logic_error__coll__graph.map create mode 100644 d8/de2/class_b_t_1_1_logic_error__coll__graph.md5 create mode 100644 d8/de2/class_b_t_1_1_logic_error__coll__graph.png create mode 100644 d8/de6/class_b_t_1_1_simple_decorator_node-members.html create mode 100644 d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html create mode 100644 d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.map create mode 100644 d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.md5 create mode 100644 d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.png create mode 100644 d8/dff/consume__queue_8h_source.html create mode 100644 d9/d04/any__types_8hpp_source.html create mode 100644 d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html create mode 100644 d9/d0f/struct_b_t_1_1_grammar_1_1_name-members.html create mode 100644 d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.map create mode 100644 d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.md5 create mode 100644 d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.png create mode 100644 d9/d15/class_b_t_1_1_delay_node__inherit__graph.map create mode 100644 d9/d15/class_b_t_1_1_delay_node__inherit__graph.md5 create mode 100644 d9/d15/class_b_t_1_1_delay_node__inherit__graph.png create mode 100644 d9/d1c/struct_b_t_1_1_ast_1_1_expr_assignment-members.html create mode 100644 d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.map create mode 100644 d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.md5 create mode 100644 d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.png create mode 100644 d9/d24/class_b_t_1_1details_1_1_semaphore.html create mode 100644 d9/d33/class_b_t_1_1_sleep_node.html create mode 100644 d9/d33/class_b_t_1_1_sleep_node.js create mode 100644 d9/d3a/class_b_t_1_1scoped__demangled__name-members.html create mode 100644 d9/d4c/class_b_t_1_1_script_condition__coll__graph.map create mode 100644 d9/d4c/class_b_t_1_1_script_condition__coll__graph.md5 create mode 100644 d9/d4c/class_b_t_1_1_script_condition__coll__graph.png create mode 100644 d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.map create mode 100644 d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.md5 create mode 100644 d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.png create mode 100644 d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.map create mode 100644 d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.md5 create mode 100644 d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.png create mode 100644 d9/d7f/class_b_t_1_1_run_once_node-members.html create mode 100644 d9/d89/class_b_t_1_1_tree_observer__inherit__graph.map create mode 100644 d9/d89/class_b_t_1_1_tree_observer__inherit__graph.md5 create mode 100644 d9/d89/class_b_t_1_1_tree_observer__inherit__graph.png create mode 100644 d9/d8c/class_b_t_1_1_queue_size.html create mode 100644 d9/d8c/class_b_t_1_1_queue_size.js create mode 100644 d9/d95/class_b_t_1_1_locked_ptr-members.html create mode 100644 d9/d9a/class_b_t_1_1_while_do_else_node-members.html create mode 100644 d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.map create mode 100644 d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.md5 create mode 100644 d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.png create mode 100644 d9/da6/class_b_t_1_1_parallel_node__inherit__graph.map create mode 100644 d9/da6/class_b_t_1_1_parallel_node__inherit__graph.md5 create mode 100644 d9/da6/class_b_t_1_1_parallel_node__inherit__graph.png create mode 100644 d9/da7/struct_b_t_1_1_test_node_config__coll__graph.map create mode 100644 d9/da7/struct_b_t_1_1_test_node_config__coll__graph.md5 create mode 100644 d9/da7/struct_b_t_1_1_test_node_config__coll__graph.png create mode 100644 d9/da8/class_b_t_1_1_json_exporter-members.html create mode 100644 d9/db3/struct_b_t_1_1_grammar_1_1_integer-members.html create mode 100644 d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.map create mode 100644 d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.md5 create mode 100644 d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.png create mode 100644 d9/dbb/class_b_t_1_1_status_change_logger.html create mode 100644 d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.map create mode 100644 d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.md5 create mode 100644 d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.png create mode 100644 d9/ddd/class_b_t_1_1_sequence_node.html create mode 100644 d9/ddd/class_b_t_1_1_sequence_node.js create mode 100644 d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.map create mode 100644 d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.md5 create mode 100644 d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.png create mode 100644 d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.map create mode 100644 d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.md5 create mode 100644 d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.png create mode 100644 d9/deb/struct_b_t_1_1_ast_1_1_expr_literal-members.html create mode 100644 d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.map create mode 100644 d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.md5 create mode 100644 d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.png create mode 100644 da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.map create mode 100644 da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.md5 create mode 100644 da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.png create mode 100644 da/d18/struct_b_t_1_1_ast_1_1_expr_comparison-members.html create mode 100644 da/d1e/basic__types_8h_source.html create mode 100644 da/d20/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and-members.html create mode 100644 da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html create mode 100644 da/d26/class_b_t_1_1_script_condition.html create mode 100644 da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html create mode 100644 da/d2f/class_b_t_1_1_wake_up_signal.html create mode 100644 da/d2f/class_b_t_1_1_wake_up_signal.js create mode 100644 da/d34/class_b_t_1_1_control_node__inherit__graph.map create mode 100644 da/d34/class_b_t_1_1_control_node__inherit__graph.md5 create mode 100644 da/d34/class_b_t_1_1_control_node__inherit__graph.png create mode 100644 da/d35/class_b_t_1_1_runtime_error.html create mode 100644 da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.map create mode 100644 da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.md5 create mode 100644 da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.png create mode 100644 da/d45/class_b_t_1_1_sleep_node__inherit__graph.map create mode 100644 da/d45/class_b_t_1_1_sleep_node__inherit__graph.md5 create mode 100644 da/d45/class_b_t_1_1_sleep_node__inherit__graph.png create mode 100644 da/d52/condition__node_8h_source.html create mode 100644 da/d60/struct_b_t_1_1_ast_1_1_expr_name-members.html create mode 100644 da/d61/class_b_t_1_1_tree_node.html create mode 100644 da/d61/class_b_t_1_1_tree_node.js create mode 100644 da/d64/class_b_t_1_1_test_node__coll__graph.map create mode 100644 da/d64/class_b_t_1_1_test_node__coll__graph.md5 create mode 100644 da/d64/class_b_t_1_1_test_node__coll__graph.png create mode 100644 da/d65/set__blackboard__node_8h_source.html create mode 100644 da/d67/class_b_t_1_1_blackboard-members.html create mode 100644 da/d6d/subtree__node_8h_source.html create mode 100644 da/d73/class_b_t_1_1_sync_action_node.html create mode 100644 da/d73/class_b_t_1_1_sync_action_node.js create mode 100644 da/d75/bt__sqlite__logger_8h_source.html create mode 100644 da/d76/manual__node_8h_source.html create mode 100644 da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.map create mode 100644 da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.md5 create mode 100644 da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.png create mode 100644 da/d94/struct_b_t_1_1_stamped_value__coll__graph.map create mode 100644 da/d94/struct_b_t_1_1_stamped_value__coll__graph.md5 create mode 100644 da/d94/struct_b_t_1_1_stamped_value__coll__graph.png create mode 100644 da/dac/class_b_t_1_1_if_then_else_node__coll__graph.map create mode 100644 da/dac/class_b_t_1_1_if_then_else_node__coll__graph.md5 create mode 100644 da/dac/class_b_t_1_1_if_then_else_node__coll__graph.png create mode 100644 da/dce/class_b_t_1_1_parallel_node-members.html create mode 100644 da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html create mode 100644 da/dd5/class_b_t_1_1_x_m_l_parser-members.html create mode 100644 da/de2/class_safe_any_1_1_simple_string-members.html create mode 100644 da/de5/class_b_t_1_1_sequence_node__inherit__graph.map create mode 100644 da/de5/class_b_t_1_1_sequence_node__inherit__graph.md5 create mode 100644 da/de5/class_b_t_1_1_sequence_node__inherit__graph.png create mode 100644 da/de5/struct_b_t_1_1_grammar_1_1__xid__start__character-members.html create mode 100644 da/ded/class_b_t_1_1_consume_queue-members.html create mode 100644 da/dee/class_b_t_1_1_manual_selector_node__coll__graph.map create mode 100644 da/dee/class_b_t_1_1_manual_selector_node__coll__graph.md5 create mode 100644 da/dee/class_b_t_1_1_manual_selector_node__coll__graph.png create mode 100644 da/dee/class_b_t_1_1_retry_node_typo-members.html create mode 100644 da/df5/class_b_t_1_1_groot2_publisher.html create mode 100644 da/df5/class_b_t_1_1_groot2_publisher.js create mode 100644 da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.map create mode 100644 da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.md5 create mode 100644 da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.png create mode 100644 db/d0e/force__failure__node_8h_source.html create mode 100644 db/d0f/class_b_t_1_1_script_node.html create mode 100644 db/d10/always__failure__node_8h_source.html create mode 100644 db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.map create mode 100644 db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.md5 create mode 100644 db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.png create mode 100644 db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.map create mode 100644 db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.md5 create mode 100644 db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.png create mode 100644 db/d31/class_b_t_1_1_groot2_publisher__coll__graph.map create mode 100644 db/d31/class_b_t_1_1_groot2_publisher__coll__graph.md5 create mode 100644 db/d31/class_b_t_1_1_groot2_publisher__coll__graph.png create mode 100644 db/d57/demangle__util_8h_source.html create mode 100644 db/d65/class_b_t_1_1_if_then_else_node-members.html create mode 100644 db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html create mode 100644 db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html create mode 100644 db/d70/struct_b_t_1_1_monitor_1_1_reply_header-members.html create mode 100644 db/d74/struct_b_t_1_1_ast_1_1_expr_base-members.html create mode 100644 db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html create mode 100644 db/d7e/leaf__node_8h_source.html create mode 100644 db/d81/bt__factory_8h_source.html create mode 100644 db/d84/pop__from__queue_8hpp_source.html create mode 100644 db/d85/bt__parser_8h_source.html create mode 100644 db/d8d/struct_b_t_1_1_file_logger2_1_1_transition-members.html create mode 100644 db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.map create mode 100644 db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.md5 create mode 100644 db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.png create mode 100644 db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.map create mode 100644 db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.md5 create mode 100644 db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.png create mode 100644 db/da7/class_b_t_1_1_condition_node-members.html create mode 100644 db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.map create mode 100644 db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.md5 create mode 100644 db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.png create mode 100644 db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.map create mode 100644 db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.md5 create mode 100644 db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.png create mode 100644 db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html create mode 100644 db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.map create mode 100644 db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.md5 create mode 100644 db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.png create mode 100644 db/df3/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix-members.html create mode 100644 db/df7/struct_b_t_1_1_grammar_1_1_string_literal-members.html create mode 100644 dc/d04/class_b_t_1_1_reactive_fallback.html create mode 100644 dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html create mode 100644 dc/d0b/class_b_t_1_1_manual_selector_node.html create mode 100644 dc/d0b/class_b_t_1_1_manual_selector_node.js create mode 100644 dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html create mode 100644 dc/d13/struct_b_t_1_1_grammar_1_1_real.html create mode 100644 dc/d13/struct_b_t_1_1_grammar_1_1_real.js create mode 100644 dc/d16/class_b_t_1_1_script_condition__inherit__graph.map create mode 100644 dc/d16/class_b_t_1_1_script_condition__inherit__graph.md5 create mode 100644 dc/d16/class_b_t_1_1_script_condition__inherit__graph.png create mode 100644 dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.map create mode 100644 dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.md5 create mode 100644 dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.png create mode 100644 dc/d26/class_b_t_1_1_port_info__coll__graph.map create mode 100644 dc/d26/class_b_t_1_1_port_info__coll__graph.md5 create mode 100644 dc/d26/class_b_t_1_1_port_info__coll__graph.png create mode 100644 dc/d26/struct_b_t_1_1_node_config.html create mode 100644 dc/d27/unset__blackboard__node_8h_source.html create mode 100644 dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.map create mode 100644 dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.md5 create mode 100644 dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.png create mode 100644 dc/d44/class_b_t_1_1_timeout_node-members.html create mode 100644 dc/d49/class_b_t_1_1_simple_condition_node.html create mode 100644 dc/d49/class_b_t_1_1_simple_condition_node.js create mode 100644 dc/d4e/script__parser_8hpp_source.html create mode 100644 dc/d4f/class_b_t_1_1_sleep_node-members.html create mode 100644 dc/d55/struct_b_t_1_1_grammar_1_1stmt-members.html create mode 100644 dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.map create mode 100644 dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.md5 create mode 100644 dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.png create mode 100644 dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html create mode 100644 dc/d6c/struct_b_t_1_1_tree_node_manifest.html create mode 100644 dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html create mode 100644 dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html create mode 100644 dc/d75/struct_b_t_1_1_grammar_1_1_integer.html create mode 100644 dc/d75/struct_b_t_1_1_grammar_1_1_integer.js create mode 100644 dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.map create mode 100644 dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.md5 create mode 100644 dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.png create mode 100644 dc/d96/class_b_t_1_1_wake_up_signal-members.html create mode 100644 dc/da6/class_b_t_1_1_fallback_node.html create mode 100644 dc/da6/class_b_t_1_1_fallback_node.js create mode 100644 dc/dae/class_b_t_1_1_switch_node.html create mode 100644 dc/dae/class_b_t_1_1_switch_node.js create mode 100644 dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.map create mode 100644 dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.md5 create mode 100644 dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.png create mode 100644 dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.map create mode 100644 dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.md5 create mode 100644 dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.png create mode 100644 dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html create mode 100644 dc/dfc/class_b_t_1_1_condition_node.html create mode 100644 dc/dfc/class_b_t_1_1_condition_node.js create mode 100644 dc/dfd/class_b_t_1_1_script_node__coll__graph.map create mode 100644 dc/dfd/class_b_t_1_1_script_node__coll__graph.md5 create mode 100644 dc/dfd/class_b_t_1_1_script_node__coll__graph.png create mode 100644 dd/d02/class_b_t_1_1_manual_selector_node-members.html create mode 100644 dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.map create mode 100644 dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.md5 create mode 100644 dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.png create mode 100644 dd/d25/class_b_t_1_1_runtime_error-members.html create mode 100644 dd/d26/class_b_t_1_1_keep_running_until_failure_node-members.html create mode 100644 dd/d26/class_b_t_1_1_type_info__inherit__graph.map create mode 100644 dd/d26/class_b_t_1_1_type_info__inherit__graph.md5 create mode 100644 dd/d26/class_b_t_1_1_type_info__inherit__graph.png create mode 100644 dd/d31/class_b_t_1_1_tree-members.html create mode 100644 dd/d32/class_b_t_1_1_loop_node.html create mode 100644 dd/d32/class_b_t_1_1_loop_node.js create mode 100644 dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.map create mode 100644 dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.md5 create mode 100644 dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.png create mode 100644 dd/d34/class_b_t_1_1_runtime_error__coll__graph.map create mode 100644 dd/d34/class_b_t_1_1_runtime_error__coll__graph.md5 create mode 100644 dd/d34/class_b_t_1_1_runtime_error__coll__graph.png create mode 100644 dd/d3d/simple__string_8hpp_source.html create mode 100644 dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.map create mode 100644 dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.md5 create mode 100644 dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.png create mode 100644 dd/d5c/xml__parsing_8h_source.html create mode 100644 dd/d5d/class_b_t_1_1_loop_node__coll__graph.map create mode 100644 dd/d5d/class_b_t_1_1_loop_node__coll__graph.md5 create mode 100644 dd/d5d/class_b_t_1_1_loop_node__coll__graph.png create mode 100644 dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.map create mode 100644 dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.md5 create mode 100644 dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.png create mode 100644 dd/d7a/class_b_t_1_1_switch_node__coll__graph.map create mode 100644 dd/d7a/class_b_t_1_1_switch_node__coll__graph.md5 create mode 100644 dd/d7a/class_b_t_1_1_switch_node__coll__graph.png create mode 100644 dd/d83/class_b_t_1_1_fallback_node-members.html create mode 100644 dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.map create mode 100644 dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.md5 create mode 100644 dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.png create mode 100644 dd/d94/class_b_t_1_1_retry_node__inherit__graph.map create mode 100644 dd/d94/class_b_t_1_1_retry_node__inherit__graph.md5 create mode 100644 dd/d94/class_b_t_1_1_retry_node__inherit__graph.png create mode 100644 dd/d99/class_b_t_1_1_simple_action_node-members.html create mode 100644 dd/dac/struct_b_t_1_1_grammar_1_1_expression_1_1comparison-members.html create mode 100644 dd/dae/parallel__node_8h_source.html create mode 100644 dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.map create mode 100644 dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.md5 create mode 100644 dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.png create mode 100644 dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.map create mode 100644 dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.md5 create mode 100644 dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.png create mode 100644 dd/dbd/class_b_t_1_1_run_once_node.html create mode 100644 dd/dc2/always__success__node_8h_source.html create mode 100644 dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.map create mode 100644 dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.md5 create mode 100644 dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.png create mode 100644 dd/dcd/operators_8hpp_source.html create mode 100644 dd/dce/class_b_t_1_1_action_node_base__coll__graph.map create mode 100644 dd/dce/class_b_t_1_1_action_node_base__coll__graph.md5 create mode 100644 dd/dce/class_b_t_1_1_action_node_base__coll__graph.png create mode 100644 dd/dce/class_b_t_1_1_always_success_node.html create mode 100644 dd/dce/class_b_t_1_1_leaf_node__inherit__graph.map create mode 100644 dd/dce/class_b_t_1_1_leaf_node__inherit__graph.md5 create mode 100644 dd/dce/class_b_t_1_1_leaf_node__inherit__graph.png create mode 100644 dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html create mode 100644 dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.map create mode 100644 dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.md5 create mode 100644 dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.png create mode 100644 dd/de4/class_b_t_1_1_retry_node.html create mode 100644 dd/de4/class_b_t_1_1_retry_node.js create mode 100644 dd/df1/class_b_t_1_1_runtime_error__inherit__graph.map create mode 100644 dd/df1/class_b_t_1_1_runtime_error__inherit__graph.md5 create mode 100644 dd/df1/class_b_t_1_1_runtime_error__inherit__graph.png create mode 100644 de/d01/class_b_t_1_1_sqlite_logger-members.html create mode 100644 de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.map create mode 100644 de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.md5 create mode 100644 de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.png create mode 100644 de/d22/class_b_t_1_1_keep_running_until_failure_node.html create mode 100644 de/d23/class_b_t_1_1_control_node__coll__graph.map create mode 100644 de/d23/class_b_t_1_1_control_node__coll__graph.md5 create mode 100644 de/d23/class_b_t_1_1_control_node__coll__graph.png create mode 100644 de/d25/struct_b_t_1_1_tree_1_1_subtree-members.html create mode 100644 de/d30/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum-members.html create mode 100644 de/d34/class_safe_any_1_1_simple_string.html create mode 100644 de/d41/class_b_t_1_1_std_cout_logger-members.html create mode 100644 de/d43/class_b_t_1_1_shared_library-members.html create mode 100644 de/d4f/class_b_t_1_1_minitrace_logger.html create mode 100644 de/d69/class_b_t_1_1_retry_node__coll__graph.map create mode 100644 de/d69/class_b_t_1_1_retry_node__coll__graph.md5 create mode 100644 de/d69/class_b_t_1_1_retry_node__coll__graph.png create mode 100644 de/d69/class_b_t_1_1_sequence_with_memory.html create mode 100644 de/d69/class_b_t_1_1_sequence_with_memory.js create mode 100644 de/d72/class_b_t_1_1_reactive_fallback-members.html create mode 100644 de/d78/convert__impl_8hpp_source.html create mode 100644 de/d79/groot2__protocol_8h_source.html create mode 100644 de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.map create mode 100644 de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.md5 create mode 100644 de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.png create mode 100644 de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html create mode 100644 de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.map create mode 100644 de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.md5 create mode 100644 de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.png create mode 100644 de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.map create mode 100644 de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.md5 create mode 100644 de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.png create mode 100644 de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.map create mode 100644 de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.md5 create mode 100644 de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.png create mode 100644 de/d9e/class_b_t_1_1_threaded_action__inherit__graph.map create mode 100644 de/d9e/class_b_t_1_1_threaded_action__inherit__graph.md5 create mode 100644 de/d9e/class_b_t_1_1_threaded_action__inherit__graph.png create mode 100644 de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.map create mode 100644 de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.md5 create mode 100644 de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.png create mode 100644 de/d9f/class_b_t_1_1_reactive_sequence.html create mode 100644 de/da6/class_b_t_1_1_parser.html create mode 100644 de/daa/struct_b_t_1_1_ast_1_1_environment-members.html create mode 100644 de/db9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat-members.html create mode 100644 de/dbd/class_b_t_1_1_file_logger2-members.html create mode 100644 de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html create mode 100644 de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html create mode 100644 de/dce/class_b_t_1_1_sleep_node__coll__graph.map create mode 100644 de/dce/class_b_t_1_1_sleep_node__coll__graph.md5 create mode 100644 de/dce/class_b_t_1_1_sleep_node__coll__graph.png create mode 100644 de/ded/class_b_t_1_1_tree_observer-members.html create mode 100644 de/ded/struct_b_t_1_1_grammar_1_1_expression_1_1logical-members.html create mode 100644 de/df3/class_b_t_1_1_consume_queue__inherit__graph.map create mode 100644 de/df3/class_b_t_1_1_consume_queue__inherit__graph.md5 create mode 100644 de/df3/class_b_t_1_1_consume_queue__inherit__graph.png create mode 100644 de/dfa/while__do__else__node_8h_source.html create mode 100644 de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.map create mode 100644 de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.md5 create mode 100644 de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.png create mode 100644 df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.map create mode 100644 df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.md5 create mode 100644 df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.png create mode 100644 df/d11/struct_b_t_1_1_grammar_1_1nested__expr-members.html create mode 100644 df/d25/class_b_t_1_1_coro_action_node__coll__graph.map create mode 100644 df/d25/class_b_t_1_1_coro_action_node__coll__graph.md5 create mode 100644 df/d25/class_b_t_1_1_coro_action_node__coll__graph.png create mode 100644 df/d2c/class_b_t_1_1_repeat_node__coll__graph.map create mode 100644 df/d2c/class_b_t_1_1_repeat_node__coll__graph.md5 create mode 100644 df/d2c/class_b_t_1_1_repeat_node__coll__graph.png create mode 100644 df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html create mode 100644 df/d34/class_b_t_1_1_sub_tree_node.html create mode 100644 df/d34/class_b_t_1_1_sub_tree_node.js create mode 100644 df/d38/class_b_t_1_1_queue_size-members.html create mode 100644 df/d43/struct_b_t_1_1_monitor_1_1_hook-members.html create mode 100644 df/d44/class_b_t_1_1_precondition_node-members.html create mode 100644 df/d48/class_b_t_1_1_entry_updated_action-members.html create mode 100644 df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html create mode 100644 df/d4c/class_b_t_1_1_timer_queue.html create mode 100644 df/d4c/class_b_t_1_1_timer_queue.js create mode 100644 df/d4f/class_b_t_1_1_logic_error.html create mode 100644 df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.map create mode 100644 df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.md5 create mode 100644 df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.png create mode 100644 df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html create mode 100644 df/d73/class_b_t_1_1_force_failure_node-members.html create mode 100644 df/d73/class_b_t_1_1_parallel_all_node-members.html create mode 100644 df/d73/struct_b_t_1_1_grammar_1_1_boolean_literal-members.html create mode 100644 df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.map create mode 100644 df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.md5 create mode 100644 df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.png create mode 100644 df/d85/class_b_t_1_1_always_success_node-members.html create mode 100644 df/d93/class_b_t_1_1_behavior_tree_exception.html create mode 100644 df/d96/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true-members.html create mode 100644 df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html create mode 100644 df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.map create mode 100644 df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.md5 create mode 100644 df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.png create mode 100644 df/d9f/class_b_t_1_1_entry_updated_action.html create mode 100644 df/da2/sequence__with__memory__node_8h_source.html create mode 100644 df/da3/class_b_t_1_1_delay_node__coll__graph.map create mode 100644 df/da3/class_b_t_1_1_delay_node__coll__graph.md5 create mode 100644 df/da3/class_b_t_1_1_delay_node__coll__graph.png create mode 100644 df/da8/namespace_b_t_1_1details.html create mode 100644 df/da8/namespace_b_t_1_1details.js create mode 100644 df/daf/class_b_t_1_1_force_failure_node__inherit__graph.map create mode 100644 df/daf/class_b_t_1_1_force_failure_node__inherit__graph.md5 create mode 100644 df/daf/class_b_t_1_1_force_failure_node__inherit__graph.png create mode 100644 df/daf/class_b_t_1_1_inverter_node__coll__graph.map create mode 100644 df/daf/class_b_t_1_1_inverter_node__coll__graph.md5 create mode 100644 df/daf/class_b_t_1_1_inverter_node__coll__graph.png create mode 100644 df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html create mode 100644 df/db9/class_b_t_1_1_run_once_node__inherit__graph.map create mode 100644 df/db9/class_b_t_1_1_run_once_node__inherit__graph.md5 create mode 100644 df/db9/class_b_t_1_1_run_once_node__inherit__graph.png create mode 100644 df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.map create mode 100644 df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.md5 create mode 100644 df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.png create mode 100644 df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.map create mode 100644 df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.md5 create mode 100644 df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.png create mode 100644 df/dc2/class_b_t_1_1_consume_queue.html create mode 100644 df/dc2/class_b_t_1_1_consume_queue.js create mode 100644 df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.map create mode 100644 df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.md5 create mode 100644 df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.png create mode 100644 df/ddb/class_b_t_1_1_sqlite_logger.html create mode 100644 df/ddb/class_b_t_1_1_sqlite_logger.js create mode 100644 df/dde/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix-members.html create mode 100644 dir_0079e7ae641af117c6a457ee281e6635.html create mode 100644 dir_0079e7ae641af117c6a457ee281e6635.js create mode 100644 dir_0079e7ae641af117c6a457ee281e6635_dep.map create mode 100644 dir_0079e7ae641af117c6a457ee281e6635_dep.md5 create mode 100644 dir_0079e7ae641af117c6a457ee281e6635_dep.png create mode 100644 dir_1573ea42ce800d213ff17f25e5e834ef.html create mode 100644 dir_1573ea42ce800d213ff17f25e5e834ef.js create mode 100644 dir_1573ea42ce800d213ff17f25e5e834ef_dep.map create mode 100644 dir_1573ea42ce800d213ff17f25e5e834ef_dep.md5 create mode 100644 dir_1573ea42ce800d213ff17f25e5e834ef_dep.png create mode 100644 dir_235a16759d8d8fc57a402b291db0fa77.html create mode 100644 dir_235a16759d8d8fc57a402b291db0fa77.js create mode 100644 dir_235a16759d8d8fc57a402b291db0fa77_dep.map create mode 100644 dir_235a16759d8d8fc57a402b291db0fa77_dep.md5 create mode 100644 dir_235a16759d8d8fc57a402b291db0fa77_dep.png create mode 100644 dir_65bce70eeebcad5aa886bc98b14fc221.html create mode 100644 dir_65bce70eeebcad5aa886bc98b14fc221.js create mode 100644 dir_65bce70eeebcad5aa886bc98b14fc221_dep.map create mode 100644 dir_65bce70eeebcad5aa886bc98b14fc221_dep.md5 create mode 100644 dir_65bce70eeebcad5aa886bc98b14fc221_dep.png create mode 100644 dir_7bd192d5a3f968f9ea7d18b0796c3811.html create mode 100644 dir_7bd192d5a3f968f9ea7d18b0796c3811.js create mode 100644 dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.map create mode 100644 dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.md5 create mode 100644 dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.png create mode 100644 dir_84e7dcb321defd2b6d86aae3d71dd2bc.html create mode 100644 dir_84e7dcb321defd2b6d86aae3d71dd2bc.js create mode 100644 dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.map create mode 100644 dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.md5 create mode 100644 dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.png create mode 100644 dir_be504959e339b6de8c9618e774fdc689.html create mode 100644 dir_be504959e339b6de8c9618e774fdc689.js create mode 100644 dir_be504959e339b6de8c9618e774fdc689_dep.map create mode 100644 dir_be504959e339b6de8c9618e774fdc689_dep.md5 create mode 100644 dir_be504959e339b6de8c9618e774fdc689_dep.png create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 dir_d44c64559bbebec7f509842c48db8b23.js create mode 100644 dir_dbe048a79b774cd1d4dcb0e6934684ec.html create mode 100644 dir_dbe048a79b774cd1d4dcb0e6934684ec.js create mode 100644 dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.map create mode 100644 dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.md5 create mode 100644 dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.png create mode 100644 doc.png create mode 100644 docd.png create mode 100644 doxygen.css create mode 100644 doxygen.svg create mode 100644 dynsections.js create mode 100644 files.html create mode 100644 files_dup.js create mode 100644 folderclosed.png create mode 100644 folderopen.png create mode 100644 functions.html create mode 100644 functions_enum.html create mode 100644 functions_eval.html create mode 100644 functions_func.html create mode 100644 functions_type.html create mode 100644 functions_vars.html create mode 100644 graph_legend.html create mode 100644 graph_legend.md5 create mode 100644 graph_legend.png create mode 100644 hierarchy.html create mode 100644 hierarchy.js create mode 100644 index.html create mode 100644 inherit_graph_0.map create mode 100644 inherit_graph_0.md5 create mode 100644 inherit_graph_0.png create mode 100644 inherit_graph_1.map create mode 100644 inherit_graph_1.md5 create mode 100644 inherit_graph_1.png create mode 100644 inherit_graph_10.map create mode 100644 inherit_graph_10.md5 create mode 100644 inherit_graph_10.png create mode 100644 inherit_graph_11.map create mode 100644 inherit_graph_11.md5 create mode 100644 inherit_graph_11.png create mode 100644 inherit_graph_12.map create mode 100644 inherit_graph_12.md5 create mode 100644 inherit_graph_12.png create mode 100644 inherit_graph_13.map create mode 100644 inherit_graph_13.md5 create mode 100644 inherit_graph_13.png create mode 100644 inherit_graph_14.map create mode 100644 inherit_graph_14.md5 create mode 100644 inherit_graph_14.png create mode 100644 inherit_graph_15.map create mode 100644 inherit_graph_15.md5 create mode 100644 inherit_graph_15.png create mode 100644 inherit_graph_16.map create mode 100644 inherit_graph_16.md5 create mode 100644 inherit_graph_16.png create mode 100644 inherit_graph_17.map create mode 100644 inherit_graph_17.md5 create mode 100644 inherit_graph_17.png create mode 100644 inherit_graph_18.map create mode 100644 inherit_graph_18.md5 create mode 100644 inherit_graph_18.png create mode 100644 inherit_graph_19.map create mode 100644 inherit_graph_19.md5 create mode 100644 inherit_graph_19.png create mode 100644 inherit_graph_2.map create mode 100644 inherit_graph_2.md5 create mode 100644 inherit_graph_2.png create mode 100644 inherit_graph_20.map create mode 100644 inherit_graph_20.md5 create mode 100644 inherit_graph_20.png create mode 100644 inherit_graph_21.map create mode 100644 inherit_graph_21.md5 create mode 100644 inherit_graph_21.png create mode 100644 inherit_graph_22.map create mode 100644 inherit_graph_22.md5 create mode 100644 inherit_graph_22.png create mode 100644 inherit_graph_23.map create mode 100644 inherit_graph_23.md5 create mode 100644 inherit_graph_23.png create mode 100644 inherit_graph_24.map create mode 100644 inherit_graph_24.md5 create mode 100644 inherit_graph_24.png create mode 100644 inherit_graph_25.map create mode 100644 inherit_graph_25.md5 create mode 100644 inherit_graph_25.png create mode 100644 inherit_graph_26.map create mode 100644 inherit_graph_26.md5 create mode 100644 inherit_graph_26.png create mode 100644 inherit_graph_27.map create mode 100644 inherit_graph_27.md5 create mode 100644 inherit_graph_27.png create mode 100644 inherit_graph_28.map create mode 100644 inherit_graph_28.md5 create mode 100644 inherit_graph_28.png create mode 100644 inherit_graph_29.map create mode 100644 inherit_graph_29.md5 create mode 100644 inherit_graph_29.png create mode 100644 inherit_graph_3.map create mode 100644 inherit_graph_3.md5 create mode 100644 inherit_graph_3.png create mode 100644 inherit_graph_30.map create mode 100644 inherit_graph_30.md5 create mode 100644 inherit_graph_30.png create mode 100644 inherit_graph_31.map create mode 100644 inherit_graph_31.md5 create mode 100644 inherit_graph_31.png create mode 100644 inherit_graph_32.map create mode 100644 inherit_graph_32.md5 create mode 100644 inherit_graph_32.png create mode 100644 inherit_graph_33.map create mode 100644 inherit_graph_33.md5 create mode 100644 inherit_graph_33.png create mode 100644 inherit_graph_34.map create mode 100644 inherit_graph_34.md5 create mode 100644 inherit_graph_34.png create mode 100644 inherit_graph_35.map create mode 100644 inherit_graph_35.md5 create mode 100644 inherit_graph_35.png create mode 100644 inherit_graph_36.map create mode 100644 inherit_graph_36.md5 create mode 100644 inherit_graph_36.png create mode 100644 inherit_graph_37.map create mode 100644 inherit_graph_37.md5 create mode 100644 inherit_graph_37.png create mode 100644 inherit_graph_38.map create mode 100644 inherit_graph_38.md5 create mode 100644 inherit_graph_38.png create mode 100644 inherit_graph_39.map create mode 100644 inherit_graph_39.md5 create mode 100644 inherit_graph_39.png create mode 100644 inherit_graph_4.map create mode 100644 inherit_graph_4.md5 create mode 100644 inherit_graph_4.png create mode 100644 inherit_graph_40.map create mode 100644 inherit_graph_40.md5 create mode 100644 inherit_graph_40.png create mode 100644 inherit_graph_41.map create mode 100644 inherit_graph_41.md5 create mode 100644 inherit_graph_41.png create mode 100644 inherit_graph_42.map create mode 100644 inherit_graph_42.md5 create mode 100644 inherit_graph_42.png create mode 100644 inherit_graph_43.map create mode 100644 inherit_graph_43.md5 create mode 100644 inherit_graph_43.png create mode 100644 inherit_graph_44.map create mode 100644 inherit_graph_44.md5 create mode 100644 inherit_graph_44.png create mode 100644 inherit_graph_45.map create mode 100644 inherit_graph_45.md5 create mode 100644 inherit_graph_45.png create mode 100644 inherit_graph_46.map create mode 100644 inherit_graph_46.md5 create mode 100644 inherit_graph_46.png create mode 100644 inherit_graph_47.map create mode 100644 inherit_graph_47.md5 create mode 100644 inherit_graph_47.png create mode 100644 inherit_graph_48.map create mode 100644 inherit_graph_48.md5 create mode 100644 inherit_graph_48.png create mode 100644 inherit_graph_49.map create mode 100644 inherit_graph_49.md5 create mode 100644 inherit_graph_49.png create mode 100644 inherit_graph_5.map create mode 100644 inherit_graph_5.md5 create mode 100644 inherit_graph_5.png create mode 100644 inherit_graph_50.map create mode 100644 inherit_graph_50.md5 create mode 100644 inherit_graph_50.png create mode 100644 inherit_graph_51.map create mode 100644 inherit_graph_51.md5 create mode 100644 inherit_graph_51.png create mode 100644 inherit_graph_6.map create mode 100644 inherit_graph_6.md5 create mode 100644 inherit_graph_6.png create mode 100644 inherit_graph_7.map create mode 100644 inherit_graph_7.md5 create mode 100644 inherit_graph_7.png create mode 100644 inherit_graph_8.map create mode 100644 inherit_graph_8.md5 create mode 100644 inherit_graph_8.png create mode 100644 inherit_graph_9.map create mode 100644 inherit_graph_9.md5 create mode 100644 inherit_graph_9.png create mode 100644 inherits.html create mode 100644 jquery.js create mode 100644 menu.js create mode 100644 menudata.js create mode 100644 namespacemembers.html create mode 100644 namespacemembers_enum.html create mode 100644 namespacemembers_func.html create mode 100644 namespacemembers_type.html create mode 100644 namespaces.html create mode 100644 namespaces_dup.js create mode 100644 nav_f.png create mode 100644 nav_fd.png create mode 100644 nav_g.png create mode 100644 nav_h.png create mode 100644 nav_hd.png create mode 100644 navtree.css create mode 100644 navtree.js create mode 100644 navtreedata.js create mode 100644 navtreeindex0.js create mode 100644 navtreeindex1.js create mode 100644 navtreeindex2.js create mode 100644 open.png create mode 100644 resize.js create mode 100644 search/all_0.js create mode 100644 search/all_1.js create mode 100644 search/all_10.js create mode 100644 search/all_11.js create mode 100644 search/all_12.js create mode 100644 search/all_13.js create mode 100644 search/all_14.js create mode 100644 search/all_15.js create mode 100644 search/all_16.js create mode 100644 search/all_17.js create mode 100644 search/all_18.js create mode 100644 search/all_19.js create mode 100644 search/all_2.js create mode 100644 search/all_3.js create mode 100644 search/all_4.js create mode 100644 search/all_5.js create mode 100644 search/all_6.js create mode 100644 search/all_7.js create mode 100644 search/all_8.js create mode 100644 search/all_9.js create mode 100644 search/all_a.js create mode 100644 search/all_b.js create mode 100644 search/all_c.js create mode 100644 search/all_d.js create mode 100644 search/all_e.js create mode 100644 search/all_f.js create mode 100644 search/classes_0.js create mode 100644 search/classes_1.js create mode 100644 search/classes_10.js create mode 100644 search/classes_11.js create mode 100644 search/classes_12.js create mode 100644 search/classes_13.js create mode 100644 search/classes_14.js create mode 100644 search/classes_15.js create mode 100644 search/classes_16.js create mode 100644 search/classes_2.js create mode 100644 search/classes_3.js create mode 100644 search/classes_4.js create mode 100644 search/classes_5.js create mode 100644 search/classes_6.js create mode 100644 search/classes_7.js create mode 100644 search/classes_8.js create mode 100644 search/classes_9.js create mode 100644 search/classes_a.js create mode 100644 search/classes_b.js create mode 100644 search/classes_c.js create mode 100644 search/classes_d.js create mode 100644 search/classes_e.js create mode 100644 search/classes_f.js create mode 100644 search/close.svg create mode 100644 search/enums_0.js create mode 100644 search/enums_1.js create mode 100644 search/enumvalues_0.js create mode 100644 search/functions_0.js create mode 100644 search/functions_1.js create mode 100644 search/functions_10.js create mode 100644 search/functions_11.js create mode 100644 search/functions_12.js create mode 100644 search/functions_13.js create mode 100644 search/functions_2.js create mode 100644 search/functions_3.js create mode 100644 search/functions_4.js create mode 100644 search/functions_5.js create mode 100644 search/functions_6.js create mode 100644 search/functions_7.js create mode 100644 search/functions_8.js create mode 100644 search/functions_9.js create mode 100644 search/functions_a.js create mode 100644 search/functions_b.js create mode 100644 search/functions_c.js create mode 100644 search/functions_d.js create mode 100644 search/functions_e.js create mode 100644 search/functions_f.js create mode 100644 search/mag.svg create mode 100644 search/mag_d.svg create mode 100644 search/mag_sel.svg create mode 100644 search/mag_seld.svg create mode 100644 search/namespaces_0.js create mode 100644 search/search.css create mode 100644 search/search.js create mode 100644 search/searchdata.js create mode 100644 search/typedefs_0.js create mode 100644 search/typedefs_1.js create mode 100644 search/typedefs_2.js create mode 100644 search/typedefs_3.js create mode 100644 search/variables_0.js create mode 100644 search/variables_1.js create mode 100644 search/variables_2.js create mode 100644 search/variables_3.js create mode 100644 search/variables_4.js create mode 100644 search/variables_5.js create mode 100644 splitbar.png create mode 100644 splitbard.png create mode 100644 sync_off.png create mode 100644 sync_on.png create mode 100644 tab_a.png create mode 100644 tab_ad.png create mode 100644 tab_b.png create mode 100644 tab_bd.png create mode 100644 tab_h.png create mode 100644 tab_hd.png create mode 100644 tab_s.png create mode 100644 tab_sd.png create mode 100644 tabs.css diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/annotated.html b/annotated.html new file mode 100644 index 000000000..323c94dfd --- /dev/null +++ b/annotated.html @@ -0,0 +1,246 @@ + + + + + + + +BehaviorTree: Class List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NBT
 NAst
 NdetailsThe SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed according to the value of a blackboard entry
 NGrammar
 NMonitor
 CActionNodeBaseThe ActionNodeBase is the base class to use to create any kind of action. A particular derived class is free to override executeTick() as needed
 CAlwaysFailureNode
 CAlwaysSuccessNode
 CAny
 CAnyTypeAllowed
 CBehaviorTreeException
 CBehaviorTreeFactoryThe BehaviorTreeFactory is used to create instances of a TreeNode at run-time
 CBlackboardThe Blackboard is the mechanism used by BehaviorTrees to exchange typed data
 CConditionNode
 CConsumeQueue
 CControlNode
 CCoroActionNodeA good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface
 CDecoratorNode
 CDelayNodeThe delay node will introduce a delay and then tick the child returning the status of the child as it is upon completion The delay is in milliseconds and it is passed using the port "delay_msec"
 CEntryUpdatedActionThe EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since the last time
 CEntryUpdatedDecoratorThe EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated since the last time (true, the first time)
 CFallbackNodeThe FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNING, previous children will NOT be ticked again
 CFileLogger2The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency
 CForceFailureNodeThe ForceFailureNode returns always FAILURE or RUNNING
 CForceSuccessNodeThe ForceSuccessNode returns always SUCCESS or RUNNING
 CGroot2PublisherThe Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2
 Chas_static_method_metadata
 Chas_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >
 Chas_static_method_providedPorts
 Chas_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >
 CIfThenElseNodeIfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive
 CInverterNodeThe InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propagated
 CJsonExporter
 CKeepRunningUntilFailureNodeThe KeepRunningUntilFailureNode returns always FAILURE or RUNNING
 CLeafNode
 CLockedPtrThe LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object
 CLogicError
 CLoopNodeThe LoopNode class is used to pop_front elements from a std::deque. This element is copied into the port "value" and the child will be executed, as long as we have elements in the queue
 CManualSelectorNodeUse a Terminal User Interface (ncurses) to select a certain child manually
 CMinitraceLogger
 CNodeConfig
 CParallelAllNodeThe ParallelAllNode execute all its children concurrently, but not in separate threads!
 CParallelNodeThe ParallelNode execute all its children concurrently, but not in separate threads!
 CParserThe BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
 CPopFromQueue
 CPortInfo
 CPreconditionNode
 CProtectedQueue
 CQueueSize
 CReactiveFallbackThe ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last:
 CReactiveSequenceThe ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last:
 CRepeatNodeThe RepeatNode is used to execute a child several times, as long as it succeed
 CRetryNodeThe RetryNode is used to execute a child several times if it fails
 CRetryNodeTypo
 CRunOnceNodeThe RunOnceNode is used when you want to execute the child only once. If the child is asynchronous, we will tick until either SUCCESS or FAILURE is returned
 CRuntimeError
 Cscoped_demangled_name
 CScriptConditionExecute a script, and if the result is true, return SUCCESS, FAILURE otherwise
 CScriptNode
 CSequenceNodeThe SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again
 CSequenceWithMemoryThe SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING, previous children are not ticked again
 CSetBlackboardNodeThe SetBlackboard is action used to store a string into an entry of the Blackboard specified in "output_key"
 CSharedLibrary
 CSignal
 CSimpleActionNodeThe SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callback with this signature
 CSimpleConditionNodeThe SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callback with this signature
 CSimpleDecoratorNodeThe SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callback with this signature
 CSleepNodeSleep for a certain amount of time. Consider also using the decorator <Delay>
 CSqliteLoggerThe SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file)
 CStampedValue
 CStatefulActionNodeThe StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier to use correctly, when compared with ThreadedAction
 CStatusChangeLogger
 CStdCoutLoggerStdCoutLogger is a very simple logger that displays all the transitions on the console
 CSubTreeNodeThe SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard. If you want to have data flow through ports, you need to explicitly remap the ports
 CSwitchNode
 CSyncActionNodeThe SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require an implementation of halt()
 CTestNodeThe TestNode is a Node that can be configure to:
 CTestNodeConfig
 CThreadedActionThe ThreadedAction executes the tick in a different thread
 CTimeoutNodeThe TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time. The timeout is in milliseconds and it is passed using the port "msec"
 CTimerQueue
 CTimestamp
 CTreeStruct used to store a tree. If this object goes out of scope, the tree is destroyed
 CTreeNodeAbstract base class for Behavior Tree Nodes
 CTreeNodeManifestThis information is used mostly by the XMLParser
 CTreeObserverThe TreeObserver is used to collect statistics about which nodes are executed and their returned status
 CTypeInfo
 CUnsetBlackboardNode
 CWakeUpSignal
 CWhileDoElseNodeWhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode
 CXMLParserThe XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
 NSafeAny
 CSimpleString
+
+
+
+ + + + diff --git a/annotated_dup.js b/annotated_dup.js new file mode 100644 index 000000000..5bd53cf62 --- /dev/null +++ b/annotated_dup.js @@ -0,0 +1,125 @@ +var annotated_dup = +[ + [ "BT", "d2/d8d/namespace_b_t.html", [ + [ "Ast", null, [ + [ "Environment", "d0/de8/struct_b_t_1_1_ast_1_1_environment.html", null ], + [ "ExprAssignment", "db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html", null ], + [ "ExprBase", "db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html", null ], + [ "ExprBinaryArithmetic", "da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html", null ], + [ "ExprComparison", "d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html", null ], + [ "ExprIf", "db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html", null ], + [ "ExprLiteral", "dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html", null ], + [ "ExprName", "d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html", null ], + [ "ExprUnaryArithmetic", "de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html", null ] + ] ], + [ "details", "df/da8/namespace_b_t_1_1details.html", [ + [ "Semaphore", "d9/d24/class_b_t_1_1details_1_1_semaphore.html", null ] + ] ], + [ "Grammar", null, [ + [ "_xid_start_character", "df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html", null ], + [ "AnyValue", "d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html", null ], + [ "BooleanLiteral", "d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html", "d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal" ], + [ "Expression", "d7/d86/struct_b_t_1_1_grammar_1_1_expression.html", "d7/d86/struct_b_t_1_1_grammar_1_1_expression" ], + [ "Integer", "dc/d75/struct_b_t_1_1_grammar_1_1_integer.html", "dc/d75/struct_b_t_1_1_grammar_1_1_integer" ], + [ "Name", "d7/d91/struct_b_t_1_1_grammar_1_1_name.html", null ], + [ "nested_expr", "df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html", null ], + [ "Real", "dc/d13/struct_b_t_1_1_grammar_1_1_real.html", "dc/d13/struct_b_t_1_1_grammar_1_1_real" ], + [ "stmt", "d6/db1/struct_b_t_1_1_grammar_1_1stmt.html", null ], + [ "StringLiteral", "df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html", null ] + ] ], + [ "Monitor", null, [ + [ "Hook", "dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html", null ], + [ "ReplyHeader", "dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html", null ], + [ "RequestHeader", "dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html", null ] + ] ], + [ "ActionNodeBase", "d3/de2/class_b_t_1_1_action_node_base.html", null ], + [ "AlwaysFailureNode", "d0/d9c/class_b_t_1_1_always_failure_node.html", null ], + [ "AlwaysSuccessNode", "dd/dce/class_b_t_1_1_always_success_node.html", null ], + [ "Any", "d7/df4/class_b_t_1_1_any.html", null ], + [ "AnyTypeAllowed", "d4/df1/struct_b_t_1_1_any_type_allowed.html", null ], + [ "BehaviorTreeException", "df/d93/class_b_t_1_1_behavior_tree_exception.html", null ], + [ "BehaviorTreeFactory", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html", "d6/dcd/class_b_t_1_1_behavior_tree_factory" ], + [ "Blackboard", "d0/d51/class_b_t_1_1_blackboard.html", "d0/d51/class_b_t_1_1_blackboard" ], + [ "ConditionNode", "dc/dfc/class_b_t_1_1_condition_node.html", "dc/dfc/class_b_t_1_1_condition_node" ], + [ "ConsumeQueue", "df/dc2/class_b_t_1_1_consume_queue.html", "df/dc2/class_b_t_1_1_consume_queue" ], + [ "ControlNode", "d6/ddb/class_b_t_1_1_control_node.html", "d6/ddb/class_b_t_1_1_control_node" ], + [ "CoroActionNode", "d8/dd4/class_b_t_1_1_coro_action_node.html", "d8/dd4/class_b_t_1_1_coro_action_node" ], + [ "DecoratorNode", "d1/de7/class_b_t_1_1_decorator_node.html", "d1/de7/class_b_t_1_1_decorator_node" ], + [ "DelayNode", "d4/d56/class_b_t_1_1_delay_node.html", "d4/d56/class_b_t_1_1_delay_node" ], + [ "EntryUpdatedAction", "df/d9f/class_b_t_1_1_entry_updated_action.html", null ], + [ "EntryUpdatedDecorator", "d1/d7b/class_b_t_1_1_entry_updated_decorator.html", null ], + [ "FallbackNode", "dc/da6/class_b_t_1_1_fallback_node.html", "dc/da6/class_b_t_1_1_fallback_node" ], + [ "FileLogger2", "d2/d7b/class_b_t_1_1_file_logger2.html", "d2/d7b/class_b_t_1_1_file_logger2" ], + [ "ForceFailureNode", "d4/d8c/class_b_t_1_1_force_failure_node.html", null ], + [ "ForceSuccessNode", "d7/db8/class_b_t_1_1_force_success_node.html", null ], + [ "Groot2Publisher", "da/df5/class_b_t_1_1_groot2_publisher.html", "da/df5/class_b_t_1_1_groot2_publisher" ], + [ "has_static_method_metadata", "d1/da6/struct_b_t_1_1has__static__method__metadata.html", null ], + [ "has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >", "dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html", null ], + [ "has_static_method_providedPorts", "d0/d56/struct_b_t_1_1has__static__method__provided_ports.html", null ], + [ "has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >", "d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html", null ], + [ "IfThenElseNode", "d8/d08/class_b_t_1_1_if_then_else_node.html", "d8/d08/class_b_t_1_1_if_then_else_node" ], + [ "InverterNode", "d2/ded/class_b_t_1_1_inverter_node.html", null ], + [ "JsonExporter", "d0/d64/class_b_t_1_1_json_exporter.html", "d0/d64/class_b_t_1_1_json_exporter" ], + [ "KeepRunningUntilFailureNode", "de/d22/class_b_t_1_1_keep_running_until_failure_node.html", null ], + [ "LeafNode", "d1/de2/class_b_t_1_1_leaf_node.html", null ], + [ "LockedPtr", "d4/d98/class_b_t_1_1_locked_ptr.html", null ], + [ "LogicError", "df/d4f/class_b_t_1_1_logic_error.html", null ], + [ "LoopNode", "dd/d32/class_b_t_1_1_loop_node.html", "dd/d32/class_b_t_1_1_loop_node" ], + [ "ManualSelectorNode", "dc/d0b/class_b_t_1_1_manual_selector_node.html", "dc/d0b/class_b_t_1_1_manual_selector_node" ], + [ "MinitraceLogger", "de/d4f/class_b_t_1_1_minitrace_logger.html", null ], + [ "NodeConfig", "dc/d26/struct_b_t_1_1_node_config.html", null ], + [ "ParallelAllNode", "d3/d02/class_b_t_1_1_parallel_all_node.html", "d3/d02/class_b_t_1_1_parallel_all_node" ], + [ "ParallelNode", "d1/dee/class_b_t_1_1_parallel_node.html", "d1/dee/class_b_t_1_1_parallel_node" ], + [ "Parser", "de/da6/class_b_t_1_1_parser.html", null ], + [ "PopFromQueue", "d7/d3a/class_b_t_1_1_pop_from_queue.html", "d7/d3a/class_b_t_1_1_pop_from_queue" ], + [ "PortInfo", "d8/d5e/class_b_t_1_1_port_info.html", null ], + [ "PreconditionNode", "d7/dd5/class_b_t_1_1_precondition_node.html", null ], + [ "ProtectedQueue", "d6/dee/struct_b_t_1_1_protected_queue.html", null ], + [ "QueueSize", "d9/d8c/class_b_t_1_1_queue_size.html", "d9/d8c/class_b_t_1_1_queue_size" ], + [ "ReactiveFallback", "dc/d04/class_b_t_1_1_reactive_fallback.html", null ], + [ "ReactiveSequence", "de/d9f/class_b_t_1_1_reactive_sequence.html", null ], + [ "RepeatNode", "d6/d78/class_b_t_1_1_repeat_node.html", null ], + [ "RetryNode", "dd/de4/class_b_t_1_1_retry_node.html", "dd/de4/class_b_t_1_1_retry_node" ], + [ "RetryNodeTypo", "d1/def/class_b_t_1_1_retry_node_typo.html", null ], + [ "RunOnceNode", "dd/dbd/class_b_t_1_1_run_once_node.html", null ], + [ "RuntimeError", "da/d35/class_b_t_1_1_runtime_error.html", null ], + [ "scoped_demangled_name", "d3/d8c/class_b_t_1_1scoped__demangled__name.html", null ], + [ "ScriptCondition", "da/d26/class_b_t_1_1_script_condition.html", null ], + [ "ScriptNode", "db/d0f/class_b_t_1_1_script_node.html", null ], + [ "SequenceNode", "d9/ddd/class_b_t_1_1_sequence_node.html", "d9/ddd/class_b_t_1_1_sequence_node" ], + [ "SequenceWithMemory", "de/d69/class_b_t_1_1_sequence_with_memory.html", "de/d69/class_b_t_1_1_sequence_with_memory" ], + [ "SetBlackboardNode", "d7/d4f/class_b_t_1_1_set_blackboard_node.html", null ], + [ "SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html", "d2/ddd/class_b_t_1_1_shared_library" ], + [ "Signal", "d1/d73/class_b_t_1_1_signal.html", null ], + [ "SimpleActionNode", "d7/da7/class_b_t_1_1_simple_action_node.html", "d7/da7/class_b_t_1_1_simple_action_node" ], + [ "SimpleConditionNode", "dc/d49/class_b_t_1_1_simple_condition_node.html", "dc/d49/class_b_t_1_1_simple_condition_node" ], + [ "SimpleDecoratorNode", "d3/d37/class_b_t_1_1_simple_decorator_node.html", "d3/d37/class_b_t_1_1_simple_decorator_node" ], + [ "SleepNode", "d9/d33/class_b_t_1_1_sleep_node.html", "d9/d33/class_b_t_1_1_sleep_node" ], + [ "SqliteLogger", "df/ddb/class_b_t_1_1_sqlite_logger.html", "df/ddb/class_b_t_1_1_sqlite_logger" ], + [ "StampedValue", "d6/dfa/struct_b_t_1_1_stamped_value.html", null ], + [ "StatefulActionNode", "d0/d1f/class_b_t_1_1_stateful_action_node.html", "d0/d1f/class_b_t_1_1_stateful_action_node" ], + [ "StatusChangeLogger", "d9/dbb/class_b_t_1_1_status_change_logger.html", null ], + [ "StdCoutLogger", "d1/d52/class_b_t_1_1_std_cout_logger.html", null ], + [ "SubTreeNode", "df/d34/class_b_t_1_1_sub_tree_node.html", "df/d34/class_b_t_1_1_sub_tree_node" ], + [ "SwitchNode", "dc/dae/class_b_t_1_1_switch_node.html", "dc/dae/class_b_t_1_1_switch_node" ], + [ "SyncActionNode", "da/d73/class_b_t_1_1_sync_action_node.html", "da/d73/class_b_t_1_1_sync_action_node" ], + [ "TestNode", "d5/d7f/class_b_t_1_1_test_node.html", "d5/d7f/class_b_t_1_1_test_node" ], + [ "TestNodeConfig", "d6/d58/struct_b_t_1_1_test_node_config.html", "d6/d58/struct_b_t_1_1_test_node_config" ], + [ "ThreadedAction", "d2/d61/class_b_t_1_1_threaded_action.html", "d2/d61/class_b_t_1_1_threaded_action" ], + [ "TimeoutNode", "d4/d20/class_b_t_1_1_timeout_node.html", null ], + [ "TimerQueue", "df/d4c/class_b_t_1_1_timer_queue.html", "df/d4c/class_b_t_1_1_timer_queue" ], + [ "Timestamp", "d0/d59/struct_b_t_1_1_timestamp.html", null ], + [ "Tree", "d1/d79/class_b_t_1_1_tree.html", "d1/d79/class_b_t_1_1_tree" ], + [ "TreeNode", "da/d61/class_b_t_1_1_tree_node.html", "da/d61/class_b_t_1_1_tree_node" ], + [ "TreeNodeManifest", "dc/d6c/struct_b_t_1_1_tree_node_manifest.html", null ], + [ "TreeObserver", "d2/d2b/class_b_t_1_1_tree_observer.html", "d2/d2b/class_b_t_1_1_tree_observer" ], + [ "TypeInfo", "d0/d34/class_b_t_1_1_type_info.html", null ], + [ "UnsetBlackboardNode", "d1/d77/class_b_t_1_1_unset_blackboard_node.html", null ], + [ "WakeUpSignal", "da/d2f/class_b_t_1_1_wake_up_signal.html", "da/d2f/class_b_t_1_1_wake_up_signal" ], + [ "WhileDoElseNode", "d7/d54/class_b_t_1_1_while_do_else_node.html", "d7/d54/class_b_t_1_1_while_do_else_node" ], + [ "XMLParser", "d8/d05/class_b_t_1_1_x_m_l_parser.html", null ] + ] ], + [ "SafeAny", null, [ + [ "SimpleString", "de/d34/class_safe_any_1_1_simple_string.html", null ] + ] ] +]; \ No newline at end of file diff --git a/bc_s.png b/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/bc_sd.png b/bc_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..31ca888dc71049713b35c351933a8d0f36180bf1 GIT binary patch literal 635 zcmV->0)+jEP)Jwi0r1~gdSq#w{Bu1q z`craw(p2!hu$4C_$Oc3X(sI6e=9QSTwPt{G) z=htT&^~&c~L2~e{r5_5SYe7#Is-$ln>~Kd%$F#tC65?{LvQ}8O`A~RBB0N~`2M+waajO;5>3B&-viHGJeEK2TQOiPRa zfDKyqwMc4wfaEh4jt>H`nW_Zidwk@Bowp`}(VUaj-pSI(-1L>FJVsX}Yl9~JsqgsZ zUD9(rMwf23Gez6KPa|wwInZodP-2}9@fK0Ga_9{8SOjU&4l`pH4@qlQp83>>HT$xW zER^U>)MyV%t(Lu=`d=Y?{k1@}&r7ZGkFQ%z%N+sE9BtYjovzxyxCPxN6&@wLK{soQ zSmkj$aLI}miuE^p@~4}mg9OjDfGEkgY4~^XzLRUBB*O{+&vq<3v(E%+k_i%=`~j%{ Vj14gnt9}3g002ovPDHLkV1n!oC4m3{ literal 0 HcmV?d00001 diff --git a/bdwn.png b/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +BehaviorTree: Class Index + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | J | K | L | M | N | P | Q | R | S | T | U | W | X | _
+
+
+
A
+
ActionNodeBase (BT)
AlwaysFailureNode (BT)
AlwaysSuccessNode (BT)
Any (BT)
AnyTypeAllowed (BT)
AnyValue (BT::Grammar)
Expression::assignment (BT::Grammar)
+
+
B
+
BehaviorTreeException (BT)
BehaviorTreeFactory (BT)
Expression::bit_and (BT::Grammar)
Expression::bit_or (BT::Grammar)
Expression::bit_prefix (BT::Grammar)
Blackboard (BT)
BooleanLiteral (BT::Grammar)
+
+
C
+
Expression::comparison (BT::Grammar)
Expression::conditional (BT::Grammar)
ConditionNode (BT)
ConsumeQueue (BT)
ControlNode (BT)
CoroActionNode (BT)
+
+
D
+
DecoratorNode (BT)
DelayNode (BT)
+
+
E
+
Blackboard::Entry (BT)
EntryUpdatedAction (BT)
EntryUpdatedDecorator (BT)
Environment (BT::Ast)
Expression::expected_operand (BT::Grammar)
ExprAssignment (BT::Ast)
ExprBase (BT::Ast)
ExprBinaryArithmetic (BT::Ast)
ExprComparison (BT::Ast)
Expression (BT::Grammar)
ExprIf (BT::Ast)
ExprLiteral (BT::Ast)
ExprName (BT::Ast)
ExprUnaryArithmetic (BT::Ast)
+
+
F
+
FallbackNode (BT)
BooleanLiteral::False (BT::Grammar)
FileLogger2 (BT)
ForceFailureNode (BT)
ForceSuccessNode (BT)
+
+
G
+
Groot2Publisher (BT)
+
+
H
+
has_static_method_metadata (BT)
has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type > (BT)
has_static_method_providedPorts (BT)
has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type > (BT)
Hook (BT::Monitor)
+
+
I
+
IfThenElseNode (BT)
Integer (BT::Grammar)
Integer::integer (BT::Grammar)
Integer::invalid_suffix (BT::Grammar)
Real::invalid_suffix (BT::Grammar)
InverterNode (BT)
+
+
J
+
JsonExporter (BT)
+
+
K
+
KeepRunningUntilFailureNode (BT)
+
+
L
+
LeafNode (BT)
LockedPtr (BT)
Expression::logical (BT::Grammar)
LogicError (BT)
LoopNode (BT)
+
+
M
+
ManualSelectorNode (BT)
Expression::math_prefix (BT::Grammar)
Expression::math_product (BT::Grammar)
Expression::math_sum (BT::Grammar)
MinitraceLogger (BT)
+
+
N
+
Name (BT::Grammar)
nested_expr (BT::Grammar)
NodeConfig (BT)
TreeObserver::NodeStatistics (BT)
+
+
P
+
ParallelAllNode (BT)
ParallelNode (BT)
Parser (BT)
PopFromQueue (BT)
PortInfo (BT)
PreconditionNode (BT)
ProtectedQueue (BT)
+
+
Q
+
QueueSize (BT)
+
+
R
+
ReactiveFallback (BT)
ReactiveSequence (BT)
Real (BT::Grammar)
RepeatNode (BT)
ReplyHeader (BT::Monitor)
RequestHeader (BT::Monitor)
RetryNode (BT)
RetryNodeTypo (BT)
RunOnceNode (BT)
RuntimeError (BT)
+
+
S
+
scoped_demangled_name (BT)
ScriptCondition (BT)
ScriptNode (BT)
Semaphore (BT::details)
SequenceNode (BT)
SequenceWithMemory (BT)
SetBlackboardNode (BT)
SharedLibrary (BT)
Signal (BT)
SimpleActionNode (BT)
SimpleConditionNode (BT)
SimpleDecoratorNode (BT)
SimpleString (SafeAny)
SleepNode (BT)
SqliteLogger (BT)
StampedValue (BT)
StatefulActionNode (BT)
StatusChangeLogger (BT)
StdCoutLogger (BT)
stmt (BT::Grammar)
Expression::string_concat (BT::Grammar)
StringLiteral (BT::Grammar)
Tree::Subtree (BT)
SubTreeNode (BT)
SwitchNode (BT)
SyncActionNode (BT)
+
+
T
+
TestNode (BT)
TestNodeConfig (BT)
ThreadedAction (BT)
TimeoutNode (BT)
TimerQueue (BT)
Timestamp (BT)
FileLogger2::Transition (BT)
Tree (BT)
TreeNode (BT)
TreeNodeManifest (BT)
TreeObserver (BT)
BooleanLiteral::True (BT::Grammar)
TypeInfo (BT)
+
+
U
+
UnsetBlackboardNode (BT)
+
+
W
+
WakeUpSignal (BT)
WhileDoElseNode (BT)
+
+
X
+
XMLParser (BT)
+
+
_
+
_xid_start_character (BT::Grammar)
+
+
+
+ + + + diff --git a/closed.png b/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/d0/d1f/class_b_t_1_1_stateful_action_node.html b/d0/d1f/class_b_t_1_1_stateful_action_node.html new file mode 100644 index 000000000..c62b82451 --- /dev/null +++ b/d0/d1f/class_b_t_1_1_stateful_action_node.html @@ -0,0 +1,492 @@ + + + + + + + +BehaviorTree: BT::StatefulActionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::StatefulActionNode Class Referenceabstract
+
+
+ +

The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier to use correctly, when compared with ThreadedAction. + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::StatefulActionNode:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for BT::StatefulActionNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StatefulActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus onStart ()=0
 
virtual NodeStatus onRunning ()=0
 method invoked when the action is already in the RUNNING state.
 
virtual void onHalted ()=0
 
+bool isHaltRequested () const
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

NodeStatus tick () override final
 Method to be implemented by the user.
 
void halt () override final
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier to use correctly, when compared with ThreadedAction.

+

It is particularly useful when your code contains a request-reply pattern, i.e. when the actions sends an asynchronous request, then checks periodically if the reply has been received and, eventually, analyze the reply to determine if the result is SUCCESS or FAILURE.

+

-) an action that was in IDLE state will call onStart()

+

-) A RUNNING action will call onRunning()

+

-) if halted, method onHalted() is invoked

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::StatefulActionNode::halt ()
+
+finaloverrideprotectedvirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Implements BT::TreeNode.

+ +
+
+ +

◆ onHalted()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::StatefulActionNode::onHalted ()
+
+pure virtual
+
+

when the method halt() is called and the action is RUNNING, this method is invoked. This is a convenient place todo a cleanup, if needed.

+ +

Implemented in BT::SleepNode, and BT::TestNode.

+ +
+
+ +

◆ onRunning()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::StatefulActionNode::onRunning ()
+
+pure virtual
+
+ +

method invoked when the action is already in the RUNNING state.

+ +

Implemented in BT::SleepNode, and BT::TestNode.

+ +
+
+ +

◆ onStart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::StatefulActionNode::onStart ()
+
+pure virtual
+
+

Method called once, when transitioning from the state IDLE. If it returns RUNNING, this becomes an asynchronous node.

+ +

Implemented in BT::SleepNode, and BT::TestNode.

+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
NodeStatus BT::StatefulActionNode::tick ()
+
+finaloverrideprotectedvirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d0/d1f/class_b_t_1_1_stateful_action_node.js b/d0/d1f/class_b_t_1_1_stateful_action_node.js new file mode 100644 index 000000000..e3e9e1af5 --- /dev/null +++ b/d0/d1f/class_b_t_1_1_stateful_action_node.js @@ -0,0 +1,8 @@ +var class_b_t_1_1_stateful_action_node = +[ + [ "halt", "d0/d1f/class_b_t_1_1_stateful_action_node.html#a8206f68b132a2cf682e4189e19e65ba7", null ], + [ "onHalted", "d0/d1f/class_b_t_1_1_stateful_action_node.html#aa7233f6c3a9854e0c626af687be0de4e", null ], + [ "onRunning", "d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1", null ], + [ "onStart", "d0/d1f/class_b_t_1_1_stateful_action_node.html#af8c33bb580fc1e14fa3b70da06020701", null ], + [ "tick", "d0/d1f/class_b_t_1_1_stateful_action_node.html#aea7bc4ed0e77fb4f78df00a00c3dcab9", null ] +]; \ No newline at end of file diff --git a/d0/d20/struct_b_t_1_1_protected_queue-members.html b/d0/d20/struct_b_t_1_1_protected_queue-members.html new file mode 100644 index 000000000..cc14e0ac1 --- /dev/null +++ b/d0/d20/struct_b_t_1_1_protected_queue-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ProtectedQueue< T > Member List
+
+
+ +

This is the complete list of members for BT::ProtectedQueue< T >, including all inherited members.

+ + + +
items (defined in BT::ProtectedQueue< T >)BT::ProtectedQueue< T >
mtx (defined in BT::ProtectedQueue< T >)BT::ProtectedQueue< T >
+
+ + + + diff --git a/d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html b/d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html new file mode 100644 index 000000000..397757597 --- /dev/null +++ b/d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html @@ -0,0 +1,144 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::math_prefix Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::math_prefix Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::math_prefix:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::math_prefix:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = dsl::atom
 
+ + + +

+Static Public Attributes

+static constexpr auto op = dsl::op<Ast::ExprUnaryArithmetic::negate>(LEXY_LIT("-"))
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d0/d2c/struct_b_t_1_1_ast_1_1_expr_if-members.html b/d0/d2c/struct_b_t_1_1_ast_1_1_expr_if-members.html new file mode 100644 index 000000000..f8c82ab51 --- /dev/null +++ b/d0/d2c/struct_b_t_1_1_ast_1_1_expr_if-members.html @@ -0,0 +1,115 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprIf Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprIf, including all inherited members.

+ + + + + + + + +
condition (defined in BT::Ast::ExprIf)BT::Ast::ExprIf
else_ (defined in BT::Ast::ExprIf)BT::Ast::ExprIf
evaluate(Environment &env) const override (defined in BT::Ast::ExprIf)BT::Ast::ExprIfinlinevirtual
ExprIf(expr_ptr condition, expr_ptr then, expr_ptr else_) (defined in BT::Ast::ExprIf)BT::Ast::ExprIfinlineexplicit
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
then (defined in BT::Ast::ExprIf)BT::Ast::ExprIf
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/d0/d34/class_b_t_1_1_type_info.html b/d0/d34/class_b_t_1_1_type_info.html new file mode 100644 index 000000000..1b055e1c2 --- /dev/null +++ b/d0/d34/class_b_t_1_1_type_info.html @@ -0,0 +1,158 @@ + + + + + + + +BehaviorTree: BT::TypeInfo Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for BT::TypeInfo:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TypeInfo (std::type_index type_info, StringConverter conv)
 
+const std::type_index & type () const
 
+const std::string & typeName () const
 
+Any parseString (const char *str) const
 
+Any parseString (const std::string &str) const
 
+template<typename T >
Any parseString (const T &) const
 
+bool isStronglyTyped () const
 
+const StringConverter & converter () const
 
+ + + + +

+Static Public Member Functions

+template<typename T >
static TypeInfo Create ()
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d0/d3a/class_b_t_1_1_any-members.html b/d0/d3a/class_b_t_1_1_any-members.html new file mode 100644 index 000000000..376d4f61c --- /dev/null +++ b/d0/d3a/class_b_t_1_1_any-members.html @@ -0,0 +1,134 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Any Member List
+
+
+ +

This is the complete list of members for BT::Any, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
Any() (defined in BT::Any)BT::Anyinline
Any(const Any &other) (defined in BT::Any)BT::Anyinline
Any(Any &&other) (defined in BT::Any)BT::Anyinline
Any(const double &value) (defined in BT::Any)BT::Anyinlineexplicit
Any(const uint64_t &value) (defined in BT::Any)BT::Anyinlineexplicit
Any(const float &value) (defined in BT::Any)BT::Anyinlineexplicit
Any(const std::string &str) (defined in BT::Any)BT::Anyinlineexplicit
Any(const char *str) (defined in BT::Any)BT::Anyinlineexplicit
Any(const SafeAny::SimpleString &str) (defined in BT::Any)BT::Anyinlineexplicit
Any(const std::string_view &str) (defined in BT::Any)BT::Anyinlineexplicit
Any(const T &value, EnableIntegral< T >=0) (defined in BT::Any)BT::Anyinlineexplicit
Any(const std::type_index &type) (defined in BT::Any)BT::Anyinline
Any(const T &value, EnableNonIntegral< T >=0) (defined in BT::Any)BT::Anyinlineexplicit
cast() const (defined in BT::Any)BT::Anyinline
castedType() const noexcept (defined in BT::Any)BT::Anyinline
castPtr() (defined in BT::Any)BT::Anyinline
copyInto(Any &dst) const (defined in BT::Any)BT::Anyinline
empty() const noexcept (defined in BT::Any)BT::Anyinline
isIntegral() const (defined in BT::Any)BT::Anyinline
isNumber() const (defined in BT::Any)BT::Anyinline
isString() const (defined in BT::Any)BT::Anyinline
isType() const (defined in BT::Any)BT::Anyinline
operator=(const Any &other) (defined in BT::Any)BT::Anyinline
tryCast() const (defined in BT::Any)BT::Anyinline
type() const noexcept (defined in BT::Any)BT::Anyinline
~Any()=default (defined in BT::Any)BT::Any
+
+ + + + diff --git a/d0/d43/class_b_t_1_1_parallel_node__coll__graph.map b/d0/d43/class_b_t_1_1_parallel_node__coll__graph.map new file mode 100644 index 000000000..86de921bb --- /dev/null +++ b/d0/d43/class_b_t_1_1_parallel_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d0/d43/class_b_t_1_1_parallel_node__coll__graph.md5 b/d0/d43/class_b_t_1_1_parallel_node__coll__graph.md5 new file mode 100644 index 000000000..8dd2a0e1f --- /dev/null +++ b/d0/d43/class_b_t_1_1_parallel_node__coll__graph.md5 @@ -0,0 +1 @@ +d7e31eb8693fcef0f6ac969074b7132a \ No newline at end of file diff --git a/d0/d43/class_b_t_1_1_parallel_node__coll__graph.png b/d0/d43/class_b_t_1_1_parallel_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..934203780110247595d4c42ead33a4eea4a26119 GIT binary patch literal 12430 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

k{&lQeYh6{s}jtCGf`{@%3lQgEY`h^BiTQ>D#w& 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 literal 0 HcmV?d00001 diff --git a/d0/d48/class_b_t_1_1_leaf_node-members.html b/d0/d48/class_b_t_1_1_leaf_node-members.html new file mode 100644 index 000000000..cd68284a8 --- /dev/null +++ b/d0/d48/class_b_t_1_1_leaf_node-members.html @@ -0,0 +1,163 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::LeafNode Member List
+
+
+ +

This is the complete list of members for BT::LeafNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const =0 (defined in BT::TreeNode)BT::TreeNodepure virtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d0/d51/class_b_t_1_1_blackboard.html b/d0/d51/class_b_t_1_1_blackboard.html new file mode 100644 index 000000000..ce51bd854 --- /dev/null +++ b/d0/d51/class_b_t_1_1_blackboard.html @@ -0,0 +1,351 @@ + + + + + + + +BehaviorTree: BT::Blackboard Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The Blackboard is the mechanism used by BehaviorTrees to exchange typed data. + More...

+ +

#include <blackboard.h>

+ + + + +

+Classes

struct  Entry
 
+ + + +

+Public Types

+using Ptr = std::shared_ptr< Blackboard >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void enableAutoRemapping (bool remapping)
 
+const std::shared_ptr< EntrygetEntry (const std::string &key) const
 
+std::shared_ptr< Blackboard::EntrygetEntry (const std::string &key)
 
+AnyPtrLocked getAnyLocked (const std::string &key)
 
+AnyPtrLocked getAnyLocked (const std::string &key) const
 
+const AnygetAny (const std::string &key) const
 
+AnygetAny (const std::string &key)
 
template<typename T >
bool get (const std::string &key, T &value) const
 
+template<typename T >
Expected< TimestampgetStamped (const std::string &key, T &value) const
 
template<typename T >
get (const std::string &key) const
 
+template<typename T >
Expected< StampedValue< T > > getStamped (const std::string &key) const
 
+template<typename T >
void set (const std::string &key, const T &value)
 Update the entry with the given key.
 
+void unset (const std::string &key)
 
+const TypeInfoentryInfo (const std::string &key)
 
+void addSubtreeRemapping (StringView internal, StringView external)
 
+void debugMessage () const
 
+std::vector< StringView > getKeys () const
 
+void clear ()
 
+std::recursive_mutex & entryMutex () const
 
+void createEntry (const std::string &key, const TypeInfo &info)
 
void cloneInto (Blackboard &dst) const
 cloneInto copies the values of the entries into another blackboard. Known limitations:
 
+Blackboard::Ptr parent ()
 
+BlackboardrootBlackboard ()
 
+const BlackboardrootBlackboard () const
 
+ + + +

+Static Public Member Functions

static Blackboard::Ptr create (Blackboard::Ptr parent={})
 
+ + + +

+Protected Member Functions

Blackboard (Blackboard::Ptr parent)
 
+

Detailed Description

+

The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.

+

Member Function Documentation

+ +

◆ cloneInto()

+ +
+
+ + + + + + + + +
void BT::Blackboard::cloneInto (Blackboarddst) const
+
+ +

cloneInto copies the values of the entries into another blackboard. Known limitations:

+
    +
  • it doesn't update the remapping in dst
  • +
  • it doesn't change the parent blackboard os dst
  • +
+
Parameters
+ + +
dstdestination, i.e. blackboard to be updated
+
+
+ +
+
+ +

◆ create()

+ +
+
+ + + + + +
+ + + + + + + + +
static Blackboard::Ptr BT::Blackboard::create (Blackboard::Ptr parent = {})
+
+inlinestatic
+
+

Use this static method to create an instance of the BlackBoard to share among all your NodeTrees.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
T BT::Blackboard::get (const std::string & key) const
+
+inline
+
+

Version of get() that throws if it fails.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool BT::Blackboard::get (const std::string & key,
T & value 
) const
+
+inline
+
+

Return true if the entry with the given key was found. Note that this method may throw an exception if the cast to T failed.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d0/d51/class_b_t_1_1_blackboard.js b/d0/d51/class_b_t_1_1_blackboard.js new file mode 100644 index 000000000..bb9b2e1c8 --- /dev/null +++ b/d0/d51/class_b_t_1_1_blackboard.js @@ -0,0 +1,8 @@ +var class_b_t_1_1_blackboard = +[ + [ "Entry", "d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html", null ], + [ "cloneInto", "d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e", null ], + [ "get", "d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02", null ], + [ "get", "d0/d51/class_b_t_1_1_blackboard.html#ad536070fc0cc82a4fa1c53e3b2222e58", null ], + [ "set", "d0/d51/class_b_t_1_1_blackboard.html#a0733879e096350bf7f77d1fb583d325b", null ] +]; \ No newline at end of file diff --git a/d0/d54/inverter__node_8h_source.html b/d0/d54/inverter__node_8h_source.html new file mode 100644 index 000000000..00a68fa9c --- /dev/null +++ b/d0/d54/inverter__node_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/inverter_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
inverter_node.h
+
+
+
1/* Copyright (C) 2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The InverterNode returns SUCCESS if child fails
+
22 * of FAILURE is child succeeds.
+
23 * RUNNING status is propagated
+
24 */
+
25class InverterNode : public DecoratorNode
+
26{
+
27public:
+
28 InverterNode(const std::string& name);
+
29
+
30 virtual ~InverterNode() override = default;
+
31
+
32private:
+
33 virtual BT::NodeStatus tick() override;
+
34};
+
35} // namespace BT
+
Definition: decorator_node.h:9
+
The InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propa...
Definition: inverter_node.h:26
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d0/d55/bt__minitrace__logger_8h_source.html b/d0/d55/bt__minitrace__logger_8h_source.html new file mode 100644 index 000000000..9c1da2b70 --- /dev/null +++ b/d0/d55/bt__minitrace__logger_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/bt_minitrace_logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_minitrace_logger.h
+
+
+
1#pragma once
+
2
+
3#include "behaviortree_cpp/loggers/abstract_logger.h"
+
4
+
5namespace BT
+
6{
+ +
8{
+
9public:
+
10 MinitraceLogger(const BT::Tree& tree, const char* filename_json);
+
11
+
12 virtual ~MinitraceLogger() override;
+
13
+
14 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
15 NodeStatus status) override;
+
16
+
17 virtual void flush() override;
+
18
+
19private:
+
20 TimePoint prev_time_;
+
21};
+
22
+
23} // namespace BT
+
Definition: bt_minitrace_logger.h:8
+
Definition: abstract_logger.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d0/d56/struct_b_t_1_1has__static__method__provided_ports.html b/d0/d56/struct_b_t_1_1has__static__method__provided_ports.html new file mode 100644 index 000000000..c6e936113 --- /dev/null +++ b/d0/d56/struct_b_t_1_1has__static__method__provided_ports.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: BT::has_static_method_providedPorts< T, typename > Struct Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::has_static_method_providedPorts< T, typename > Struct Template Reference
+
+
+
+Inheritance diagram for BT::has_static_method_providedPorts< T, typename >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::has_static_method_providedPorts< T, typename >:
+
+
Collaboration graph
+ + + + +
[legend]
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d0/d59/struct_b_t_1_1_timestamp.html b/d0/d59/struct_b_t_1_1_timestamp.html new file mode 100644 index 000000000..e0e85eceb --- /dev/null +++ b/d0/d59/struct_b_t_1_1_timestamp.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: BT::Timestamp Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Timestamp Struct Reference
+
+
+ + + + + + +

+Public Attributes

+uint64_t seq = 0
 
+std::chrono::nanoseconds time = std::chrono::nanoseconds(0)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d0/d5d/if__then__else__node_8h_source.html b/d0/d5d/if__then__else__node_8h_source.html new file mode 100644 index 000000000..4574013da --- /dev/null +++ b/d0/d5d/if__then__else__node_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/if_then_else_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
if_then_else_node.h
+
+
+
1/* Copyright (C) 2020-2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief IfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive.
+
21 *
+
22 * The first child is the "statement" of the if.
+
23 *
+
24 * If that return SUCCESS, then the second child is executed.
+
25 *
+
26 * Instead, if it returned FAILURE, the third child is executed.
+
27 *
+
28 * If you have only 2 children, this node will return FAILURE whenever the
+
29 * statement returns FAILURE.
+
30 *
+
31 * This is equivalent to add AlwaysFailure as 3rd child.
+
32 *
+
33 */
+
34class IfThenElseNode : public ControlNode
+
35{
+
36public:
+
37 IfThenElseNode(const std::string& name);
+
38
+
39 virtual ~IfThenElseNode() override = default;
+
40
+
41 virtual void halt() override;
+
42
+
43private:
+
44 size_t child_idx_;
+
45
+
46 virtual BT::NodeStatus tick() override;
+
47};
+
48
+
49} // namespace BT
+
Definition: control_node.h:22
+
IfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive.
Definition: if_then_else_node.h:35
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d0/d64/class_b_t_1_1_json_exporter.html b/d0/d64/class_b_t_1_1_json_exporter.html new file mode 100644 index 000000000..adcf2ce59 --- /dev/null +++ b/d0/d64/class_b_t_1_1_json_exporter.html @@ -0,0 +1,342 @@ + + + + + + + +BehaviorTree: BT::JsonExporter Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <json_export.h>

+ + + + + + + +

+Public Types

+using Entry = std::pair< BT::Any, BT::TypeInfo >
 This information is needed to create a BT::Blackboard::entry.
 
+using ExpectedEntry = nonstd::expected< Entry, std::string >
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

bool toJson (const BT::Any &any, nlohmann::json &destination) const
 toJson adds the content of "any" to the JSON "destination".
 
ExpectedEntry fromJson (const nlohmann::json &source) const
 fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source. If it is a custom type, you might register it first with addConverter().
 
ExpectedEntry fromJson (const nlohmann::json &source, std::type_index type) const
 
+template<typename T >
Expected< T > fromJson (const nlohmann::json &source) const
 
+template<typename T >
void addConverter ()
 Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVERTER. The convertions from/to vector<T> are automatically registered.
 
template<typename T >
void addConverter (std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
 addConverter register a to_json function that converts a json to a type T. The convertion to std:vector<T> is automatically registered.
 
template<typename T >
void addConverter (std::function< void(const nlohmann::json &, T &)> from_json)
 addConverter register a from_json function that converts a json to a type T. The convertions from std::vector<T> is automatically registered.
 
+ + + +

+Static Public Member Functions

+static JsonExporterget ()
 
+

Detailed Description

+

To add new type to the JSON library, you should follow these instructions: https://json.nlohmann.me/features/arbitrary_types/

+

Considering for instance the type:

+

struct Point2D { double x; double y; };

+

This would require the implementation of:

+

void to_json(nlohmann::json& j, const Point2D& point); void from_json(const nlohmann::json& j, Point2D& point);

+

To avoid repeating yourself, we provide the macro BT_JSON_CONVERTION that implements both those function, at once. Usage:

+

BT_JSON_CONVERTER(Point2D, point) { add_field("x", &point.x); add_field("y", &point.y); }

+

Later, you MUST register the type using:

+

BT::RegisterJsonDefinition<Point2D>(); Use RegisterJsonDefinition<Foo>();

+

Member Function Documentation

+ +

◆ addConverter() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
void BT::JsonExporter::addConverter (std::function< void(const nlohmann::json &, T &)> from_json)
+
+inline
+
+ +

addConverter register a from_json function that converts a json to a type T. The convertions from std::vector<T> is automatically registered.

+
Parameters
+ + +
from_jsonthe function with signature void(const nlohmann::json&, T&)
+
+
+ +
+
+ +

◆ addConverter() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BT::JsonExporter::addConverter (std::function< void(const T &, nlohmann::json &)> to_json,
bool add_type = true 
)
+
+inline
+
+ +

addConverter register a to_json function that converts a json to a type T. The convertion to std:vector<T> is automatically registered.

+
Parameters
+ + + +
to_jsonthe function with signature void(const T&, nlohmann::json&)
add_typeif true, add a field called [__type] with the name ofthe type.
+
+
+ +
+
+ +

◆ fromJson() [1/2]

+ +
+
+ + + + + + + + +
ExpectedEntry BT::JsonExporter::fromJson (const nlohmann::json & source) const
+
+ +

fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source. If it is a custom type, you might register it first with addConverter().

+
Parameters
+ + +
source
+
+
+
Returns
+ +
+
+ +

◆ fromJson() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ExpectedEntry BT::JsonExporter::fromJson (const nlohmann::json & source,
std::type_index type 
) const
+
+

Same as the other, but providing the specific type, To be preferred if the JSON doesn't contain the field [__type]

+ +
+
+ +

◆ toJson()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool BT::JsonExporter::toJson (const BT::Anyany,
nlohmann::json & destination 
) const
+
+ +

toJson adds the content of "any" to the JSON "destination".

+

It will return false if the conversion toJson is not possible If it is a custom type, you might register it first with addConverter().

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d0/d64/class_b_t_1_1_json_exporter.js b/d0/d64/class_b_t_1_1_json_exporter.js new file mode 100644 index 000000000..c8860cb31 --- /dev/null +++ b/d0/d64/class_b_t_1_1_json_exporter.js @@ -0,0 +1,10 @@ +var class_b_t_1_1_json_exporter = +[ + [ "Entry", "d0/d64/class_b_t_1_1_json_exporter.html#addc80e35fbb70a74dda8b42eda3e20a8", null ], + [ "addConverter", "d0/d64/class_b_t_1_1_json_exporter.html#a984e954eb7bacad6d9a719d3b1eb8ec7", null ], + [ "addConverter", "d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199", null ], + [ "addConverter", "d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6", null ], + [ "fromJson", "d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c", null ], + [ "fromJson", "d0/d64/class_b_t_1_1_json_exporter.html#a049aa9812d72bd8af80fe153c51d72fc", null ], + [ "toJson", "d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a", null ] +]; \ No newline at end of file diff --git a/d0/d88/retry__node_8h_source.html b/d0/d88/retry__node_8h_source.html new file mode 100644 index 000000000..303a9e5ea --- /dev/null +++ b/d0/d88/retry__node_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/retry_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
retry_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2022 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The RetryNode is used to execute a child several times if it fails.
+
22 *
+
23 * If the child returns SUCCESS, the loop is stopped and this node
+
24 * returns SUCCESS.
+
25 *
+
26 * If the child returns FAILURE, this node will try again up to N times
+
27 * (N is read from port "num_attempts").
+
28 *
+
29 * Example:
+
30 *
+
31 * <RetryUntilSuccessful num_attempts="3">
+
32 * <OpenDoor/>
+
33 * </RetryUntilSuccessful>
+
34 *
+
35 * Note:
+
36 * RetryNodeTypo is only included to support the deprecated typo
+
37 * "RetryUntilSuccesful" (note the single 's' in Succesful)
+
38 */
+
39class RetryNode : public DecoratorNode
+
40{
+
41public:
+
42 RetryNode(const std::string& name, int NTries);
+
43
+
44 RetryNode(const std::string& name, const NodeConfig& config);
+
45
+
46 virtual ~RetryNode() override = default;
+
47
+
48 static PortsList providedPorts()
+
49 {
+
50 return { InputPort<int>(NUM_ATTEMPTS, "Execute again a failing child up to N times. "
+
51 "Use -1 to create an infinite loop.") };
+
52 }
+
53
+
54 virtual void halt() override;
+
55
+
56private:
+
57 int max_attempts_;
+
58 int try_count_;
+
59
+
60 bool read_parameter_from_ports_;
+
61 static constexpr const char* NUM_ATTEMPTS = "num_attempts";
+
62
+
63 virtual BT::NodeStatus tick() override;
+
64};
+
65
+
66class [[deprecated("RetryUntilSuccesful was a typo and deprecated, use "
+
67 "RetryUntilSuccessful "
+
68 "instead.")]] RetryNodeTypo : public RetryNode
+
69{
+
70public:
+
71 RetryNodeTypo(const std::string& name, int NTries) : RetryNode(name, NTries){};
+
72
+
73 RetryNodeTypo(const std::string& name, const NodeConfig& config)
+
74 : RetryNode(name, config){};
+
75
+
76 virtual ~RetryNodeTypo() override = default;
+
77};
+
78
+
79} // namespace BT
+
Definition: decorator_node.h:9
+
The RetryNode is used to execute a child several times if it fails.
Definition: retry_node.h:40
+
virtual void halt() override
The method used to interrupt the execution of this node.
+
Definition: retry_node.h:69
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.map b/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.map new file mode 100644 index 000000000..1feb5a462 --- /dev/null +++ b/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.md5 b/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.md5 new file mode 100644 index 000000000..cc6d1f0c5 --- /dev/null +++ b/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.md5 @@ -0,0 +1 @@ +9950fe547f181adece7469b7c8145187 \ No newline at end of file diff --git a/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.png b/d0/d8c/class_b_t_1_1_timeout_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2ffa6ec8eb333439fc21885cea7cf56617367771 GIT binary patch literal 7091 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 YQLeSv6?Xpsci|w4vT8C_Qf6=d3x4nuAOHXW literal 0 HcmV?d00001 diff --git a/d0/d8d/class_b_t_1_1_minitrace_logger-members.html b/d0/d8d/class_b_t_1_1_minitrace_logger-members.html new file mode 100644 index 000000000..af1af6ce6 --- /dev/null +++ b/d0/d8d/class_b_t_1_1_minitrace_logger-members.html @@ -0,0 +1,123 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::MinitraceLogger Member List
+
+
+ +

This is the complete list of members for BT::MinitraceLogger, including all inherited members.

+ + + + + + + + + + + + + + + + +
callback(Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override (defined in BT::MinitraceLogger)BT::MinitraceLoggervirtual
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
flush() override (defined in BT::MinitraceLogger)BT::MinitraceLoggervirtual
MinitraceLogger(const BT::Tree &tree, const char *filename_json) (defined in BT::MinitraceLogger)BT::MinitraceLogger
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
~MinitraceLogger() override (defined in BT::MinitraceLogger)BT::MinitraceLoggervirtual
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
+
+ + + + diff --git a/d0/d97/struct_b_t_1_1_grammar_1_1_expression-members.html b/d0/d97/struct_b_t_1_1_grammar_1_1_expression-members.html new file mode 100644 index 000000000..bb3fd4693 --- /dev/null +++ b/d0/d97/struct_b_t_1_1_grammar_1_1_expression-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression, including all inherited members.

+ + + + +
atom (defined in BT::Grammar::Expression)BT::Grammar::Expressionstatic
operation typedef (defined in BT::Grammar::Expression)BT::Grammar::Expression
value (defined in BT::Grammar::Expression)BT::Grammar::Expressionstatic
+
+ + + + diff --git a/d0/d9c/class_b_t_1_1_always_failure_node.html b/d0/d9c/class_b_t_1_1_always_failure_node.html new file mode 100644 index 000000000..902d4f8f0 --- /dev/null +++ b/d0/d9c/class_b_t_1_1_always_failure_node.html @@ -0,0 +1,333 @@ + + + + + + + +BehaviorTree: BT::AlwaysFailureNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::AlwaysFailureNode Class Reference
+
+
+ +

#include <always_failure_node.h>

+
+Inheritance diagram for BT::AlwaysFailureNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::AlwaysFailureNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AlwaysFailureNode (const std::string &name)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

Simple actions that always returns FAILURE.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.map b/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.map new file mode 100644 index 000000000..598389ca0 --- /dev/null +++ b/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.md5 b/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.md5 new file mode 100644 index 000000000..ecd4118e6 --- /dev/null +++ b/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.md5 @@ -0,0 +1 @@ +86bf3f9c64289438543efed05daed5d6 \ No newline at end of file diff --git a/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.png b/d0/d9d/class_b_t_1_1_sequence_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3fe6d440216f35135cfa4a85d8fb73f4473bb70c GIT binary patch literal 12859 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 + + + + + diff --git a/d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.md5 b/d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.md5 new file mode 100644 index 000000000..c7e571c92 --- /dev/null +++ b/d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.md5 @@ -0,0 +1 @@ +6a2088ee88f8ed793d5ef57ed37c0e69 \ No newline at end of file diff --git a/d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.png b/d0/d9d/class_b_t_1_1_sync_action_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3313d114196a4c065b9beb5f842d96db75cb3524 GIT binary patch literal 8867 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 ATL1t6 literal 0 HcmV?d00001 diff --git a/d0/dc6/sequence__node_8h_source.html b/d0/dc6/sequence__node_8h_source.html new file mode 100644 index 000000000..cc459946a --- /dev/null +++ b/d0/dc6/sequence__node_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/sequence_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sequence_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/control_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The SequenceNode is used to tick children in an ordered sequence.
+
22 * If any child returns RUNNING, previous children will NOT be ticked again.
+
23 *
+
24 * - If all the children return SUCCESS, this node returns SUCCESS.
+
25 *
+
26 * - If a child returns RUNNING, this node returns RUNNING.
+
27 * Loop is NOT restarted, the same running child will be ticked again.
+
28 *
+
29 * - If a child returns FAILURE, stop the loop and return FAILURE.
+
30 * Restart the loop only if (reset_on_failure == true)
+
31 *
+
32 */
+
33
+
34class SequenceNode : public ControlNode
+
35{
+
36public:
+
37 SequenceNode(const std::string& name, bool make_async = false);
+
38
+
39 virtual ~SequenceNode() override = default;
+
40
+
41 virtual void halt() override;
+
42
+
43private:
+
44 size_t current_child_idx_;
+
45 size_t skipped_count_ = 0;
+
46 bool asynch_ = false;
+
47
+
48 virtual BT::NodeStatus tick() override;
+
49};
+
50
+
51} // namespace BT
+
Definition: control_node.h:22
+
The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING,...
Definition: sequence_node.h:35
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d0/dc6/struct_b_t_1_1_node_config__coll__graph.map b/d0/dc6/struct_b_t_1_1_node_config__coll__graph.map new file mode 100644 index 000000000..88c647b8b --- /dev/null +++ b/d0/dc6/struct_b_t_1_1_node_config__coll__graph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/d0/dc6/struct_b_t_1_1_node_config__coll__graph.md5 b/d0/dc6/struct_b_t_1_1_node_config__coll__graph.md5 new file mode 100644 index 000000000..9aa0ac2ff --- /dev/null +++ b/d0/dc6/struct_b_t_1_1_node_config__coll__graph.md5 @@ -0,0 +1 @@ +91ce7f4eb5145f2b10d0acf765cfab5e \ No newline at end of file diff --git a/d0/dc6/struct_b_t_1_1_node_config__coll__graph.png b/d0/dc6/struct_b_t_1_1_node_config__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d210377d04a6e9149ffcec1920f1024e308352d4 GIT binary patch literal 105518 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
bGq?T&Yh%k}-5Ai$YL^NIF#DxB3-Y35lZ5( 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�@+4&{< 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 MAJgVYi;`1b*f<)jZoZ96`NtVSbc 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 AH~;_u literal 0 HcmV?d00001 diff --git a/d0/dcf/class_b_t_1_1_delay_node-members.html b/d0/dcf/class_b_t_1_1_delay_node-members.html new file mode 100644 index 000000000..30a6e34c6 --- /dev/null +++ b/d0/dcf/class_b_t_1_1_delay_node-members.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::DelayNode Member List
+
+
+ +

This is the complete list of members for BT::DelayNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
DelayNode(const std::string &name, unsigned milliseconds) (defined in BT::DelayNode)BT::DelayNode
DelayNode(const std::string &name, const NodeConfig &config) (defined in BT::DelayNode)BT::DelayNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DelayNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::DelayNode)BT::DelayNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~DelayNode() override (defined in BT::DelayNode)BT::DelayNodeinline
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.map b/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.map new file mode 100644 index 000000000..d76fcd4f3 --- /dev/null +++ b/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.md5 b/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.md5 new file mode 100644 index 000000000..136b83e0e --- /dev/null +++ b/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.md5 @@ -0,0 +1 @@ +07085d9eb6256deffe667a3b90d6cc12 \ No newline at end of file diff --git a/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.png b/d0/dd3/struct_b_t_1_1_grammar_1_1_real__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e3839ef4d194f79d99fa0496ba9c7e6295c2f446 GIT binary patch literal 4502 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 literal 0 HcmV?d00001 diff --git a/d0/de8/struct_b_t_1_1_ast_1_1_environment.html b/d0/de8/struct_b_t_1_1_ast_1_1_environment.html new file mode 100644 index 000000000..84263bb2b --- /dev/null +++ b/d0/de8/struct_b_t_1_1_ast_1_1_environment.html @@ -0,0 +1,143 @@ + + + + + + + +BehaviorTree: BT::Ast::Environment Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::Environment Struct Reference
+
+
+ +

The Environment class is used to encapsulate the information and states needed by the scripting language. + More...

+ +

#include <script_parser.hpp>

+
+Collaboration diagram for BT::Ast::Environment:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + +

+Public Attributes

+BT::Blackboard::Ptr vars
 
+EnumsTablePtr enums
 
+

Detailed Description

+

The Environment class is used to encapsulate the information and states needed by the scripting language.

+

The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html b/d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html new file mode 100644 index 000000000..a298b965a --- /dev/null +++ b/d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::comparison Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::comparison Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::comparison:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::comparison:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = dsl::groups< math_sum, bit_or, string_concat >
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::comparison::op
+
+staticconstexpr
+
+Initial value:
= dsl::op<Ast::ExprComparison::equal>(LEXY_LIT("==")) /
+
dsl::op<Ast::ExprComparison::not_equal>(LEXY_LIT("!=")) /
+
dsl::op<Ast::ExprComparison::less>(LEXY_LIT("<")) /
+
dsl::op<Ast::ExprComparison::greater>(LEXY_LIT(">")) /
+
dsl::op<Ast::ExprComparison::less_equal>(LEXY_LIT("<=")) /
+
dsl::op<Ast::ExprComparison::greater_equal>(LEXY_LIT(">"
+
"="))
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d0/df1/class_b_t_1_1_loop_node-members.html b/d0/df1/class_b_t_1_1_loop_node-members.html new file mode 100644 index 000000000..737dbda14 --- /dev/null +++ b/d0/df1/class_b_t_1_1_loop_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::LoopNode< T > Member List
+
+
+ +

This is the complete list of members for BT::LoopNode< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LoopNode(const std::string &name, const NodeConfig &config) (defined in BT::LoopNode< T >)BT::LoopNode< T >inline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::LoopNode< T >)BT::LoopNode< T >inlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() overrideBT::LoopNode< T >inlinevirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.map b/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.map new file mode 100644 index 000000000..eaf2d5573 --- /dev/null +++ b/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.md5 b/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.md5 new file mode 100644 index 000000000..081b77fce --- /dev/null +++ b/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.md5 @@ -0,0 +1 @@ +a22c0cf49df9e6995b7dfa571a1fc902 \ No newline at end of file diff --git a/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.png b/d0/dff/struct_b_t_1_1_grammar_1_1_boolean_literal__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..15dd4c51bb8f7fb344cc8b45217af3a9a3566435 GIT binary patch literal 5113 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 literal 0 HcmV?d00001 diff --git a/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.map b/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.map new file mode 100644 index 000000000..52ef44efd --- /dev/null +++ b/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.md5 b/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.md5 new file mode 100644 index 000000000..cfabb0e2f --- /dev/null +++ b/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.md5 @@ -0,0 +1 @@ +83cd26c212afccad61f27a958e3b4b8f \ No newline at end of file diff --git a/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.png b/d1/d03/class_b_t_1_1_sub_tree_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6f5daf13b3fc51663c47a66c0f1be0ffaa8846 GIT binary patch literal 7257 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 SSsyqngeb_UN*7C-2K+DGKVPQ+ literal 0 HcmV?d00001 diff --git a/d1/d0e/bt__file__logger__v2_8h_source.html b/d1/d0e/bt__file__logger__v2_8h_source.html new file mode 100644 index 000000000..6828c7fe4 --- /dev/null +++ b/d1/d0e/bt__file__logger__v2_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/bt_file_logger_v2.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_file_logger_v2.h
+
+
+
1#pragma once
+
2#include <fstream>
+
3#include <deque>
+
4#include <array>
+
5#include <filesystem>
+
6#include "behaviortree_cpp/loggers/abstract_logger.h"
+
7
+
8namespace BT
+
9{
+
10/**
+
11 * @brief The FileLogger2 is a logger that saves the tree as
+
12 * XML and all the transitions.
+
13 * Data is written to file in a separate thread, to minimize latency.
+
14 *
+
15 * Format:
+
16 *
+
17 * - first 4 bytes: size of the XML string (N)
+
18 * - next N bytes: string containing the XML representing the tree.
+
19 * - next 8 bytes: first timestamp (microseconds since epoch)
+
20 * - next: each 9 bytes is a FileLogger2::Transition. See definition.
+
21 *
+
22 */
+ +
24{
+
25public:
+
26 /**
+
27 * @brief To correctly read this log with Groot2, you must use the suffix ".btlog".
+
28 * Constructor will throw otherwise.
+
29 *
+
30 * @param tree the tree to log
+
31 * @param filepath path of the file where info will be stored
+
32 */
+
33 FileLogger2(const Tree& tree, std::filesystem::path const& filepath);
+
34
+
35 FileLogger2(const FileLogger2& other) = delete;
+
36 FileLogger2& operator=(const FileLogger2& other) = delete;
+
37
+
38 FileLogger2(FileLogger2&& other) = default;
+
39 FileLogger2& operator=(FileLogger2&& other) = default;
+
40
+
41 virtual ~FileLogger2() override;
+
42
+
43 void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
44 NodeStatus status) override;
+
45
+
46 struct Transition
+
47 {
+
48 // when serializing, we will remove the initial time and serialize only
+
49 // 6 bytes, instead of 8
+
50 uint64_t timestamp_usec;
+
51 // if you have more than 64.000 nodes, you are doing something wrong :)
+
52 uint16_t node_uid;
+
53 // enough bits to contain NodeStatus
+
54 uint8_t status;
+
55 };
+
56
+
57 void flush() override;
+
58
+
59private:
+
60 struct PImpl;
+
61 std::unique_ptr<PImpl> _p;
+
62
+
63 void writerLoop();
+
64};
+
65
+
66} // namespace BT
+
The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to fi...
Definition: bt_file_logger_v2.h:24
+
FileLogger2(const Tree &tree, std::filesystem::path const &filepath)
To correctly read this log with Groot2, you must use the suffix ".btlog". Constructor will throw othe...
+
Definition: abstract_logger.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: bt_file_logger_v2.h:47
+
+
+ + + + diff --git a/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.map b/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.map new file mode 100644 index 000000000..df9239220 --- /dev/null +++ b/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.md5 b/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.md5 new file mode 100644 index 000000000..9a7edb46e --- /dev/null +++ b/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.md5 @@ -0,0 +1 @@ +f5deb7be909e764c28ab6c63c89dbf4d \ No newline at end of file diff --git a/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.png b/d1/d29/class_b_t_1_1_set_blackboard_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c319d17bd60b6119be4c0440b39ea139d7de46 GIT binary patch literal 11933 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 + + + + + + diff --git a/d1/d31/class_b_t_1_1_script_node__inherit__graph.md5 b/d1/d31/class_b_t_1_1_script_node__inherit__graph.md5 new file mode 100644 index 000000000..c2a5a7109 --- /dev/null +++ b/d1/d31/class_b_t_1_1_script_node__inherit__graph.md5 @@ -0,0 +1 @@ +e42fe48ac1b651ad99c3cae85a267002 \ No newline at end of file diff --git a/d1/d31/class_b_t_1_1_script_node__inherit__graph.png b/d1/d31/class_b_t_1_1_script_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f39134a58dac639fb080c9cf62726bbdf8a6a373 GIT binary patch literal 11488 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 + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/parallel_all_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
parallel_all_node.h
+
+
+
1/* Copyright (C) 2023 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <set>
+
16#include "behaviortree_cpp/control_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The ParallelAllNode execute all its children
+
22 * __concurrently__, but not in separate threads!
+
23 *
+
24 * It differs in the way ParallelNode works because the latter may stop
+
25 * and halt other children if a certain number of SUCCESS/FAILURES is reached,
+
26 * whilst this one will always complete the execution of ALL its children.
+
27 *
+
28 * Note that threshold indexes work as in Python:
+
29 * https://www.i2tutorials.com/what-are-negative-indexes-and-why-are-they-used/
+
30 *
+
31 * Therefore -1 is equivalent to the number of children.
+
32 */
+
33class ParallelAllNode : public ControlNode
+
34{
+
35public:
+
36 ParallelAllNode(const std::string& name, const NodeConfig& config);
+
37
+
38 static PortsList providedPorts()
+
39 {
+
40 return { InputPort<int>("max_failures", 1,
+
41 "If the number of children returning FAILURE exceeds this "
+
42 "value, "
+
43 "ParallelAll returns FAILURE") };
+
44 }
+
45
+
46 ~ParallelAllNode() override = default;
+
47
+
48 virtual void halt() override;
+
49
+
50 size_t failureThreshold() const;
+
51 void setFailureThreshold(int threshold);
+
52
+
53private:
+
54 size_t failure_threshold_;
+
55
+
56 std::set<size_t> completed_list_;
+
57 size_t failure_count_ = 0;
+
58
+
59 virtual BT::NodeStatus tick() override;
+
60};
+
61
+
62} // namespace BT
+
Definition: control_node.h:22
+
The ParallelAllNode execute all its children concurrently, but not in separate threads!
Definition: parallel_all_node.h:34
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d1/d36/class_b_t_1_1_decorator_node__coll__graph.map b/d1/d36/class_b_t_1_1_decorator_node__coll__graph.map new file mode 100644 index 000000000..9012e9de1 --- /dev/null +++ b/d1/d36/class_b_t_1_1_decorator_node__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d36/class_b_t_1_1_decorator_node__coll__graph.md5 b/d1/d36/class_b_t_1_1_decorator_node__coll__graph.md5 new file mode 100644 index 000000000..537d8127e --- /dev/null +++ b/d1/d36/class_b_t_1_1_decorator_node__coll__graph.md5 @@ -0,0 +1 @@ +45874610e4d2cda32fa6ee7c3ae89d96 \ No newline at end of file diff --git a/d1/d36/class_b_t_1_1_decorator_node__coll__graph.png b/d1/d36/class_b_t_1_1_decorator_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..058ab648c24722ed6a52c25cb23562978ba43f77 GIT binary patch literal 4990 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 HZNz^7-+`_Q literal 0 HcmV?d00001 diff --git a/d1/d43/class_b_t_1_1_test_node__inherit__graph.map b/d1/d43/class_b_t_1_1_test_node__inherit__graph.map new file mode 100644 index 000000000..da9861db2 --- /dev/null +++ b/d1/d43/class_b_t_1_1_test_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d1/d43/class_b_t_1_1_test_node__inherit__graph.md5 b/d1/d43/class_b_t_1_1_test_node__inherit__graph.md5 new file mode 100644 index 000000000..433921d73 --- /dev/null +++ b/d1/d43/class_b_t_1_1_test_node__inherit__graph.md5 @@ -0,0 +1 @@ +37634ded12f4dcc4709aa51660c31f5e \ No newline at end of file diff --git a/d1/d43/class_b_t_1_1_test_node__inherit__graph.png b/d1/d43/class_b_t_1_1_test_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b413b906104b108e63c209e15955816c0b31ed30 GIT binary patch literal 11284 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�B5LEEIPg24uPAW}z)=4d@(scHJWxQ>hXG5 z71DNsX_Wyj6~9o-$BFp#1g9H6f*_2UuBK;;!tEKO?~} z#*8On6fy1O^I1Qb?joTGwo)XjDunZ80DrL_{3HQI5Su|@V7L;!aK0sxa|Eal;WdI$ ztY7B@)+gE8RVR%;q>^gOXw4U}{tUEOp~|dJyX{f;-+SFU`gV3m4#!W_!Gk?4%ei4P z5rP*xSTlRX{1{SZ~ojZ7NfCrtTS4(t?q^ECNTz%ExF%N$J z8-s9?T5~~l*w#B1c*SZeq>{b=$CEL}*40UYCf1*}A1KBPR5H0~RA!DkIdNcF^t=Lo zBA5cC2sbx(D_|Y(nv1P17Gx3s9Bbl*#Mh|YGBPQN3Yfzni#iaonP0z*ZOp)W!I*uW zcH)K*X#&Z&wzIZ^ z)HD*9Hm1ovq7k61HG>m9Q$c^Vw^v7Rnx`ZuP2H? zV@GOS8DEII;6*Aw08$Eqjoi@C@Y9zs9YA9V;XD+$Lzn|&pe_Ai#2#}W2$5EB4Qw18 zW8g8fKu;l|m_$^@XSEd^$C>r@GLH!`KI|a42A5XN(vk%XL<(|p1nz_=Lf-=9h=y63 z1=n7AyvDV<%#8OU^*V%l9Ung6z?4HyOXInU06qA^Uv9)Q0EQt{qHPzAv{B{=vZ}5w{Y`Q=^!Q>(U>;Dm)oiU)3l#yYi zprF85K|sRv^!3BwRFMsw4Z~QmunypDhC^uD{_!JjWMm}x=<$Ac%F5gd9~;!o&&|0X z{ILfFD4iBje-qwbQ}a6m2~{q!_Ch zC^t${QqtJewEf2q{o(-2kP~lk!{@)Ii2+ZKHZ{}KB!X4?Xw5)R-`3TI54A}<&J0%8 z+#J?S_fW`YxULG)XI zd5(ic)JPVnf`3V$G-D$*wWuNQ>yf!rAL`LZ5y3{={C=#7h`<>c8G*gjSpfyYAs|2kk@uU5 z5G9b)$9}LD#ie_jn~FeJE5Ho6$i+1WULVE*1$&za`Sm0396VlyQ$N>5PR`k-%n&tm z^K{Jce5if|{9IfVpBfpdv(sKDYV=$r!i1qf=gnJ!nIRdWlekLcn&%C`pXI@L3zP zfs+bzqi@05zNVo8p5fd5&Tk+)zQaK|4+yyZy@0eT3#R12ZwZTug==xCK#=t~DG6gh zKm){NCv!~ZTuIr1d+VP*e{P3EF3>lkjI7YqV8_FAUa$5Z{s0q-Sl?4tZqH-zF2N`H z^BHqgtoOQ5)8*Y!>&mE0^774X!NyAZ{gj;0q$2KY$G1w!jN~ zApXhy%k8&bpl-Q&c=~*Kw9a7?Ui5G)<}7U|U2(`6nfQ|6lAtET0vz*2G_KxIEmO7* F`yVB|t8D-P literal 0 HcmV?d00001 diff --git a/d1/d4a/class_b_t_1_1_stateful_action_node-members.html b/d1/d4a/class_b_t_1_1_stateful_action_node-members.html new file mode 100644 index 000000000..87f7375e5 --- /dev/null +++ b/d1/d4a/class_b_t_1_1_stateful_action_node-members.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::StatefulActionNode Member List
+
+
+ +

This is the complete list of members for BT::StatefulActionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::StatefulActionNodeprotectedvirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
isHaltRequested() const (defined in BT::StatefulActionNode)BT::StatefulActionNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
onHalted()=0BT::StatefulActionNodepure virtual
onRunning()=0BT::StatefulActionNodepure virtual
onStart()=0BT::StatefulActionNodepure virtual
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
StatefulActionNode(const std::string &name, const NodeConfig &config) (defined in BT::StatefulActionNode)BT::StatefulActionNodeinline
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() override finalBT::StatefulActionNodeprotectedvirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d1/d4f/repeat__node_8h_source.html b/d1/d4f/repeat__node_8h_source.html new file mode 100644 index 000000000..78a9d17fd --- /dev/null +++ b/d1/d4f/repeat__node_8h_source.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/repeat_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
repeat_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2022 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The RepeatNode is used to execute a child several times, as long
+
22 * as it succeed.
+
23 *
+
24 * To succeed, the child must return SUCCESS N times (port "num_cycles").
+
25 *
+
26 * If the child returns FAILURE, the loop is stopped and this node
+
27 * returns FAILURE.
+
28 *
+
29 * Example:
+
30 *
+
31 * <Repeat num_cycles="3">
+
32 * <ClapYourHandsOnce/>
+
33 * </Repeat>
+
34 */
+
35class RepeatNode : public DecoratorNode
+
36{
+
37public:
+
38 RepeatNode(const std::string& name, int NTries);
+
39
+
40 RepeatNode(const std::string& name, const NodeConfig& config);
+
41
+
42 virtual ~RepeatNode() override = default;
+
43
+
44 static PortsList providedPorts()
+
45 {
+
46 return { InputPort<int>(NUM_CYCLES, "Repeat a successful child up to N times. "
+
47 "Use -1 to create an infinite loop.") };
+
48 }
+
49
+
50private:
+
51 int num_cycles_;
+
52 int repeat_count_;
+
53
+
54 bool read_parameter_from_ports_;
+
55 static constexpr const char* NUM_CYCLES = "num_cycles";
+
56
+
57 virtual NodeStatus tick() override;
+
58
+
59 void halt() override;
+
60};
+
61
+
62} // namespace BT
+
Definition: decorator_node.h:9
+
The RepeatNode is used to execute a child several times, as long as it succeed.
Definition: repeat_node.h:36
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.map b/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.map new file mode 100644 index 000000000..e094b577d --- /dev/null +++ b/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.md5 b/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.md5 new file mode 100644 index 000000000..f0bd1817c --- /dev/null +++ b/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.md5 @@ -0,0 +1 @@ +6c45ce2c1e4a6b894472c530caa0079f \ No newline at end of file diff --git a/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.png b/d1/d4f/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d43d1cf0cc45d312bf4ea76469f07cfd687fb6d2 GIT binary patch literal 6134 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 literal 0 HcmV?d00001 diff --git a/d1/d52/class_b_t_1_1_std_cout_logger.html b/d1/d52/class_b_t_1_1_std_cout_logger.html new file mode 100644 index 000000000..1f198185d --- /dev/null +++ b/d1/d52/class_b_t_1_1_std_cout_logger.html @@ -0,0 +1,211 @@ + + + + + + + +BehaviorTree: BT::StdCoutLogger Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::StdCoutLogger Class Reference
+
+
+ +

StdCoutLogger is a very simple logger that displays all the transitions on the console. + More...

+ +

#include <bt_cout_logger.h>

+
+Inheritance diagram for BT::StdCoutLogger:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::StdCoutLogger:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StdCoutLogger (const BT::Tree &tree)
 
virtual void flush () override
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Detailed Description

+

StdCoutLogger is a very simple logger that displays all the transitions on the console.

+

Member Function Documentation

+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::StdCoutLogger::flush ()
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/d56/class_b_t_1_1_groot2_publisher-members.html b/d1/d56/class_b_t_1_1_groot2_publisher-members.html new file mode 100644 index 000000000..46e9d5f82 --- /dev/null +++ b/d1/d56/class_b_t_1_1_groot2_publisher-members.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Groot2Publisher Member List
+
+
+ +

This is the complete list of members for BT::Groot2Publisher, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
Groot2Publisher(const BT::Tree &tree, unsigned server_port=1667) (defined in BT::Groot2Publisher)BT::Groot2Publisher
Groot2Publisher(const Groot2Publisher &other)=delete (defined in BT::Groot2Publisher)BT::Groot2Publisher
Groot2Publisher(Groot2Publisher &&other)=default (defined in BT::Groot2Publisher)BT::Groot2Publisher
maxHeartbeatDelay() const (defined in BT::Groot2Publisher)BT::Groot2Publisher
operator=(const Groot2Publisher &other)=delete (defined in BT::Groot2Publisher)BT::Groot2Publisher
operator=(Groot2Publisher &&other)=default (defined in BT::Groot2Publisher)BT::Groot2Publisher
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setMaxHeartbeatDelay(std::chrono::milliseconds delay)BT::Groot2Publisher
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
~Groot2Publisher() override (defined in BT::Groot2Publisher)BT::Groot2Publisher
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
+
+ + + + diff --git a/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.map b/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.map new file mode 100644 index 000000000..c2ee1134b --- /dev/null +++ b/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.md5 b/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.md5 new file mode 100644 index 000000000..c1579dc85 --- /dev/null +++ b/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.md5 @@ -0,0 +1 @@ +2ec90899028f02ab4761284b4e9a39e3 \ No newline at end of file diff --git a/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.png b/d1/d66/struct_b_t_1_1_protected_queue__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..84604cedaae8ea528bb73e91f8565c6b1cb4c72f GIT binary patch literal 4826 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 literal 0 HcmV?d00001 diff --git a/d1/d72/class_b_t_1_1_script_condition-members.html b/d1/d72/class_b_t_1_1_script_condition-members.html new file mode 100644 index 000000000..4127e2d06 --- /dev/null +++ b/d1/d72/class_b_t_1_1_script_condition-members.html @@ -0,0 +1,167 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ScriptCondition Member List
+
+
+ +

This is the complete list of members for BT::ScriptCondition, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionNode(const std::string &name, const NodeConfig &config) (defined in BT::ConditionNode)BT::ConditionNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::ConditionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ScriptCondition)BT::ScriptConditioninlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
ScriptCondition(const std::string &name, const NodeConfig &config) (defined in BT::ScriptCondition)BT::ScriptConditioninline
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ConditionNode)BT::ConditionNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ConditionNode() override=default (defined in BT::ConditionNode)BT::ConditionNodevirtual
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d1/d73/class_b_t_1_1_signal.html b/d1/d73/class_b_t_1_1_signal.html new file mode 100644 index 000000000..c89ddb860 --- /dev/null +++ b/d1/d73/class_b_t_1_1_signal.html @@ -0,0 +1,137 @@ + + + + + + + +BehaviorTree: BT::Signal< CallableArgs > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Signal< CallableArgs > Class Template Reference
+
+
+ +

#include <signal.h>

+ + + + + + +

+Public Types

+using CallableFunction = std::function< void(CallableArgs...)>
 
+using Subscriber = std::shared_ptr< CallableFunction >
 
+ + + + + +

+Public Member Functions

+void notify (CallableArgs... args)
 
+Subscriber subscribe (CallableFunction func)
 
+

Detailed Description

+
template<typename... CallableArgs>
+class BT::Signal< CallableArgs >

Super simple Signal/Slop implementation, AKA "Observable pattern". The subscriber is active until it goes out of scope or Subscriber::reset() is called.

+

The documentation for this class was generated from the following file:
    +
  • include/behaviortree_cpp/utils/signal.h
  • +
+
+
+ + + + diff --git a/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.map b/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.map new file mode 100644 index 000000000..911896dc9 --- /dev/null +++ b/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.md5 b/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.md5 new file mode 100644 index 000000000..511457fef --- /dev/null +++ b/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.md5 @@ -0,0 +1 @@ +9da752d7bbd4c7c333998a1e6bd3c90f \ No newline at end of file diff --git a/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.png b/d1/d74/struct_b_t_1_1_grammar_1_1_string_literal__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..91d8ff17e93cf2b5eae52802dfec905a724c21a5 GIT binary patch literal 5353 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 literal 0 HcmV?d00001 diff --git a/d1/d77/class_b_t_1_1_unset_blackboard_node.html b/d1/d77/class_b_t_1_1_unset_blackboard_node.html new file mode 100644 index 000000000..283ddbb0c --- /dev/null +++ b/d1/d77/class_b_t_1_1_unset_blackboard_node.html @@ -0,0 +1,340 @@ + + + + + + + +BehaviorTree: BT::UnsetBlackboardNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::UnsetBlackboardNode Class Reference
+
+
+ +

#include <unset_blackboard_node.h>

+
+Inheritance diagram for BT::UnsetBlackboardNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::UnsetBlackboardNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UnsetBlackboardNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

Action that removes an entry from the blackboard and return SUCCESS.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/d79/class_b_t_1_1_tree.html b/d1/d79/class_b_t_1_1_tree.html new file mode 100644 index 000000000..420aad450 --- /dev/null +++ b/d1/d79/class_b_t_1_1_tree.html @@ -0,0 +1,300 @@ + + + + + + + +BehaviorTree: BT::Tree Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Tree Class Reference
+
+
+ +

Struct used to store a tree. If this object goes out of scope, the tree is destroyed. + More...

+ +

#include <bt_factory.h>

+
+Collaboration diagram for BT::Tree:
+
+
Collaboration graph
+ + + + + + + + + + + + + + +
[legend]
+ + + + +

+Classes

struct  Subtree
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Tree (const Tree &)=delete
 
+Treeoperator= (const Tree &)=delete
 
Tree (Tree &&other)=default
 
+Treeoperator= (Tree &&other)=default
 
+void initialize ()
 
+void haltTree ()
 
+TreeNoderootNode () const
 
bool sleep (std::chrono::system_clock::duration timeout)
 Sleep for a certain amount of time. This sleep could be interrupted by the method TreeNode::emitWakeUpSignal()
 
NodeStatus tickExactlyOnce ()
 
+NodeStatus tickOnce ()
 by default, tickOnce() sends a single tick, BUT as long as there is at least one node of the tree invoking TreeNode::emitWakeUpSignal(), it will be ticked again.
 
NodeStatus tickWhileRunning (std::chrono::milliseconds sleep_time=std::chrono::milliseconds(10))
 
+Blackboard::Ptr rootBlackboard ()
 
+void applyVisitor (const std::function< void(const TreeNode *)> &visitor) const
 
+void applyVisitor (const std::function< void(TreeNode *)> &visitor)
 
+uint16_t getUID ()
 
template<typename NodeType = BT::TreeNode>
std::vector< const TreeNode * > getNodesByPath (StringView wildcard_filter) const
 
+ + + + + +

+Public Attributes

+std::vector< Subtree::Ptr > subtrees
 
+std::unordered_map< std::string, TreeNodeManifestmanifests
 
+

Detailed Description

+

Struct used to store a tree. If this object goes out of scope, the tree is destroyed.

+

Member Function Documentation

+ +

◆ getNodesByPath()

+ +
+
+
+template<typename NodeType = BT::TreeNode>
+ + + + + +
+ + + + + + + + +
std::vector< const TreeNode * > BT::Tree::getNodesByPath (StringView wildcard_filter) const
+
+inline
+
+

Get a list of nodes which fullPath() match a wildcard filter and a given path. Example:

+

move_nodes = tree.getNodesByPath<MoveBaseNode>("move_*");

+ +
+
+ +

◆ sleep()

+ +
+
+ + + + + + + + +
bool BT::Tree::sleep (std::chrono::system_clock::duration timeout)
+
+ +

Sleep for a certain amount of time. This sleep could be interrupted by the method TreeNode::emitWakeUpSignal()

+
Parameters
+ + +
timeoutduration of the sleep
+
+
+
Returns
true if the timeout was NOT reached and the signal was received.
+ +
+
+ +

◆ tickExactlyOnce()

+ +
+
+ + + + + + + +
NodeStatus BT::Tree::tickExactlyOnce ()
+
+

Tick the root of the tree once, even if a node invoked emitWakeUpSignal()

+ +
+
+ +

◆ tickWhileRunning()

+ +
+
+ + + + + + + + +
NodeStatus BT::Tree::tickWhileRunning (std::chrono::milliseconds sleep_time = std::chrono::milliseconds(10))
+
+

Call tickOnce until the status is different from RUNNING. Note that between one tick and the following one, a Tree::sleep() is used

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/d79/class_b_t_1_1_tree.js b/d1/d79/class_b_t_1_1_tree.js new file mode 100644 index 000000000..47084f013 --- /dev/null +++ b/d1/d79/class_b_t_1_1_tree.js @@ -0,0 +1,9 @@ +var class_b_t_1_1_tree = +[ + [ "Subtree", "d3/d23/struct_b_t_1_1_tree_1_1_subtree.html", null ], + [ "getNodesByPath", "d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea", null ], + [ "sleep", "d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54", null ], + [ "tickExactlyOnce", "d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5", null ], + [ "tickOnce", "d1/d79/class_b_t_1_1_tree.html#a39a85b09e4e7203ab586e8012f381d73", null ], + [ "tickWhileRunning", "d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b", null ] +]; \ No newline at end of file diff --git a/d1/d7a/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic-members.html b/d1/d7a/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic-members.html new file mode 100644 index 000000000..0a45e1153 --- /dev/null +++ b/d1/d7a/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic-members.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprBinaryArithmetic Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprBinaryArithmetic, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
bit_and enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
bit_or enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
bit_xor enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
concat enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
div enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
evaluate(Environment &env) const override (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmeticinlinevirtual
ExprBinaryArithmetic(expr_ptr lhs, op_t op, expr_ptr rhs) (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmeticinlineexplicit
lhs (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
logic_and enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
logic_or enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
minus enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
op (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
op_t enum name (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
opStr() const (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmeticinline
plus enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
rhs (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
times enum value (defined in BT::Ast::ExprBinaryArithmetic)BT::Ast::ExprBinaryArithmetic
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/d1/d7b/class_b_t_1_1_entry_updated_decorator.html b/d1/d7b/class_b_t_1_1_entry_updated_decorator.html new file mode 100644 index 000000000..a1fab3d1b --- /dev/null +++ b/d1/d7b/class_b_t_1_1_entry_updated_decorator.html @@ -0,0 +1,351 @@ + + + + + + + +BehaviorTree: BT::EntryUpdatedDecorator Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::EntryUpdatedDecorator Class Reference
+
+
+ +

The EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated since the last time (true, the first time). + More...

+ +

#include <updated_decorator.h>

+
+Inheritance diagram for BT::EntryUpdatedDecorator:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::EntryUpdatedDecorator:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EntryUpdatedDecorator (const std::string &name, const NodeConfig &config, NodeStatus if_not_updated)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated since the last time (true, the first time).

+

If it is, the child will be executed, otherwise [if_not_updated] value is returned.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.map b/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.map new file mode 100644 index 000000000..acb13dd58 --- /dev/null +++ b/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.md5 b/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.md5 new file mode 100644 index 000000000..2672afa9e --- /dev/null +++ b/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.md5 @@ -0,0 +1 @@ +b60a0e0c9ca01031cbf1ba3e914fc79c \ No newline at end of file diff --git a/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.png b/d1/d8b/struct_b_t_1_1_grammar_1_1_any_value__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee6de9620497ba922ebe0f1c2532164196756b GIT binary patch literal 5243 zcmd6r^;cA3x5o!b=|);WKtQ@fi5VI}0TBV|?v(Bp7(i0#5)lyuVNj41knWOZ=x&D^ z-iPiSX(0ArJ_WstQaS92>#Y2@eOn((@3o zfCG-Xx-txMbNk5uRhj~UPztER!3e|$-iaF&tkX)n1uJi6CC;GA1BqBrq(wr=9oc-s2s?q}@ujC)w$A*zlnSZS+U zeXbrY@|oM~|8Qka2|u(5tC^55 z)5Reh9^`-$h6^%Dz@`5!hLeaTj49hYk+WXVcDY4!Xi|rpF~``7hP1PtezQjfy?ghr zvpl-BivIlkTLpINn|~|eASqSf0pW8qnsys&YgTdbNhTdFd|Fys39qfxBCDxL zIGp$aJ9|M*&FHW;L)dG=n_a|$LW%aY#g^*Q)%o#|tq45bjD`>gb0Aw1vuM~hzZ}cVBw#<>9Kd`d0dR9ITPj^!mGICz;&x&qo zk;CPx9w??o|4C-kZ+OG2_eDQcd?6sEx#Y7hx6H*x(L){{ZGwh(fIiI)K4!Su=J$&@9#qHv+n$@ zB`7N^)BoisdbYnHTX=?82%_KI+#K5UWb3?hQsJ5xct&gNzbjf?T)g;WJr@dvhCh|; z`SYh`xJdb%-6+TH`yDhUFhj$v{OhT27Jqtr6x`i~j*gDLbefB09j;}$u(GpbzkmO} z-tY8te&G1$7h$uAx;j=auGqv{+4<7EAUd9xUw^lT<0|*` zHnLorSXc``e&l%9ZRxq%LnVJB>9IyiHq3m3QpP7BK+fQ#^YHL+$;f1jInS!7mAvce z>4}NiIA6~zt*R2Z=#oXtGY6qqxG3>2c3pyd2gw*2pW+fT+)wF-HD8QZJ`@v6*X2%o z`VFS6oKjiIZ)IbnyI@WR5vjiCbQcbh?`pX<5)c#ztmiN$JM(V)+nU3DupW?n zZANDlP%6kkfI>{ncLQEYX=xoNCteeTc?Z5hog-~zM8we9?hN*Eh0%|9#(taZO$=mY z^7~Dfd}L(flat2_4DD$a78Z6l=<9%2MZ-xjR1 zSWmpCR8IeGK1TP0{z*6eDl1bptxAr8!#{d$PaInPGS&(W4fQ-&ly3^WzBm=@D%2}i zWlbImMjtabT_Y1^>!uHOcXuD8scrVX7rv7-H#gV5magKn>(qa$e=JIBNaS){j%~3z zQlc(Em*8{QL4$qD&{gpBCmjn53nb)q!yA@|5Ag`7AGKVZZes@u3kxTwr$cDNTp%DD~kpP#aE*rVN+B3ke1E_`hsT< zpBWnyb8?nG?;xk8?M9rVP!I@6U_fAC#TpMEAN*!^dYaZ_eW0U6Jp=XghsXL~26Zhh z5~J6z4@dLRsV<3$iHOeyd7nRXlai5>lVhDaJ3EUdAVepT-IKQ88kT-FHnzAi7zdqO z)&Km7{};zNW@pDSA~JGmxg+i&A0M?*W;AoqJ)o4VDC5IJP~u83h|!z#bxN4X6Rk4l%)G^u$y!w z_gZ_CB%{yZ(ZImK#_q17iwl3H_raBR86`(bEWfw6_i9;K$HE{5VV$!TkolT%Q*9WE>S`1)c%p4?n{>;M;%l$7*A zCWu%0o!UPUlrvGt4MzK3ZE6L#0i!tFsTn+SVq-K2ZE~pxvJA~lN+NZfsY|Hr9T-ru zw0zL4fGKBcdLLM3ILPeMdz;+QX~#OQ^uy}lo1ppB^?@9yogEjG?@F@Sr9m9KkPvxm zYb&bP1bqimrT=KEDX_s54lYSaO?|XF*8r9i9UW~k@#WRjcRPwcYvGWl7tO`RSS>@d zaJ@XXs)nVU?CgWh(mYm9PF!%In7BBooE&6pYin_3CF18#sp8U73t%*OL_{5x!PgFb zd9uvFWU2a&Pe!$hK7Pazw(gTNH)l0j7#a#$US2j#9~~J zRFIsLlQ3OlLozdI@JQ%AA#=b1MxE146nKkGL`1jh17^#|r&$M+&1fo+EJc0&dj&H!Nb4u?-aZ^D-sG7QZ zS$TO}WrN=-Hx&&H!G)KXSF(253W+idMjaQaprEiZ7>usTudIdgkUjVC5T>G{x=Wme z6CTRV&Hbsm`dz$IQGPI}O4+!5)9l>bQ(!zIbp0{k2*oEH#Zt7(inGLBh`YN?FY<`z z>fOQz@?^D~oSfJOoYWt|VB#+G#nsh9Beo*NliR9gy6;*|7iVe>c+*l-pE)@2oSvP% z1M2Lv5X;)!8ZSSY^Ik~qwj}R+EP-f$eL1}1Cvr{~1I-(m3a8-IOloM5u06gH*bvmZHeaoV2@X3L*h>46l3W>!-6E;ciS(TeTAz|PUT1<+nt211rfL-&=$57e9}`z?--c}t4@93 zGzP`Yzq!V9sv@|mW?Io;OR&&jxc!XoR6m}%kC?PE%m1(nNf}FGjp}A63Y>ZWapozK?PTO`%5_#ULhf-}Tqv?i3U7ZOlyB;33 zA&HY7sAVp35)e19;H{Y%Jc6NCi?_+Rz-8{r_-4zzX1B$>PhW?LTQp6J-k1Gj7wu%D zaSz0TWt4Ludyi`pD^@o#Eu~bYQJ`H5C*r1dzQd2X6J=&dC!ON&3G9QgP-_ z8$oXywAsZBR$bc+J)2&8os2rVnLpgk=Gz_?qp^3G(p7LF;bn`SPt+&VD4Q63>;D%g zZ&_}R)~0Rpo~}ylC9(aE!Pfqb38{}V$L0A^!%{fj;Jr_Mg}l32Ar&1FF=di$YqxpX z;_fJpzFfE=HVjs82PWGPYbLPMUqLu{1|ai)X%n1O@faeU6`wy(F0wk9JsOgt`|#m| z>+#xCNC=EI6oC*2{RaaAi|EbZPn38fBQyK4(&C$b{;=)P=qM&LGc)kw1T7R}TLQg! zzIIvuvxkdYTT*7n6XWBp?d_OPo;-p66`>=FS7Hkb3**??eu_h3jtaiHT(EU^j%sd} z1tvLWFACV=5Fn%+FtFo6+4W1~hBrjyu~--w7?6u5c}KykmnMOc$gV^vYqA_)2DE&< zt)l}QM5OHKxC4tgEMfWYersVcMfq`KzoU6*=57{Bd& zAi(Jq?d`cC`3M9}Wzz-s(ed%<to_c=I{Yf(!8b`t7d`2V*)~hhB_~j2k;UD|y!> ze0egyq>u2;Uaxp~*c#RVb<>?tvc~w+Ys^}(7?HwG*NJ$~$;^L5yZc7EgVAg$^7_r4J(NAHvE-uOd z9q!z@1K?6A+e1Vna|w4DtU^{+cEeLD>mnmHHUHBmJm92E+G6iD{`B{ER9p38S>r;2 zgM(#GhM)oG?If}hd3nsY%?pVPUsgM=#th&VDOg(BohP4n@9 z^i-V_eOP$7VBm!(B^8xf$6Kna?8wMSK!#DJrJPL{TjgX(y1s!N>Eztp0f$C6B+k6w zHgDtg*^H})N4Q!^8xYW~z(MwGYYn~_A~Z=yeKG~wO`3xkMMXsgvid(&Rw_fGm_dhe zCQ~AMd>I6K6``wZYt~?4_;>cUw!#c5)_O4!Fu<2!G+9odzGb@i8XS$6dkudE2fN;} ztE2qFTSIPX5%k(p&73wciW~yv0k*`Tj>87IS8{U`Wb#=I6-<2f!@cAMV|cB%m)D#S z|1~8g<$gF-@H)*q6Byx+7U;CocG_4)Zl>n`bswQ%6P01 zt_|i5I_Q75C4)0Pew&&~30M?J713+v8w4X(#ppS+qHz6AXCmjKkG z0cN*MPy3E}5L>qqniv`qrxwbE43&3>RciKCBSFg7?YWKFW|Ue{NU(_JV57F zT(2I$m!Yw-h}GVVV-l&^*;z2w56#ZXuv9ioS&?YLBwQCEZ+8DiW*Ga~86BVP-!%ld zGgwquNJ>Q&2{7Anq3QL|!ra{JXXup_t%K7^lXf6bK0dyUtu49{o5h}1HwH@~+UC5S z${PJgNIHu+c&n8Is9j5YJM`dL%ghYD&0ubaMdIVmNupWf69PB^iqniNfHFKocKfQcN2|be4+o_IT zmmmgH2N>+dPMJ4{xHEdmsHvj>uG|+A(ssRHqol4*09+5SUjKppNs$ z8=&|Q79e*oI#(8x#_nCgt00%&t`a&Bqf-MxBI zj0D1+hCe?)j|XP{Z7C@!5R-t*e4|?{^%wt6BGR8#1nmJ z5*YXx>@zH_ujA&s%m@Nq>+0&}gHiMLM=B~IV50?0-_kpo^Yg}_qqIg&+KK=pTzvU= z7)~2U?BL7A$ET#LOS$)Bok>1O5)L-0LNrU;<7tJX`qW|d?yLCJkMvveXja@M-^RrW zI!t^qBU%V10s|)Km_07MPO;?$1sFg$-V1@^Ax*f1U>HX2HSC*;&?RSQ6N173<01iU zOh!g_aC{7X@q+4edHK@va@hCpB51*n6~KofsFN9&<_gLc8`mzh354vD#N&4a2m*|^ z-^|)^`m!ZQhut|Ms;jGqukYYN8OFxO@kB_b@E$@KO30tALdQ$pTYBxXBzR9&?*X}LQIY6> hcj<07>*5a&gUOvy+UL@r3&Cz8L{(7}_Eo_&>_5?wI>Z0~ literal 0 HcmV?d00001 diff --git a/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.map b/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.map new file mode 100644 index 000000000..e3e4bebd8 --- /dev/null +++ b/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.md5 b/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.md5 new file mode 100644 index 000000000..93f0f4642 --- /dev/null +++ b/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.md5 @@ -0,0 +1 @@ +5a441779fe5c672bc920ae926b71b92b \ No newline at end of file diff --git a/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.png b/d1/d8d/class_safe_any_1_1_simple_string__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c8cdc320fb00c30d4931834a5ca3893ddea38a GIT binary patch literal 6284 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/d1/d97/class_b_t_1_1_tree_node__inherit__graph.md5 b/d1/d97/class_b_t_1_1_tree_node__inherit__graph.md5 new file mode 100644 index 000000000..dd2a36e2d --- /dev/null +++ b/d1/d97/class_b_t_1_1_tree_node__inherit__graph.md5 @@ -0,0 +1 @@ +f142cea37167276b9469be55ba265519 \ No newline at end of file diff --git a/d1/d97/class_b_t_1_1_tree_node__inherit__graph.png b/d1/d97/class_b_t_1_1_tree_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4e7c05116865f9b1114909b417a88499d42b153d GIT binary patch literal 212810 zcmagG2RN2*_&;nE6%i$rC?gr!>oLn7MU>14*_-THloXGYnU#o)Y}qU0k?~0OUfG-M z^*?X*{k^~Uc;DlFbvP>S=en=^y3X^w&d=xkoOj?oWx2CwE}g-_!8xlSFRg}ybAky6 zhv32~0{BT^ZeBk8MPR5TCyjH2{P|ds`W^@8DvpBm?FX*03qu~U5srtL)t;^R+00r+ zhZ*_MpU-A}J1_9xS0K5o-PfX(_u#eWkAh_B`Exv&yfA&j$+za$Sr+s9zI#6+!koW#p3;*5a>52A>nlcneVY6#+x^T?I#+pIPLYBCQPnk=s3f3mGYfc3C>=s`}J8#j9LdSR@T#=QInSbeRaMk z+q602rrglsTt@cxWTd{L@xrgnM`4rAk&cUnJ?=c;V9eO^&M>&SN=p>CUqJyMPOM{R zhDONJP}zApIu%V#Dyf&m28;cLauwcdzkld@uGZJ5``nsr3fC&OGcdEM#wT1dUm2|- zrsBF&%`)ek@Q9~v=(LY~qj^nvjGHdRI>vhM&PvP3 zkkQfUk1wR9rLpT4zwIxybexWJ`Ss0uz_3TZ(1OC;+#H_PzRx(4+u^r7t45Y*FV!1L z&Z$7=_|e(agcP^+DVze!9`wQ97O(xdbOZW|N2lkTi#H8-|IAtqd<%Z{>Xd8{)$NVB zEtoDFPfzhO zdKGT+D_P;aVO*8tv~mQ;qozu)J#?`bU!=Y_iiL$m^v_QzSkC|qtw#`iXG&|CwnWu{ znFIz0f7YvTe>&G0$XU7lNpr)|(XnLwHQN`RB95XV=gVczi}XxPlR4aao~ts4D*+NK zqkg0Wm&sS=GdSK~ziS9L_1s%5l4}ukoVt@$b?B~LXd$DkOS4?QPBK*L#BlBu4wu*N z)A5Okz@VUH+mXs3TCoqomjwy3^$X0%LPJCOYzCvQNxjVR*s|#_vTXxnQ~DEoZ0OR` zP0|hyd0yLN0S|R2Fd;>k_$@ReIUZ#?PGh^170z1@l@?kLm+#~_GONT}O~-rKBzlQB zFXS*OMf46=c!U&t*&X2fTvv(r)Le8K@#^^?V0~$jmfs@mERE30mjS5&lESIhn3$1e z(xtMomzNj54cLf`d(moFSr2>@a9-$@oL=ZJWYZM6cCDr%h}x(%MzDypYJV-q)VZEQ zBPzPjsppZYy}iAOiGX3VB4T^E1S3k$-+wyu^V!0JmG4OA^7@WuzR6h?@tr4$?u1nj zxnW|P%Oh>m2|mi;iy;80bL=@0$0#^msz$b6 zrcMzWZcXXVVH)T3aAmhEL*soyLfd8AaxziVj+DDKeaG=M@l%Tbt5>d5Kl$mj3(RU{ zC?C}^CwNL`Jp3xDM|V|N_)+y`0ulTB`-Xx{-)u*`d!6Hiop7kQ z9#^Z*YkbuX7j~LknFx`fE!>1Hz`$0Q>`cY{z+zLJ7yIQzv%%K}od>LgsJNdCSofdU z5}E#@p3!YU?Xx?}JlC1#=ZOBmZ+TJJ#$=&4H|ghw;E1PVV#CS({&FPlo@V-rL=enP zrh3m&bQ!iOoDEk9*8PpB3q(F?S=qH(QVAOSy`lzrMMe7S*I(KUmFBu{%#lxfLO|I5 z{ayuU`*3gBZD%qv@bzofhX)X!;seh!6U5+wZH{jA=#$cBKS(3bE?+wXYc2k$%-MLp z`>R|lw@C{X90RwNm6a0@+S}Xj#EYVeD;ow&9Q(@McwzO~o|b?7h~wMR(lQ#UjAK*2 zDhqC|2>uCyj**AwotVdF4um^$2{t4)jC_iQaI0pxO0>vssym0Ld&y3>l$vAxrj6#f zu)f!Zy503!h+dji-eM}EtJ1mN3_h7ek4V6}p5YVzN>^t)Tu(SUQT0KU97Y>-oe1vC zdK3fZ|L)6|8(^ic)qTGEpRQ|Y_*HCg^g+-T3l63+lmB^TK2?dAmzP?=iV8xxN&6?6 znjSWihebAzWJ73M8$%h0Zl2o(Q$BzGycC!jY9ffYH^%@U!Y7|~|Ap<1t`OMH4sdQ| zv5g1FH&%QPR_#2qG9wBV4M&^Zu-kO5aq~rvlHc!Y9bSW3(_~K^6-K~uY{sI*z8`Z? zKzd^4d5ALAqOZFz-FC~Ul&R;12(h)2n#7$rpUOwC+FWp{V?pdKv+U$PQ6It`rE(e3V_&sgqZJkO|Qqe&%I4xt1I6lw=WY6M>V zs`0e^UHG7ZT~=H?X^&8`$+~!{2!_RE|FUZjO12np`0nyzw_DtOB%rZgM9y$!wOrf2 z`bw@{A-M$4B(aglB!vaB44cPA^+XBe#@y`w0Fif08`X@@#ETP1&{6UxFuY zQhxN|pZNNtVo*GL9XZ2a(cC#6>ne8-2fxvc1{^=@TMw&O2Rm;R_03xyPfIQd#%Vmw zY7+6HE4{w8TAo)MmriJ+`-;T++`^$v6=n3Vjt&JCl`TUvFf1|@E^=TyJXcWQ)*m+B zAEqY7o5stI3h~dRU1H#LjPARuhvuAo-!|Q0bp^Scb=nCB_9;H>!n$>3&@dG#KIMdK zmqzu>pJAK0p1$LA1O37TSw0+c%HFdvS9}_ZtEsb3jHYCoZN2Cz`FlkGl8a1gI%E}| zqI!Qe3(us4%aEtEtgRf&gggcL8Ds;(q<+|HZ`=~v+6~_GZCkN7HX+@r{5OK+@uE6h zzt*$69sJ{#_2W)#oTx}y)w)NV5^@X1&VrwxU&*6FS0ebG4W3Xv#ZNhjHz-&bxmPo< z`*;6jc)=Q)p84y(!MOfqM*r3pYn}mwO*VKFX$58&BNY%epZ6ZQEM6o8W@1b$zgz-mGbZ_R3 ztxx}M+;kcFt>nVy&Su$=xSoq$D7A*EOxafXzh|aJOo?0)B3|YJ?nRu`or9;*-2-1Y zh2Q_R@Xs$eWTYh-Suh+=aU*aIaOLFq8IPaHI|ea_Yv&@ZAK|Ugt`t_CiA#|!Y1K1D zVjmgHGLjUdlmkn;+ol8+RkXbWbNHFrdB5I4y z)l#*|>~U+-mX`MKAxnOK@4h6=t^ir`(~MKSrwH$JHN*z}+lqTgxC=E@Y|QmId!357 zZEiMxO*jNurp7>JWCIQ58w*3J&eIG=Q!mD^|NWJ`%*P%MFP#-d*)C6zgvzG;kXI&9Tz$hWln)FKFOib688tW>al)9G>(~#a8_TWtL z-eqb1z@PN-qi>t|UQonM9Uh-U&vf++Sw%&~l|g>X?sK%X*q!MF(p#FEnxXop#qcR} zNYGWpHs;Cc0C15C+&FXQ47%*^lmyIwF>+M=`Sms=JSL{uu}uu~_L|i5J=?NH0Rm#G zYB(FEgyWGNSXD!o=G3@jW(LuUa0454JMo5aTVSSsm3K`_O`F6~3z9t{10)>&NtNWK z-rbm&gQq-G(eySl5>s__U@QD|#;$JB@2g(L2dDXNNCMqpZOjLY?L#+6zd@!gezfm6 z*OT1_$nnukRCKQWge)Yyw*ioRf&6`?SB}n0y7uMSG_Cw8)oh7v>I)dy2qdp58GTM9 z1mNm*+{w}JM4XIFOfPh7N?yQ+t~dofe~#DvRVTm^4QVyy2QAzjmu0=~tVc?I1ZUB% zUaBa>U0zFBLTII-zlP}-alO(wyu*81$W+fX{f0$%=8ux;c%6m9(|FPqYV+?ol(VT zeY2tlB*B6F)NA)oqRg9%nYtxBuKUYAMU>*SDqGGoYo`ZTP>rGU@$78)o(MqZf!V{l!~w#~ z65gUc`aWU+P;V|*?s1$xeYzgIJ>)Wy>%6EP!Ksgh{EwQ~gm`CX=L8-uVki7Py09~s zw;_pAxO;b!)Mp#N%w?HlZC5IxrpAXv+`D?ND+2)ewaWrlkNfhBtpP#hQL!%VQaq^>bobW(nk}1wuk z04n0t;l{H<3UK&d$knl^c-K!W0UG_^td(xxz8%^_cW;oNX|DTgbJgJnC&Wi%o2mn6 z0h_@_SmVHu5KiX^{Du&^wv&{))oYW@M2jPpULs>-W1X2=yv57a8n*xkVdKR-5cf>v zrw15wet-Vm6oOcGZi4wWDsV!^wZq1ZFVwR3?MN_jtx z&5OZ*S9Ux_kM`FKtonG0ePA(bqRA5fG;>zjZT6Wuj(Bb1R#jr#A%13+EtQg+n*T~Z z?E*=+!Tjx5_#3PcK`8(`aJGR7I7Lc|MB;^^vd9XLtvr*~OC04ZlD?9`!Fk@-5#Pu~ z4rS(w4~4G%DEAY1y8K@Q_I}NaQnWtXxX==GH%5RP=#bsbMV(AbU?gq>Ed=1Ci>yd# zAT2e%X{J4?WV7G01c|IaKjK<;XI^7td!wH5P_@Ki(y$A)0+Ifc%$r(0BLw!6imu?~ z=H~KQ^}YoRs9NRi1wlpOvtqbn?Bp{-+Kr7(6HpFo7)DNbqelL?jW#6dG z_$B=8^#^D4Tf;k;PL|um;OtEfL(Kv7_z5o{iHl+qWg97fwb-7~e%Y!tv+`IyduGir31eh<6 z$^?M1p@#*8_(8Cx63z4C&!4AL*tj>2Xl|p1b98icqVXR-H0d9%QR=zRG9jcwOEfP8 zWslc!Kt)I=7wfjC0zA31is~MzVXGdBZeKFbUJr9oaFL*z_ujFwu&_w)QBB6%o=FOk zS5aZUdGqcOCs=_4c?aYhD3z1iiz2lcnf(N1qXE8te`Np?jlXx{*H$Vk&ok- zo?K*!lkrsH2vimZq(p77l1{DUa@ZoKH_gIHV50MtRlIbMMy$2CiS(}Bf>X{Qb^gwp zHDS=IFiZ_5hXmtB1*RQ_jNcGAf;*W;Z%0X?_cGB%*Feyj#0+Q`vh!jxHiPYRv+hPrF z*i{B}J;|Zwz3R&y?qx@=ajM9?l}V0o&LG~iRQGBNwVNVW!VlBtHQ~4x=}g5fw0rX7 z=^WaqD|RiG`?z!|$;G}H78&^5Z$>1ij=eBWsmW|A`ixsxtiN?jSVapG6VnnLpR184 zKBCZfr(EN3^7B8r(Ltgf1glE#;BX(7iM8CnD3cpqBBa+AWca+tO|b(>pNl56Y3xtT z;93b{p7Ijh33jIQh*Lr4`1>);QU1l|2;Hw~oTFhkdgvY4|Lnee^*|_BDKmWlbH^|Ekacjv zDSjgSond9`mEv|99|0j!Ovc5Jwk9e74f~MQkwzoXP;JbAae~^=y6!bE71FA#ovWyza$Y z6@Rg)+NI+MzXr^N?J!2Ey5TwN;IdQvJ4HaudU8t+CxcEp@{OBde+=Z)xMLPJMlc^~oib)KS}r&aTA_c8IZ;PbkFEV% zpK%HV%rYm}$vhl6qlw?r8sz)~d`?jp{b<}T`j)lh;0KDyi?08Mw-nC?7Knz3Z4@a3YArLLQmPE1GB|7JZioZ^7Cp zwH4pY$lmLl7nOS#W%&aar$&PPp(>C1{bjC z)k_(l378lLsFnO5qAs&Tmg7QzMC_01!yK-qRpI8ucOwNIXEs-b(L`LIc$0=i{!JG} zhM4Z8o+MfZA3wHTh5)HyXY)v#U3NYVJ9p16u1|gA z*=Ezn+64oPPAQ)tMz?MX`^kUV@vJ0;$aFOBgrsUH0VJfAgohbX5(I^kygVul*=v{= zC1m{FZ^wHbSXo=&A9|4p9U)HhQ^loCI7v}1$B)_5VHMyxTPiO`T5ns)5t>4Beg9x z4yNDlaCE8d3KE7!b}F!b(MpX5S60 zQP#h0WIdD6gDWjf5)ow?DO^lpB>hl-D?d^THge9xvxSiUk#9!VTcHv_6<&joeoubW zbL;seLj-BzUnYUY6bUhFwJp)BG%F!3W}*kPOgncoma^+E6GVOp`4XgO6CLSx93ENe zfuKkply70W_=;BH?57RfKOnGtmyikSVzx4sykkPpsYgVGUP-Ve2M>)Z15$dQU-Z)_6a=W zqZhrQ407a`FMA9+k?f1@bR--;)jY7wDw!&tM+jINMc4rr%5nXo4+ImwEL!b0;TkC9 z$xn`zpDu8aeIgsCGo~J~_7QM!6g5B_5>q>9RxroA(hCtKc^~W& zU*da(a1^edz@YzG9!b!#tq6xog#A>s=^CIz!jKWzY)ETM@3oq=epv0d%%;dVOdR$( z^0KMecnCm31}cnZ1K)1mPgVX5@EIqH8ps7vz^uQaas|lt`Ddj_+Cn|mX+k{Qc#kC% zlG-B~bqK8(LfUhdui!yKIS#8yJT+40!U-TXh?@5$WSeS`L1&fDrAzuOL#`=%=MHhv zpaapye2*#AhpV$KC7>2Lozq87$d>C>u9z{8C^x=Io{@UKs|IA8KKg<^NSBXLX*mQcoAHM@B~mv zmD1kZ9I$2P=MTSiwc0ens{v|1Gd|jqqx#nrRwI>haBB)-)8TTrKTAU~ zP@i1;rNp_KDsd19JkJF-Ir}-fh1YCZR~Z=mpni5-lv@4qo|zXoofPG`rmYd5wu-Ic z=E5F5oi8l+->oD2N$d4T6{?Rd2qCjnGEECr=GM^~KWc8n6Gg-BmRvqv>FNlsh!Xb_ zhLWZ+FlPvh1{KhJ`0r>`cI7UsnERi{P$wy0`A$@GaQ^z8(Jl@BNvJ@H8g_rOkl0_T zMXJ%@*OB3D8f%M1BWqCEr(MrS@at=Y++rb(#}(gmW1iI`j^7VePuF^*b!*-?A%izb zcQpks_5?tZ7mg%QdxM+*Xlt7Wm~^AN5O}+~7PFrpYsiX7i;-fmR{r&pl9D@s7`C@v z(;uX*#S~r!bifcI`W*^=s%Ab=ZJZscLSXPH=nGQ7$@b^g+$trrKj;5Zqs!DBmI&d|*^w~s8b^MWSS`x{tN zV*T>tU5-xqkYM9UZf>n6IRZ8@l| z+utcny&Kcen`=}8iUB&E^q8oZ2WL~>I6qjR0+9}2rH-2vn3D|4}x$CMmw4n*^rlLK`?S}AMy#phsN z|IbXjAIy3@HVNX6C*ZZ3>o|73+81EUk;-g+)4kZ;fbL2VKkNWjLi8A}Yd@IXkncb3 za(=u@1SB+?W~*)ROmDy%X&+{MS#J#jt^zA@v~M`{CVI71aO7vER{m(^%8K0wKJ)Lu zX!-2{vGla_5`u$)3KPpzz4ySHcVfV{Y7)-8)3n*DNd(}7oZWvP7|9Y>?vX1+t(r=IaA;L zz=xVcfw_4?>G{Hi3poyxia7g+;~RM-*7s=43j9BL1O9%6MyIGGh$G=&Xxgmv3mMq= z&4TUJXl`H^YO^@!_VF=QK+-Uvp)5_3;Q~ZNK18@t@v4!whTzNQ5N#6I(coyph>juX z5`X$Vqm(cGSQJ)xo?XDI_nc@YkeZcyOJ#;b8A#~WJ&qezl|h=Leh{lNOUd=B@My7ypP0Iw53 z2zUbiF$iY_Q_~2-Zvzd5+*X&<5QDyg(LHLoZ2LQ0LvIW?E(6$JcD?c_DExQi8p+`- zmCkbj1t^Zh-OYu*T3AggV4y%8B5qjm30pOR7C}e`&2m?6COu() z`d~HW>pw%%;Ytt5Sgm|bs6b()j!yRk^He{+NswK`SJ?R0JlZ2^`^R?!@%2YEOB|T` z`uaN4?x(ioC#R$!flw8^9BcCGn80x9%@U1pWr@09a_~}Qei4)U`MkOaR0{wAAVNtF!Y(K|^x~G&#@pN2tWy`9L?53gQtyi_TXe5{FSQh$z)SI$$V~ zuNck>3{ssWuc9x#r38e8r}N#xpq_aLG~|6?fS@+5x8Okm@$fySecJl*!vKJ~d-Kf0S33Sj6!O!fNO*IgmKy?O;dd%rU=v(=_ca7nYaD=+0Q8^Yt zaTr-By(PEQ8|#SCYzblf^K9f9r?ds9{uZ&idRBbfcHT-1_v-tUqDyf@&4x@!) z^YbntS}p*mcaR(3Ir)8?cV!ZLrCjr&5sCH_r&i6;QJqc4A*iqVXa)ZrSuPdo|7s?N zBYAJ0QJL1YEG_RFgT#P6L$|LjgFyYvzO?fEyf?=idxU?GPBuH9?dprw8#z1-AKZ-j zA!E2BFhOqmlyzQ)|M;5UMF>zdMwom23NP8VJngn?*Lq|P8OMt`82Y``E*eG1{V3`F zR9)OR%+}!~bNr##2(b}%nzum&vj-WgjaCq4f~6Su^--#5>d9gDH{8wd>#Qt&Lt=;t zc7wl(V+0?h)k8U>0)3sFXQ0S-OZYjG<1r&iXJ`F%Zx>1FNj&L@dRP0t?qAf|RQvpF zO=4PbXTqYkqLD?S)C9knv%>fyz8Ys``SyK3k9hB?9Erq?#kmZx3a7(RuTCM=x-i^n zS1O~LPCXlQ^AL(i>kUuwyl3HKsrEYNAsV!dQ~jTx;r!UUf`7%InjLTa`+D^IZp@Zs)UDiiV+yR$+f3 z)j8jRRK2vdS#kDOdvZ!m zHpgUqpC5CxDdAI^#y7bKgb6%FM?VU#1lF`lEdTC0u4()w7>?^^EEEbv?5v~3-){%} zqM1gDvIppr>ZY8I;%q()tI{e_=6SR#L64ATp#6OlK1Vz3KU#*I6|uFnQ$n;j4m?Ri zYigJ4S{BguWhI9?DG#U?CCk`f5&J3XTN>laRSE6YK3q0U3$rHwF(m8=^1Vh;RV^Ideo`*- z*CmE)7-jx#3BSQivv~He_KM*E^%4_CR!`g`a!q#kO})P5uvd;gCZW_GA}HXk1A5PQ zizjJtL@~)5PTaM}FYz_bDK7*TuNZlv3!O`n$BOH&@{1;f6^Pqp{6{E!Kqk$D$VF~( zCQS7Ix@6RBJh&W`C7#rwpY1FW(Jl0OtSZ|=^u*v<_VwE_f6R&+{;S}xA`}fPI>&D5 zq`1T$ex6d2w_4UC8`;;qOA5$_2XiYb>3(xs)fhJ#6?pul*7&Ka6jCpiR(8hD ztL3B!tKskO7h3Hi;=+^9H%EBJ6-&d9=RK|*_EOpt?c~Ho@x|sRCtH8T+`kg}nl$Vy z%H}l6nN?Pl%iYYL zbMq++J%$O6L|)9f(Z1=jQhiA+5#ZR$@Jw*#GYGfu->?jbg>5Yy6W=CW`ATGGZ=U(} zSUsT@Y6i|j6WL$5<40Y%@15dbx*6d$NLoO0qWGx;XAvjdl!;?tZpR_|j5Nw<5S`%W z>g+SUB^-&wA9*)~0iY4#H7y}NnG)dsHNfA>(vqwHaVJD0Yq+V}cf7JQnC5C)%F!kS zc>lxr$`=qhAX-b3L-m%DpQ)tQ7U+4#zq^uY4x4G2Sq20}E4367+Wi*Z*3qQ0?s|Ky zA!eaQcsCC zDIDmL;DT0ALqDSOU83soFR;maM9cLu#$HF8bIS>)DQTGX$fCiDmo>T_m65tvJ%7je zCJReiRS)&=y6N>Dfz*_g_@_sQ$P*iYzc+H9uI3tTCOBebe!%}8;JNoi_ATXyDwJz& zZ)mgOM8;`!SgDk#ZUusjt{nUOC$y)O0eb=uoI*4f$TKd*OT9$dIM`_bK^*%(WD9Z_Nked_ zLJx59=)ZO@lT_tJ*x5e0h#HB!PmQN!TJIsueQroki+z@(w6Sza{XY^dO&*B`nNVM8JWBrjncHTtILRjR z&u$*ox+}sM0Hlxjp$SXku!bCBuWurxEvobb1K&Jr6e@^sT9eNEQb<7Zl>L-KW3H-6 z3*W?KPRESc*NlNBCw3NnM1le^+PQP_ou2+hBiaxUkgwO0GEWAWz)X{gXEx4~u?P^Y z$UXK-B5gb?Q{n%jj{0dnP8<)tuJ;WK+6*`;E14qi_>Ej14DITu7&VT6{RFba1IJ}TS%(xUG#kx`Hf127d$~P{&}VO81mP%<3MZ)g zg{FlL{&ax2m0nz2ToY+NFb2r8zvNOi0R#ksNdT+GqYhbn7N!?|}J3q~sSl z_3nV)*S36>Kyc7bDzL$-C+o`I*0L#ppP(xun_s4HY8Skk?MTfBdKPw#3Rn}61CY`t zh`4Yd;#mYq|NM9x<7JC%YLyJgO62W_2wI{Xg7;=!iR!1dRYtGV_;^-k>`iVbU5SDE zfP@vDlCKH&)twMEsZZ=t)ChY90G6eDN5p062`Gye28xzn4Fot~5e_X6Zp=}&@1Ulp zh5$6A;UGk8lM22yR|bKbc@0%s@$FH3q*6Tf!SZ!^$_)T-^q|BA$jS?V8Fu(CsH6Iz zFs_;%Eoe)NASPf&i0Q;*J3BiKLtIw8R6g(pLgjW9R*rTx7J3dG4mNr^Kz=(uK91CU zXS%;$epa3RJ^^e>+0#=LO1#KMwI|8tLqEersUVV$9&3HolKo#epTy-@qh{K3S|zKi zvf+;lJ=4+{q>M(cUqsMnMeP2)+7&L^NR}A*(8KbB@H@Y-H(QIe}LUC1K?55fh z^fN6%e*NPelhX65V2P)D@Q(-JMC25l@i18!HqFQ7$S`Du6b^8VKe8FU37! zh@ja|Uy#4eM=jq)V($&)oV8W-9kIGV0DYfoiFXj)Y(Uj!Q#zY6S_yp-h|mIf zw=~cr1jfsN_@QL++W_Lw;1DSGfz8DiRStU{DiW%x%2%M}2w1J3_Pj<2v*LN|+%oNu z2(QKLdmrN5yBDp2E{Z_K6C8G}`2A#$&{8{k)NFWqW$Ss9bZXkQv1lMd@$7(yzv#9E z8VYDS`3=m8(73>U_N+aK@(C}K6E-OP-=zD7#%#0vgk`W(TBT1}AQUoy4>vZ-BWw+j z8zdqwAoRHtBM@9yS2tRMc;H;u8_-eZ{|xefM+M?6wuhNlnVD069?r~|0pUxd8)CFH zSc3E&0TDtWtatAo&MgxYla=NhOclotJB}2ZUcVcq$-VMyUxL728dc*7f{*DVXxnGaw|rB5ZPNiG^Zj_u3>TiH$)+y< z^zZ7OWR>Ty8_7^qPgc4+^_BuYwTb5e1`Vg~iAn1Dt(P^Uep>4H=u7D&W5)Eq0&6vK z`xEFL+P&s@67&cVCLxa%67U@um}e$<=SGsQp;=8BR9tQR>UOT&2cb z6Cq)dq&K%ICHNY0N2r^h(QF<#r1elE989tyVr?Ww=-VVFH1lkfevXTOJdKD~whL&N zn$KZGK5d`uW*Loo!<|1Sp>R*?)Ao4Y*U#(i)H4eoiR>c$#0Z*OxVtDH&!Q7{rh#E1 zz2)HG5bg7q-eJ9tB*Sn0X)H+#R;c~Zg|e00Sd_DRR*U~RS&{VKq6NcgSA5ORoOBcU z3&xG)BE}=$rP{uhu?&~YPAoXA;L5sJuf|vLEF%&e_c(Q!t~9FvGA0-1E7kljk5bZ* z$u)o7vQrFboZL1Srz(Hp;ly#uK2(;k?x;QpI>LT+QG{(qF@M^ov0MxizxAim>*)zQ z^dt$-KKey4TmC1;HV!edxIcgXs5P@8rov1J!!zChO!FR{)M8YfdiL-~(7j3F z4>cvu?%udWzRL&d#kZ^ajuN7@E4+CYoV z8Eb76HI$=4Esj90WfTtc8|MWnJ8?zAzp`C7eX4sUdg{j zisWxmHYbNs5id`epmnc5W^Z}LG4xUzc)h8u^%Tcgy>lNs3f>oABSXYAJt>#%-utli zOl)7tX$ivM8I(VKNED3JCP4uKt8l{i_M1$OlhPs#W13kijfr$ zY`)*2x)A1O_hsGp&TIU8*Knl^nm(SAB$w>cuutz!6zJBz>GUQ47J1rh^&D+uMV$IX zR@UBbTnY;RtEcGkSl^DtZye$(1d_jd>rcEd-sVUrG`&!zuI5CKNv_Fk}{VWr9 zz5AjA85hB{{NuD*eIv>EXwjdQU*`4^gOhGjlsQd?TmAUyDc(&JOwht&a#TCY4x1h{ zc!sfUqK$+>?D0z2;iic(TK&-i`!+E*L+D%A$3!c9T-U{FhSSFX{2fIGMlsM$p}Qg( zSzVHn>BaeICfLDY`wCVne8<|$AtJTd@hd8+V{f3m=~8NGFN%%c&547B;H%wKG&fHb z38z^k7!VXaZ$5yc=O?U;Nv74FKz4ZH@}_PUw;9!CJ5%G|1Y9;*m;kJl&ESXl$0`rI zg}QDVrfhLfkV|551F`3scB z#Nevg^RL-KgALf#B*_W$SX18d9Vz1=)h@OBVvXX_w}k}phwLMwR()=Bs3_A~>0}5? zAj5?=efs3z=xsBoyL|EcHCnEuOs|`xTh*kYo=X}2om9L7q$GG#ICOk=4Ueb7xs}za z!za%gUE>}oIg?sZBk|q0nP+!kJROVVD$-B%@2N^Yk(kDnvVZvGPtu(-6Gr3R#9Oax zjl);14}Z?;Ns!mB3+)&*x{(qW#J;9YN)L*iu;0MTsw<%}^X29zpQK&je_zh^S{HI{|H%dhKh)D+g>cG&%2gnfb(VzTPRPZI^3`mmE! zJ$SfwK2&R?M);PPgTE@Ja4@aC++3|;{M7vW-{b@vTGne%QIiQJ-QUynmYFV0XFlIb z{rfGK@!OjjGuwOGO?Pb11sm%slT_84oe+J%oFF0L5aFfKRdPJs114l*MpMM~T8F(j z9@*>%hM)F_gWLKmTX`ws?*G!IBh@{t8y5PQh)wvglJ9A051gyqs>~Fx92vx3t)v$4 zT0c^s{!1cW`Eui0UX_Dj^SCE(O8Do2C^zq@0AdWadiRj9;=9<{RFo)Aatd?reF|z1 zeZ{*QkJU+K32}X%rbgE?(5{(^rTk^C!jK0{tGnZF_%w%Ssg&%r!bx$g`Y4UCueXU3F8()vAH(%|m+&#~ycmC8ww&R{j3N zT#dzqr^_#;0cN*Kx>?niBD(if^BJMHm(V4iK<`e7si90=rd4Finh7d5`GX^MLls_X zbC~Pi7v$lP2TDU8s4a6zfzze`@#loq(VfBPs|tHEqB>+K;<%-aK#;3hXK|PIb6U;X z1Zo8}J*$d3FU**-H63V?P=rKydHz(`sKaTEYRv5Frh)mT|M*_By zDPA+WMmYjzw@a!vls#)MmvLX2Uc9Lzf77Zu zcc9V)#^4&{##W}J>r4T)QWt$h@zljumFUO1GbIVygV5V?sZXG{;^&MsHm)E@&N%V}Zn>h`HUWcrXCWJ1uo!4Sa0k#X}moG z#IAU!<>;`d;>izk?Qd2Jz_F!siGW3fRv@PD{ZWDD;L4m#QVVOE^`T&pK$1G+cdtom zUhel9T)R4rvmpuQBN5CGWfVTlOL1Q>$&YwTYmUD-0&BKlH{{f_3c3^rAb#FKH#;x{ zEvj-?>H(U5(XSE*F5`u@#O@4(p`qb+J*PMBEk<${`=WqH6Sjbmp{L$|z@{u1L~1EK zwi(}bLD}}i*m(7)6sbK}?ZtRHU@;hEgGND-_4WG#avW~PBY_7uAfJ0UTDY-t_BNQS+7vwdvXTrMzZzNsl?5KZa}Zg zO+gh=t|9spT%=hGH5FxqP*=qOZQVdt^SZ#YzrZ{ca~aTEJ%Hoc_9To=h|eV-_$ku< zP~%7V{{8#fq7iSUb0?5j1&~}3zVO3xb-W%CyEssk|8!Oj+G2FB z9Ulc@0r2F7x)$k#eOy1|2o){LN(rZNwqvLHuyrh@*HE z58fgm4Y+p)lud|AXSOF>Ki3P3nx@fno1}miJPCVX>XyE>LMI9pXc<89!$j;N%FS=o zK&%YC^*D%J#Csz{AG+a*y!Th-ps&5tVH)W)R-=X2vm{6C%{_6)BaB%!RInZ@CUG@T zeC}0HG$CWOlTmX!^i)#%)2}b%-e}=v<2N(dsg<4~@9KvhFJwnGa~|VDQw}q9d(bk- zq1n|(kXJE8Q>=DOBxpm!Q@dFh6!PscS6o&=ZLzXDpN&viEkT5Io;mV+K$YadW+2l; zI&jj(>rdCdMOLj_%QV-p{>-q)ve@;zAL@YWgPx|g`JcmHTSJ3BM+eXnw`SS{?<1i? zIWWR~pFp1(vg!y=h^RGRUUPGELo6yItMoNg9P(hWmQ2Yt!3F)`+Iy9kiBIEDr1^ma-SH)a$@& zL!cq;DzVhVEZrZ}rm;0Ogmk*;mC$E%4ZaO>F)LM{FtEwRu%W2mZ>5Ala)Q$fub4qv z34se5jWR-yfn0|5*A|d+DL|vjV8c68g%Ih?a@CPIn7;@jy~BY}WDHsw&y^ZN5B3y9 z(FN}*v8z2RxYBuFg`#8=Uh$FVx#IvYJ=y*4h=@25-4$>bk3sT^P~REZm6v?4oier4}tV_SgnfmbrT-XXhqK@2osbw8LBS`cCK!R`j~ z@|GxJC)R)~&Qu_$H3Sxs5BjF$N06pW6vy3!ajV`OT;2)j?qYQ~tUIs5C?Qc*cZe{m zay2weW zKPY3flf$^OC`1-TSnO)spn&9{#3A@2T^VxWR;F(uBbtjJ{JrAg5>GnMZ3E%z0Y!=Y zPBitS(x+okLb$2Em&fr`3wf!?bYcLlA?Smkap{cj$ib3JOM*mIZ|-JFTNYY$P5$}S zQ3%XaUy{(Qq6ky<3&eipdoJL)(89KFDiT2By*=h{&-?${2@SQNsYSg&)QbVM?yo??SuVM^kdC~o1gKM_VuBnKh@KG|QQ?gq#D{w$ zM{23capXpWPdn}&Pags;cqh)!JY%JI@845{?;(;$V40C2bnWXY5M~Y>mJ5WIFG=aJ z5coVmV(4)QFHL%AcD!lEpOFVOIk${u<9*rpZM;9ZbNg64buD{QrcqGL{E(zP zf3ZOmjz^Ivb>yR8G!kUfS|8CO6}$wRv$PA57L(9XI{|{4YoMvUdJ1_X5n}uBJ}U`J z4_MU>h!*tIirO=4NaroIVM@Gl8hu9iEjsdSOpJtXyL}JfC!Dkd*#S{59D%a&;e4=3c|CNEmy|C zQo&KC;d&Sn&wvWtDau zkJ8K@I-Dm<3w)`(C9g{}|4bs8x!0?{Pzk%HG*}|oZFXc<{*`lrYU46yHNHk;@nXA= zKIir5sM#d^300TjZ&b3$apv=zliPV7pwqo~pI2^qPFbtvEO;Y1$AA;Gbys>;ACL?N>jACfIBw?SGFlTpCcD!=% zkk|a1%hdoMyeqynv!?|-^#3WsD2{X5WCyA`BabMi+}aa2~MsO{Wsao44mAL$oU5JO;r94aZ%HuSnlto@m>)}vam>n41oIiEGt!K>CfHRCv;Cok6W_UR-bVS|y)%FX+)Mne z9^sbicDE^?12YUa;|c-`{*<{M>k~Hk2Q1)yDI9sZa&5{)Zg2u`qEl+0fM4yccEAX) zV01(0`~wYf@d_nzr>EEMgz>KMeDSA}`8|8&Gv?`2@B~Ky3L}ez@B|TiZQb#J+W`== zb=~k`$+VvVaG?DykoaN2`{OrNrIm{+hQ3l=g0^9t_d8;R|>>bM3ThkEyHch+c%d;CE$9R2R9<9wVO?mqQk0VO!BnFes;>B!H)jntG+LfQ% za{2KCivyx}+|A_+>te-1%|FLa@xb(W+@yON{2P){3=V-jEglVFEuEfLsxoSVn>k(j zr>{*8y|yTJ=PjqZ$~@=Y-LD9|3b-%0ug-t7DkgF4BCSx6zg;isQaS$3$C-`gC+E#6 ziJv*UcvU?ypqXBZMEDW2)`8^~rWctDar0wWO6>Cj51Kq#o?M;z^iRK}O^-f-Bv|(9 zPTwDLPICi$uo%KJgeP-J>lOovf-j#o+4ud`ppuD zp}!@^#0cgcG|a+k0!te9NIV$Ig8jv5e;4ls1jOm|m!E>Yr#t&5Q&POU`=v?_Z2t(t z^k1YFj&ZvJb3(z5TYxhK+2XO<9(Yn~Qd>V5>u9BEa5Pqo)EW*?p5}de?uxS)rk&Iy z!55ZCR37aX*BbsC)D1*nchnyMPNR%ayiy{(f|p>V9CMU)QHvFi zDQ?~95FGxBm2a)wL5!ZXJi zP5$3XDq?%=68==G_^)KfBeyOOVh=9!4UDNKE?oFfD1*}|P0*=a;CK7>(l6`zNBLxf z3BCT;sGqgYIR$sxc3?NR)Q>2UmFzr6xJw@)O7KX}KH=Hh|3sIa&1l`wR5#A<{<-SP zS?5xLXxz>{^KX=lxmhE8i8GxpmI*d%p>=yRF&^HB>FuHWFfQi7>hwvKg4Scudkm6?hZG~N&q?9rxSI53wp(_|J)3H7fM2)5hp zljQuS*+O%_Yd`w%=j;Z%u-G^6z%IumqA$S&iDKWs#E9G86ns>nL@PdPjrH7C`uYW< zNgg+ko@7I~H_UXCQ%?akHvi=5;=`J<6WD_cNlF17C73%V zo|_O!uSxU<;23`quxu6>)*DOczk@1V4p%OxOI`bQm=b@*rr!(v{uze3W3M}R`Eu2Lvvi+hZKDpo3jKQ4ggc6wlOa|>y_5C}qw1W+O zJ+1WY+FXw%#Q8d&pLhE8W*xKnjz!=Cjoq(}oUYS`@3ac^Ix}3oFh4SemM-1VG*)I_ zTZlQS(lr?rbgfQpc-UFSd;h;Y9!=V|MBl`Q;|DScV=3GYi$-`>#Z`AEj@r#ju2Wqc z4xhvJkl`JRyY1$SzAv-rOL&i>Cg-ZdJ`}S;2tKGg=e{ze<9yL_`@?s;13Dy35GVHSE4*tJa4WMYh02##K7zgwt^Ufd~WqkJLm^`C2ETaD$; zgPS*LT_dhfUyN%BU3`-?b37v15*~oafNIsc(O1P~Et4+6>kHV9?WRrH&r$L=Epb2{ z_T};%+12?f>#jB4@y+@$i#X$c$qqmLHe zS9uMq>m9uNp0UPkzGj}S48d}O&HsK#R1@f7>#$tXVJ9l#&-owe@(aaSTAo1DI%DDI zh9wgwpIqO69k>{uSh*N2(=uG)%;I#|hq+^8*g`Kgx~L$&M)18mtQan(nd;73E_k%4 zG6_=n>XHPHTd_|px;pLgs&d?z(e;0_S>UpmCZmw!Nw^>`mbkMG!QqXhQxjd(1;5GlHIZOyE===biU6a9@Dduq) z%IRorJ~dpjh%t*xU#*FIwUGBgK&m3(o4=SXJlDC-kW*!Fb`4sv0KSxIx6*p&y5k@Y zY(Am6>JpE`wan!=BC}q>89y%jU0$ZPqV(#$OPF{y_}o?}_3aCTrcR~5J(KWENZrn2 z)A?^H2ev^-&Ee|OINeaH@6c*&T@NI~%KQ{0JrGR|d$Mek``NJHFEQu0r91yQ1Po^o z7Uipv{e5LP#^bJZ?Srn!#Maiyj$zZ-wf(e?U3QCBr|v2I;M4#%Ta!4m;FfO{{-@3! zFK#El%ON91t(gu0&)y zEW1DJVpP%$2V2*+%8$!t<*xD44-;H{yq>z<3@vTrQf@uTwd;NhGFb|5pL#rwHLxJk zYafa|bxyt~4%+GL0D_9?s%MGV34-){gPKf+)Z*Qm=dRz7G`aPfXbILv$0Y$*gsq*% z{+XlA%*eHcf2T!)sjNPk@md{j-NX82nMA?HntY&|y>^yVTwH|O+S+uJQA|<}PlX;G z(Wu_h@KTGG$H{d+&vqY`7*e}XHA~a1%cWdf*GVm^vS1CS>XeWm-T1b}#iz{5zxM2v z&~aRuM9rBK+k&2ntr8DuKHf1#t!p2=RF#$MIs}9PltvCnwTGjt=NkS4z=O(kc$Awx znROIlM19se*`CUWQZ z0c61w`ur&v=jP_(IZr@sh+LsS4mjIDni=5wZ zIqVLO%v(Ohjs|eEc$T!iD8>7wl4=_QYy|k*J_6ZcpW-uQ8V2}9$W|NKj6Q4E06uPH_WWc}_*9v-9;}=V zbB;oEw8zp50k+kUUKRm11feOQqOCO}@;H}yVNu$AX?bos!x>xU@v?3fbc{|AP z=LL(8hs?USBUD_E8AFB0_k>`n#9bmi$|Ni=Hwq<-m1c?USF1a5hx|>#Y#dU4A z1j^%`k3Yn6a`wLA=-j5$OX=WBnqv?PzEs^yw$xbS@kR!UmC^Wp<)-%TZaYA^5tg3x z_?JBeqaR?QsAn^Q229gky6H?9{P^!B0e zeZSl9M91R+bO@tX?g$3yIIh~Mm>73^q_RZDz`5XxH`x#@49;gYU>xjH&0l!{$T;$% zy*pYViY&!IoXVr~FU`>o2MQUs_=>byIgX!Z*H#r2dh(#=V6&;9^C%v3h&@TXx4!9clZ+U_axqNCcTc^dY^R=$W z6=~^V%)h`$;CCygYDI>IZo)D0D-~RYR#RxGEUT={H!1JI{JT`#{djmMEm~s(*?zZ{ zGhXr9i{aG4j|{#*H>+>r98_5uY%vc~+BL9aF6!G~Ub%vh{N04zm5sfHbs&6Jkv=<$ z8o=Q+P%CGTtg2mG0t9X!4r=+Z7#ngHyu!wo?x-V&j$<=8Jw@H?xE{CcLT&89XxSk# zoXm>hN?@lTGSNFiZHgt|J=tAG*UWTfVmpmTuKL~I?+c7CeH*6h63;%%Bq(s-Z8~PP z+gE{g@er9H6F-Yxs<_z0dFAV;{69gW=~Lvn!NlP=_5l}c?doC|6fCUYVx)`uKVN|9 ze6!lOKx4Ts=9Q9$-w0rcRK)<1afVY=D;yvo1@M_t5(KTz!d?Cz^!W)i5QxkHYsNrC zmI5;gArJ=DT@S&o0_iJ2WZk8++s?BbHv1F6>`lEEpqO@a z?aEndVmUt$s{DHKuZvyb*B^u`%YR%9yq+E-KJRwov|2yjQ~$1HY1gkfRBK0@-TEF! zl)Og&#lKb=yjGYGSnxI`?`ICUgk$r0_;c4?9umv&?c^QBo9Oie>+Cyvh@fAw!rx(qE zrP< z!};mX2A14q&rg{H&UzKDa%&Na66`Er&&Io{XD7m{*VMO=dTq^L1K&$zF~W7f3b>9W zAYnI#tRgYjAn3U^k|-gqHt^tW(6!zLtAiZ;K@x0@eB7PB;xsljIfLGxO4dkg0_dXO z@Hg3HW#7W?DhB=>zC3mva#IKYxNO)AlPh$U$aw)hHoB|8c_GwfSjV@C^X6E3)T>wZ zH^oO4AhrXsMO$pwodG_XGrnf{XRg&ja6t{;VE^Kk$aG4s97pQ9VKEok!I4h*sz@kE zLD`2n-3_SUaF2*);_7m$mMON;>XM(?0S32_6^56^8N|yt5=kXj49>$3M)jDG?Uug_1VD%qQYZ_kk zrbRj{n$9`Vcbs}5<3t+Ynw`Ti81r8o#`IJI5P2;492+Y$HuzEV-Oh+6Wn;P$mrUUs z-tw0C?48s;xVfTs;n&61#0u!G^1ihpu{_yac=X*U;!1H6mRt9dZV zwLKhN7=J%bS|NJwD|Ra`7Jo&AqKM_>uAqYW0Gr>F+?j{DYAekLzwdiFpUhE-dhO37 zh19HqX{!eR{b7Kh2eA3nH49!+Br7RaSjUNf3r#Ox7I#lkHivf-xI zkdIZjQ{~)JI+oB~&2ZC^`+}qN1>TlF#t+o7zrB|&@3WJJ|Jy5$3iI`fkK2i7n)X9t zZAvyuHU!yY&3Pq-I?Ipz)ut#GQ$3VW?t8v@o40dc zLzfNo6&wG(As{{1+JZM^_#Z}VWcmeZe5`bBGN#ObXaJHNXJdAV5y}Od3T)gQ-v)i#~pr8lS8OwX8s%m!A$!;V7>o65qjoyf|2A;)?`jJ z9D5_6O(oIvA-71WQ;Qxeb$Q*O#Lu&47FCPQT=D}_xr7#OR(8wS*m?C-i>ETfs3}yS zs3DIau-tn7=0QbvPYW$regLD4q+b-I{C}FMEVzp_XI+CM&R)W}p~7ve5Ww&Bmi^+e z`AuJ0vzrX9Quhr{DN^lY6g$*-&1#ZBuCN+i2#GTT8X?DCTLeG+xD2j8cF^sU3u91V{K$`dGdU<(pT`y)+uF-)w6Y*|)cDCx=}g4u zk56}J2WwA6q1d}DGzOiQK#)swJ*ukiFCz?FDoG@Y^KI7|)|BoHGnJ?gFuiIeyy3hy z`u8LRFFE2+#NzZm`sn~CKd%TxJdlLkG%})H>4K`L493^&K{Pp1}0h1owplv$XK&CbzaOd>pKH) z0K;l0ING!o*?gl0yKPhy(XU2p%4V;vw{y$K0D#FqVOEzC4B%_3L_}m@(ml+~siev8 zq#TVe>LV2SFYFv$|M!mX0dbq{21*qLsHQPdDStCJ1C~mFr)N%QzH*FXJ`{-ZAgXY3X%fK9Xjd9juwU3=3k%UpnM&q zU_BrO0B<;2@UF$EdqyPN3Nub5*6OgKvyu>0AgJ**3FbLff!UDEW`{5|K2pqzLOT@l z>4N_i8lY%4=ejeMA{kAIMd;H?mk#+noLltuZ^Ri(^wDTqu)%!dO!!qY z%LMyW3f(G8b{o>8*tXIAwFaUE)F<}~sR+T4J2ojPX_QeDo(u*6Fyp+$f;K!1^tF?` zSIX%@u>*KP9Bj*%5Q#~jOAp*Tf*JvtfKMj+rdE#K(3^# zAkPBXKAFULJ`eOpL8EAwJ042$glE(e9yG4oUhp;o=GFJZKnvtaq8zHfE6rRxMSVdLNL4Ni5RBYpAX&Re7fj??Mbf#AF=*@iHagl3x;`e@ zSCbxqp>Vm4fcg9{CXb1L`bF5Xj4u`NH&=gs{s=bNqlzxeW7U;**49fW7ly+@^|xOi zbpEsPDGR8~o7p0sHXsRxMDRjzCXfeLzTYvozNsf0OcQW?`DA)(DnzCWgnCdj6hnz> zc~~h8=XM$}NIsdt5_=sac9PxyO$J8nXX*eb(MlV~#HBB2DZ_x(@kwmq>}q^TCb=_Y zl_+2#pSZyU9f0unQ@wXrf(D^>Q-fD>{?HG^Yp}_Yj)wA!A#|Wa&+`JK>#4{*>NpbO z-QrS3#+jwd81$|kf>q#0hW6D=$SAb$LeK45G0`SYM;HutNTHwxe=TX4p=FeI$2p{u zl8j6z?WTP*XO~4VLo;e*haPANSW;Dn!4BvgbdFkF=>o}F=vFP*t%Z{FnJcX$Wi=>< z^^J7o?^PosMGO%zdTaaw=RX}b7>Jm}LAMD+!4X4~e)7p?P8m6+cG8}rw z%O=57P<*jSOTU3_AICKgf~Nuy@sSS4x+kGo1khglUt*$RMj6iF=H@0Q_)zl~wa$6Y zCAUD#Q!RZkiuNt^WZS|bp{ZKw?Wfv(g&igkCVuV$1+A%sjwOhBc;FTRNAQog$NS<- zzR#fJ1Nz@G@R%=$z%2o&7NAEDk)0VrFfsi0znM`(OENkV&;@M^9m2?166(-cuD?h* z2r~tKkc5a3)PIoda4%cN{N{`e$7z~Dp#n`+*?P2t0mZ*guD{UkPUd6_fJk+k+d*bmrNqMMwN@N!AlyNzWdC zVk$huQdG|Ux@l2I`%EveL@br+`>%r$w} zK%)qoH{zg{c27@E+85NEa4#^K>3|7ZmeM?v6kAsXDlqq#HY$0B8eWq|CfST*j$<-` zJPW|v-ZDpu@K_%@sY_%{nK?X<8Cl!1XzD zM*q99_It3&@N=PlzMLaP6gBF+E8g4Fqo?o22=79B9p#9ZHm>ijiaYgOla4Sm!g(^h zJVZq{(Hnk?|EyG_?wyFkz{Jc3b@SOFN#7g9lQ)ulmxhvAsn0sdTirht-GCRK!5itmj4>+m6ZozEdo}p`&WWhvAU#0&no(X2eXV=5>vi z#|h^yN%l?dkG!Raeh&E#{MSE;Y}zfJwXExn@t<@0W5~GOnjSHu6)E$_NY;%vvf{UP z_eS=0M)=orhg+_j-7;d|O>swcz|(MW5w>xZqpDD(e$cXRn*1b7jZmAh?4Xe zdlHi)L&?d7=rvq2FMMyrbZuQxd7z!)r*>_!-jHmm!fCE+O7Vu=faNTOncbyO#May)U; zNEUzC&1O4vP|%h?Fei4L>%KOY+{t3>_rl6}Lw^$UxTamw|HjuZO-i`jDUu>Zk9F-` zB>X!cMdV)Ds`U&WIZ8G>PL?)Q5F8oBE@*vFF>`}wgm!&C&fwel5dV(cu9)@VPPH$~ zj`oeG$5hl&z#r~x53wcwYWboQGSvi~d9}{2Mp31%15I61LDw9FrKFQWdI|5E+^SM; zXAV{$Z)FUjD)i(T-yb@?>Xkq1^u!l4Yq$MRU&-*`n{q)d<=_L5ADv55l<=sdz|3`@ zvro!uXumko;lsl2BrDqD?<3AUE5lUBt3#SQ9G(xfsd`aK?APj)aNFTTlD{5PfgFd{N%WJm7AF#3idx&2fBkc$^_ zZ`r$CO=A;&|Kb9VzdSo$JI=bv6$8I9k36MD7xJ$n75IghUL}6Nc9oov%Y|5>iTg1p zDY0^*VXd6MKWM>Z9L#o`Hy{9?soJ3;w+tN#u7 zQZKJxunH5LC9oD|3&Sg<6`jXOqB|QJBGvuA@9fp9F)wAQmn4p))Ze}2N>R8fC)aU( zK9ckjKGxt~;Nr;7KUyxQg!G1zAHDdZiDHd0F%6hTw z`D;p!@d$%=cN*w(LBe;jt(7IxjiBx;)r#X2 zVdnr-m!kEI?f8@@y7Om!uzsg3$zYP3a&c8=CkX|=;AheE?RXKpy|Gz)fApm#BsD*Z z?KDB_9ehhk5Phhm)sQ-#mHb_gFM9ejs#-lE(u0@!=iJA1K#F8It2u zQD|{#6Ly!DHLp%cl`7dCFdWrpYy5ORdfDsMw%Snq**$QBPnDnKq+}?ai7-Uy>vI1$ z2154q=Jw2{(NIZY7<%|BJ|6dKESD}4KZ8%j%qum%NrWrIk>;rW0uDIpNfLz$+lql; zvV1xd7CGO-$da<|Q}W`jPVf3$x;@3o$YqJyckOMICA!SS zM|Cze0)$Dq&FYy)f*zlC^0lG|*IXG~ItaKgjlZvYvF2AtU7K>IRR1rVyy`Vp;fN&} zi>_PT`k#IyFJ8zX>190rLo;(hoL%I(X$vNr8qoDWF#=8!XigZN=>FJPq5}0qUOuBay$5z+TWvA-6-k#q>@X{2C@Zs^U|sL zOME#Rv&3z5GWrigKDB-P5cYeBe)32-FaHQDth+HD1Z24?@@gkS!ca~ z-SgU`8U6tNKTrU|c$IJ%`YQzH#`0zppfd!<&+Yv#Tzi^eHo6Czd*AxOmce|Om4YS+ zK`%%uOvlB5J|<-KjB0KLg)=~iVIxv(;-IWdf{;;08GJdAYc}wdGcXzT9DO%9DT5uX z1q`SH{~95{(ZMjd18h(+%OGXU)=tMq!hOI2E`qTum@c^j<0cG~k^wJzIlN5RXAHw^ zkh}K7+G8pIuO9Lx#c{C@~M{#r+YQ{IiC}tb3?#&7Y)ugv0)u0LJkoPKMq`M9EnwG3YJ~!C2#9!~0&!3p3(hy( z8=KrJk5TZT2ESv$OXTKX#-EE;;4AE&79u>?o5QrwV^@t&^!gK65~RFqcsS-4}t0qPW3QL2L; zvlvvfmpM;I*T{|mZURQZ>@W)!L$_(+5f*A=Af%V5L-KuCiDm}(5lmFmzko4(;^I{K zgKA(LgqpJ8Z#A#(_QD`%Xjp56;x|0U1+WZc-HzxQL?5FOPspqY>X(r5Rpj0STb$S* z7(pS6`at=cFQG6C0_S-!*qW6FwJz7iscpzv6@Zd&IuKE2}Fc$5KbXy&hfu z5j<+T-QxZEiPqeOw;!V(L=ryseiS?Wk#@D8f5enQT*mlgyqlwrEGZe8aHe|VhjbDO zigd7V`2kgrQRSnB4=^xD3Y>Du-Wr3=PO_w{?fYFs#g9T+pkl^kTnpNTUr;`GwzuQc z0|&PI8623sCh7v}ybTQvp+m4Y+IHn>XX*xz0D4aE=DX{r+BYlHupq1oyH> zFtZAO9?Em<7C01H{tt$~+|<=|b#W;Hvatd{2wmOLYVXn;ii!(pg_2f-s7${@b$b^I z?Yg?>iK(DE)+5;s}R?Z*5XUM<9RN%UGKy&T^mZf$Z z`HthyL)nduSaFIhv%Wd~II}m=VDQre0LP{G$7GhUj}ta5(M?REW$Ax(olq}!-sino z`WvhNBBvyZ!td@y(c<{pL}AmP+Z;7@%cxB2Bbv`_X`5a@zdaphu%DZ?DHN>C_#d7% zyR`%Eb~G#D+mPEQ;$x`~CF(sd@!qJpyu6pOfetn@v4Uo9O7@ojAQT#L;NhF99>*p zp}+1tI8Wi84qb-8gvNq7JyB?!9DNA$xkFz%L#^-lK_J)F$NVSM7TSSJFk9A13al0kOFdp zV0gvVL*4nTyAM!Az#fPZV7G463}e#keALFoR#B(9{6YUeiCJ~0%eh4Q&kutH>!>Lj zSLa68yhbYK=+bUn5DEywGyJ2v$l;*&Mvg^~GH&)rB=hJzwWwv{7**W2W#*%sPgq$! z+_JeiB@aEMU0>{}zG(;?Sa(oGusF<4j?3cI>N$Y;`~mbhFp3>rL7;re(#a$QYwk24 z@`EV*WB>quy0N|S|IG-18W~Nte+BJwur$gL*gR3wmsuHvh7tLj5mql_mWYNyG=h)| zkI5h^)HS!hz8+xJG$Z{u7vw2FAQo0UT98M*p8(5*RM$W=Wx(05S}iq%Ao{7@d;0Wg zUH9KT7;ah4`RU|Gb4QzO=m*)_S7VjvSa+<4&eB+MJZ<~(ac)B z$ILt{K8_e?2XWc&TdcLx^&Tf{gzq}WN+aLsNU8e5{r0WRLZHBefrl|MT_1P)i>jp& z|NfOxHvZY)PKB4B9S7UFc4TWk<6UvAcDIfj_?X4RUWQ^H#52_@n^}Nk02Hc+W4(&- zRcO{mNO0YxB9GtRBre!@E&MFz0PC_e*h-G06|rC;4jT9S0=Jn_f1$(T=t9&jO3=l01SE%PwVapz9O{m2j4JHhn_mQ{P(9Cvdn4BLe7e+rv z(*T@nrpUMVlkeR}H-6HUCH|x4z^hO7SG7FewHf{4;0UcP+r;heZ>9Z_dwuP)_3AeZ zw`wni+1U*`!se;zssgOHYBZN|BTT1v{^ZrE*RBm_YwXWke~un-2=t?Jz5P;`I$`pa z&9#b7ZMs7BkAV!9@6M^#1G7e){L*tL4JS$=?jkM zjlg3MIumaKcn|N5Z_DE*^YPUS`_}D4e zbH`;GuVsCnl;qy*@9*hZ+qAFX4Lsy{h`|?x`QB0ejF623cZv{}GR6mzSxjNqomVyv znrF-mUz28RpechVeK8WFhC21Ak}Cc=P1k(8pwN((?fae2w<8}UB?vJ&MHpmoB$4H{ zLoFD7mo$Vcx<_ln)rIwuj2wyfd@r@qMFr@bq+^!xOz-^OnVe`Zr#X{OP==BxYHCdjnTzTHYQVWgOR*YK6B zss9^2b4{}@HD-sBNB6SsV74tmMwrA;FY6rzs~BU9h@}yWVvaCOAgDB1gh13x~FlX$`Q#| zCf9z1G!%18-QNj3T@t}eDky(+0v;IWx{>p_o+;#aG+>f(hSA;SC(dDMrT(*$j`}>`*S!1&bUSyR2epq+?vi*wV zu`%&f+#CDq-?yIY*k($mXL98!w%)#^5}QA2dWUkgfB3nb!}hJYfAxOzQ84VvYy-i| zOzDlSWAAjywSqjEP4xThbq?EXNlb6eyquz}meH$FJHeFk-$;TTk>WCj{~rm5ac`1P zO`8!dcO#ZGeSOU3z0Tx3*XinCyVjAF==Gt>Fyc6UBmw{T&Y#B=88#9#KgFzGYwnB5uD)PLxklV0SE#k_tkCEh2AK9V2}wMz$3CEO-mtK5cJ|)ZGpCim5luvsoWygY zgU`s!QoN-d{A`%~27aI7KJg`CxgKltWp>PMH{f!A?Y{3q zuPb4q7|Je+#^rv&x@ZfxY;?}Pz4yg;QmjyuqI7@oRG*5okLaUXOOLIy-Qv}la{Sf6 z!I_)AN?uy|_> zORAB7z_uy*qf_QN-lNL0%#!IeX`32(xd2QYX-{uhHth`Xq=AG)&9$xSQTzxsz!!9g@hT`wSy9apOjM`D1g8{C5TQnj>HCzZ)}6ox4x4NoAU7KANJ?sA^hYw zC3~l76%h_aucT=jQhuUe=;uBo^TCIMgg|+byEcZ?gDvjAJcipegd+qZ#6#}{aG6|t z4!`{kl1lmCVMJJj4koG0>)iSmkK#=X-cHjSu3Ee`D>Kj0c}(tIqc4r^;2*WXmuMI# zI8Egs%vp!6kVP5~+xeSzW|5kPUW@ykJ#NCYsUtkMn1*;%*$Fd-2^s%=^%xYuvoY39 z@9-8#j+LQq}JP&PXcE2}cL)fG0JOry<5u~q5~?(|dlC_cHK8_aQ$U888PnY9n&f`1c`P zuhC*Dt>AcJTKI6wr-)?oE8u}>SM>k~gId(6xSGu&#O!lnu+MkO-gZ@nx z`y;P}ZV@Kk>+F4-!|E~rf$$UdS**MOdRrb9&%;vuIrMrWk>lvndwKf8C5s_5NN|an=$FJ7?YTp$|HG=X z`XJ=oXm3)_Cy~J>{=OSic4VqvUP(t+s108geU8;!=c3=@cJ7_}J#5~0rI)pH@E)zo z!`hz6hVwS2@76wISNR$c>(+f}!?xDUa{c$h$#_u6O=9KvXw?#Xl-u45Vbw%2a2RrHJ=nR};>5j5(!3w%DHF2t)qc1Gvt8WKcDEHPReDH?OOwMR z_j_*k=P@fs!ge=T4r$6wY22;;hT_X!82$eF6nY^A^>cPXc{Bf#1}-`j1qtC4h?w+KJwuP$IeJLX0w2u8?o03v7qa5_!i`?m5MShq22u=Oyw8D#Y`AZ5A!rtjYdUOwHxPTu`E9*vsOCB7R^ zE*G2Eg57oe7E6BVQV8{WAc5|#@>p)L+5UY)Ab4+y|dn7#dpwd zmyO)X+0vcobE3FKwx?*3T*pO1DSq;w=91RG-K7)tzt3@FCVsQ>>dX5sq54#+=Xm27 z*u4<=ctin3BUIPN{S;G=F*d7_DX@1%(@ z9G%U@9LOqaHVfMRQW^YjV`-xOOV4V(cw@U*;)=$Jbe|!{i0Pe|YpxYK&tpE{s8SME zEbF0C9EP-N*L)V+5wnAsRz|V#-&(P)k>9>#n#Jj^ z?VxFbP<7_#3mh*~18TXP?{W>CZ*R?EzSzw&4%FXhuonSroJ%b{ZQp2+>MJ|Rn5L_$ ze1R}y?8Fb_+pSj(yjoj$zhKzjMfZJ#&q+?bS-^vt%=O_dJUc&35fSz@wFB`H%eX3wHmx=D*l3Z*=V?tXAmd#*+q zKWLD#MH;>0vH4VQ`GJ#ZKWCp-hdsNfXg_>;_}zHth}1ncg#+}!|koomIg7-C#uB79a#!Ns_-Ap|iyPr0Gp_)u0X zP^xwPRdiE+yW_+TWSmR4@1?i2-wWc<^?cBX#XEjqQ&9x4po8N^j4LcL+jyZRZsig7 z|1z*_V%UT12{F`xO^MeVss3E%Af2`2`d(&x^OJ19(aqF7vx(>efea#mkTc(Yx(gWw z{(7&LdH#U`-Rh6Uc5ij7uE$_##f{WMZUpE8OZs~His<((ePi|NmBb@dm-)@Gm{Lc4 zb3VWFRtb16Oi%{Do>6Z5QIpyt$GHBctEhl}VChuxc2n9mtrm$DovWA;IIDxois1i# zrQ>@wtEa3LXGi^A>E+YM*yIE4bJVF{r(40xQ*{)hv>B|w@6g}jKhfBv;$a1D-gK;?NHCUNV?H*!g0kr~kI2w ziw$V_5~B)~2eTv9*Eh3=KbEFfHX4&yy(xMb9-a=e9^?oGJm3Zl5+Gw@>V{^H4v_mP zo>FW`+EeA}iUf@4t0YJ`TSjd&K?llP&siEU>%V4d%7}x5g8)4f(6h~W8pp~zI`RPS z>;ru>CHK8O64CGO0Ra~P6LytpXrpHI6t#$l;l(wa7u5TOUg68A>N=DDcPmMPMik+f zFJ9=!Kg?Vxq26ca3gMPKDz_`IKG@3Uo3d{oL}u{N4ur;38bAvl41BeO6@Iibk_fC6 zt}h_b(O_tGdCd#@OdS7VWM}U&93BADGzCUmHZ$$9=!+p8EU5Q307;~zm6MZ8LHaM$ zbroPp*YXPx6Yz912cP|*0UZgCwTs}@rnD_5-E#u444}X@3ft%L@eOKxB+JXo5t)cI zOduJP3r_)eMrelm3P{hBdMibnhtRbofjfR)|pZ40UH#IsQe;oe!dj5yT*PO(O{*NQ3otkU&cfRHr(yp6UH!Sx*TW7rU zs=$CQkh$R}E1-C;p!qhU1?chsNToBTROIA$VJ39f8}U`mxq)mQCA+R9!}%+jz1a^+ z4+Haoruqo%3jk71J?n@$fp0$uuEX}Mn5r!0rla}4w>))72v^Bw+#+%5iq64 zjKBOh>HQxcf(U6vlz}8ri@CzZrD_IVe|d(*8D27sz{Zq5Ou?!EtF1au5QNe)Fyz5p z$Hak;`kFwld<1Bd>xbQ~SM+RAF)?XirgdHZ$oL-w71#+e=G;d8{CVOTE6*3HG0KpP zVZ1q#w=B2^2m*G%U){-{Q9pmN8Mvu&HL&TdZR(S}zK5B@VY}!b(q$e}`mcpPVsH_) zAcgW(yZ}Tve*PB{Py-!BR4H+X=H$Qu5neDNNQ2SuXpOcI zK)N~5^v(dthdlexZVaQBd<6};sg0lE2j7r@7(j31`LW1f6>i*UK#8z02%z@^k&mU{ zUtdNLhLS!x%hq|CG3n5v*h?KqJu!Wn)~3eD(>i_o&XY%y`!sxT<4nQG`wk7GG|^|e zrD;8fZ5*$^QRGxj>yL%*&VK|5!$@&XfMXX%iT($ag;nI08!$~1s4-^d57u;9NcM|5 zV&x_m0ql(ja9$8b%pjtDZL$G6wq!vvfL%AeehZ!y2K178up)4u$FS&(t_=tPk+UTX z7RJ5>lRQaDNmYH!n)>Cq1lQ%B)FF>XP~M-#074ZOt$ZfV7^?;M0<8iNlxik)=Ah*~ zf`gQnnfaG<8ai$7_GVnr$RzUzLqK65Vv352FhY(ARHOf)ZE2^GJ(XWTxbKo`169*j zfyvuk+UCxyssi`eIYR$NI5NcL`~2CA#=pHsz6>lf5%tW@yd{b0w&Hi*uc@UOO>J$Z zj|C`Z;Unk3AQgu&zxR8#4pIXmnp>m%@uNo~$np~X!GLWGTc91#&w=DT+o5>*k`K|`z|q2c^FGLMFW zqDe>dN)yn>$C)^?z<|2n159?l8g7qGaHz#5KctCaKTY)1RZumgBVzgfOI^2OPOM+l zH>;bAY_(7l#T}@yD&NHO=hWC29s77)(J`X( zU+gp~50jm+=U`@0B>Zhjq2oHwXkkTBad_-a64kHfi9#6 zXa#>uxo17I0w{)Z;(7ZtB{OfvisuId> z@t?PahhOFYJIEShTBl(CLHbQ;^sK|^tr@|;hB}teF0P&+5P*yk0osq9{{`L`!obOs z)tG_`0)n9=@OAV+L3g~p@&@U90W3e&)SzxhxDH_^kLzrQ1x)S^W0HFdecjlIbRh*o z6ec8h9PMu+Y6{FU#j&jV;o5}|BM43CuxmZQ3Q$>PU$Zu^?4XH8z#Ie3IsrX~_?X8t zxJ{B_`xHa`(H^8ELBr3XWj$7Yl?d7=fU-s|ph#W-G)o;E#}*)sOg?l^++O{GZrfP} z$e22^NiA>1Wj=~Ix~0UKClc?2;Yi5hao&_MHoD<2)D5e44~}HQ2_GN7LTCb1okOdc zMBl$seVtozWT4KGu`7mFZR8;c{1I|394fIVLtd7^Q2I%gLbMaPd&`3?_5)=FFlQH` z2Xhu$E-j%qvg3_-B;2xZiDdWuv$8G&Sp~xN5%|WaD_=cDHhHs4Iuag`!5^lfBAyPq zg|EWsV7OUPQW4agBIhUj|A_hyxE$N}{imgRN=v0^CtA`lnp7IvTT@emdKKD|rlOQ4 zrJa;$htLv*&_WrdLW)SrNY?+j;`{sie7>LeeSM$je(w9auW_Eoah%5qHM{5B>$~Lr zfBqZ@qJqiX?-yvo>ej`*=mbpr1wE6UKvS%0iiABdaj0wtqY|nvM1~6g->|!{@GrmA z!y8L+r$2{|{91_sXA{n-=tE8oUdthGUbBAv3Gg`$DBjStn$jt}flkKY$gGadEREqg z*|Q5)$qMU~{^Cad(m&0PTA>qVL4D%4sUu0V6>kQn?u4^yWt=QK@%YBNsC6R}R~Q-+(x3=Y+^` z(%Vm5c`!78uk`n8ntJ{C>1er8!IyP&e5Dt?STltO@&|+`yfSat2>2PyPJQ{mLCaaf z*y`Hl6hfK?x_?QcG{XdtI89Wa^b=}^|(Wq@a@JWDk; zu{&FJ&o{3=S6%b#?pt>yc@~))Pb9jQsyX`WKfY|fc`0mMdq?`g!I7>!Q<8~l8)?Mm za#5s>c_&(HotDul;p^|ZcO79m^~z&r*01FNpf<^xx^8JC>Sw=)pWhIpZ$2>c^wtmF zsndIYP0X8nUy!}*KiY$YWYs&qrR%@hxC9w#-b~b0Y21+TxVVSQn7?kW^!WvUmSGc> z%@QO9nqg2qEkCF){m?=%IWc=E)H4e>A>~`@=XXww%>uk#M;H7KOAOuqb7sWsfOh_d zOaZpr3D-kDdZC27IK|y`J6nQ>eudIfR&b#9?VYa7=;x(1;*ShM4E!+GXATty-|UtC z^l(#E;l=g6buTrZ?TV9-R?ivF)W3J|qSZO+PfuA_hVn|9H*LFl_kQ;iOOd+CVU?DzcJF$4$%#3cx9P>WtE2Yi7cK>ArdHB|hZug)`}m zwGp{=X6NTz?c|9MO+ECC|S8FZYqhYj?cE9gx0Fr%R*BpCLpJA4)jq}s}62ee}*;X|CrFN`xNK9fG z@cQBQtjc$;1{DpNSNQ2B7&C`{$+wpLe!LArCG&A!*QVzeJjms`6SIV&@6GJJJwa7t z$iCK+n}zhJxW{Yh6&QQ&1{`6i6>*E=VjR?+V(xvO$&Iamw`sS&?V|0Y)BL8NB-Lrv z3#Tl+bx*7|ezw>H4xK6Za3=vAnc>C=*v z@rtctw;u$|ad-Q*oyt%G* zl;?*sl(U&uM9my~x;R7?u)g^&jp^c-ANKN!j%Tc&Jed%=DUqa<7ii&mQd^MmV(K>^ zuNeL3@v3M3PSoP1CzE7%kBZqIxs@p>`*`L|W){`=Cy%Mu&JJleduG8xHu+EWRGl~W&7bm2Q`V)+GGxMk&Si40 zy8t}SeEfh-HjSD7(AabO)V1p#3|%Yk@&5ZF!w7yM5wQEHrbpYW_kM;VCDh&v2OK2_ zLr%X-UtTgyKMXFHkz6Z#JiQm|G*h*SPhxxg^$5ibjW7)XD8oe9`VFR|DX(Qp?t(@?|hiJ z5a)OJPK)LSrXan)J5hJH7xpyPkjq~+?Tg2q@_Dy*HG>)5-SOe^sVJ?-KO31I`!PqI)pd9{>7io2 ztK+IPbkbavvc;P>8-09V+3E7t8T-ah z)LV_8V?EW(^G-cWH{EviVtmcx-j=uf=L{tqhSRFP%xAGj#kNX@AKgpS)4dy%@k?c$ zympQ_8i9T05meb(miY|}CxZ}8u9SGkvW8NM*ow zQ?>_633qOodmVGR_~2}mO*^j(_pftb(zh4ix5^<~rNGs|l~XKEERFQRVzO2fzh>p% z5XAwL%pmXL1#>V&6-`=>key`6fwi6XY@6@aMYf~zuUA+7=O+H50M01{y3SmolbrT`% zm#gNJB>ge&ClA3nEc9#D_?N&_>H_a%v-;DXa&3V?Z-0fi5rt^cnVwP)=2lCL`yJL1 zm69?zv&mNv?HiA)*N9xC9=fo(*zko=<>ZHpMS)$JZ3Iw&@P3Pxl@()xY7%+1$9aX` zQM#;mimQiK6A{+N;Es|J2rgu<90_XyN)aEPuePdKNEm957U*XzOgxm*GZX z-*$pk3*J0^G8C3CPg|ZBG%4YNri_;*DiqdnE;AiVJ?Q#hMT7NDDY@@=+0RqiAt|=m zp3f+9Q%Z=fCO^QjL)$VVSoYmd8m%gB~=`B;9@3cW?a_{Yjnh&OO*Tkvbs~dQ^#wgPTfZ8b>|sZ2AV-f z7U(6Y_I?`3n>#0YMRb_w<74j+7AYMtPD-r=NNx`l7fG2Xa2*PoYxCOZ+K^^SO-T3Y zYHYFqqO7z>rugvgv#5qUFgmF>PQqESp5KW$inl!zE5-q{}ZwIAWGYtOHFt7`P)NJb)jg zMkoz9CZpFm0o6dJDAf9Acr7EQO&G&9;^N}7FVH!F9~B3Mk;{$d_;;Z_#4vCS!X2Pe zA{{1R(7mJP__sECyb?==Hs}_|a?xK~DC{+-+_fpOy@MAG3b!7n{wlaeo&gpPsIxBx z%7UVt3@CUZa-7sI{Du7A+~-Z=-`K-@;}u(%fJ0v%nolb4y4n(6`250;jOJ&E!cDtA zJpRr6G`#)8=PP-q z45Az%;1{r!i`X^?@aEs5hUoE!V3{Hm2vk<0y|npZv^SzYCQ#KE_|ZvO{DRnhPiSaU zPmYrQw~wPW=*T?)*kYt{Pex_sR@i!x5{F&&yN}I0zhbsh&Z*)LdSe(`t8Ln3vwG9s zvz3)tX(;zt{tML1rp=poqRt=H4!=+rR1Li}>+Uvi3FwSe96f|(Wubr0m0c_cp{I(xRTAA;yI6gUh$dStzvoqY%`c1cY` zAQH1@BrhJ!-rO*3xew5#XyaKv8c+*ukRik z2_O0SN%I7{75QR-KBIEr$l_ruSYn;?fvnBT=g*pd%=fZ=HTzI4qW#G`cLhI0xJ@mK zN07jC5jM-)m;H+EHxmDEbh!|(Y9^mmCPl-&*x!2i&@Xhj`5icOESIYj^)OK|BglAG zyq)nxa`GeKMsJA|2FJp^Almp`yytgPIN^%c~UrxNW!o)=2!%qA%d zC-QRMwnx*k2>K6I=lA4pGP1GRfO%?SVxlqL!ee^~v;%btY)&y6*7O@~XtB1jfnUKM zphXueE1l8cB)&EARHKxI^_x-?W}C;DaK1ZtX2aNSC$T*QoiSRN%O&wW84e)1?R5~= zE@xqRc=6)J_Co-Q!_hBknKRmk=s>}_Dm1^aux9zHjeRI{TW?N)zW6SfiauhIYtlTt z)kWlHfA9H?IOB0Lhi(lX%7DLZvkwf8RM7iCN> z(J8G=%?3%0UKL951O1yMth1oc9w^mkhe)0?)OyUC6m~EQg+^iTBMueHP0PXR;#)4aS6@@>7v?8`}1W{F+X(~1TMq`df z(Cxi9J35%y**AQ4Mr|YQs|(WGe$LVXqhl8UVm=9%7}>^IZ}1E(o>#v<^S#^Kd;8U= zS>Wa4pF(#SUkvn}B-3qeA^|@YI&L1LVT+%%{2WYsZimU%-D_+6$H$JDdrKMSTK$%A zL+8ua-|7NUyCCzmq(KufJRdB7pv!(W`sa6uxv##C&e(ygq^mV3F>M{6XN^)ApWxz7 zC7Uc%gou%X0?FE=bOO$Nb5Aa@r2J8gY^$I^{Dap*);2wG(AY(ekj zE7*6G8Dy-D?@`-{dQEU)#6A#Cox~asH+?U2Ne)oXNKQ3YPWPzCQgjoV6%BbkKmpj* znVi6_mt65;ssqE?QSMas^T^j3b-C`nf9Mt_Sw%!*WM+;Y%Jsc!D<>;Xm-}q}rF!3P zio^M=%XV*1TywDB_0U&Jy6N>}3KA2;&~ebFI$I(Ha zFmv%U&!0bE4LJMB<^NU_|G}|A<5)~ocbtvnID7worsd6E9Pa_MV_HtvgR9KL{&aVC zGC=Qt1BA!Nu%4SQO0V;yjr?!yIqu*A2S-;@riN-p4?kyMWb{C}1k>{66SB;pj#jsq z(D(m$<#OU@+Jz~-{Y+aVGicqjv~xxy52h8W?qmGCQ?uH%cE3(?W1p(kp63nTsX@;o zG1KdOhvZ0%guvp^RO@za?OG`F1E&XHfuVRO4f!@`Q;>PsAgQR@-QyZ-l|D|dW0mcV9c>PekA;Ppg=j&H(- zON%gEpd`m}nB4$~zi(uMbbJ3hRCsVLtOoOz@Sy4a8#Zjn(>TPtb?eq|f`3pltXF23 zH8wL-;Qj5y%g?pnruM-WB@V75uDFrV*J=9T6q8S%=4-lob>zw}M3Mb%M~>|F_I?HK zGj!||oQNtSBp;4Sa%7#OWCWVG?_=rPQ>-Q7n_n)rFki5iMSgd*R@Ea_Gp*#c=V?T! znkzV2oyN*9`{cjXqGx0@GB@Wyh3mzjOsShkq73+K_4cOvP56 zQVW@JdOv)1z6~Br!cO=5VKGv1djC24{=(l8fv;k2?+j4ubFXhN`bx2@jxvi4NsJu~ zqjK#tKUMF)KJu!))EYjMx%9!DM85~v`Z-suh(#5}Ucq==#*ik7OXrGxQG&?V-Y*;# zr%y8o)6U8l>R%02jyP6xEjulGl5(FiTi7ni+^@`)_CTJGb#`v91EoE2C@%C7Od!{Y zZW*LW?2h4NetEXO-zrMM!TY=q@Avbs^fDq?;!nEyPHZ#!Wpi{ehsvd(lS5<7nw;%H z8?o9oUH`qW+oR?lY5i%xzDt}>Q@>!WraBHk z?$yiCIo7d7lzBkmmes`G{PU8$tkyZA%!(rGSsv<)tCbpD^W5#KeTyTjD(G?>CjRL` z&cuxezt4GAiNlJ{LbOg&>ueEYZBT*pu71_yC-@jeCagEdQ117u8e9Cb-;u-NlfIl* zHu#`!$g5RhTbm12i-Rt!b#``&%E_5d^ASfDoo{80Y?@~`l^U2*nAo>em^Jpe%OtP; zzA}na<*UzkjA2Dk0V5BGM5=Ur7G*EX>;P@-@yGv0FRWve#GP{t`bIL8)BufR1D@Uq zW|Y^;r!A^kv{-&V($d!tOwcZ&HP*{$X5{2OwDh8=$8?$N_guXaJaVTtQBPbkG~fEM>PliyV-bd}>FGw#Xd%s? zOH)YpvR5=s5{;iZZycMmXt2X%n53aWlhy<7cH1Z+FQv;rRanSmO-!7L#n0M{GP|?K zzZffB{mk4ju-%UGVZ=$na9X+3Em})rN_L7qUdBr+UBQ92v1e&)tg|t|o2Or!1Tv0! zUG}ihmYHAvZcCXw9kr0*%-Mp$u;bfLx2Zm^;0l+%(I#@*f8$-lQiHud`K0xFVuh@` zMT}qewM#rx$8--rcEgh@?%J$PaZ;3tC=SYg$@TL5ftx?A?-aUtjL^KNZZt5fI=E!P zleJ0K@Z|c3bcy|{aaCu&C0}EUzaqlN>&j(THP2lx@519>S5!(l#E{6o@$RD=GH25V zuae(O?56J9rN4QPPKRi1H}l-emKEx)W( zcUB@w+)!TqzS)Pzs(-tV4Jup3_@&RRRi~MHe;}W=_O6kRi-2^Pm>*q z^@$?pG#{LHeL6ZAW@vfZ`2+hm-3?4#i6VFWQeEguZ@K*Y*)lQ}RooL=Db?5QYVD_G zGe>E+1(|biwWa=Hb(VS1*ke_anI5oh(-2!ItLl61_)RoxzlSXyd#jda;~rPscZy{n zo!z#3E}nbx<7edNsaxqz?(G-l7UPLLRTQ=?Xzj4=atrDUs*j(y*75!|g^WKXs~x~d|yy&IjbIqu)cBS_Cg%TXk-|GrQ9 zw`DaP-c=2M=Sdv(&x#!-Y7DvtE0a2cB^z13*+@A|7XMJn-A#?!LKDckr9vF<+vKK4 z*}3ggTzXmk(2X`~3nkBrTIhT=Ccv?ICAo<8r`b=->!q;!+TD)P`7U46 z(9PM-6fal3kMBZ|(0bX=wv#uP?=8_SE@LXuovk{vI&!)E-Pw~I@NSJN?eYmzTiRWOm)@sEEtdOs`yyMa)I96EWO5a4b(?CoP+h4&^_&yzmwK#t z64!1u?$2Vw)W+sqfAco`sBf9B zmYSKL`&7;B>u@?@n?05uuTL?yq_*;^y=Rxd+pE<-cXsgm(lVY&@Wrg)tJ8b;?CE$2 z<@fk9&jD3-4G~TrjuVC4eQ(Y&2%cKJz*;4qwF%qVk#}pCvB(Qi^NVY3WSI^g=wNTq zc>K7nKv-CKo3m7>7<(3r;rX|R7e7BOS?Vh;y>;_1zs*nC@&y-Z@7&$_q#}qnoXOCj z%tzr3(^qAwpR3!MmabeNy|VoqrFDy*(FV@soz&6Yp5wly29elj6TV-ly3%WF_$44P zFyh672PW71bm9Yk{|vK}&1Ry=8scEG5g`-XoEpxwdHpAwA#4Zi>mJ$ua@%-!hvdag zddH-O&DIa8TG{i=T-Z!`!qIG6=^)D|9n)X3-8IU9P0}^3GloG^YT!a1<$I6=}fD8j;Oa><9c)94JObE$~CQ8 zns!E2!2$OMwZMBkzpXUMOnEl;N9TOU>N?*4XdbOlxvQoRuBC1(=tWbNW{$_D(7}gPQG)k+dqeQ7w zKCMw$d{X||3zfcZ%P#fZbMsFhv?p)$PB2apo&w80849FLn6$6aXFBi%sNy$@W&+x2)!*AtjuOXk3@a%bbNqme+MW zQF714AR%eBeJ`4s%eYenR7!%D%x14K@=8=_UvS_tqYJR0?sxDmPR~e-9-`zmS}lzC zYIA3atXsEEvaBdGCL?17a6qJa3p5m0#hi6l=kYgh zjzY>KA|gU$WbBz%I(@+WDD4p77H4)qg_JZr^sB4F;gWPu;WmGb;6pIn4(5KYEOB0b zDB$P9e#x?v>FMd^9}w`(@k9c?D|+}gU}1J#eG6BSk24gOxxG>fXC`mj|U6HT%uwyE4&Tsc4907RS#uZERC4^;l~&4 zR~Ti>*0rXdIML$YhNPiWsaHJ~+5ambgikK{u0-|}3%AtFfh?Z<*jPGkZSBUCv|gYL zbpUPoSdY?Pc_=&MOYC8^w{M>pU|GIg7f?&mf2>H2D*4D1Fp-)nUYI(%-fpVqEA#9s z?zQx%U#nEjKcT{f69NAA@`r9joV(XUo{xi%FLdY|Tsor~8kAmyPp^j`z;XbxT@WHF zK%Yu!hleStTlRg9Y_8+x&6|sn07;RU2}k`*^&c)!=s#<)Lb6OADm2O!swnI*Wl2^9 z_mv5mC}LqsZWJ2E7yz{6xK`NKLRhQfLi>@+9CC&zPLZUGTefTge9LWh&N%w1-{r_w z&wIS+ma-z?;K7@)5j`;)`D4A=4?1B%0|E1IOo*j0z_5hQ^pL|2 z*vl?DhD@h^#$>C5vyYuDF9Crm9IIC!>h+KCU%3uN2BKmM7>u->oMT%LFBV}ionp zeV>~+trjA8&a80XuVFkce5yL31(FYXXALCi`Lo|xI@UHIq^=e|wcHo#j+I|2{<79|SKMjq&> zU~b4`^oOi`9Z%;dgQI*V=|A4>JzpKfE3I)u?bZ#S^e=iD0;|$Q9wRy#lvuMy2W-O* z3uRSRDrNfKjT>5CJ$Ye62LTC6VHHSO{sG{Ufy{OXUKg4g=q_XB6M?>kmop6pR*5Yw zEdmJmJ@P6bv`g+32L6q_uvsFwiJts$svIZq1s)H{( zlP1tYI1PJrgv!9fhYV53R3C=>A@v`CU8njt(nlVT2r6(9^>7%)wiC zxIp6*iWS=7%L8$+%xAmXslxiu47+)Ihx8tVT=u_Tm#`@itBj9%z{bV^0^LMwq`3z( zJB*CB15la2&*k%?Sp_qeLczk&CV$nq2e|*2A#B3RK=cb3w!^I`2EdZ2lF|wa0bH6t zb*({+GvnZGPWTM-|7NcAp;SYLY>{i$ts}0)%7+&>qCX538!fpz%03*?tsHalD4iJ^X*kxd{G>e2`t#!Uw%s5njK(MyHzgr4tFxT?Pbl&0T>6KtA+I z$M1QNr$UEra$as-oDzp!%gX{K6KJMcIi<3{=#fy&9r>;Fnz~pa&2zh!`wgkG?D3A) zikFU$=lJP;Yn9Z`yh!Q3hTg3#W!%!X)yZ%Q76PGmbKCDvvl*5cumlv`c)+d%r_F7Y z&7=Siyt!M^zWmR(seU?~I0Xd-gZg5h!!;BY6{*7`Za5V~e|;Ik>PY~m-GNnw)l3!& zb~xe`92y#01p8q2%s=Slt_D^wP5m}Fy<@=fumKf=h~xt=NlQmZ492D>u|wX#20^H4 z;yVIBz421ZnKP@Q_Yaur6GaICCmQ2u0R!$z=07+pi<+q}%tsDE!4o)O)E{l4w732K zvH=e9OlV-Q1=LO+{e)QgHTZ|&=qwo-&-_jzr&Gi;t@3c zlw9dUfh_YDx_>xB8L%~RjL*#cj=ifoIPBB zvrak^!rW$^qRDd@D`(rAAK#tA5c#gCGsat#&nLNSchx*jZv08&vZj$@`D`faFfCyH z6-nGQLnxhQqJp7wpDH`~Kw4G9kSfJuKXt*vsko1)T^5_@)5i89Z90>=3Q1Y2{N1Yz z%d(1s)(-R_;t3dQry=J&9C#|6RQ{xkC$I~5!JDiP82a_E*h!+XE3`j;%!4rE$_x`N z1$8M=o$hys&Y^T^aDHZ}fK0j)4@^4leDP-bTBS3bH8>WpcSI<>;5(5^U2ri^{#-C> z`vIU^RyFo$Vj4@@Fd?L&!*Ubdw25a!%V)0E#dk8wYHE(Xhrd4cUOKynn>eBU?|s;d zrJ9V6X0+=a8Z}W*0xz*ok8NGt+M{SFQK*S4K{Z+h#Qp`raDA$6XppJ><&wYch!75d z&WJ6zy~M_wCG<9uyqYz1!5fhEUh2{IJZ+g?r%gLDY(C_EBbU=+?vdEGAg5_N>u@L{ zNN^&eqQVc$on@5QZ{E27{`vjR{rio)5|Q60RszOf4hB{3O;7%ra>=^?o^OsoZOINp zLv0)e6bd;`{QUe1>dqPG#9+Zs+%tdjH6$GSLqF``ScSI=kXis7NkTJvRjn^3#_|E zjk5;foD+{9k9q1R_vkbxw2tR;OfNV3>a3#_hZx6bOVRaTZ25yVw^6>T#1#G!S}*6| zU6M{JpGdq6VzBjN7`h%N9y=D@@1uiQMjrj>Kv&&byn5xzmP*?iHk>v0bCejd8C>_> zFCrnqfHgE|i#Bj+&qmLKT4rKn>w*%X)_-(sqyMN7>b_9wE=r_r}Wh2g$~MgQ_f9!UPG(j}eaYVvCu;;?5Gn`;qfQw2w#)(^Yg(zy=tAjv~R=#4=vGh=-cI11nn}2=~}(dVE!J%XY!QyV^@)doIpVt>%HVFDE)@j~V5=#_bLVPQek;ZKez zDy&|1=5Sey#>FMFMXd~s2#giFukCWlq}(;Cee}U{mOnppOQ;nH$^!Q9zX26k*2jj6 z7iB@8cwqX}+R55s%Pr8~ux~>s^YF87E1kKVHv75WTzLQ22 z9wdmzbn?KMd=Fj_Aw$C6^kbO~Q+fE08X6k5-qyVq@-YQDM$|#KWj`x}IHX5;`KRXgs_8UlJ%k6pF4`xxx7sPW9ZHUEs0CCMOfHOT5hSF3=)W8*Uz_+6^## zM}9mXMV85=udh$h1Tl@Q=#2lFUQ9CFn~O<~V%dWKGO}AAUGU(o|5H{#RSYJL(HeR>(_tG6EjRzYX4!0wQIF?j)sSYRrRT|;4(bI zJ()!Z{Aa2AcT&xcclcn>@8p~*&t6?xR?l^Ri(V4-n@z^09-a7uBsx|O7^^Ns@Iyt3 z%=!s3Fgk%7WDU))+CJcEk&Vhw6gLHmQWy85l0h$HIL@_B!7#7m*CREo{uuO&SPciV z@4L30K`zC*Y`YYxYZEIugq*Tlqantb=10fR$5P}5R_rssM_bw{+kPZ@?SAHOozqS~ z>;07YSY_48#+S8XcrK+|gJFuNX?j^!p1jMKSj$jOP1h*q;$gW=vTav{&TbpDu4d>m z6r_9*u`7pS;0c(fBQ)w4xQ`aTiw=`DUOE#s)PI-fc3%;gqIqq7pkrB8sd?whedfM8 zzzcZ-zn=UZvE6s>w1d_^ z7es&vv3e~sj6A#3H}e)12WT)4Xg1XtGACyjP>fZ0{rEY>k1ml82YIp*{qA;mcR=@Y zDMi~_B;WMZxu9jZfV8vWG)0G9x_ynm^jK*!>!ag*CHKJ>Jm=<<2|Af{iS|(f!|(Cm zdr$p~F1lH&rL-opfp#Z)XvH*=w7|Z;4^4afL>1%>f8v#sKi1CJK_>>rcr2M?oQJ8I z-7ySwHePzme$rgziZ7%!o;&xy%h4fNajLXr(4bgz63EIg5$HEy;x$ps)P+<1Yvz|2 z&41K}BKh#ZTVO(g(W$EEf_O{R5ZoABOtHHrey4q@U(FNpztOZI5@;)lgv75T~h&lmgoGB$`LQ6YqUGAJaN0O;IM2@{t{hP zagofnd;!K#x+uvtdj;aBT6w=%dCNHVIdb!Euay>Y@H&uBNOQ50KjmQ3tgUG*6m6vf znYL8SICzUnUu>5Qv**^PS@WD``y~G({(rx}=L7<}VT&ksZsC!lIf?sbzx1CLvqa^3 zxuz-@Hvb#Tvzy3MGlPjJ>f?5Lo!(t6-}3Cp!x$mM@s*ONlh=lASfjJ>O`go5r?S7j zPj~Yq0o85F-p}BOz~i$>_Tq))+SX80`j0dV%2jGybfsm-{&7W(;L)VS@Wxk z<>UyIODTfGPIBrDXuRd(^eFX!`cM9ns88W+!<3KMG?b zp73X%Rt>jl!rRA@Rizv}SK@!~ZP~THkw#uu%Gl&yM^BMYnB_mhMgoM5^cMO)77QBI z&)GW*>;B<=)kemE9mm=K$0iObRQabk;T?AdO;D%nDj zk6K9ML%Fdf>;6KZ>5;7Je|P_~1IL=&6P4mEltT^tpUCT5KOQM9CQg?sb>omZU)q1E z;xra>J)@v8STVMoG9CCX z|GvR~9N&oG_zWW>gOeW|-qk2}u)f=##9+cLFHBvLAE+$ECn2hr@u*LAiIeD$9W!Q@ zo_NBaFFz45#=Wb;J@v}<*Z*)&a^gauab{a45-9>u0 zID)oMtLu0gw5PtLu1hwLsiWl5B{Il2^zYP(kCRO5`b74>#F-?F>^!Y;y)k1`0)M9S zw5*P2b|N+L=$5E0+LS#mnH;k@227u(zbyE)&5*{c^1I9IwsWYq;e$K1qW;}Ib zl%?X!gFrazbV`AK$0T%#Bt7Y_SvExGS%x-lgSCc@L;{c%aIPH*X)`4TxP_ zJ6yE*>}m1kXF{!4oBi(vetBmT8Xo=hb;vB+-LHO$%K~#iyuks1 z(otaC9EULTMZ$ z-1n@J8HuJoB6bRegzZS?YYu(=1$ovOeh3In*_S71QE~G0=|m;(9=jh3ImV&TLZe4$Lb=O_ID;VRh*Qe^mp=)AXXEqC{X?Qd9(V$C8s9TSp|09tLh9ER%dTce{c zIyy@rEr9L2@D*8u`U*LhRzHm)zs*P>Vu13GJX=RmiC73Ia6N5l`B`GsD2p`nfnjld~La2g;xn6#I3azhA|1S zujT?q1sR++;BKIXzr?&F;gcZm-6KHKH&QmCq^FhR;qFct0QFy=9}Z40XJx&G)_+2a ze_uH8((b(WpaF;bKJ+Xrudb2a@DI76X}T2Z4#g=z`Y5cmt%0L2Uc5NH#a{?qYAWW$ zboFX%8e{}u#Dv$L^>MW`Zg;xo!-o%PXU;fQe3El&iUJ8RVP6E|JNUzKuyB)azX285 znhZ#RhJw{jcI3(L%|Hd3BEBCe@CbQv{l}-TU%ODF69;btlpoMx=@aGv0&I)3_ft|* z$Zj?Z>t}ZWU|~HQBjTfSxTCM7lFldojF_o8} z-+wL07sM3zyPr53IzRv{-sy4~C9-_{2Dxk>?DGM_(KXp*+FjWvc-il145oO+lesIt zLu_(#azJ{tAkw^eTS-aj;}4TBV8`lU;xWy70xXZ)oBKI{IgW0chlM+Ol3!r#&I0iV z^cO;9N5{*AQm$!TtPI+6qGY!aZ2gIw4SHU#@BI{`xNUK&^t6&U8?yGQSHoAUJ7Zs{ z;S8zYMdAbxi@s@YE{HzHBQF~0TKo(W^6O;l=;-K}S$qM! z61z($9LDD^-X5Enh=<7XCEn8a!HiHoG!D6qIYn~!u`yR=6%{w6?u3p2wDM=-`Ww6@ z57fV$);P48A+m5sz zEDV1q1wL$DZymIyH%CT(6?~+z8>#?pUHHWg4>>+L$*88LwsGI^lknjeFN81)j)K4Y zVh5bO4;p_;lxg{PJbIN9&CJ)WXkvoM?=}#pZM!`^$5BYp1td1_V=mf0nu9CBW%$TW zy7=uQd;ZMessT1OwkOSDN(9M`i;pkHl(2(O26*m+Lx)1j0exVrUln!$ZF2dEHx@e1 zfMug;aZW`|1&`ExeySJgTTAGKw7fi4TiYRR&)|T7b}aH3tUq_`5=4DWiUrV-hF6sl z6TLsb=_PlTRP@@nQtitq>pPaeOB@VK^fNIxHzy?$1;U&5W+KV&!UIyp6axX|{=@Di z5*%YJbKGe@Q&Jj4$gmT=6cizz$1VGkMD(Twmi|h|dJeF>q6gG_u|-Lyx2rUl($7Rc zNOi5fo{Yw=q$G-vuzcx{^&9}OEJ12GP5Mf{M-s@JaEFjb-hG8+L5aR^x?O(>j!sPU zW5D;df zY1{5(zYV;$9=lXWnUT}8_{Q>wZwDHCh^R)wXpdl&&n&eLVgg~>p9iD09{ghn5K^)M zHOM`9aQiySruR*EB$n+sH#&Yh@n7rRQw<7HMd;4!mu1(uQ>t2-UBZy6j{4r!t z;yQc2O+P7#>DoaVbCPC?i9H9*zNfoC<^@IiE%(d690_iu3|Y*;VAYp3k@<+!!KC~h zt);)tq=b)Gum1ZNn~_Hj7;7d!Vw^oKIFvykMGOj2<9TIjvWrZfV{7xtCqilR`@;Br ze$QxU`Zn3WTBd&&O~o~iCUP-s$WKY#_xAywO7lwWSP{Lpk;utPCm+uU)#J!$NvAG;2B^;!;vSKURFev$2&$Zbspt>N^-hKyKF;O zMI|vLK3sy~FkpMYT1p?j0>hQYCCM{&X%PSZbr7|WC1m8^gN5N;o?j&-vx#A<0zt>$ z+j@iBDyvNA-%62HRa*lVXz8yL8#}QnY}TNEj*Nl_8NlE7b@}}zHqFbr^e;+ois86^ zdK`A#C$8AZYBcs}S+5FI9r+9{abN$^Lg5j@jN40F^4fxO;sc-+i}Q8(AUYL%ihvy+ zUW#=IOnThv?8GRD+OZf?@Q*URk!RG6R*!XvX37sIuZcV~F;yNMS(1?_R$v;LIa$RR zX8cd~EAnp;H83#NacdGaqFx;T-%IE(#6q%6%Z}YgsgzcN(0%DoAPeqFI+H(~vTpL5 zRl@%bxF;R?d)X_zSCjwVJ{~wr5Ce9M1;_zUpDuZVt7ETU)0c5)T7pp4hSM8r9=A~_ z#%nXaG+b|qh=`zW>Ou&XiVTNZU0q#)>Lb#H0>7)NV>mak@e&TMC9zF#upV>?|-pr%W+hKL59!4Ieh^+ z0Ln+vq8sE-^kFmXaWySpSHW?K=ly7#@H*4Hc0_u|2z(EAR3`p{%wYm+!+a@ zgngvK5(qyng2!98GCvsXhCt#roa9{P`H=3M{y5M0E4Od@%L1e+goxm3rCnMdd%AqS z5Bj7FI!ubx>uPCfaTXUBTXG{z;Ns`sbJ)Mm?iS=H*ow104(D$2?M|04niH7+@`b0g z9||b_6amhB({-qkx_MX$S`jPs9axXSf(6rx?~~j9NWoAE3X_5YIm&M2HUpRca|Fkh z22E5q;z4LcWMqtxD0GgD?814!7HXU<2!@U&-hqb|L)7cnukCI-U{Ju$i<*rBHNJ}G zK6(g5I-fsxggU6xXCsk>lp#cz8#+V+9De11A|!}Lh>F&EbS0;OFPymg28$qKXwSw~ z#CI~jduN|A`}5zXUJdq0CtjnFhtt;9771Vy*Z?cg(lbAPtUd6p=GgUPDJj{AR4q_0 z^cuyT>B!&EvSmZZ+>2L9Wp@Ryk_a8p=WBnw| zY`{T?@#Iqvoz>{Q8v2Q_--y@Z8yh#0_!tk|iPtxux00X#7$S4=_3M}8p-9~k4Fy^v z(n^c4gn8;=T*ybeFi^)cl|)5p)@CrH!t^FGKXg@NMC)lmq9(yFgW)F~iv-bn<=G}6 z1toy#Nfv;NBL#+dnMnn^;25Bx>mi3S9;``BOOcwoA5R>Z$1ju80#6yQMhJw-C@RUk~5YT<~l3d;| zbN`7@J`=I%{+DGzykd@@i}(=TEQKldA{Izs!T9wf7c~b#Asp*{jH8Z(;9Hh?}<|SUSgTf8fn|7H>Oj zaZg`S^l9U@zCWHn-Slo&rROeo9?6>GnJ+5scLTNsxYRI9?KI zGK|XZT?2@8X+)p`ld*K{A%K%~A=xZ>@&rFqs@2Za8DPh^4n^v~hepLjMgnYvhHhDr zVU{!#6H{nK?CR-&l(zozTgS4vI(2i4v8XR0bH_P33YxdDio3D-cXP4pEX+x|oj z`9im_kwT<#cOE=w@jn;SCACBA!>(Ps>Yy6JSn)wda{K+$1_kITVH?Q`5?r$O4`UEO zBt${(nDz@k zMi9|#pxCicDYFO%)$f$qg+b$ic^SrgsQK4{pdeiUJs-m!VCs`yxeqA;Z3EB7o|~5$ zqizcwVnrN!6H*b5RjZDph?wla5a-pN+veJILich2( z{eIy#VYmluN7Fl5UKZ5;QO5?8F5BaV1ewweY%iD3Vu$S$$^`5b@VQ# z1p|Ssw_(42E)H@+^|?FZiV)aHr1W4H-7I%xrgX$i37CH$JjJ6BBW7rkEuXLGK=MLR|&b4=h%>r>`Qb zoWokiLb5q)R=8CW!omn&!{MjjybBMnMUs9mqYZ00ELc({{Bs4Xkh&e=!Lex8s#0sdCFy&X8A5Brlo%oEbWtXEgd%6!2U4DimYJ!X z;(F?zb9u?-mdHV|m?PQUl!Djc2vI`5K`b$b#TORL35H#)9yLJb$K=(DR#Noy83+|Y zj$kY{!hlGHQ`+LcU$Amu6s`B{?kVuSM#40U9M75{O6BRy7-w0O4l$-xDdwJ4iPAI* zK6m4QSN!1qr2uaRb#l_d(RG&k2l{sghMHlyZr0V|FCAwAThYpK_T@r$X@Jh5s#08$ zlXGOb@Mw|yx~o$xBDc?TZAO%MhnF4&EP5Hq3VN?7QJ1K-D{mC(J?{f3GP+&$?qgLk z^0oe5hJ9;gbGLC^h&WEJFMG>s4pHP!-J9 zIw>CGjKT=rf9!UdRypPxU;T$MI!cNc;YBN)6moYbn~SeNKtg>4~&UX zEmc;P6f>ac3epSeNUY(uu+VZ9V3g(N;jxw#5wx5+eB_8EzZkuC(_MqGt-hY?XIduT ze^Xgk%Ny3v`$Bo=*2lfS-Uo4~b&LFWEPh}2#K(4%_R(C~S2K+pSI(-QA}@YNn5C6= zOj#;_ZT2sZ#K|U0wiU9Rb9p%!nr}ef_AMC)EA5m*PL}s`n|5Cvve1#PcbmT`DB4U%Pn$A& zUUX^wKF-hOI`C6KfzRLc?fbcw6fsK+TsmS0(??ai>)YBH9=;r2Tcfm;_=lR9FssPL zdf7AeJ&Xts+BSO#5|h z`oZ_hlnUf;ugIzU$vJs{nlL0{Vm$F)_}u;!zR3kI!#v07Al|g&Yo(sg$a`?j&OZ8o zT)lTZ)%_bkZjWqbAB0r0N%lx~Mo3XeW@biYk0P@}970ASvS;>AwnHT&GP24ZnW69X z*8TZDe&638Js$U6=e*AQ{TkQnx}MkbdR`KbBbjMWKBsJ(9gHeY3@mM4qUNNFNV?uV zO*0kEIBaviI;R1BGAVjA@EOdVAIACkk2aFnzEks9&c~K}p%{OmhTr{rQ#~0m?yNy$ z3UAzu3^{tAROKv1A-8Zc&t8gy|N^bv;P%B7$d{MV%-!xsD< z)g)%l+mLr@I*b1A7eD3laJ;of8&)hm>*Syak0RLBDdswvsGCH0e(Gs(OZFr)R$LL| zR#NMpzIx-@4>fRCKk-wOT;7%n#ZZX)2y$^*ln+b7N@Z>8!cTrw4Es3JWPf4JJ5{;u zy87r2_4);~cg(aO$q4YOBo~U-;cH2}K}M#bU|U~wt7?(*q~ZumBw*Q=cf44Y+jzsb zR<6R6TDI3Q)MNEOr9w+;Aj!5aG16Kdq(L+H&W!}7})1VkJOFMT!CtJHEv%QG2g zK084+)PB9=;ppJAm1AYSe2NqvDKDqZp^l}R(4uqDGlysCWHH`mb%@W7?1$m{OKr>E z@?llZs^_*Eqc%$sJxdjhiCELU-H(ZMmEClK zW^E4Ie?wVA`jyUqn$ATPM?A63KAxA2rddj z7VXe|RuPhA>JTi;R6>Sg91?|~fs1nkKz<8mq-icNq?4gAA_);c0xBD#bbafk$DnbL zLg0lo&nII}brd*Fll`Dr^AQwzWV(=3qIYW$6Js$GCY+-xp5?7(^1%Jbzbr6ydjGfI zqF&YTlIB+}$P@hn7aj)^B*6EI1K9El$YHha;sUe`NeQhNyDHIaeL!sQgdWxYBg0Ls zf1!8!eW+MTaUU{*J2L@lw-})a$Ttl%Q9ysm1ipx10Uzu7{`f$)`JanVZwwt_9YHsaa(A5I zH!0PE^h>aXtl|A@c(0*HC`gz{j)O>fXrV6jxdaKPW`H}8By6u}|2YnhAdt18*n2yT zAk&R|Kga-|A|)f^O>x)#cJfLz8#nbTP2w<)Uc=T#m|-KOZVcGP%9pWaD;GLpsIt?#{uN&9RSWzp7;X{b$bXw`FGr* z5kg;*=t4{>Q0pBasI|7<0RfP^;K(}wJRXv6V`XLZ=ut&d5=?VH&KMATONWuO>;od# zy}f*bg8fiW;b3HB1Yg`9zIRtmEez>cpjHII{x@jQVFoKw2}wH0VZFqyg!UbxqOW9q zDj|MohNwc{a{>zJ3c%wJNl%B$f&@q=?RnYR<)s2Qn!C2h0`y7jfXDi@;aD0uYVmPw zlQ9-F_*x0@TzBQ|>(I z1}V~jw&9PXAYlRlakF4KFEFgt)zmH?`a->&FTnB3V^zhS%g^u;86HF`95N|geSKDt zJBMx=G<$QxakI0Qh;ln@Zpi$m06nn6acn2X1uMCLDym()v|2qw3B5m(IMWMF>JlJ1 zp%3Ul>n?K6p-I54JumPX$r!o`etv#S2Ha|=@S>&WZ3KY8h`~*7_`AjP8{B(VJYJ0^ zPR>;A6ktNNinngw%FXBFTNmZW_s6=bu>A2hy6dnl9KAIr#tn$ZM_68sLCnQM(9Ut5 z@LIsV0lQgSat^~8X~#xQPp@+I>L+&{L>vpMuN3awVMf}=!vw$yuIx<6fKr|mmv$zk zp@OBgwFqP?%*zpVb{M(z(XY>(Ys2}sqha|Oyw;$IA{*lOkeYx$`z^)M9wx9RoO8{bl8W=W)}A;$rf6t%BSyca+a3CMHb{2J&W1OAcKY9wRz$J?0m_<>;YT>9_nh zTy}opG;z5zd3mSzdvq1{_z2Oub1Ws3KOTZmkBlK-W_)R~yQgO+h?s2(dO}YX)ve(k7Y2LQNS&hG90>`qH78TJ5HY87a4+` z{c*7P*bW!AcJ)B^J@SqYO4F9T&ZzgtYI3O)V=Fr9>PcET+FH@?kz?Qq()XSH{Wg#i zPVqnZg{+R!0)*koAP#fp&%x9Nq%V8mRUdqMLx@yNF_=7}!2y!WOwB@?1t1AZ%F6IU z6#mdO8tHWLVF(2>`AF+y0DBkUl`O&Dhc0{LHZ2#?Kpz`8tvZEwR9A@86tj zsjzPmojX8zQous50~ciga8Nei^_JFtz;N$Fg6kTD;v>-C94yO;ykV^X;slnt{`^qF z8Tta_Sd3qjw4wdyqk4Q?ZFlRTd@0ET=GgvyeF1lQuhiT(YJHV)`0XF(s~M|tBxZ)A z8(T~93~AQOMMPo)bQV`U7{s*^Lk2LZiLiNF80|1PK%_#}3SoL6c?{Kiej~%g$Q530t%Y3SQ0hY^?SJ(uF4997uw8&-v)5@t70xz; zI+PYMorS9k4m<;T7m6-ipbgFz*vVI526khXoc@U@3i>_- z&j6A8dbBtg4yN@?V-svCxQ-HW%t z^&=b-HY0CiB&iS{F>lYOJRf|fL@Bxi^Bgwu`oJ|RFf=yKP$J^P3Zh|3ZEoN?ePR-p zaIHsk&}!zA@qb%e@Iw7fVP1=vjLkTu-d(vB6a?gzK>FtMQ}-xUE*oL%Y;6Um99#1Q zq1iVyUGQYRhB(!&Hz53ZFhZNJDv;Xuj$Xb(eLLo418(A>*AzG3eU3zB2~^Yu;oMGk z;Tpi*>qfbe3i;T{to=ywO4WrCl=1|@0EhY37?V$#g~J{D4Gz_4>Xg?%G-Ts%*Rn0>VOWv$8MJ2|$xA3BJ=?t7AnvDo>g)MQ-oe#e( zF>@?I$pY>IJ zak)(OfcHi&p5ASv#J?A;@g_rN-6Ds*o^bH=U^#;8daK8o?%`I2o)PlXAoM#o2b!T~ zZDE%hf=@JRP+Sl*8FEk)FXvM9G+;Sh>rYi~hCTHV2;RzRyWPwF?fNC2j&J5sgaRM- z1|*BVm&U!crtz*E?!Jd}dhE?G^x*VzJ{8S3*`FC&YQRrXnvRI=b|IUm7K zitz;q7H2k=oXW-`|HlQO+7v~}m>99pHaRWr+we|N5wQptbw@35i*fz?KI~M=d=C>T zixgz@i?CeoQ8dQw$7Lbotp2(r({YKv&-Ybr%#U4B^gZj!Bc2Kl9UUYl{x_qvs1a zK_NjLtfVKJF)AdPO(5PtFCo>Uy+L9%#XtP+jC)!vb7h;|-p&@o0%OR`q<}(B6hYOu zC1YeMIjve2+;MU}pUoQbzmDAh{qxyPZLV^@){u4bk~hCZ*mk9K)G7Ka-LAPB&7s64 zI{39-x&-};ob}?7$eDBeCt+|X^FvPvc`xrAc;d`lKCI9|0<$et-)kd!TDp(vfq%$v zg%JIee_Q-#{C_{ICCWYP3{rUdKfXUUC8m+Q6~0v{?M#N2w>16HxGB~D3GVmPODZoY zvT%1*1Q!&=&Yeti?EoxO3S$&s@wG5izI{1gw`3Z=X@8Vkzh~;ggIL!B;&#oa-?2a6 zs3NQ`rL5Xdnxs7DKkYp(IVXfXkR{FawcGPVz5AueH0_>{soq_BSD0S9V>5;ttAFhz zd!EPDhl$}-ycUkT6FR?%M)r`hYvr~$qqVcLHT!PEuvY|f(VX(1C5^J2f^Lv(LjvN+ zMCzGd_B7|0YUKaSmj%=>5`kp4wFv>RvkgQQg?G&xD{ySV~G&=idYg zM)j!PG7>jUqO$Ds)sm(Qk|}KtEX!M^BP~t*FIVl!QTN4N% zkA`_P7lp(qVfDlkUuc}nZ-oDpx7-7%FTz`z>f|IRB z`(fTl8g}1CM^vLz`LGvdLV|UpmWfyESwgiwO=l)ko0H6cZrC7(8ppTh5wYC?e*H9@ zf=u=6qLav;mwRv^7uSGwD}f_wsegv4Sq$squ9D)@^*^{LKA9FT@F}C&_umA&Z;@r2 zUn)9mxq5*;!KFl@&5OymT>NHg&z!4QSEuE-97mH7{V(k3%Gm0N6d?e)_nSb~lHBTc--C64Yp>cXfVB@F4a1(UGU8L&)K1+eOAD_DaH0jGh?Ws=+ENK>6 zez+5txrPaU%E?aDnJ57B)LI(QoV-RgWozr(**Q7=n^K6iMQLb};{L?9^k!9@Ra+dI z^AOc`_cyP{;>A=qYrEjm&y28;IDdkBL$z2`?BPTTxF;iUDbPXJ-r8XrI7+i5gP3>o zdTz^_O*Ftb$>L-I$N?^5?1n-+_bPAkmT|hp^G$p{0zLwBQCcUdPN+x3 z7eOiO(hdDL%zwP)O@b~4gux06J1#1oLZkiVtGttDzVStF{xJ%i$%?^g0M|uDa7*o@ z5a^l!pY86PJ>Xzr7;f1{-RCv;D)El&ybH#rU>8r;0@|9sP(9gl`ir28eSNnuJTXbv zoY?E!N!9*d&)u5aMo(4%^f*sVf^!3WY6vQ{Atc5@#4n*-SYT%yQr%x5#Yr0-Py!r* zA1Ts5YW$nhfeZclz5Q(O4<)*+QPnZW10t_gbQh(zZ?*?^?VX;Wo z+oZLnqu%CEpI)mP*iU_IZ~qMH-9Ys11ePm8MFVm;l5g~d3S;10)3E_yv3BwiaVK(x z6U1w}a|z8RbKF8NXsW5E)=AS3g1qcNle30291?!Kt(6M|Hyi2JHdJ7wZ}|*q+NcFD zFj{gSAO3-Fdykv0U}?Yb>DmU&079aKznyI%W{4*|IHIGzz%>~5Fk%;W2u`4MVJ>S%uNP$Z-s}J1a^ZP(b1v%dwC{I_GlO9+{ zD4r0&hBiDTZoB{m$n(I35d7L8F(d^jO=!bODWYBrH@2!LwyZDxAX!Z2;1lN@ujH7i zW_RU#+v~mM?Y5tN>v(y_4!a~hLT)pmmH!`zNYZWoOryZXizOu`La#u6furLJU@}mA zsyo{N9B1GoT-w=w*dadx+Mo`B6igy*a0r|L2B<;+B`7=Y>sN#yO*!0K<@mGrDawsfM*^MGK_(6suSc^J*F2R2Rj7W(xq?j z^S>6Ei~&q(vNt+i)Y0nz)wDw(8V=xA>U)RL&wvh?fp!X?OW%)G7fsD56VS2^DUQAc zDi@L`pZl5@p9(R_5D2XH^!15}mP4&=zJ3nceR<@Qw#f6I`yh9ouFWF0h`1T7VRYisU2BV+v^aLy|Li%58f1>Vtp0F!n=ar%t^ zF=+V1DH%H@3ia0TivV>O!dfIGC*N7#&APnH$><)DnGFdDwU5~y;(5i4zP&qA!JQ9l zaHw#3MJ$q*l#ganb)8YRlx)3WkE4BFWXSZTNXEgTcmb_r0e->)g9yP!KLG?aHi_N? zScK{UFdqP}=JidDjn&&*AQP;Qfrr|7=l-zvS9WWN$lXc@btp{k?ChKZf%f~rt_1>E z+)4jJX8$D+@a6X{n64aivH%V`B5#7|aYJpv7uc{kfDNmHgcayd^Sd5{89->i|KNmY zRy_%yzy^F6N|q0h15(KwAPIy-cOxbXMBUA-`3y^5D~VC%z`cvWic0Rl__iG_0!SbYJ$*YY`ct{% zX;eLz3W$k-eN<)L3O=oUaq|G0ms&!NJJOv4>Dvko8;YFy!;qq?rUC=!60n~P`-g!* z0HZsufp-HEPMO~y58zno&X!NI)md~<0-o3mXbXZ!!4?1pNCM;^=zUn_kA9y9w28Ou z^~Gj*$9^dJh`zI>290tRV4<$xw1I#8xH?h_!z}{&Z?*xh({ewbPj5{rkJB*orkHFr za&=I^)p3npvEXULd%Sui2*m&Vxwoo|k*YT}d1?aQRefvuGG09;-*#%JvtTl(X=GGX z7Hnn&%;T17JV$1dFcdV(?BDeFUB}MSaP$i0C zNFz-tK@NQHgqBt3 zcid~>K9!tWDl%Sp-9YsW^LT~jrQyoB@jTw7s*;eWp3Td96HN7+ppArRU?7(aFh{)r zlJbHU5E_qG!I}VRg_MbjDb&wzeUDiB^TS>$nE10&Qpr(Kp9kUo=u z7AVlgdk)U{$6iE?2r>1Gs@(TPXh_`h2j!7@1ARH6 zLoNvn79D+(N@I)M zTiJ%mhCI|Ypa2)wZzBChk+cf1T@v2Sx9oaCA5kP{2#L^CBn1g?NmulIdTSqT2w)JR z4uPZuO}&3{g9K6+$jRRsA@Bw;9T7JNJNz0L#YpE??UCeCWa(C++->Mu`MlMoiT#dFq}!|Ra!4XP$5$c7Ytvj>nz+>e ztpyVsD^dq$`u0f{{9+m+98&|GeGtMKmC=Pa=O_zoO8^AEX3eQKcg4Joq<6U+P;VnR zLGYv3Y{9_JJcdvxmg)Nb@s&GSjJafmMU(v|%@%XtW7M#vyuH<9l10V66yb{wz>)(# zYzheMzhrT$&bUcIiueE<=>8=fy+%|U4q5&Tr@x*s9l;*g6xqhc@MeLu%otW|hAFB; zvw**)9F~X8`zMD${d((%A{t#iZyBVNp^YV(NB4PFqqW%40ENWC`CZPrsbM49 zDx7F72syh8ohnn8Lu(k(myyjp&a4Kfvug2lCsM>4CZ!b3SMZ+|WF3!JVOArd^TN?y_oA?11xAL(su z`MKDIv9I%L!i<+?ha4{!|Mx*pZ{N&h#w-2WcvvEOAUvFN&-m(otFio?UfGI+TNaCq zl-NXrF`L*4pJ28Vo;-Oygqm!2K{5e8omFq6K3?5sw=ge4){$%?U0o+*myk0ULhsn~ zS!cX@!wn(37tes*f?zKZLfT-rHnVzZF6_#NROHQvrUl$DUUldr?J-#0#k<)}w<>rLiGs7^u zeBrYWbzM>RzABS8g6@+T)xNR>jD>8Vv=D7zG)3&S?UrSHDm3v?^>44C zX@}&N)GOqb)NJ4J=u+%KbH}@xlQa0mSCe&~okQsU0e&h+zn-%6#b(U^L8o z9Z)-@~Vdd)cw9|+h(;eEz zBa{ixv`(C-e88nu5T8FI42nwP<1Zn*2Y`h%88|$hDVXeUg?Rt zR`{hN?K2EG?|sqArZz7Y?FabCT7g+P{_UD8YaU*y*O8&J_+XYk9@WzQd=@29^=XMu&rkX5wCn2-LCmq0(FFwU z_3g!J94n2KhG9#%vG1iCNsg^!PSwvT{)}Ook=y={mSqI2xiC`l%( z!)rUkCN*EKia!-7C$96eGU837UAX&r!Sf2vdlY$B)MLT_NLX1i@DL#sCYBTzr%+}o z$RulEOCx)KF5*4nosmlI-HT*;tOa2%f6twk*vd9V@im($$#zD*R#kKBfA2?o_+mu1y z!n#;kr@Z>{A1t;BE+gIiSt7%YoASHm$U14HJzSwM4{C(z824m+kodCyWBmO;{aO1S z@%!q;ayx${Y)ZmVp!M-&8%a$+r7yHY2d%&=jALEb3h zw=plDk_@6lHcA&^HBCpfw1;qhfgORO7s-Rfd(9M923(A>t3dgivmIArU6*e?6%Vxf zga7E(KOA~C0IbrfgYBAa(`H8G44$F;_+EikktdFoTgBR_%~bU~dbw9ZJd@83RXk`w zKmRxUf-r4Ro#>2bbpac~!PHgIO_iKWix9P_FX?C^2Ux1PvRV+ zvqgOE@}~d6(m`pIMAmI};N$&YF!tS(L+Tl`twDk+EbQ(Uo$-algy&iJ3}yVI zRN+#-_TsxQ$5JxA&SGfj9Q~fn?t8r7_x#dQCeyKY=?5Pr^6oDpRJ6kL&ZkT$s5Kh` zH8R)#(BFx`f4n9#fY4_dG3M=wfx=F9?7PbF>ueA*M@ps%+>E2%e(L-Lup`=l@OHWF}NC{}w5BL+tY?Tob3%v1R9p3MOpZIUBRZVYQ)smggT+Z>jrrewA@a?GMlsN4N07oSNvQSFSp zJvmLG8???DZpO(p3waKwOMn*jj}xfZ_j4@;9(5Zr-ailmXg|Uugy9(2jUSc>h$g&k zK|O{$Xkm&9>#{W~v3m_3_<38+tqyh-`hjnf-nKnDC(AgK`CU9Otm5((F2nQ}$c{83 znX0Gu&N8fnj#7Oog27!9$KNfPn69!^VQ3fburgqMU%w^G$oY@m*`XuKoflSI`}q^` zg=CHoun z^9D4-FSQa2H}C4t7_Pt;@X$-y&=ac4U`3Ae29A(edGQ~el6L;*9Fn(q@#d3UtVxV9 zNH$$0`X(!=I(JBR0E{&6j?qh!bUP1v2HR54kj>!=n}bytYj|ex*A}Ph3z^Ap_zQoY zzjg{Wx)4zpc;GL;OXN0g;qI8A9Ku4@C-H@tA)kYzBeP7L1G#~^pTO}zq6AW7GvL8? zCrK6&4{2SWS}}W`lwzfYifVP4{C#~q!R)zD0nAJ)Gsi4WPN;-;E{Dq_F}uNL$xt^m zXblfQOo*sL-~d`cCNDjH8+rnwZ4dG9Aub^j% z0EK(rpWY~UTs{sehI)_ksN#37mXgT;CxTuur1KFEkp#>QP7@c=-nq=;v1M2)xl@WY z%1S(4zVv{*|aEP)jinyEuwuv~hyjy(Tp z?Q6jOpoWU!&w(03?gC^&`R2_tKyR^ug0Hv=FVm>7x5+eR+rDSx9`y=W)38dvnWr!SwrZ??LVyzeaI)E=8ly86{D%B#26 zIQ8P^AWzW)uZB)*E8v6ri-?MnQc%2w(ADaWJuEkHLlL4NbV6za#YrzfQIP;P5+x34 z52Okc@CgtJrH5LXAG2{f^8jaCg1|SzL_vCRLXAf#z%c;BumEeNBZ7{14?b0mbn8sE z0)|l{6TG-N%qKaMNHD_7d^hZ~?hdu~IZ8%=+VlYaRs%d%D(U%8tJ5&Tudyn@+ooRJ zfRbB--YLZ3x$B2BH8#i=)C=bpENfRErB~~&ybeM1*NzfG4;2Iob>lm4XmQ?VY(2|? z7jec3?R)hs_k8p!=gwQ*t-sB5DFTDRjK*EisYI^M`wG*y4Gj}zL5Db0wi1B5D;8$! z+jRfq0<=fXFte8c(PtE<3fPC%^dtnQqEjVY-T>~>-P?=oV*F*K?Qn&qEWBQLCLneVwGFQ3%w@OF(f5wX+QvHF?S5;UT9H z;K?_Z-7%M!Kv&ce7W)=Z*6!AOmcp*-!MO{(`$#-1a=1~4|BilW??Y68>c6#SJ49wL@FItJ%2v2T?H@k0WOdblcRJC2$$zg||0 zwJ>fOa@&k~K7GMBY}H=pASiN^ka)10due&&3YX` z40y<9$qq0BBlVKiIzz0!tlWL4pvKJtp*R8@sC<_C;^ru90-#LU0;c-H?M}r5-8>Ys z@WgN>#=7B}r&x>vI#LC`R+ zbIWOe9_0*K2k3+Ohm#@{{~pw8@m%QuBAX`Ez#*c$i1>Xkq8;%^L z!s$S{j<*cE6c_=*{t*UjgR_2j_9*lF2cRsK036P_fHc5+i#@SukmZk0oiT@t9+TOI z^2Y6RmSKq6K-hjWdvT)YJxd86xS~yhHo}+!l9Q*hUp_v{y98v#c;4HafUbW=QiiGe z-$Df78tRA4N-toqzzCH_6f_XhF{spE+DQSZY-;z<{s;EsX2gI&?yh>Ja%>NTaF~G7 z2d`p-Al1lW9w~hagmA<=X+wd&#`(*aF@Va`k`QN%?&MP57c(xEZe|1$`kV6WD&+7B6NY|s1P#%`%8HUb8$r$O5ka9_21B5 z@2V^hI&TepqkWh5zxNBequkgDE$YW_9FyZWGk?O%9!R^)U{5L%U zb>s^uXu&rd!CN%-&AxbU!e@>DOETnnK+T>I3O^HJq7m_GfSYRIJtJg6HzxvG^gV@j z{{(qlgurW?ld1w+0KpVNnjbO|X)tS_Az=z+++Kh^eA`fftBV0UZ^Te{oE}9gMxrjkX=YaP&iH**WP9%qx#RwcPVq&AMNb{V5XF1z{MSlP~djD$`n;#Kgw4M(dnsq2(Mn zk2RmWoqkGP+NM`tpd1vviz#(%>zFk+}G&7UhN`zgX>&+QVXLXUzCfrL++f7hEO|iZboE5(4=aDXd~9mI5*%L za@IH}01=L5zTDF)?EMXNU)eTkNBrq!?6@j;d zgcwwsm|UE6yuSYHy!A%0f%5EI{kkjP1HaK{Lvc-XM)7E_f}ki7p@obn+oN^exLq${ z#+mq%cah!qi3Yw!k%|1NUh66J;69;c1jsW?hrQQYtNQRaWBA2MJRX6VfK4bJkxT#9 z;pZ~=RQbtSK1@dQj!9kO<9Z87T&_|cBt=(4MHGo*J*_%+UU0tpjB4+oXH`-C;w?*_ zQ4f#iJz4a~xUqmUnwprsEZ{cVebXFdC%(wj)(Y?DZHH6{k1Dp~t95TO1f7KUt4o_- z>05k%ayH6<6Y66`+{Pnau36Xn)WLw4ZEffO)RHy14X}5BU{>2k!_$;NE-n;3!lVSL zpx$i#91qh4x|89xw8AxhJ{vCdXM5DTcLH*#L73gEBTX#Mx@HI$Cqs*IU&>GjWLz+eXIiU7t`yQ4ji(IJyH&r! zM~7H`&iVc(*DK@FFtNISobE{)DoAZ+7Q-f+JAg1u6#{wtsyV1%bCqnKM}Sd7sYBsgUStnjslu$B z7wfsR$J+Oa^QE3Co^i;AvbRjfHt!Yy6s1hEtiMTaRd5aUl>Qa92xh|1X|Ib$kUSQI zNaSn$%azd)T^hpRpaqre)vKvs^9w6neGh6t8SngwEqq>1a8-b=R7DA;cPHdaRbu^P9x) z0~vhfimpeyvwNp%A^UvR5O9(%i7;V9k<#LxZ5Y?DX?4Vz8J*N2s%>7mjqA;5%$W7y zW35a0*NOBVzNsb-3MT!b?QZ>U8G9>^!_g_bsKRFXR#e=DjvDs=2%UP&;JS036yNpO zL?MGx;Z}cc$w_kQ*xh^j)Q7?qNMetl#1~5Z*%j@RTwGZAa-qDuM{vn|jzg>i`};#W ze*4#E8|$ngk>lL?EX0i6^gxDmw|7fxAq}>ZCFSvf;lrNt3Z+S;xx|(itw#-y#I{ z2a7{*bC{kVadcEIJqvNBD)F`R9mU3~b(KyMMm3p7b%i~SuXPazX3-yVeRxQQeJ+P?R5-=Mvv-!^H-T6+5 zwEL)W!UAlVjekrm>n&4~xD>9ommMWD6WncFU86&jQ!cMFMA^EwH`W15?D!u=62M9g z&MYEXe3f^T{VZ^F^8~%*OnO!06mb7uf@h2@kR&93gkI_{(~Y@2sWQdrfNP#(yy$-^ zU&;!p52S9D@2w{9aGS5@5*_keaz~i+G%q$G!snh2WhDNa>K{J#17f6u-VUo~8-$po zA^nVZN_#5*{B%94-cp$YN-UgZ7N;_RFIru&hzWr(+;LTb#N6 zR@_!;@4ubt7G+%cvG+LBdgQ?*&WWU8Hrym!Ul55?4RfY9gPa zNA@V{o>ArvzE-257@>AX=sP~&3H@by!l{c(E)Q-WwG%9Ud-*=;($P&L#_p|Ogx+!k zswQltZWZ`Fi5T09V{bBRxR$p+oU10|~K>1KajrZ(n4)x%xI&ED=&cjrp zrTgBoI-XZEo}T)!Ny|OCr1@{WL60HKyN{eZZjF~HjPFBdCd~#R&3JL^wysJuc1^)S zbe{3WZn|m8_?nwKzyElt#S^>5%{@m3bcu9-P2v{xQ0&RX*HYh)$lJCj)^@_QUWW0*91)d48G?ay(Gan=m}hK+y}Je7xeUCOD|saX+_t z^QhJ9fAeu|zrL;&zLa2}`NOIFkm=ouhyNCCXFTl>)A@FsZlcUvkL2DWJJPo{m3;cX);I9|9h3LItqs<#4Pv@x#9nZ^vu<-hi& z)Z#^z85yvewuDmTjD+NUb!r~Z$~_FS=9UPnWui+=eWOz3lpx!wFM(7YLOeaO#Mq9p zn2dwbHNRW4m<;LRT_YINX}u}WV?|K%T{11cMQ*8eyLmB1X+L1PJFe#DtFU!UbHVsI z9+KPN^E7w|ZwC8f@B+@bNV*qr+(+KuB8tHwTZtdjcvDATe#NDb=e}K_$j#u^Wm7%c zUW?r870;`Uv+k#HPbat*pVH-~8AoAj4PM-N{rHV0-f`@!w(pf0Z%>91p1!XY{_P#c zGuUy3xukvRVz$%uq|L~ZN8mna`iowG{=uB0NA;UC+tbV#(>K3=dwaG0{K(A0 zUmrH0kI70oXEbfaW`U-IBHF*6z$$4#Ba@hD5e8c|sW{>nSzF#Wf7)y!lJKHf_CpKH zH?ulAv2UE))b3>$zQ?FH&!$-J3!%iWxv%tmb7;DTJ79X>%&E+G$|~&}A5_}{^$MT* z^yv>>7t(v7bP{2oAT9Wy5ZOGWAF5L0ppKT<`0wl9Ud^KV&F;KVs?QK$e!%ePBP>@S zsGNrqVJIG-+1j_0xh?@sJdh4Q0E4Ik8i@mB6mCh$B;b=q04?L|OfWLpxq^tjtELuQ zPai+G-@C+@?Zi@kV+=26X8n&@+I7U9v`q_%INaArj4Bb8N>;z0&-BFp)cddgZ>b-w zK4z5Qx_ZSsDW}p0YE)|gs{xYXwCjlrVnMRU0Zds4o3#e!Ple2xm-f#9Ot)}xYEPoOs3y4MU+PV4vxha#W33vxQIUMWH7aoOhAfGk@i)AdwZT} z=~W4&2aQ1O&o^bexX@k`VIFliAUqhf{ITcpdZ;{VV|#j=>OE*bBQZbF)DSWq1p8J< zd!*%W?;}BqZENZ&)h2MLO8k$!t^3oo05b4`)@+9F?dWuMb&*nXcyr>w*jU=*4WMpA zJu>`M&1~%TYWRa=SZYoP=*j}34(3AX@DWgxi$Hh7ZH8It1G1DC&}6!;wGn>6%Z34A^6Cue#)>>^J_K$_S&#WHw*=o14q>DLr? z13-<~VWcFZb(oHapZ_heI1xbs5Oo7!MG?r2WDEj)b;p3rxBxc`_BGXN{gyVeA_#v7 z(6AnmTvON9o=>>zbRY2Ncb9-&4&=r_-lFO!0H?V2@K+&iDRF>v--A%W8-2ZM5HaQE zAS)_F8Zb}(VaO(M!%D6Dg77iM!-dYvnI`#s!+@bC3EjtoDnrj?_N7L@(wb^+2o0lhlyqAfG2wEkWq{|01 zUa=q2ta2Q?wKD-UId>>MKLAR)J#^W51gvSRVW8v}0IAA+bV-%n@8;bqr$VSE9m>i& z=LZYv4w49Yd9^@nC#-<&wtNhDw=LlIysUMXYS{dK>o!b1A?x?yLbwnmgC3=HrOjPaq7X)eq~ zrp)mLbHw)AnfHj>o#rr|{%aK-!*8l8?0)xC&2PLr5g%gB()2qOjFM$<$`#u^tH5(a zZwBPa$T%kY-uddyVP%-bN}YgzH;6<3v{gQXB-#pKXi2cZIk2igS=xNrbQl7{a0A8n znl#c^h6=}Y@3G(c`x?6D0mV-T$Z!&XH+N60L7D-$m=9`fd_VwVXBXjRLWbo_mU>*- zE}Y>Ye9_Ahk&&=X1?nIRB-aRnW}vZk9W)QBe`UX_29gv~xBy&aD`>2Q^znQhcOHGk z!@%_j8c)ta!SCDK#ipQVj94QO2E##nuiUUnb*D!jx9YnG3yARZJuWQk_k#LgXp@@h zkf|96&kZJ|J5c^MVi_6jH3m6PZBX`ZNQLHtHa_8jyEfim%HJ>2ue5986_KbC1pPUq z5gGsIgRY?AugLeQQuTPt>+vx$vaQUt84|ua;Q*2ffxrY{%q>Im?;wNVFjiSO?gP7r z3!qT`T~npD{=cV(p~3))yhFLrNNZl8%Sj~Q7GWp7c|R1LNRn7Ora+L++A2~HvA-=sWd_e?%>HuX=Qnc znKaEV>#qUmxT)Iz=aRy|HywOfnWMxneC3`Fp8s=JLOZ)a33A<+R$&k397({QnIf$qk?%eJpm1Adhb#)M6c(IV?Q?%SbNJfuzfQwB@=|yT%)YVC0 zl@U!sgrNu-8;G-7KqR0GX{q4qqf)=~%|46-IJX%viAt)fFOP0C+4Qp^Dh(&o0rGf3 z@T~zT8xW|T!c#$`x!Q`2@jO*f{yu7OrOczmG1-dA zlCIZ#`QTLr-qGbk1$pKw!|38)8}|8mt2_vC+ZGZq6`)Ob02}k@#{}03&x^#wceb{+ zbd4a;DNrTYmVsC)IMG8;1N{>i!^I$0QVU&`4UW8Y!r#1kY`=mW7Sjy~3kAx=`S4wiW@K@F#dLg~-oCGPc@5C%k);xO)eK1c-~3%zuNL zQAT!+*wdjiuBWXMAprZHaOd?kf`kL#N1f=Gg7{wNW$zK^mW;3Ej78nw)HP_==@~u~ zJc@Q*t+34Xz3R{S+$fu$^ST#>^SLM0DIA+7TIhSPtSl{ip;%?%Eo41*r6PpqkOlz; z4GwUMKyvHE(yf=zvAkF4Hr@^wGIWG17?-jQmj&NZ4d>nZU5uE4qgqz)*NeeTuY2=; zJyTlrbwufE$WbqCy|APpJ+T57_0a$H&eF>Wo6cC-MgGZwcwm+hLS8WCpIr@0l@+oLp<|iHjC6ibAmG)R=9!FQm>P zticYqUz8z`}M8zha$ zYik!_RXg)CYdmAq^!al~#I%72i%IR8E6pc+pK)m+B6bEIXqTsr^w6hWX#YygpD*;b z#Aat(JM*GmnZ9E+s4)$m9G<0lZ5uL9W?V%1!7XmKbAf~T-~7l}Xpu%M*OA}k=%z6R zie~N~0wR0rKk8x8!U7KA53XK~C%VOkb48lpu4q3Yx!ATj70|MR(N6i2D78`mOeg^(0GWr{|hZ?xs6ISBPuL#!nC6=e-GuqM1t{ZOFUIe6 zs!>0zIp1EeqBoyctbW>iN<=Ya+S{!B%lAuskAqoQtuh)nIwyaPmNyI=oj87)N9J0j zRBr`7U8zo4)ptUsg&4CHdGM8lZreC0+~Yvd0b74W|o{>KG)-SJuu z>|K7)*RQVzPj-LeW&zK1JpL;ZN{`?sA6CGHUTEAqODoTdUo#oP8~C+GebeaT%-dcA z_SW>E(V*iSC=r7VhFFS}B?)rG(B!+<-}wQL%1HQfIySuoN}luMcQYT`MJRug8#CHH zS9nVoOKAMu*~MU|N#a)4g1z|d&NFkD&JuajFizWd#U@LAZ~OQ7&ah6m!48Cad7>~zI>{RvLv*H)plIVjpdWL&~>VkU5m5dBiExdT_ zYgEpx%$QG|r#m3^z2sc1-`cxOQ}%Jm_hcKi2X`mavbk_f1l=wxYlBn+IM509O1i=e z7iAbakA66Z)YgkwB>J*+duk=eWNX+PuaeE}D;!m1SWtFn)^x?{!*6iA^yL7`cve#z(SL_U3SNSYcqeY} zkxH4vj#NbMpEC!M>(+r^j`YtY$VeLdlY69)Mv8e;jTb3;IEi6n_wod(Ubp3b*#8nY z`)83k=lpY{caB_K`|@T5&BGU~_AEMI(OmdbkNsz2G~JPRAoyVdsNP_To9^+gQLRh{ z`+{cbkc|xTvN6@{i~QGjx6Cf~6LZSm3&`v)JTZycwe7h)774bIowQC2p-Tq)>CK)w z-2Edw%>SOcu_RlGf~8#Z?gJiKRCNcS4yz|nL&|H)hXx)Gqdq7H3f5v?>y$Fq8C#?r z!R-5a2m7*W40Rt?l+Jy@i=I2z^?Q*qGh5TJ;FC}AE1tRk!_-%YRkdw>Q%WdZA|OaN zg3=;LNl9G2z2=-_ zjx~NIOd0rddYfM2tvI}s?uaLxUJU|5&F{#Bcv?D1&h@WgF|%qb=BiZC%*sg>IZiNE@!u# z3l;2Hq|5fym@BByZ&``5Qoy=(V>gTT<3}`pB8B}J?#c&l@wfvY(K|HPgp`i;=*@L< z;3_mLZDr`4em+L-gIS@ZHNReXcBFc7L;EooqJrh!2<#$7c}}l5xZ|;XZ9?zud6G%- z{?&h%z;f@^WjU000A8mBaZIOduwh!Sdo{@}cD+zf5xuP7uiD1dsp(zH>L z*Az!aZ!9qUl`f;l$1mDf^?a)m<;1cdQd>}1>6L{)suROgPaCFx_Pz1!liliICAqJ- z^o1T=7y5?kkl!5*elXx(dJwo15lk{4jZ^y!dtBJm%qG3?g1`(ZRLvCen}mm*1Dzq` zg+@t&{Z^R=*yKjjHe()s$*ut#KK&K{wGZ!M0494@TCmR@19MkfN|eY0#XYKyWyZ3m zu#GoBrh2sHPM>L)%)E6$$Xxz@LbzYI-uN&SEB4`k1>gV3yJere*dXb^IJRvhI)8GnceF)2_r6a?T8n9~sZY|ojiOluU8Gpko6qt|hDV{&3dt&b=;Z4~?mbKAv zhoph`w-1N&8#|*FforW}Ih|_{$FBGZk=7dw1eA;{qR&>5?g9*BE;D&f`0(ctMyW%0 zxKJZ-;q!a0r#{Z1&rRlaC%hjr@!(~9Hjpj*kgReL>#)v_!zWMD`&*)11=ux9U`Q_h zfalkhW8NylL;T&I09*SSA(pe}fu9I4(A6T6)i>>t*Myk4B8>?QFaI3O_{-iRU-v>R zpoB9X2&Y~Y1PBkI?uh0 zW9j+dNL+OeM&g8aSB=N2=Vhl~KufTHJ1vJ`N6%r%uWqI)vrZ&R)ueElqDX7H(k_Wd z;CY3xQ_x%Ns&@%>Q+B-<%YFq32{()@jS)~@8LfCF)ke#DP~Cx|MOu9F2$kv%v&Xpq z*V&)Wj|W>}b4xScj`4C$`rb=yzWI;EN7t}f72hv5u0dcP!L#81fg7gf&ORSAWiN2an~GK@H8!tTLc)e^dH{^BIK|`e>ts1vjp9Z-F0qZeB`xZA!5cnMU8kKcP6}8nBTLOj0{y(rtqJ)* zUp*u~KToR4yN8ZTW^xzg)_kt_EUf$@rP=8Aaut=;Un_r|I{!%O(8Rar_PM20Z@ZLy zX}@*ptD^cY*UJG854j2<_JBs~NgkrJav16aAN&w&y=Y^;H?z7zL&)Bn;OrV4c%kJQYat!TN4dd{7gkU+PaOnY{S;>Z5X z)An&7@PR1qy-Kskq4fq_h41IwW-f=|@R8uTJg<-QxJ2}f%%5|-Dc&%ZMq04`5BtOe zJ<-RnW!=&qR<=0!?qn#>lee*@{_hhFK*;3L7x&3~Qqx*F{+&RP#t=5I9ruWO{gKb6 z4_m0p?NlfEa#D`AfH?L1ck4MJqU_jSt#_mQ3k><`8u#9Lf*p z;4*mJ0=!tU$>8f%XHbJ1;B`98PD;|deCz>XNY~RouYCUxy~BMZfPzn@X`+B}45yI>pwaVr-djYwUI8gzi7b z$j0^>4DJv~F$UQ4w}6SN{`e>0|7XB}CgwK?3wmI(ZLuqZ`)ze+6U2RXD;2Y3R$@aK2)=^*DYOv^lUY{E(Cb{?(+Jb29edqL&G_4R@6&V@X z+;GKpgg=US*a5p32DE|}Efm1Dyk1gL(z0R%d_^#&$Oig3#?~2PqG#v@*a;A+OT=q~ z36}qUjRPAAgruy*o}`my2((k6^sWJi(Ge8Qu>~i6yaSaGw_#AX0s&~566<=#W zA+e9|y)--5p}c8mv2QS38I6mo{{~>P)$;B+m;!GQ^Pho~7CT@L5h(>2 z02=&4Emo1iDolnPK^A>w{a>20ii#_Qbt2SegarvhkW&ujqi!5;7}2f4#552Xv$2w& zfF3pCb>aasc<(nD8d_TQIVqmXz^Q~s(_o*-{CgBejsPg&j=e7%xetjN2;Cfv13Bl! zacPNilAd3N&Y#{o!~FB{aYCW)ON=f&K$b+y}%M0WR-oR zpvDA9MPf>qPHvo5; z4Pzz5|F#fa5ecN?d@K3l`M`A~z!GqT2QUi4K(GOjkAo>= zJ21@=fjz>&WlwshWpD)W!X^-59lDj+$9E1eU0`nknlKJ)!vaZrbK;<($HD+>7wUer zBO#a-K-2~O`gMQ^#^K+Z>90K&GVwY>Xr73J2SRlA2Cs!{fD$1jQE<*s0pWbBq*v*a z(`qsPpmsa=)_Ps7|oI%fGCo(d>H$TwYMVLN>~JX!k6KscBkrD(kH)mssj~eR{bE8-L<0-+1Yz!>YHhC3*K~ zILl7Y=91bf9tr_gK7MZv?fO%EF)^8g@=C(v$0JZo4Zb{~VP$1?2Xkb^^BP3o-pL+o z-*ChB_Z1HO1Q%k=AFK% zd5T)!Ied2Kk4HCGXt}}UEi;m?CVQ+~1Y2yTw?|0!n0ghFm&m>5^S=)a*YtCp^0}S{ zY;S(8;`oqP8eLBFed=CuNj$T}GxY!%rgnpk5`r`W?w4;-1uGkSB+10|5|lC}{eV%L z!@wSK&H-E^Nrk_X@9(N- zqaU@g{t6&(LkQGcu>)=#y21zMV7v|XFQvo(WKHy9m%BPUkhUQ^AHE^I@|!yx0fFOA z#ToH#KhkJhDg%WxpZPr?z10H44sPz4FZ!J_b2+%7ScC(59yDPNMHf6ABn`hr7^hD5 zT5x^n(yNb04|SFNw(d&BL`vA=ZtfnRZeP+0tcYWhtc1ru z*=;doQLa~0?-Pjxu4&q&^AHQEKlC|nDLySVfL6OX2{v8w=Is?W~pjiScIu3|ONVJl^2jCGy3>p9SNcmiP5ODM-5L0!K&LDnB zHvyr)34#U;M3D4#wI%`a;sp%?5`ugE#r6}VB5(9tA#FK1*U(&vI36{}mlWSTdrRHY zW{U;EWt_yN$|*fv7MQGHDq#8?$?0QC-NZaBHz_aUa*~OF_o1E(@#hYW&7P=59{##a z_PO616I&n7Dp+{m+#P#Wc&{uJ5h7S5s9ebhq!^NgD~DgiJbfl+T8Cly`)Dg$oF#?lPYhhg3GuH)4Tm3hnoAye^pr zyt};0cSc@7fiP%tf~!-*=8*z;b(F)AhEO!q0kWv3CPkzOAf7!?_yOv92tqUTvtRNS z{h&^`3(ryd`E%i)KYt=Iw~z!Sky`xgv@cG4QkH*B1z;zQTMp5V*{rQ!jb{b^o%UiJ zCIlColp;;&cHZiyieN;!^NQ7!^zdt4aC*r>yqobzf?16#Mb;B%-p?(M%aM|7Bl3X( zhmeeuQ<`wF)(j@Lw~AvFOPAyg)k^?C|Nj`m`X6xE(d=slQHn5h%*efySN&v9VfQDt zl+94U@{;Z2;EZS3r8nM%g+4R#{gz)v)nuQTo*B4?&Ls?J%NqRQ>(n?P3F!o8``%ugI9lKqb38Sb%Trh*JieDg1Aqnnw^rNzEOGVe(POXUY|n`KGUqB=gkKBY?q3w%xyVy)+}C{nZikGUI3B*MPal?hORgNE5zO6tE3^d9%se1$T%9#N$HCi*++N6@H&>N}fsLKG9mSlbtL)STsA2oezzW1rE1H`kB%Q!9Zf+sl zv2r@h3Z}wkFY&dMZ64=-$ke6acQx%MLtrTuJ=-<)v@V99lEk|_=fohnzN3zEH6?>QYrAI$1RGyb8h%+gl@|}^-}61 zlT!fOn8VfZ!(9zdqU}A?tl32rSDUme3wuBSOMvc9ypur-Is~Rw40@NAq!YPjv3?Px zU==gB*+rKP)%;}l5%xk}8KBIgs=u89BT1&P;xOnNA+%WdDu5anO$;nKR_v#k@XfHT za{KG>R0rK=!FMR|=Oa7M?>R}nFy=OR*?Vc4Lab|86RJ0kKbAK9prX36u^{L_FebN~ zA&o&fU8a!Z1T}t_)TUR9z|p_iOD1nsv||CN7KqK8-5rre#zyzb9$cGWc*cbN=d0BLrTsphi}d&af8tsz z``$M6d467892q2-Nj-hAXKng@yx;v`&Yy&tuQg0pmXY4V_`@f6A{!gd`f9PO$GVal zkIuQ#wjAM=!3!sIpO~(Z9a6krep?Vk6VNQcWIhMmmitiN*Fp@xQ2xn$(CG$SkA-po zI3w!0I4|Ocn(evgMx3-p%DT~-jUz+1Ht;KZJj^K55=+u&6j$QQXs3Cd2;rfQbrj=! z>644Yto1@-0g*;Y=Jc&F`|6Ru#3m!C>{UnVqB5>z-)wtA#PH|!*_(Uzmyg+UEbIk=UCD)F6z~v(WZaqiR{EDYG?~VrIA7=a>kpss)Zz{vxc8M+SO6bDZOpbVq@sC4 z&MCx^r>RA2w)Iw`zpS#RKpcLl!k+#(4a&Gf<$l&O;TeS#If}VVq!aSH;u4ynE-V=W zeM&}^j8(7`nJ(%~Pbz1xnuL@%3|`y2(Y1a`&TXMjzZp%>Z}OU=l5Bp@Eu)^f?rDXR zV3v4;C{-rkFXIUZdD37qEB}qFE#{Y-6YY|s|0ApR!xwT|FDm)5NRpjQR*CV6*y~=* zF_x{))*s+$UI@mqA$nL&R*w6}XlYI3gC=%_Zt6TiSo-kW1Ri4D#!H_K_U}K6kVy*GmQU4;2>|8`00M4AGC(&5hF3cqwdO-@d<3KSOFC(#OB@)%OnJJEj@?TAQ1 zzPAuC=oTr&pKOurUF}-`F>YpRbkNsEAmk_y{lSfv8)Kbf0S+eRi~S1odxPyxibEN} zR95-ns~ns|&KnyrDjWSDoYsqDt*qly{-a>+xL0luJkM2+m~mrmmXed}^rrc{h^L1V z59&K zu6<5r3^#+qr|wsa#XrTSqHlRFi^__w1wEEh5pZ}b@w0VQFYBNJy6C)(h86Q#J^}R% z+geFd;@M7ExDJ(w1Az|a(yx7k>M$aXBEDDY1JJOC=F0oItCR{CZYKOyQO2UlRO0F9 zNStuqy-T?n8x>JpZ4^(;GxG7(R^{$@SHmhwY=C4jOcFuvtDq!oUTagSkX%WGLH*kXW$8Aho zf^i1)|8?O$03d^U!>26Nu|m)}diOhO$QoYfCkl?x6I^AfThGm6IP{kPG++3l_h0`r zZJ^Dh!?%uS3j^a9)uHznQlcv^pL=%maEj1=4tFWksss0qo0*if(nPkXWP7hz{DA z@a$wzrQzQ=yujKcFXf%^6bm)ep>oB*h4d|1msv%X>i~%Si2I3N!1E%05Dd*4rrApZ zuO^k~_v1}Tm2yLh_$u z9}e{O-J_|352H>>ElQEg}Q=MyH0wjcaUl2aE`H zrZ&Y@T4mkQc;wn%O};X&u`(-S!*g({l&*~)Tz7rVi(Ompsu&h)!ClY5q_Iq|2Z;*z;1K$*8MLx1{5 zUCOBfTz0aL9gM^SKg@US=*;03wuYWem*5@w$feR`wG|XTH}pxy4%RT!7rkuz=$xuT zIoj8(hivL7|98Qoygj#kZ0CX$ZjxIH6;($=hpq1-&n_sPBq7$9Q_o>T(@Vhr0ER%K6=V>b01FF`G~XF?Q5WA7Cn1iHXo zA-Re&%cw6;lGvTC5`X5NcXphNKV{2>|4_eK&)!3x)dXL_co9#kGdli*e#TCn0mq5x zVZ#|CL9``>i~C)2u`K08BK9Y~e3ohre(mYoD4TYbSOe61J?#d{$1mQ^B2DI4@ z)&6{vKyy|VRCnPF>C03FCRLhMZT4_dwWGXjl$Y%1h~&gPM{XS+zwx+;O8dAtxtBq8 z%dU5s#q_vT&Hxn?jL^bcRHGX=BB#e;vc}n8Q`o+J$L?z#4(d24ywV)EQ@6kE4ai7F zmnv;W7jmBl=NX4i-aG_HhWFdz{_q90flk1L*H7`dfGjJ4cm=}N@@jRw#EG`Tvwfv) z{g$7OPRFrZ+>=-kFVvv`NCnL70x$3q$mUE>mWlE+_=dv4Xzr(VGX zfAaBWq(1_u?Azh5d2_L2gdMmKdu4{m6sUk90F9KV`&~lIV0`QY5o@@^eB)rtkP{c~ zpK4r4w8QBCOl>4M)HYMQ6_kvv-TTX-kSccvpP%migL$e3g2XwgHOVWHu+G_~@q1V` z9A>+{0HgLA_VIp}_NVwJD=jjXvS9bZ;=0o5jT|g64%K4}?H#!c{cUYUmu56SQB93a zg)kT2j1GLI(SjC^XuTY^<`b^`ogSV53GZQ=<`S_?jr<927HU!Kw9(!lfsLD53uMcF zDYXO_sq|kv=&F^tBiPF6Pgvl#R>rX!zAs5{wTkq#>#=zB)8R)ffjf@EV?k@{D``7N zrO%l0$Fno~9K9Int%6c&U%%sgiob)&$jprER?X zKYV$Wt{9t+o6g_Gbf{>#_V8(`fROThQ(6L=tJ-Jv)8urktgR!nBG&ywPvfFo9k^Jv zriB?LoZ}C3(how}giIRKhkXREiWnHEmMvhiiZaE%d*>&B@?c9h<*pX5R?xw0{Du2S6n_bM6xBJNwrkG=+OF)NXZmjtU~PZJ5Fd z>Ve||%y|2@o#@4nzf}Q*#mvVS3heT-4czadHTm5T4gH~a2rQGC>MNb5^=`a3slAoU zaOk`|==bIW460L0uI#&BIot$tDVU>hUm78a}Yhn4+>AMpd>>8ct5 z#E-G-mC8>-J8r05@6zftk1@7OM2GuMH?>{tL!(^9N&m`m9b@X-{dg12_isENVDYLb zyKwxW%iH|?adezD)k-Q@R_@h%QX7OZ(<|fA=HrZ`Oxe+KH&UR-zhx&z%3}%PL2IHs z!RQwe&>-oDU=ItP95SfZ<5H_%FM(?xQ*8``D~-uQgHNx)Xg+N8a7F|fLxDT8ZjYYM z$hTr!80eN-_lH8>a_YifS--&I*sSYXC&US?IAs#ZD=0+9!~mF!oQqz_c*bG7@+T3< z^E={i@LFi6&X%~T2e36LUhdueqRTJE(s{pD7 z%+QRv=#|^)rY{lA2jNG7LEVd2QS zt^=VuGbcxHcRv+i421T4yxSnY|7WL=7}0H3usaHAmZZ1exH}a*;HxbZb_Lzw_qi zMM<|U4v~f^^;^y0!J`Ce3YWla1Z=wHrTd9ZDm4aldy0s_{rM$8#$k= z_P=d0NtgJ!>!bM{IbUF_S1Y&jfJ>I|8<-{kgb!*y+>_ej<1V0`^LpiVILUw*|3e-& z{02kHwayq|0Luq<=ZMvf-vEdkS|MBgO-M)<7{!895q|B-EGh;99cDm_!v;SVR=2HRgM5nCxpI-HuCvYQMMiLI`MSh0zT2~m(i!LS^AwQ7@y!Rt`KdD#9AJg|2# zRz(5?K%J8T_9elWg%;k3eR(n;%Lc__hZjf6eY`w5GhgJfHzv)Ss}qzFx7a z<~>QNJ_rpfX}K(VEODLFmn@t~krXqAiAkASM}rZ+=_NN~U`aUsFO-4N$HIejTAgR| z25~=8j5xIV81m<|r9%SC3FIg!ISG_Cab%Qy!v#BCPZR~&t|opzIU89h8{ zn8WOP?ut+vUe=;SWQ8Lz@CC>@7t|RQ#`u5$s7Ff^n!;RK~3P<+h zntd+t3mP{$*^evsXbQiIL_{FEFi)I@D$}GC65b4WNB%aqe_w*i zoQeFOl6tyl?8%>~Tw7N%C#7$W=@XyJ*fpIFCEU#H&4UdyuO`bK4Me3<8h;^;$z+xc zSa2cxw;R@9ps7>!Ws7AYC|RyASI&qgDU<$?M%@Bp^z7FG1^dkO^3^NKHIH-W&o4kV z4U#N_h`#-96@KvY@9NS3N^ZfGTkho=LxB2Zf&qvON6k1FEaf~>gsyZWwxU$*8G>Pe>MJ; zO!2;Q(?uhwa^{`&7O?br`^%?~t{^Hyzd@B3Pp29y0p|Go$ubNK!1P96tV)i06dQfj zMWH4qCQ4xrz91S}JPH-k-MlkFL>)pk^ykF2vsKqUq*}=DxB}9?_#=Qks52YEAG7O$ z21J8?i$2E~zO5(t~%bs0;c}t@Z7lE z4XiaCba`8W=^W~QFB9Pg%N)h<6HGTO(#?8{uHkDCpt-ZE>KWn<_DFyw{De9dFXiPK z6C!2(n+M`RTEXxdtmX1ocR|g8VBcx!0Z^gFK<)**Fm52Z7<>V1q(q($MneX|2kU-Y z{&^(uLzHOL^MDuZrOW_sqpb0Nd7T@gCIQ{d)p+6BI0SnfU^mWZHs20fi@$4@Dq894 zQel8^96N=cE5&$Pj?L0|E4)SRO2h z0YLN)R7VtUuM$pBfY=BQZ9W}c8ETIO)YD8<}`smdG1 zxuKVH_?hK?q!0#wabDy&&h>}uR_n2U3l@Uaf1i&~64xHb_GPGQIcGmE=&^3qoZlg; zCNwZGfWYm<5M3O^SDB0UXt_660*E}%y)VJ=4|@nk`2-OPhzC7EjhtWvUaWZ@*NUXZ#)~^~A|rJ(MU=;d#|dL>$6{$HBqTfc;C?I6fU`0>5R=@DcZ>B=XEnARho&GUlK&_6sEj z^(HVPHjuQ(-8D0Kd1?g+FSK!T-N+JziU_0%N9+?ARmy& zN)deSS|I^Zf4U!^hzMavAo4NfvBE<}v}I6f=LSD>!+ACXV$(1rkxH*z4C)@-{Od9q za*Ov_6mAMNVc{@5}d%We;09nLokpuYsB*qiCrlFyFxzrdlOb6 z2T<8(%Y!kHp#$-}THvM9^0!uS^wmaD8IZ+11d)0J%g6O=}NA zi9q5(KY-KaWUTdJ@-XOspFsAGa$Ik`b}N{?1?L-6)6#xz8vTfry;@w%W1_L>*n8>| z*eZ(g+CJRjv7#jLCUaWlc+-Cmx2rCbSIY$%yi4PX{2`go!)GhQBzSu$ql&SmXS2S5 z{VHj-8g}(TMGRebz=wAGISDBlAa?f)XA53=u_OQmPZ|`Id!Q$ehnxhsL63<}N$E4C zW=a8M&=A;|VyuND#a22x*88E~2Z`187wqF@IKCXRI(BHxD!tNT%X50%=wPj)_cv|t z{;qucw#w(jy4_`Gz452fO`l{A+;*$wX5TrfVlLSmgau+tawDgaLC%7I1&NdH%s}0Upd;Ma>wh?(Tt=; zDb#GmNo|X#)T2x0YP|5J07n`-rr<*je1x-!DCGDh<-G zs>YaEgh(CJKh3Uht&^~S6~q~9AkP$aqkhq%2+t=yIFXvqHnGt9f4}}y`1KXSyBY8Z zG)8uuc^an3$9Xh$F*(p29}1;6`>X^$u|&V1`{TZy!xAn0+<3h0r}VynzdgJ8>#p4g zPshX?Ce!7Zc{-kN&W;WVryyelIEaBCGv(ILW16%R#-$w5zY#chtw=Zo8^rxV5S%;b(K zl(X@vjub9fCx#Nyi~j(J$U}OCn2r4K6`YhebpNJfkaM5j#|+!`akzluRRc5Gye8o zqOrj`SDIqY>d`$nwKx50(uMW4GybjV`N7bpX9)V`oC~dpUi)LGl;5(h?hFSwP78Ydw>}g18l~XVh8#ct$9E%utM!j6zxcS;C8GT9Fsq&bl0bP9I40&qy+PSDN5( zn(*evW1^q&?vb+E=&|R27M*@+`i6`ZoU`}C^Wt{#$<-jj z%VtZQ@R`2NKlv)Y!KW%Cpb&Q(jFyu zC%PX4&37JiXqG5qb+fZw$)c3w?q8dSu{Vr$ULI?Xccu?t<41oRyQ%%ZU~nB?%)~oXiRr@>bGN}aJlz70f(BaY z-c2l(80~cW^YG0%6@9O3Zij~DaN1m+<{#C##1pPRho0ugvTdVhkqD&a<}$vQe@!o@ z!k%=aC7^*SCe`RhRGjy3rb974v@%-oe!kw+J;N|Yz71B!)P#POJES4rttga)NLlNXymyN0kbMqC>$%c$=57u5j;UM=TW8sZeH(n~E9WPT(* zCic5pMwzK?PO{2RF3~>aRy$k!%G?O00CQz)TMQF9w)w|#k#9-_*@LpBpB8J6XFRxu9EhQAJST=PHjCU6lF5sM043*sWit!t?m-}qEJc|%BBC;e7|ok|`% ze&Ec}A=e^lvWyFXqI3nR3$ujx9MbNLEWIuxsl+mxte=+lGgt2BM!DiQk(S#Vmlx*m zCcRA$RFd90e;He>j>@5ILRFJBE41Xx*wTOFb5G*O547Mt*Qx&k>%G9?TCS0*{4Kud zRe60jKI1p^Ji5ExI<)GMq0$D10YyX~aIFHzQt5Qf5>@6i*VN(VZj-=?!jrRWwONljiVPze=dNt7Uc;le`RE%`GQxT)8Vwky4Tc?to!%C^ z&fc=Wp`#^MfHYA(^Je{n$Gm{7UJVE$0tdFX_fMvrPWo}K-SYr; z4x)N``|*uuLa!|@V!*6M$1gb@wRW9rDs_ppJZ-Eb2!DOBd3xdkBS}+3n%*#p0Wrzj z+)13{3s0WAR$P6a`$TM9)U%OkwC~GQ7k@1YtBgo0)$a3pMN!gw`8 z1s}(dd01lghN7ZNs8Efz1R``?_)z^1x zgUviF2C?hSgLO{9{&MAn-xBn8(n*Y}k7Cj|(pk{dn{c4@>Q!vkPSzlTj$5+iP zen{cOqvtUEBeXNj=&;C9DD5gC8ZVMe!&sXZOo5}f$8LkzL0+3;Yo&RPEL?!K+yG;DMAAKV0jvw%ZQNxtKo{2Q} z%f*R|c+5!cWfA@0CY-0M%J;u8qa(_u(tBx)u*A}b>1nTiD&ST)JAkTvqALssU{b~_ zKc(e`qn%XxXqIhom0#V_s*#}oMc9u$iR2cC3be#*+uKbkuSQK8P?y|hXtX!nlL*xw z&}0{#Yfn^3(Z(aWp(2k(J6F8QkiLQn`RhM=(b4O;rNBV1ZF}Nzmkv?2r{6(PKeo{V zcX#}_6E2VA{;lNqE3p`uE?$oq=TEFBM`~x#J4H|V`X+Y9)?P99=6~ioc&VAEHb>$; z`GtqqfN1SLx?DeEFzU&~kARFL`d52LVo6?M$Q#kj4|)-8896@6y{Cgat1)!DM6*qv zXa-5KOA+6WLvu>#8V#_5H=OBW((;`HniRbn?YRmjJJRzU!(|QQt{eHklxboLPb|2+ zP`riz=LVC}VsI|&z!u?Q?Dgp`Mbii0(3854?sD7_l`xfhk3PVU$++u7>T1H6qhRp% zBH?|bj=juB%QAW0!^)+BRQXCT5;1&R)!f2gzgzqIO{cbJZzmop;A-fARuOmy(oM48 z{TZE*BaXw>UO5|{YOmh&Zc5RS2-?Y^BmCYp?9lQ8QfopXCg-jPQ<3URV` z>v-G$#1QHAy%hH`3R-?)&(=$P9`D?suH_#}s)(JF46*Qcm@ zYOp&N*UDbYR*fseDVC8Qx&OMz^7!}f661LfM{=^9xIs*fuUAUB#z#EcUmi7%1@TG@ zxP^x#eD34&aYSD&#jeTyZTcTYn>|y3oi$jD{*829-p7`SXblmLokc~(%Y>eP%l1Yv zEk|coh~0_45k=Xu-VgW$pKCGo{yT zhDDJ)PcQ$|x~k0!eeB&TV}1zU{kHgTAKoDH|AG?C;Oq1Er+@zg=tE%aKD&B$%jL_* z^hUdYv*F&jKLdtc1^R|nmpA!55d5mj~dY>1U;3AsELX3;s#^VINzicf>;4Sk1&ux6eNZnlvoomKeYs?8ksJ! zZiC|(?e&Lk9R0gYG60-e^<)#mBxC}@NE@cbg&bXAG72u=Yw+Kx+}d>;0FnVAqZy=M z;+#82dD#ortQ7ngxn#Bzl-4gNjx(XrhnFPu3pr+#wn5u<-FXEKu3SjIfmIhH2!QOr z{zdd!;AQpk$ML6!?Guoi%;R(jgSZrc!%?nF7R|L~_iQTsAUR|=R0>A5NW??ql^2DB z=J{{PJyuRvGhaD|h4uOB$X!sPA&C&i#c>eKy$Q2*f7rOc;IRRKG$XNtB-o3J#zVxn zV58I5zcDNK3?L+827=IM|Mi>9ei`yCNGXFEbjQujHZ8a0N(J8T@Gdtr;jkRlIERl| zg#=~dbEN>pY7Ino;Ls)o!Yvn=TSLSsF-X;>kfa+nwg%^wwejyrC=3mR*JD^F+AH`q zNI6X5(F#8qgY?Z=@Y!U6nKm4``#;(I6&JQ0K~J!M&u?jD@M?qkf6yB!O4N2R zUEUw0ZyX0u!vf6G5F^d4g}%jdftJ8YxgRXnb)h`x@rS)P?l8*L6}auMmID#Pa(`!) zxDMdbT%)hTDW3bBpk>;j$HlvNF%yoGU+7;r4mTck`@UGI$obPK-^d{TjDws_H5Eb1 zlf+{{lZxfNwDjZ{ELlt3{yoOR#;yQgHRO+nIb?lr0`{;53r#{n@dK*o9B7j<0B}G` z2E?2sLfp)CNT21aJ#@hEJo=|sRI~p$TRo)%6k?#DCr6-L_$^rBL8PWK4wl(=!dJTs zUk&pTxMN~KdUA#k+Scz{d;8VtzK? z?FTvniUpJ3n|hQt0|vFn-26V~-@p{~F)dZ*H*e8^oSV_k9?(Ah0p!@WW{(Zvi%Ae- zttaik(I6)y)0&%g0wTvn05g6DQG?GQxvx z&ygrP0jI%cByI=b8hY_(V?d`uUje;`pdkm#hGcvt_oqY3gnKe_KYtW@t9 zpC_Vg0(kwB@RLgrcf|Gilp3u1NUgvL!zwzY?8cDf82)v8C4}FS>~-vl zg@uLeL?petHICmB5D=(k$q=El0XtU!90E;JN(M0@pt}>woj%DsW z=smY;ci|79#1TnJ%P(FT$AbADLIxsZphnV%fk?9fqIZl6{5;4K8}U4NT2y=NhL8y0 zF@xAxI6NWzvZx&+l1;^|5X=ZNO7QD-gr$JHVh$wRh->hg%S|MQ9oQ9s;+&u2GuQ{` z+X^s&oCib)0oC&EmGL3}1o5#M7(xQH)%D3zeYDN5_HddX1JTujnD3h1Se>#7?if`6 z8DuOD*Aw6N9*6Z390X)50}ihMmcKqeJ~al^)2_#Aa=psSmts-{lI8xMcYke18-B9F zdkG^hi}g?*wFlUZ*leO>i<76J;blba3w)fPxA@u-e_f$|v@B>Iw>y^D;j2T|v`TQw3c2G$1l zKPmO13v7Y4aG_n1W54`{$Nm1RRJ>53FG%e6Az0IsB?@Q%A=`D7c7h@l**8 zrDL>mwq%0m(j8Y-)!qv_G}Cwy`K4q{GI&_Kl5N2pk6WTS4`FxAz!^jAB*FHu3p_|2 z{w3Y=5dZe=8|y8;W?1<~@O{OAEbLi8VPVNV83C>K2JyQ+7~R^zpAT^IYW5en;R;d% zH&Dz=LXRmhkQxF@K@KG#Z#AlWYwH=rJEzI0#2_agP+0dc{;x}dqbc9(>vv%<0r1ZW z$9}WDe*W**veovHNLCdtrzCf{qgdc+jei-kktkA=H`rN&>~j0HvD;Lf)2*$2 zWl+pPi+b?z9EAt^9elHRxYu_d5+Iud>T5)JcpVr9w?4r|w64%s)lEAHz-5Vi7zE$v z$>5hFa#Y|O30Sm5-zRUiFq(xlJw&#<&P%=2SD=@c*^b=F*u*!-RF()KKn?=F*TGm= zz^oo8md~gKn#lQI8Mq)p7d108!@)@$uHA<4_!h`!YexP6#RWOxupumgzf&`niS+BL zuBd@pG-56c<=T$UzqeN>mfxfUym5a3iNoOGC^S1%@7RpD>>mNTKYy?Z9>i;I)etPT zTfXVJH%$!$4dti&@fYz32<}6Odez=c0?@>k%N^x2yQJs`%fIMr~idEn!x zc5VHGZKSTnbe%Ce*s)0FVC$mZrGRi&SKA-E%O|X4{sze`pycyYOOG+YeK9J%p28Ok ziHHJlHpAdkZk-%DB38UeEkyhXmWH4$(PD_30(MD_NEh@)jMuOC#9hP|eZB-2+!E3N zz!ew>Jb|XTaPQ$PmT-wr86bl8%eL8>@9{?pm0ywGjb;RvMy^ay0YmWs*UG%!0lAoJ zwHoLmpcXXPje6{?!@Wnt*M@fc87m9czQlJ zh+dj#;^3gLtzU|7WsPN?q4j1b#YEwYkM$lPBcCbw7YPKb+LI$%67g`TTySln$ zR0slZ@df0UfY~U>)+Z%?!-*7szSIN)*h>(qmAAa76adz|)LeE$z#IV=^02QXTk|~? zfP7a>hDvZz-Z}2(YdT7bJ^3n&+Jo8(=XeHM)$OEB;0f$Md;;h;Wmw~Pz}4RZKLL3y zg9bosUML(2JYvxeJJS>>J7_2~UzSg2a$M7yz0uyooWr)&|8y%N$=K6P315eYlgRn5 zt=Wwx)VTwnn_W_}x_3Jre&z4b0C%>;a9^MY(vooKWcb^+^Y>H|q+-56clp4=0=bt| z)F__tt0!hZlebnzG|^BhqPaOW4WKOq_h0NLqmdqHLuKTJHi6pJ{lQEYF4`da95@?v z;?HusJ^}%v8=5VdMgq_73h0-B=5bq9^&<0~P_T>lg}}bZhzQInwX4N}ixfgn2XAyp zow&mhL|F6v#a`$a-x@6>y=Hc@Oz+}*17_C+bz1nzAB~kvQ~3bAw6rwV8nxEPoqEHI z<#U}RQyrO=u&LkPbahCRGjW|j$Z~1VQPa?t`|XcH*W^b=y>?Hg2KGc-l0+O_vg^>7 zZvqW%y{z^q1o82PZX^Oo2)luHx_%IX7Y*Ib1{~a9V0&#-InQ>*>(Jit^JA1n{~0aP zp?k(t4-VK}KcyP1^`VNsa7&Rd7Hz0Et4VC@=n$Q*AE%7g00Oda1g)Q`!t~j%qq#NJe zLf@N2a`bnEH2*)U-aDSl_6;95GAnx}Bg!sY_NY+yd|MgGCVPuegzRj|3h^dHwh$R1 zqeMn!@4Z+2&Rfst`~Ci&Kc3g?>DBYT@B13(bzbLjoX26(z|=?hJ^}9}TP%JoceS)!D%}xHRYaB_z^dUP-|^(aDL|v3>&=m}A>4on5wgUNDNj zU*dq(QU=n$tBt284@>rd*WdyKl`_y6zFj`wdAS|o!^y~CfZR)i5g!Jk!-3rB9qLwY z{#hFU@q#Ei4vGF7aGL}IBOmDE@2>snh4i%UUuJWwpauLwY+bB`UL5)kQ#{loOz z`KhN^wc!5(5YwG?A-Ge1gA>$jm(6UCx4?{b;x>*Ra<_?(1dd zx`33X?)-$2Sh`{@Q@TF+phtyV6D9{jELZl{c7Zmy0oJYzd#<`^n-sOzMV>T>uU0>U zo7_{F!+v1cL6mQU@l6r;EMBvETjbGU)Zn~QF{BA3FA%0u)YGE@e$MrqgOK~ciBGW# ziNI}zu(DzSzeBg@MD(4I&Q9I0{h2Ly-sBYWLvnh06)+eT1>NakIH8gZUBXJ_HJoXM z9lGI4m@H^R1_D<%w!FDZfbhl-=VhF6`B?|8P?z&o1Dk4^h=Hszm%-gnX+907Cy$93 zB&x67yy>CcUrAPV?yHil4aSOUa0(d=-z9Ij2JZ`8a7{e~WgCzZ|ML>~90hy&8_aE_ZqisCvK!UI}h{FfSHB{Dq=LUf-h_$Yx;0 zwgJgj1+Ji7K8t{p%r(@)wh95gtcU;Vs(F^B(c(|uKE%C86oYXM$VdHIJJkjgtcF2m z8Fa5`uW%ae}me$Hz}Uv)JD< z&=H>=6y->Mz`im9{M1(NTbxT`4pqpCJz}7K$B0=Yz}H##)kBVQZ|pKsqSmHXQXIet zzpI2>N~0$srGL4)eBVq4*T!N;V0P~T@FB6*u-DXH4BZzn3<`h6_?P~yaUTB1mt;ac zTiDYiynp^U(@YVUKflMip4d3W`?eu_bndKGGCA(eB#QFCLM3E;Xdt5eSBq?;nW9cS z(**zb2POmisbnv%=)Cxo)=Y;pt?k1&7wQu zYp>FA+_BUebDqC(8mC$A4e+~bYJ$5gP1rd7_rUt5jCg>O(QRQIxq@8oN`u?~>2iL* z8>SEjv$hz~;`rf{R2tW6YsH3=`6-ouh}P8dXjL?jL7V=VrhSv@Xoz`3t1K{NN@Qc7 zT0>O!$jl5E=Sdj#L}ZatP2XSa*M{OT%wIyT8iXed8`&`1d~jQX0vSf&^!}WD=R~Gf zh?=XIlgv`~^zVpF{M5ZaQ{`NQpS;;-L(6Inu!{pBfIv{*`H#Xi>p5AS6NG+(WjGh2 zcYNDU$oi@Hy3NPsl9a<4JHAc7O&cML<{6ijZO;n{EX=1abXM;hr$iDgynbQUy_W9{ zBa6vnS}-2liMH(v390CzbhLCoog~Jz%fp*|T`To=#rw~ zAIjpYeEjNH?JrSs3bxO$D+;n0j2{~}rMurSKQ;FMZK82;TGyvWc;(ymzR6@ud~Xh+16I@0|qUOdZ@vDyHhuQh#+UpRrd=UoA`ensLDU`Hxvj0@@2p3 z;FEM{+-p@Tsm|Jb(>TS?%Bk_Tz=@bBupvXIHGI71?^VuqIue4+r!Su2U%!BEz0rFi z#so7v$;Qm_$}9CA_Cs6~ru$b&?va}Yzq#J!=H&|LVPV_-8#>AnwI18E@}wuvG+&L0 zC{0fL*<)$~AxQJvcl~m&59X-5_5Z5z2r=y3xI!N`zSXp3xBM{ueD=^XuV`*w<*QWq zNR#QW6zuvAmXo0}^ndu6?$hm}UoB1IcG(7WocsF>-%)d<_v6dBr1cI=DUz9fZ_>?M z31i&^>(^}WJU|mx)eH!Cy&*x}tQ{u}X26#WPzo4nA{}>qaHG?ps?1}Rz}ZFZPTs-hRhobo}-*J97>9M?=Ars0#T9ba|}{x zJuTsP!-Y9D=D5c0EeH^~glG|Y(~C(;YwxBt*=rYcP>vYI>(SLxq-?}q><&Ahq;P=u zA7R8R>+)@3=lSP-ug98`ZP-l;!YQ2he=e0SYS*g$gU)OT;dNpOYUN#|^>@D9@7z$Z z5BUUPCa>|KfRL_vb`+IYg3ECl+GVWgGL9GNVBxE!vX94PIgid6sPhJDbjNT{5WhDq zt8Wg>Fz5S1Te?J3CD!}~>z2%w7tg{ws(HP$J~Z?%399e8HW2!u7VzA##W1+Xt%50% zUS@M^mi_YGoRm?xVK4FTZMwr?l7I=&MN!P1$AQPfbmO%hRWy}j1)im?pjvhtmVfrL z{>7Qti{=GR<@nO$>!cJW5}HADcT+^A4OfewE~N`j{pq*FOTS#S=QzK2C*5T(};Dx&c*se3J!?K@|3@yBWYFypHM0b3x-;@6yBKZMh4yEzys$A zGNX?gDXBei`E`M_D6xF3^_R`J#&5<>8E=U;sii8+9kj4~R4nm(i8KJ9B?cD-xJ%H# z?qr`~*G6=;qPK+ujb+GPG8nmX&PqOJ%9LlTaNrVQ)tm~BwCZmnyy&*zuK2~MuLH`l z1S7^lD)5|45qxfAz>BMdW1`RXY*9vb|DqC(8Pyi-h+aWky0zrgDp?18d)w?<2dKefI|>R^1$)1yh+060-7A?%60 zoQT`0AsP*pw^RS^tN5OmWHQ<>PxKQ~;!8cGOXhR2>(xh1Us5&*vfbBy$*slm^jo+_ zVtBxtX4(yY+utO^sM4=-nR{0yuGiGr*NgGocEAb^(-`Xct&EjdxcOe`K&!uD)=TH! z_p|+Swr%14hdAnQPrRe1$021wjW-t4rKbb;>*&TkEiTXtk%+`I;amBGErB31HY+k zF5V91AIYWLsJ(YfkA|AHigIO6VZfCh-;di+ipOD0BU~`Y*zbg+^I8zgt>Llb zC;i;YHaQ=)DDvTdTma9C0xs;5sYx-cYSjdlrV7Gg=H<^5$@q?(V-cks+{z~yynG5J z9`RLjmqdAP|7I6+Fwd5{vCf97?TwE4nh<6WG&1L!P@Lyk-O5UHr;lnreK8FdJj*kb zRURmWY09$LeBeBd#W0{&)}hh*C7~d8pT5VHV1v-JHCQRUL-wQAIODsgHe>=aF2I!| z`-8#Q9<1cn&&S$o=kz>WjRNc2w|PJ2FXz;rM%_-nNJo(jj7rY>vCrCuXFSgZ&CF2C zuwX$A9r!-XM%;gdEagjpy1sy^x+WO^n*B5?Jm&5(u=i^u!o(=62XmD@f<7-}(Bg4e zp_3xHvm75K`(gnDstW(OE=ShDt-f-r_8zA33y8dIWZ(BaKctMd8U|%?N*J|weXJBv z*%2>}$@@l~Wp7+g`AzU_+q@M7X85PL{Ag_9++61<%2xs>lL~$JNg2pOiWeWUHB&m9 zZpN}{RK>n}u#dM-W+SfcnULH#zb~h+|vN_lDq$d5EpI(ABTk@b>6~<0vQhqOIL_bFDS4Q?xRY9p<@eu=~ zZt4k_2l58A#0F$*1Dc9VUrjU`KKw5xFv4gO!J(ozo>q;&FtMhm{B;`PeC~^gze)_m ztj}wv-fEfItv7Fd*q$})ddHk`pRme77vVsX>5h3d9Fo1zy1$^y(#5UKVv9qLN?~gD z*x7tr%~W<0)Gov(_m3gv7kfKZGT_Q4p$)TdM5)18(feAlv%#G;FU^q^MPf1`qv-9m zx#npB|8_Im^m+r5KVf}Frr9zf-lpIDAJsn}ba~HcVQ3gspX%ShrZGjqEqSEH9SU^t zYCfRaao2p`&j>%CBwollxWTn8k<_yF^8TL(wuJ@~q_F(Zw!W^L@#^==uhukj6~*M8 zogxJ;Kx$`Gds>V#T{?EE`Sj;~a_Zcm`MXys3bpKa=&4s^!{CILM_6|F`wioR6=y*| z5*?Ao$fTr1I~12`Mq;cpGxDvcFkd5lz^H`5Gi*JkN!~rQOrQMi+bKeu+tQgAF*0WAyD38|x1M)!Bj3xQmVNSKof=hnzJ6`TWpL|`g_?QxiP89O zHLn3h5%##kKrZ2p*$|~(&32V%gbJxZ7kN8`KH7Gz{x|v*mhd*I6eXYT8Xbp{ zT&89v-WO-k+VUdXe*7R^JVej&$`J+bSK=g3w&K3xs1_gh{x{=2)akM-1irH(+x`xr zzIxxPA!q2Ti#88xYp3(!ren52(e67|u%=_|hLK3}DE}_`W|z#Fkd|gR!JKsIT-@S- zMTS@j{R{kI7p z3IqAr!U-RrOYNa&J-SNnUV=}Jwbn+I$RiPU_y(%}0X!U})ZBLPU$I@Sell=Hsrkhs zE~atUn<+OjoLb{!o}#BQNxwI*u$V@YXtO`cTbTcrnLxs0v;^iuv@+c2q4M$0d`-DN zRl%q774EIqXhCi*0i?6`gW%E9CwQ|00@y8>nCnHdD*QFK{iaDf<i~SWmeF zu4c(gIH@`%6P~2X3H3qzQ78*EJ`WzVn74I9rCt8Pe^*`=(E70LY`Kcw#+Tjpt$LH} z7cN8EM=BG)7dRC{VapXT*r`0uR=?b@Ofq9i$<3&l*;wolm8N~^-TDW@)34n_ZP!g2}6$NkRNe*#<)HmOD6#vsa3MqTC z5ILo>`ow~ap4I;O?Vr!n{^dM0-`zmeo9eTvpp&z_ta#n))@5-ILk?1Zb+Qn8(U6%Y z%YGAw2@K;cd}<5TAAddQlYVI_YA~qNhMt zGiB470P~opnpLSTxo=tilwl8*DYSNx(Mdh(sJNm07XdDkh3u#h5)T5M0(u^wkdV;W z0C4)|5Z4i67}>o8WW5%sve6#K(+&V$i;!o!82y0|fQY?5mdq>mXb1t&wQ&6y7$Tpb ztf=j{^)F|Xe@WWkh}T^E`^hUi+ODQAsU-Mz1B`>x80VVBSk*Hf*L)(Ri?)t&#EQ!{ zU~bK>6iHh>7n)TeJ;pg4lF{pWPHC<9>)VjBrCv0Cko&_cMT^8s1KmRvT4p_sC0y69 z4}cW0s+l_gMmB)JeSo^657fVwH15*p-lcbs=QgZXN1?#I(_rOCVbbp64<$fo(a=rH z=|2Xj&R>Aj&5Hd8^{p15FY>Lfp>uE|)V$LA?Gdih?92@6a0Iv#X#d0S8MJOEz^YNh zq!)1-XK>wvy0vP>o`*vPVk~C|Fkt$qKNYg{zppPVh8b)=GNbF`G`=+LK~?V9p_F9b zw70CctXZ|z#47%(pAb+4gA5EVceU-gHJh04jLepa&xqXpV3HFR{^zU3?GmMCd_1Vk|Xdan(Jl9eSF%m)OpK%X z1tpjI55kfaAGLe)lmF-*Iv4c#{)D`-hOwVTVfzC!McmfoYrvk zbIg1g-T9_zM`-w|s}|prKoq*Z{>X>&;*IIJ=1G;bb7SwCR}>Vw8L9eRX$77Yh>}j^ z#Ho%<=>(#$>z4&hPn$zO@BM|TU!aj0`CU!=HGC%4I%ph|;GY9mOuReKFHBSn8NaEn zP6h}ZA;-868MT-A|Ft`T`h3z5!uG+&Bgz4k1fkY|x-e;&EXF>tuI7IfQX|YN;PTCY z2*fmqdvGuw!7sWivWKDtdIQ<@U{VOe-1$Jw<<>yq&XdAusZ-f?rOKP zvJwDz0s|@9Bd85veQMBy5Aw#aJy9ZgQv8^7&Ywxge7C-i`PlssKc_3K=02zM>&O9F zgXQ92;u(m4idk!={I+UTzq{d9W=HvyV%SX!-*fS{V?0ZW5o=s)*d`cBIyV~zT4)}G zw_iS5+Ux9WW`HPK0VCdrn)Lznkz($5nVdWwTABgq zej31eHVQ&g{BwGMELF;Vs zN-{HJ_rSX z_@WxeBhi`A#3;ZlRz`GSXYVVm&#|yH*!YTL%v!lBks5BhA!sTShXkp^fH37fvD~uY~ z7z6o|#E;ka-Ph`n+`D^qnQ_Z~hSwm7`Y(>pBX-noeb`X);k6>FzcZZpsNa9w@rW>j zlW

%~N+fR@fe2FI?MLmlf!mXD%PWQ@PlmF&-@KxG?wttv@JmZ z>^kf=pP(^QoZ9wU%18@XSMhP2`ZB~p#Hi#%(!rsS*`*B!3x3Mi9wRpJMq4n|I**rE z&);9Q&*}mcO905sU`G&-?qp&{{5nAHTU$@PytEYJ&+{wHX->@q2!n*O&3?EHhcpWm zR_Z~`e5ThC@L-^MxQscsqaJfJH}kdAwHzO8b!8j@@eBS3M>HKdBcqxi?Jv8pwdNzQ zVM~6(W1NPKJp-#Y)H{8#=UwgIFXZ&k983Es>*>H8}fsRrtM# zXY%I7Y75pIKWXhmg#FFkd^L0VRv%ji_QEC7kLn3`B^ZA1-Q6w_A>OrmAG=cj5o;Xi zrqc+sC)q4&Vt=Y|jeN!MXIXxJC;(u~8`U=%yv8vR{u>0M-h#L3iV%!yYHH4yRlp~> z0jSp`$oao1DvAJgv}Yg!2C^wIMmz|Q<&u=I2vDf$+y^uy4(H#{fuIqX%d`pZ!EQhZ zdK+F6bl`3*vE6s)b1Uj^<0u>v2x1QG5_vd~MF3pf6Ui%1@kmNclm~_xTnem!_2<}) z9E(3buASZA>dLuT7H-0ey&~CtixD|9NE(tr(fdB=B zxAOsjw!cJp#6U+SCk#e##T3Xt8KU2I9;iz0Xd@9D16*}wRaJ?=SHm2*ZitaHqGnSP z+YhGDa2Oj)?V<~d5qA45WFgo8_?hjQEv5n+MfI_v(I(_{;50F(t#|aM)*CHewfNf; zDZeED8rDhNxpuWkjbnRNB+0D2?6b3Yv`tDGp-^#tP=;K!7@M3i1|*rJ>NML52U7mn zY=y!cVUB?z&!oIF%M6||kFef4!15BCj~lg1Z8gbkf5CePuUd>pAn7$KI87%4^U3z3KVP!jo)++H zCD@%inIK*gswn7JZ#$Zf%Tzl=yYMyJ7*BkUD3y9CiXwIw|IbI!63IT;Oa=R_Is{iV zR^GP_{3hJb<-qL5Hjrza`)ou!(rb#Vz8vrDj0$#%vnb@;<1z%L-3kK@-gwSifsb+I ztzkf1%Mb3A(cK)30$JM8y4kNP9InS@hn2Z*3 z(;9gA50{xu^u7ta5>wIIQWgS(8OGbE@#05I;SlBGNyWP#eNUwh z_~zqcqxw`5LOIP|zTCf}o>}>=5jmJ6_#!(}$#$*_%Df0PB$Y=}k5O;suB${`7@dwTY*!aCTvXbvmEtLomzj}TJFVblCGXBCY)a4sQ5~?{U!Qyzgm{xmz&1ci~hK* zIrlV>>p9Ril}K3e2)FJ11JjrOx7>DdR1UH4xUw{xp(FOuL6}WS4s(1rl=|4Dahq!~ z=aSr6B#71u@YJ$Hz6UfDVoONy5XCZm-$@>8*wjb4yB_k3^1haynqkN^vEK^z>3Sgp zdzykOftTpV1=$akJG6IH8TAQstb%qVK=5h&T}0@K+M8ppWY+LsJ#){2%uw#JVo+t4 z>^A^mckG|No%}SIsw9IY4&iq819W$heM6?&tOdoq4CP4@si_Ll@yE&vTCFHG zOYFuS>iIRC6Jp}?e@$QKHA|9fPD@s831w5S+{to&h3;_{e}>EiZF)6*X6|N4MOD+% z;>5PPiT=0;!}qfN^MY#U2o9&qUiacOi{Usul^Qmyy6CT$K~l{-A2(I_j((8W$%#E! zV96)=nRK>p7(c+oavr?*AV&(M#bE`BTeH{osC=5~sLF)?bE7>qBF z-1U&Hnb2dH$}Oa(X*hvMJsq!>I3-UKUAUs*KrV8FWVUQE>YXaPTso$Fw!|{=(s=El z-6N)qZv4ECVRTwZDW$1=rpzBA*$<7Q!$|lti?AUm;^>cw=W9y1B(UuSl^!a2eayz| zZUmX5{&D`YmJJLak0zKH*Dy@ly!RT$S!7hvzU-Z@_-{NM#0{u#Wk}#lFvkcK$!IMa z^j^%;_7_>+}VK`dkxpZ9%efyeL}v zGQSb@=c!N!Yg(vwu>F-2q1OvuzkQ|oD6o{MOnT|xr+r2q*}XKQkZGi;`D?9L*z)bw z`&%sPv&$am@tQ}`3BoKcn&wQUV}(EdG-Hm7faE<(*qGs5lZ#yE~ z?FTSsYk-y4PAELIGEMt{cREhmCySg&6g^gXBMKaf#JB~r+iU(OVxI>-&5=!4Bjo2r z1+%ScA!J`^c0on`+Tl>6TfZfwmRsI6X(i6lRg*D}~by#Mf6 z#a}hG2=@?!Ug4Sqd$#>zp@&v%5_kUt^z=+l2M)gEx!)xFNmW5VPO#{yJBGBzdd|F) z%pzVP&l+Lx#gs-TO+W$kMo<~WPw6)SgiDfMLBsfLy6!uH?Jeg6rZ`L=bi0ZkUlI{8 z6I*Z(tFOyclZuvCAQicJE5!v4xjCQRJDx$l|7eB||%e6~3-;0f8FL}`h z3s;6$g^Ek!U1y`f+r=mDgblC8o@|oF;HJUpC!ilptDCX&D%I+nxfZ(|1Mxvl9lj(g zg?Oy$MwBBq>1(=B>(j&&hJPn;Id}%rYS2mGe2CKH+9NuMl1He4uSDV#2{iZLQau+tc)+{d;>@&s@HMdikF!)BHQn;g}1O^fP8 zr)$mbB6MM!wi*N`=a_xgVr)iQR{nF~5WEI~Gy747FP9?2LkOHcTLsINKUo5r9$7&F z#VxJN?LmcCwb)>oi%*v)vqXO9y;C>IvPADf3gy@;?TxIQClv{Ey9sUQ;&~!25$1K) zpy}Rrmb3eB`yB9+3`QTD{=I)zQ~nQLKLlyuw%G|%ln=Z}!>ERG_M&vh(xnUh*h@v?F$U7lWxq08u&pAUIi zS(`J%^F;qOD?Dhk?@Br*p(h3JzBPJ(CrArkc3% zxdxnKckytWS&8d7G2pmUswqoJh^lc~18au~Vw63j0S77Nj89;kZib4y{lj+VWM)SW z!-&2=wB(H)@byz#(-kpl$FFWWS98u4@G8Y$2;9RqH6q7f`YaPjRMfxsPk@I8)ZLqL zh9z^ggWjVrT&C#1iR=^I5K&)(N2FH0_eIn#vF6}Vc~?kV0$i)RSpNB6>ZklR!PUwz`e4~!#UBIa$c|@Yt}Yu^BW5-O!OTN7cJgkRZOj#<^OR3no^oX z#=U~5uf+SXtamu4Dhqu&L>ol%mOh4Nl_u~}!#ZTlZFTSE7l zX}7=BXR4j>%*UliwM-BWy;v`A`rFTLf=jr4-ajzvJjHy|CxLB}s;mFFFIOG#ekL8X z(2|J=BsYhJ=0noCMZw-TM`D2I=K>|=;2nYS;7qmEB3oa1*`s`Z`mDRWa#F=##^7pi zm@ub(V9$=49bkUa{hV@sA&LZ7N?AGQG}(N3EM}|Xn((yUq#8rdotk?==L5fEka{ti z=81HVEl#W`aBM=7o18^VVPg*ORKT>x?DIEJR|~eYm1v``x}q6qBdvs**C7iv`hFoW z^mn++N9w4q-7i%YqS2`xq1IOJ$$_OP$!&t21V>t*9zTUEMMfIj%`I~5)EFxP@7T`= zih6mm8MKX!Jt@mW(?aV+mpC-T@hpuEdr18r0zFE6)JI?7$HxKog}i89Z{<(d;kJjy z3W^UY8H%xOeHZHaEZ*s@-pEpxNW<5*R#aZTAq~j@W~ZD?f=bx(Ng4OmqLO@mx_oD? zhu`H-65>B6Xn0}J7=GUnN`Sk7fXUFbb^N8t^|rpy-IN$+xr>r(4b1a#y@9>M4RLrU z3qCor2k(4DbmPtA@7Ehk1eQJtU%%NYj=p}K+wym@u9n;CSPGP6>)dJESav0mlCiSN z&(+J^T}nyp%`_U%EgOpMk@c1VxCP<$ttN$pkKD}{D7n#!|r8ZH5od?X1w%FH*&My%}@~t(n59l@! zT}oGoQ^{)JmyBoj4ECKoe>g1@Ib|KZgxben7hO@4{I-(zFVru9hX*;5wVh)vaJr+D zII{P7pbby+M*^8eH?AVtqN<-5ZVD)KghG~-b&`m(am z8?s+8qHf&p%COUV!~Ims8^e^{$?i%Kc^Tmkk4v_!(Bl*wdW9MBoMn*off5@J1_@C} zmr3DrA@rpPq5b=A;l)A|9u#&jAAWdP>Ahts8w4l-%BunX{Q*p&p`Ucsc^Lp0TG3o2 zb}9db)Q_A@nTb(vHgd}6Y>X$cqqTp>TW2&$Jc#otY&1YlOUw+fpzaaNOE5rO$6Zqs z#WH$zgO#fGI9k&-K}vz!*<>ek{&K|D%NO!I@|07aqRXEA^+CjgQMyL0U_1SyckT|V ztC2`_ngsL;v`@UC1xE;d3Vj9rS$FV|UeKG*#8sdh?@MQ=i})E`RQV$;GcD$9PKhvn z>-7s2E8EJE_`d3}%Jjcz;&!Xwi+n%k6)!z#@oGdh46?Mh%+r~i74Nj}f1*g?B%;QY zWQnc9{=S{x*7Lx&1n@v`CZ62zLL{w~&3vU8K{^8^_4`Lw2!rAkl5xP|%mCGz=`8{4 zWTagYP#Ndx*t;&^&sz$ugcyJ#1cV|YxKYw4UN2w1oF6J-gpMkA$ej zY|kS-^O`3HL&c*7erXX8a#Ta&lkF5k=@Y&hN$#7|fR z+Fu&+1=-q!2fX(T4e6j3T(oxx82?q83jh{V6NxYLVmvuqV0#%CxA6O;IM8d%e%E^= z;3{FEqx`_Pm0<_tdpZFgSil-e8>LYho5bczkb&@QKc z8?T4EOop-XgWSo<;ZUQFj}(H`AdSSJcJdY~_sC{Md}Ki*v9hCQ?`V`G{636c!*tQdP~k>AeIYG4IYphb<;(*jEy$ncj2Bd|V>yrVmM39$G~B)zzf z9Wx)FM&M@2{=SzVU}T(HVamV?6Vy}q;ya} zplydMGxlE2@eW99uxG-s6?*tuaMw(e`GIS@Hmah!S`QO!>1P;fkX2(;ZW)QRx`_dJ zziBqtn^A&Be|n$}O>srgSRefugs{7|z-+-96sfreK0>R{P7t|j=)#yCvw(nB2AZ0ZX6+rKNfuZEaZ)86Y{BX|IJ+It3*q zW+}8N6V_lxNgdA9W}G3A%6`b%6Ax#*#wN}v!@y^59;58Vbpln&(Wef=7x#^>Gj_OY znzQh#1ixB*$pwWTQYNj0@L%Oqys4fD`=ygvC~0tAaGD=EGW&K?J2<~+P8Q&0H2k>ZXV%xhgu$S;bE?#^Gk9Mge4C+Lt!UjB?3212kA5zIyue$4 z*D;`rFzdF%&xYrpRo|!oKi`-;T7@V1N7`uV)YA6*!?3rDt=yi;xNdYWd&BsCj6V6H z`r4n!Rdf2{gAasi<_*QK7c~oupGtkXr69NPdLU8w`1{U1;jQG(gv3OC(8>VFzEy#3 zW##T6wUGWi*?9d{&s26e_arbIaL1wH-x9JjL{YFW1q6_|R)H)ba|wO9vBz^rr||eS@R#+xPEZ zIy%M^?>lh#`++_TXdMaAc~8dzPD^j-`c-IV%1rVf&UI+Hr!8y>#muPnC9s*VRe zD-wAN=YfS6FWj1Crkbkl^Tr2~g@EE)8J|Cp2RF)KGe?BUi`ur=QdHa&EPCtnpqQ}g zx#s5zC?;$+X5-!Cddi-J;fbr|MH1WTFK2IS4r(>t;F>;SabrPv1rbQfd`6W04_U3I zfBS_N&{4F{0d$+P!6gT&HmGD6ar6gycO{>DG^qK!2GS;CV`4@ObUL~uk;IhNX?OgR z&%NtHqwJ?RgYDkcc_YsX`984$zgjmQFC=&;sCKZhunz;wcxPP3d72urNb?L6N)#OC z{z(s7nt+`Y>-GPCxmLvlz-D~knksjeCsF+Lp>0XAWJ+J#zvsv@-49-R4&H0EmdkxF z9tRLpvRZQY?ZYDkNG~2v^R;IYJLzx{Z#_pK_V)ih0qoLPd;V2t$&!!{xV-jw_glOd ztIAExHIk{pObmi%av4oS0^LC&L!GjC?_g;rx9H-jDEM6-@^8~B&hufVzo$%#rHlNX z#N%uXh$Pl!w0}7KLR!%y3hoZZTTlL1jh(TC{L0eoeY4GDahb}s=7}!OfoeU%D3#c? zz%PVV1MSQS!yKChoSqn`P}hk-9w2H{=F{H{+wf>AY5K~NBAubOVz;ywkp!5nMLXU4rFEM(xSvpfGMxd*|L=Z1 zT!+N?oZm|h5)66Sp$!ix=C64Cr{-$F4D~T=KsqDKn%<1f1G{0n)!t0%N?7i8(PHv4 z#R0`WUF2V?C;}<{bM-fzv?M>DBaPg8$>AicNw)Vx>8nrtR2%_14fpe1$?H9#)_J2T z|KSNXP}Njsmms*%-Jx5TGQ5m}+bv#^%lP(3`nR_mn$~PJ?VP{Ebi_Hm zkK?0?g^3$ZD zIJ$O+rS5G!mi|d;!;MZ^M}jrHyd~79hRvwa;nZ403J99itIYn*0c$tR!RIL(%}HXr zO7@`(90M8%Gjv5cZ$UHUfO)K}%4{TlW0s1zm9~8?u-%OFdbaHLpQe2#oYaI@oP~?& zRFwonZCvLkr@TGJ%|G(OQMRK|B^B(;Z)V+)KE1(<8KQp)N6glY@6`5%{wrYO>68LF z=>I&vsHbrLRa@Mp!K>M&isPwt8Olz8eAn_5Zevjro<)SB;>Btiy$sSUKh+n8Bz7y^ zIJAsL?JmJKOc@dRNli^q7QM$n`gCj^`Y@8`jMx_nKR+ZtKL*%b9 z!FW=-TU=7Rqbdt%yYhr`;2_a;DAw=*2tTx9eU{p`2@1onTgvW7b4p^7O8$X5)&k+h zn1>Hiymo)bug8<(KJf?&x6^FA9($!!%D_b2d6`5xfsc>}|Jbub@Gr`5u-K6)!?%ww zRzSPv{7ibzHL44*iXlLq86vbL&whqkQdWI&T{bz~p4b-6#B1WVc2+#VVKPaO9?02^ z5>jEn22BAW$$V~6urz3yp8eUgln(kHe!2(F!DMH#LUq9WeqMSqYrI ze4eQFx6^Uq1oDvnrq)ZOE6cE3f(TqGdx};ou>z9<&Oe{Et4odlv$#${@@sbHu=ewq z5!`^+*^{uTsb065ER}oQNr_=q66=|vBbCRv`toIR25JBIu^yyy1J^SxFg~>G_`ek4 zRBqB)47?9EEgO%;d&(mVWWw580#XP3AzCp>gssml5xSq&n*aK>ubmRT?m3>`<(7#Wq;zyx{71cQFK&i@?wiuM zCFyg=(YCk1<6=Qqj>eu9$@uEvE-Wx}R;_&6@&oD>Dq6<1vZ$1j+P%DU0p+k=!?8>y zt65#o?%B5j?=Sg5FWOGxOU!$|@nI@{eqlyXCy$$oV+$-Ms?TZ8kqLrbnm+wMP&)Oc zmIefsx9fDxk-L}mv=Zp6oU}*dA8?gmX#|}JrMFBljhA8*Jy8EjzG?)2ajprP zmb1&N>l&7XKV+&sxscnTLX?(8!dA*oG8mSkwWD5D{?AL{I|UHNFOg43%j`ugYF1FWa*H zLw8ExitjqdYmk}IC==~2{=&w`qv)VCjmBZZ$zVfTrjzc8?sspOqfV=)^Z1@Z1CFOt zL^B}O;q$S6B+b#kWA*CgX9X_dUZMp1%BC-*n;!?39**@Oeb2By%^)2YsCu8Q8-Vhv z?t!iQC6&DEVG@KvOs^KLa3c|nY=*J`ZoCgOFGeCtR6W!{^l4Rw;&$!cqL+E+s7 z9GdiF+lr|gV~xukKz(^g}9{cV+RNDD@=>&urkKS*2!D<8b@rBjY|a~8q-8Nu6P zk|_Yh#p3^ia9cypZDeAaKrkHeIS;7OdLj0JiidbWYs(;fPHXyIrdkhm7F(&|cuF=|LnnJ*k)6r+XJbA88JGK& z5trTwlJ!0(a=28k;0kN>p{(|}5ou5OiWBRb?ZU4&=r9c08Uvy%>@FF?mu!BR(s_{1 z>5ZW57e$jU0}O2nu#4P0uCn$-p1rg00#BcFW$C-K{cFPkVd8eg8e5l!an;H#6$|Z@ zi)oj;2IDqzr!kEcrYA?bDVNzyn3YK;dM!8&950l zZf?({E-mbA+6C3gt%t2c(YOTo7P(N%c=|u6wcrMf*|lct%-%EDjy*4IW0T5hz7MNb z*K=O0F>Xgjw%~6q3Fp{Fy2{oTp^A5;;ZRolI28lQ&abx5iM~ggkRsA3$A*Zpx(IeA z5IS>C!<|HoWH1DB&T~})|2bf5-PmPZKg#}ph(>}pUQc>6vQw$;EGc5JOI+=HjGQp` zv*)42E$c;Ay#+KSv`Qp`A+toau&_7sh=m`~x)kSK;nMGXTJVy3Gpyu8ylPWR69%3X zQIPwsD@DSPx0Q~H{zGiSf`wQN$Ve$IE_7xldPRRM_y}m%os_GeD~p5TItrU+MTi$F zUJEqDA7QB3O(c#ChW-c=^d`5!U)Kec&wBnK^+nj!pNM zmfd|VcK6wIK52V1%w%LskcC>m8*H&IhH4}M0D)QBm(tbc@q#Z)_9XPg)` z9kpTtEO*y&bNgSFH!=z~ANH~N7pp|3LRz2@m?c}o%ce4Wvn@^KN1w0#94WUP4Za~p z{1s)b89BDt1=vVg?*%Rb-0`U0S?uO+eV%FlVx6d{XyLCO(=jbQy`Q&Gz0TqxHYc*v zzn~r9=;(8@pL*ITrt;q{F$snprxvJ^U>Lg~ua`~Gy_Kk*?Ifjcua*7X@VB1dO_OjJ zmKfA4(XDSYa}l9YSPVP8ef?R#%d&5}+XBGgpsbjU&5%cwQam@ko6rlON1iPLR<~hJ z6^G56j>aoF)37&}|0WZ>n!T3)GCGD)IX3$8)wn5F^7$K7hxxNd)on7I7|VHPw4j|{78fYg|TIN#-2SJGp*^z53cj> zjtp&Q+8b+9d<$sIlpw)hN|I@~+mU2nAN$LsQcyb)?7R{H=n&TS{(f)yv9$-d>QGnH ze-bo<1|k>nr+jU4m3gw~|5uZEjMT^J(e;5&rbX>{=~*$1{+d3yKPp=OSg`=#Gk?9^ z6vxNMerdqE=cKIlJTpfe@f)o%4)Dgr~ilV&|PpDCS=3?d)0A|Y9+o7}-9k3_K@O;4HH$a)B zUTmBaFKpiwS;PT-gg!)Y{9LaND}b@T+mfqlzI2kY0U(a+w<*Jm>e;#dxQW;oBjJ3xBD@BgxK|72mSdyOO<|fdgWJb9^yvd}JC_Fbpnlf62*I!@8B> zw$U8R{tR`X{E4S|Ip^9FU|;~69evOu=B1~n<|JPAFUF?BL!bV?x9N-G9%kNmZJo~F zwV^x3nXLN%n0oJcuJ`{9n52j!Gh}A3>|~R@g%GlL$=;b|?>(~0-ZHX7_7*8wAzL)Ue_rGHysqncT}k%V`YSl6W|aL{Ot&Ab*iA9!_N7JHb8+^H zWyq4f_?bk53>az9b0n~Iz@@b5vQ~_XvJyI`NWIk71AHfNp_7L1>OhHbsd@5t$<_5B z95OlIfa6gkMF)w7Dq_Bh;JveXf@9o2UIWx;woo51Ew!sXxe;Tpnem zr>FG#XVc|GJd&5Hr&u1+qT~Z=ONTl;9u3`7mb$d%-q%BI+toR3Z}3AK%o3XeekR4U z>g6;a61A$Js0a$m2rd_kCc7GY0}fT0oSC?UPV=^EVB)tA+}$M;Z)#`tg|-EA{e$nQ zX3z)YhSgt}!l#BapyA@CIjwIO3ntv?1iJ3=v@URjEF5Q8yl8O8e!nju>QP_0V%yhE zH(+7(J&FS*NTw!-KmB#EhLiyM!rgcA6Ikg2n>_t@zF9?q3oY`IP=Ju>LX`CXJe(1) zvz<+OXh&H$>#CP%stO}qls@h|a~m0dqyxZlG6vxMRIsqK@4Xk?nXm(ZH^YMmi3sj( zcu{QYoeV#53_P#)_xI)GJv!W;O#@tR6pW`>dOSZFz?=xF(*-zSN5hPnBUosS zf!kUN50J*`itG*7vqp#yQa+g@Ko_8&&jL@04cza6-LFT+hIWDIPp~nuM(U&m1jV?# zc9GRK1TqK|ij@!bYi!>IrtKC&ikL^a{9i*!;uP>mTuXoD$en~JlDo4h(f3;2IAqxe zs?$#xzT3jR+`9ccKSs6t;mY}07$&p&bwbpNZ7+7*?{A1y%)bfMeSPnugjKeEh?t75 zX1F01aQlFh9)MAlBe-Q(gLQVJ>z0C+mexrn+6`=@&JaAX#JcJC21l?^=Fdc#UJpbH z4uEx4zu5Q_Mi^#;xrQp2-!OE$vnMcdMb$&K^CC^zk)1iXFn};j!fdh0#!01+$w7bm zSb;H2%H_{}3ORa;l$R>f@98GX2i~j2ISJ4aI&Dn!od{36eDd+_)im97ewkG{ap4M> zWxB!6s%1m@PWjQF%jP*oCnvqtpLTv?8E7u@CoH4*T}%VP*6| zXwx*gggZ`0&ZpJB`zJ+-#Gz^y2_y!*oIkhYB)lVX`4vNW&j@ITBrbm>6pV7gSRfA! zN=ivfb2yT zESwh1aRDc?ER+dpl|Tq6!$v}8_5QW0eF`%asP$KuXW+Pqq_-m$y?5?(gFU7P@H2=X zzW3Q*dQnkPjV2gj0y+&HZ*S{2ptQ&s(Am+B*v`lzjBfB}sDKA($gJ%u*rE+Pd%-j% zHaUL`n4NQb9oxe{lGcv{w|h9GB1~I&>zbBkXRXiuV`xO=xBmY!FI(0uxq?}Qy#=>ZtL0FUBzwpEup zj9ABl9Xuz{f-8{^f9{Ih+5`8}Xs~?W1uIL$8u9A#0yQKm3bv~N@`0V##Nl&-gT8qF zTX>WL;4n958ot(5z$6&B493L8IsVKF4#6cRmIa!q0R}Kr_#I607b&BIkux2hY7DF+ zYayifi;32e)BCJdi0J+d)@>XqVuFHi5e9EH^Hmh`671*2|H7fMIHSOvNHE2$hTSRq z)(%%|I-sX?I6LeHnxQdtKmG;88aMCZ@Uy$?VGOV|o5xTb*Sgy#NNJ zfd{z#rS_#B42X1sTR4jQX60AAGGy*Vr63+mQo*(SDL8zCK^Zk*a7#cN=Yb`61PRx* ziizJZz&-kBHXOyNEoC-yEh2S4Jy|)xy)x+p{+bm8i6S#BIKgkg2N8*7pJ{ON|4M-a z?;Y_r1jlv)Lc%37m)Q8TzG#x<@o<$p1sy{;&1?^F(Vn!SNIY&Kdz_4z(8s=gs}Onj zfur*!EL<>p?LwXgT=0b{RrA&GA4A=JGAQmWTx8hGGI z*4C_0fc#R1*%~Ib?CZ$$fkQK_Yj%yBpTUF>tO5=5j|yOQ9~^#FJs8(eHQ(?%uY)LK zBoP+o-IU-HI|yd9jAEl8f02tT_9m5A3>YAuRIM!e3>Qd;-VoRiJALC^& z?qZS<1^eDq{4%BQ_yAV0o`GY1=c0X|q?S38t%-?=MHJaX6-Qcr{-@wA$O!HSW8gr~ ztlwAzS+0TuP7vg05ZJ1+*Adgfxjh)e#h|XX1cyK&myLvHF5fg;reMfB&d(2J5)5tg*}!Kv z2ILG1_VypnfktjQh50~yyjb8>6cCygY*t%-1Bb;9(YAjn5b}op{{100VLm=B_*Ka{ zXMIIKemn((^>xZ7@nWH8`}H04WaR94!HQ#-mvaY~p(;tWcdj&^_#k%kE~@hKecxI$ zz_GnZJufUEC`bY3Tk~LqavxT1FF3r92*3#04pDGNto0n26q-Yr?&>TYa&VyOBV@J* zq&0Z=9PP|;z=2o=2_thYV8W{qicgQMLK>Q}LN(e{Wc#|3@mf*C(4l+2_tA_~G&ZI1 zk2u}_DiuE|q5;>|zu%}HJWmJ-0lt{ZqH#K(8<}7rNu_& z44DUb+FFg}Vh*KQ&Q)l&`dnbyW);mfdm!=J?K~sG9Z(s0^&msV;7bnyL@nNos+nf6 zuOP$z*Xx%LZGLd{UrUjEqE>i)$a2@i+&!8>1Gce z#AUN;;L-y>8^&pyp)zV&gmdLkIRWzvEabT_e>S%Zz%zlknbA+untGzHTd!`b#Jv#H z%+HQas6_o6A1t$uNwL zrx-r?Y@5T=t_mw$D`1@Q0*eOZ3W9w#;A{iBjUP6AwyhVgb1lH|g2Vo2*jMeL1dJG% zn0!zNM^yafar(xp^!k7ZAzA9$QZQIJW$QiD%#VeomiP=lu6kKV`U z(y(12WZt694;3m0wMrA|{-pZ@kTei)T~*KX`t@sWktm1Swzk2mhh$`Ais0>lL{GqM zW;0YptDjt<_M3sEYZ#P&nEE%FRXggEmpfaV+pD}hy;eHyuBHQ=0(KqUbdfJkmfe9WnAW$@r<%xt!VkVvLb4_Lx2gw>15eqGWB%Sc{Mj z`m;#m*R%9_P?b$DJ{#3~2W}-xODZ4LFH_z=LK$rvYGbYC4K?HD6IA*cIEtgC15C(Hr6 z3?$~^77@$R+6?GQxa@ukgCZn{t!~71G4kP9lbc=Ut8D@J-4Jua_i)ykfK|JEsbMv< zgG3SrxWQjKvm&P&JS~XRZT@1LV#Cd83V~6GXvOQ#H|^ALD-gF*0GScvr8)%BJ(93zK#qhBHWEm3l#EP9gD5Lu(rd|0HQ??E0G zR<=od04B0Li3iIP)CKYg^zYC*#I8Ivx)a1$Hk@7RCh-)*UC|w5WXOf`wnN*W(F5z{ zXmWayX7tTHcap_uPme@gYXf5A5dS)Ic8{O^Y#YxY5QmYCEdnYF*twdo-@NevpB5+Q zm$r8bD|7|>5DbC5myPdb15h0Gg9Xgynami;Vj3qmFKGP8{RY|PC>W{=Zo)bE$91+;IrLL;WqPVxj%6dHajXRDhgs}U+`5P zsbEU%(p8~y`qAjZ`f$b`?Y?eJ{d@zYvoo-l_|<0r5+KhYJV}MpEoGV8PosvF0VH z>x8)~(grJbE+i#sS*m?^s$U{&Qp9)i&d_Udq8o7bU0#c)dk?q|h3)!$#aj<^w}Bkw zPwah@j0Vu8q^>!F^$t8Z4YVg!@JgK+Y|rXICDo5OvRE6s66mw*R7oLsv(kjSFeNy# zRGxz`MvFIWNT{4FKsc0<4l6Ugw$5gf1{5l>(Amp-dNx7_U?$)&2i5!aUS8(e*6Pi< z)~obJ_%)7@BB68^O)fwK0<0uRfinA(69a8hAJjd|P+{%E{CqDQk~|b6+dfrJ7TE)A zSCUsR$+@dHcz6{Ptk9b# zAV=@OE0Hsi-%#nqBqR_bKG*pdu+!q8T0^R-l%21ySdu$o3 z`AAh=dKfVILK2!8BxSW6r2(9g>7?S?;3UD=_(Y+|q;Xxuh&FF*S5X9u2|iZeZ4!$UQ70U!@)C-3l&jV{vGtA@Wo{VgIS<)_?uF!U$LMw z&jQ3*V>Q+qC8kT$=tA_DU8ywwILT6i&$#KQ=zD53evQQ?tAr{>PH!ct=PC3-sZtsh z$4K1oo3D}m&blB#y({gqN*|k)V+SQ8XEyuxIgt~eefZ-pt}M@n2KISEDm2Ei_sOkQ zDdIP-nZItvKGGg)RtVwUqj4sZ9L%&B+{mEuAe$&3Z-vBwP@$dXc<61yCk$QChRT)WE0zn(@-Mi0S$Q1`SZB;sDQ*`#+(z2jqOb`Rh7e6?$ zkhF!8oF#eJ6W`;7o0ML=pCwcPimWzD0@!Swa)vq_4kA7rVnQ&wmwSFE%~my zTVp0D61POAGCtJJkVk%!LXl#is{)~h1I3_$|2hdJ>#aFC*5B?Tbg2H;1&(#ROnw+U z*YN(D6=iJo3Gi}_0rF4MQTR0Z*;Ym43Esqa8y}c!2uCW9{{46gCpz!G zp(eOQEGP%SL5~?7jIOn+_C4jt_w!}@K7|0Bw$+A)+S6MtGqVX4-MfbKn7-z>b# zaVdDHaXxsZKIRu$?aGnI_neW*9_scA)-xfX88j<#`u7tP1*DgL$Yp1zsbUiq^@;u_ zFq{wH^HYg{Ns_IkicjsPRs~X(47>EZ^_H{p@u7;!m&$i(Zp$lnq&-mlZViehv+;L$*ys*!}m zRJ2m?&3@CFAE{O_e;T|tH-n#CK|09WAu+FgN+GM$@!Qx|9EH~PVIJ29?uQdMUWJGe zg;blNi1^<=Ph=MDXLGHmqwF~Ijx*cqtX<*o{WeT&N=KQFQ@6?8UN53tbRMI(sX;r) zRg$C62KqxqKtsx+-Y4wmfX9R$#Uo}-6lg`QAgu5kR{|B`^4up_Rw+Wx0RrazAJE7y z{CmoVb4t02GA8Hk`*5%+dd&+uZ*C3wTh%EM8>7%Ha>|@1{?1Jx+(p*TZ2sZ*s3`aUg38Pxt2H)x$vcJDOXJB(aE$Fo)g5HYgs=2&fU#M5PMcS z{GQ#Xo5Wj8tvF>26Nd<=PB?JaOC04J+=#)Y@cWJ3`kHR&(n-AyYWT!w(ZUN;fqYsI9XC$ESc!G6ZUM=57xx}x{rvSeum$8>2~g=d1N zf49OzW*!>12hbcH2bH(H-%X&V{NTY8_Wj{#u{}D5lmCq<5673b6&YW;&r#U!kSy&y zgZhwi7qk7+NJ+6X>l+&_Rg}?h4U3x=dDAyfwg@nj*^e%c&12bBHjn~biB2y z-puZ+K_V4}ALxLUBbziv&wsoC{yU6x;0 zWGP9#q2)WtBNDX34G~qAGa+4xfYcY*m^5CGasOP zS#l$kod`k)nG?{6WJ6E{G?}Q;J!s;9*?IR=pF#*okj?Zl0M&?58004`LJF1zgg2pk z>#e%1_=tg7h|-zZ@jMzNQ#@BI4v&W~@6y=)=5f`LaD%zJQ2a&H>&B()cUSVT9(~3| zAMD@ylL^KPxqBw>B7OY6&Yg_S@8RR#!EJMY7vK8(YyjCX1sYS^w*B@-HM7#;ZRq%A z1br;wP6=4SzEkv9M(@21E5_p!GgX|dKvey6z0ql?622p5;JqwlhVeHN+)CGng zE|H)&B=rvfcU7d@f;Jhc9RObj{I*Vf=RPaIFDB4eA=3k3wez@me0}E-Nr!-%6iZ~J zOG#FNDJuXY&hI{|zp#nR9rH*BycJc`r!4Iv9t}RQPSmMYurHd1V&X1`A3kU&CwTwx z%Wx*!rwjeLtaOz{#fOVwSik+^}B4D#=vH%pQW$K>EE3I8K*s-2u3fSvFom5>bIdB1;6h!2WA7 zBvo;&K$QyWu}&oRaBs1PhvEwP(jli6;4PDd_P~ag=6eR6sA2nuoDN(lPC!!<_p;+2%!(`zK!Bpa(bZ zOvamgZ9Z!l+<5lyHG(cL^`qW__QCV<-qDlb+f)`%SLWvBnK$U?DG(u57THTwToRIA z^JMdj7vBH|0>m61xFQeU8M&BGIv^q)6Zc|f_Y8ebz>dz{AF8@9&?1yK?0iRfBsVg0_dDj>nL>f<#kgONU#5rrV%`n16QCq;491M-Bje zh*uu0m8E0RgvO;Gt8&)Cia3BBS_8iL;_xl2COP|_;IlFIiU--V_&fG}Nw0N>@}{ww z*X{dcWUJU*@_VHZNZ!)wGzvVcnp=pYqL6ni`R4KO?LN#1cpWeV^a6hXsZs#&jgFW1 z2?VJz!;6RkxVRTWQbq(IK&8?V5H`yxx3w?#V6Y|@z%h%4PjE88&W(iO966{Ka}8U4 z_94paw493DEaY%=@@w5J_+XNXcsl3vA=Y*BN=k#H0Hygpd;YDMo-(?}tr_4K#Kdpz z0tq{nk^&5t4c-JEUM#e}@~|PiCdNy&RSjNkJ(&9oP4E)f&m{u}Gv?+6AE{*#0&SB3 zu}p=K;3&tHCpI>vV4>$+cRHu3<(wPPPgfZ)a7~Fj2$lG2u*kBQhG2@Jzh?K+79I`? zfcXBpO=+W}zI~Tm)lCA%Z_Xkjr(Fy7o;|8j!$q!WQ>*Kn9o>#iikXr6_aFUlx9kVQ z5xD3qh;)Y@&>b`BH}a|q$5sbU0z4rJ=NAMC>ex;|J6ktBWY>Dp4OOKiY-;!>O+kLX zI*yNr7^WpKYjBIuR5`7x01OwmwZ{W7IT1sDM`TxEe9KJ0uoL=-RKAyYVOI$;_P{`Z z_4m?LJ40xI3n97^;)?)sg)}v<9_TRp5l|=Rtp3Sbu!>6*3Wuo(ALVSK4CA~;$w6Ve zC3dy6dw(j;MS7W%jBQ2MkMA~)^-EZIndqV%ej!RBykasSVV>SLV) zP)!Xy4Xkt|9funxQD9;#cAeZ58v+C0Lm!+fy4$gS`(lzpY!Na=Q^C=}J;rglKO?>f zmf+#mbTWMDqu`!IO86M5MgX$!m;>9)e=9lwbJCg)b^l>y-(vAt7 zWTnsyR_&)5%E-g?8xAXB>%5l;v>6e3Win7*hj5DEEa|lh5x5};E&?dJna&OzTIO&f z%z)o%3*HUL6`BXQOh6FlgViVvfTy?Hpi%1sCpS6Bi%!}S0l1)4r}{?nK%%uTQ_ z@nEVQxUU0mYHLQ4yP+2jv{NTL zsOGZa{6b&x0D6A~G%UPZ&hJ<7Ne@w*>4lY;dR=cxcm>GAx&9J;`)0eyBb%zGTwmn#@Xb924CF1ZwL~I|raK4)ir}k_it1SJd58p5!CF;<8_a5|hM9|tOQ%*Fz(rsJ zhLN_?`U(h0K#s3N7j+*n-&}wcV2T8RCk&$i4b;ey`3Fg)M64Q%a_AWa5*y9nSQ_4r zlPYmydLhLa&NFrY)&2phz|{RR3U<66FYE0Q8%wA9yu1#2(kQcay_hY++#l%b-?x*v zaFWe_=vQ&W|5-Mii?kQNSnCM%A(>7CdRe&0r0;MTuz`o>CvpKtx&f!7%}H8_x*e(E zXbNSQmJ+6nMu-hCYP@vkRJ4uioNIt67j4@eJl&lDz;Hp85Ll0t* zdFwK1P>7uJ%d)<{A$bmqzXa@0!OU?UpzqF}9zBXKj{mRTCDpPNNE2;&Kg>$~rl?I# zp7A%A!baTRqnitc&3uh3B{7lkb2--NIZN)Zdf+8_ej41&pjjOjcaBYgQaA?JoaV#m zwf7PJI~2C5cxiMKdjD-N1!e%gFn{TLr`Px^b@mHu{CX zAT;0$f5!fi%$@DhK%dll&nfeZc90QO`|$(`C0hHnW*gUfa~Z1S84DL-q{`NRds@)D z+;t&;MP^&?55SimMb1+weO(?Q_;4F}0D?E(GCZGMVKmAi*&b2N=#Wie-gWXzUOgw= zYKBwOjU@9ykT$ukwa%9wy&)!lC$^u z;MpU;wWzggIB_6*cI?|i5-D_c#0xy{xOeGfed`1>|NG^vqGMifK1?wPTe#fOJZ?r+ zx>^1sQKh9NwxTvYI?^~^_Lfi0^=>(F6rA~xJ#G=#kJpLZ(*oJJ`q`8tcqt;@S8}nT zXWn$3f`V(%%i79C6#2D8%Ci=7n6Ij4fcEUkq`o9vFx^wfGd2A``bH0ao{O|EINz<%b|oW;3YDmI$ND^;_JV8CbTV%p0!Q<|ozlq{ zR*p_stg*cwB8l7GH3*`8$K{j6*e)QwEt-c>rqy2NvS!+w4v#7wkQ2I(3coB+Tx4clb08t&7)Rca$}$pEO|Fx^wUE ziDTs6*gx;df>zp4v9Y9&xrYW;sXjgkK2U$iz+hnksCgqK15AvBe#^_Zn`@E&OLiBa zlqa3+F&mV(Rnc6jDU7cf{8YBGbk)sJE;<+$pnnq8CH;2JPlt~T4cW(8Twd5UVxMeX zT5g4+GJeVX!eGWLgF}^n`$LD>?xdtGvnKL6LSGJE(M!GM!c@zb_Dd$iju0=jq2}uB zriwBo+wX-0K%EqrfjNgi|q*wR<-o zqmF-OY;1$A*d8D@0t~@andI~DVbSwg0S^o~IL_|rMj_ardq8>H1Ns1Fl>)-)qt^Ob z3q7w~(hOW{-Ta%5iQAXR8k;#S>eN{u5Y>O0qV`cwhi4{nLS9RxK{+)Z&)RgCo zLcnG4Z4Fkg_6YCRM1kk96&5nRmpyQqEOY zt5dCjX!I~jk-C}Wda&FZSdYw4o9Lb>wEKFh*l+$R{n)e~hmo}+W;_f#o^;f5I|L5sEyUL0!&1yyK<=u*-!_K*T_wGG| z8tqB(6HGq{#IA-4?!Z6~yyjuhH74h@n*`dB9;jMImXlZQSP~A9a8)2r^MHVchAA4K z{#Hfw3RK}Mh!ro4{56@bAp^V>IC<8;ha8RaI z0miMMLo;>1gPdL9F*zeP+xDg{DV)+;zLB=}^-I9k)OMC9QG;;hpC-khk*))KYjoDS zKVBN%B4;nc71?d@fN1mh86cmN0G5)svMNM|Z4r(O=59fdWCrpP{JVEI&Im|In1CDF zdwH9jpHutKZ;-kmPy|3f_q0i?otAp>)qu#}i796E~l}^jIf)(+RMmer)_EpRH zzv!0E_Rhl|f+(|57nJZ+QTB$R1$`wh$+PlZ+tB z{{+rn=20W(je#J&#YpDXv;oxfC`jX*>0}GfW)7rD>R-TgRG_Ez`ngs8JNoVe1%(8r zdk`~9L*saU>;N4!P&L1WR$4yzZ3X9 z4-26ak#XIg@lYY7p#d>WJTOFv5U6T1q5g4H`j`r4UP8Y}up$j?+HVVSSJh3q$p}19 zELYh?Hwt(G7Dx;G~4k&2$Y@ zW#B`pi%&>M2j&X`t23p7^fWXyoeTEqZfBdPSj6mv;?P7r#KS}U>Cs~#CtywhFpfk3 z8$v>Qp~t@-6HMtT2Q%%0MTV^{3GDj1pk|??p#cRZfjG#!yj6Yz>L~{bAbMcTrr}k9 zav%vnq&|@SF+o!k2ZZv8pz6wCDlPOcaeB55(zf*rK~92?fYvof7D=s*j=YM>o!C+# zdIqHwYUnVNfX(TL6lCUwg@r1+InlYjO4A+%==hdFESm_j9bMQoaYY(5P2>W38TcSE zaQZ8tK82jNplQ;xIRCetV92`_rs7<*KS=WP`i9I19{#j5j|z+YE5l@59b2ksbSDbFz$*7WlV|M2u1y)h34>aB_>Kv@0a1V(MR)$T z{vH7{d&C|DWUMUO<>@66@Ngyofg%CrS76N#!i{wzo8!8r<{c40pq076LsBG8;@(YHmPka%#* zEbpX(OwU`~iEeKdwXK8@1R?Wr_0fK-a#Srr8ISA(=^l%(bF#{RpmC`==k$HmU1 zg2y=q&u&%|FZ|e$fW=+BZVJy=4$278rUkB z4O^Ob(l<9CeHs?a4aDSpZVwic8l1Uc)>8DO2p`U5HiPCAU`M`!*cKLLK#1A%1NaQ9 zfCYfCB|YBq^J{eE_yrvs3M|Mjuw;-^P`G9UF9nG_hrfdIxcr#_XsNs>RvCifB0LAi z+rjkdYvXv#r8^lBdPFxHPlNiYH~_L_dsQ_K_l90+RL(6~ulkdYg`|@kls7Dnb5@wi z>=JQL^RYP4DlZFD$wC(_nmX>|$vh>e^CEB3ZR~u&w;q_0Q;!7Btb;TX1;Hx-X=P+$ z0*{IPPlby4r*Iu03RXZUXKar=Mn*Q!T#MAN4wWI$J}%b5Gw-t~~B7d3(J~{RIjhi&<|D*p4AKL@#AbwsgM@QXt55=m-=Y%AL)8d!!5twxP#OvhPq%o# zl8}&a2e}i^){*BY0HovK9CiQ!i>2Nw*hd(HB#d0}aOAlyCTKlAjx(7xf+q2P-3(cx zOxoa+XGXrE)SH*ZsXv0O+qf4OUY0OC1~iB@@;%QNb2p8jA88~V5NQ^Y$__$s#AXE1 z;N-kOE*F4lhMT-=;amO!i2GdK1*G_(!|wkd2fzh;=-01bj_IEy0&gj$^T#3q>z&=* z`+#8~Y2e6Y25=K0(a|Gn8BlbCqC*7m%?}6>&FdHkB)cLNoe=@B)@jb#hbXmAq;eBq1VBG+@1RmID~hRDtZz-9^IsI zCax4c|+kzkP6KNi+jO=Y4p74Om9-u8}+`JUl$)I0wTNc3Br2 zJ~Fs2mmqiD6j&lUM#ckpC+hIG;XgoDH@vH4L}U&!IE@BJ^L*8;%yrSL3o98|&`70) z0g3g_>tC@ZucM<^+DvjIupLlV5TjrMmQyV_??BZF#6~|XRz(SaO3G<<7>unbVpKAK`L1u>SV@|tpZ&+{dUHIk^$nfG9H#Kl(9}s-gXOS7 zJ_?4h{Q7^PsOznRk~sy+b>e8;$((m|h7HVCCINDto3(l40U8y`38 zV(23q%WaDJ{ke&RP&JXUKl^Q6Y)l7nAzx*8%mVErTz86&F90&m8oC@v2rf^^9u^eWU5Xt1)C1H^tq+dX;hz=rP^rE=W-W(Ctz;IQA~ zQMT^}%y#kny0$aHkKPy~Y|?!#{K)Ip^#slt9)ux*ofU=;XpGOYNS73~2jV*+$jaVq1NyhFKPwi%rm)!gFxRw z20VSuni(l$kgR7x@4)3Vr&ktkPApUO7uS=1=sVh(@H(@voV+HTHp`yIiP? zywtPYlc9}gfqfR$-gUlLK5!%3xe&VGeVDXqDjR;6pdQ#o&`T!n2}r4KMpqUb0yfAe zfga!~#XW7n7Kt#pnoW)Ty<2!yY)rNE;BLW5Gj6^abR&Ncg>y9P<09?Q!zi;<6Kqpc z;@X5_RgwoBC>d}Mc&eV?(XKt?gJHcEwm>r8^~uTU+_i~$tLdC)RI*T?CsVQ z@32aqS>74*9hu}LbQfmOu|0CTIG2NYs@qfy?QNEA=~l_WoiiYNhp1(dFZ03UF02cX zRE>9u1LWY3*=xjN|72`*(mpKq7^C_|hhqidpjBu925193{)rEta!luGO4HcGJG>Eu z8S$~nJOYFqq9w>rBlxr`Z$8hA#-S3yDHt8q_zs8%3R7&*GQjzk=d6OMY4l4lWf3Qt z&S-7!Wl%)=0p)7RmPfb(Cgmj)Og>eg=>rRvG(J9WMJf*S^Gj4P8Da$hKmb=!x zEtj;#*RdorRCq^7n=<0JQIsCVzx)+CE2rPRYfw|Ic$ZWYq5~Osq#Q&+LLvvv0qETs zPz)-P0aQ3`p15lY7sAl~Q=jsoVdyUk)$?wF)f$X{I8lMrlN#pOzBa&LLI!<2o-1a6 z%&Ax${rYZZPe&WK`Pwa|YQbn0a#U^3uT9aheD665sOol0@+kZRE1J$^KzOISB<3|z`T!Zgw z_^aAr=2;GlhkWEc=gTQx&%c`{;MTvq zM?=)YFv4;~aRt>*p;p;lWGW48?}R{M(C@IVn0jeadg~bge>aRjmiaM=K9T;4h;;%~ z{TT7M;QIqgv};#*H=S1A_I?Q8`Tqn|{1NY|c9*vEy+(zk`*kuD5$^Xg);NTS-z#;E zDYSZPvN{-f=}`6|Vgr!FrR7AS`+;=lD-4bu*jje|{sT^%M_-{&P}k7VX>z@fXj#DC z^cS=}Hjw^xaR$iD;`q27rQy#>e3Yfdyg^{OkiLU<+=58iIGH`2YvrfpEbr zpdav75bqmq9gi5ZH6T{)QbGfm>Ey8!sY| z49*lXpMs+LM~k-*X#4lJ$hgfg#4ZjA0N6rSJM0iH7?DJ=;Y-`u5$N+~{u;`z`JRbh zNzB$=`P!PIn%@0KL@CEjL#l9k(qf~n+>s(vDcI|7r0>Rh!Si>IZP(;c%_0Zp%fY%z zcIzd7QjC&Kc2Zq$ft~XU{xD?svU9&u8B@d7p0?@K$;e~cnEJ>H;tW1}&z1m?Y#~9F zu)_4Hw}9*=HpRAU-jm6{K;|3)$$C=yG#1eTz-(y@0<(bb(NNtl!HI8$ObKEYht^|MlX8rZ7}tyFyd`=fbcs)F?Nf3`iM7po{?DxPu^^v( zdEI}7&VJjjA$B=Tb3AuR$Q~x?fS|(e?npA22t8qFY>ojX7HIPk0-r}YNC3tF)n5FYV)5LyEab^qIx0>r=`W1Zh5v4mrG zV=x^bx^<pzjcV7*8JA{q+>8t{gfK?C!;uxz=#Po48s zGQwty%hsL#PYYnX3b|}K(CZ-$Dl+;HZG1FLLB^$|^j43E!cgyj`;mct?EJyj+Yy9>afi%ggeP8KXpkv~<2BbVr z6sd@$Z2S3~UanS9QSAu`!eC-J{OkG>WK+@z2&6*%ASdWjorcS_D=6VM9IoLgAkfeB zF8jJ}HkiVN%(nv^mj&%qB}h^LZGHrI5Gc(o0IPwKqafIv(CjHZ{<2=wheV1ZvmgLb zZ0mXF0Ji}1H(#||;UQtb^erNU2Z7efUtefrvG4MRjEJ5^Kx4ZP_l%_{xhag@Az`KP zZB%*wc`kb5`*&MNxY*=s@%XHX3?t+^;q|;*PjRtm8r~7-F~$6YtH%7ACcp;&5&Dx( ziP7V);TSZ^2?_sbJ_;)|s=|`%47=v}IgII32n~J0`0UQkZ8HvkaS1ucIL?aIKH8?$ z!9mN1LOq+{-u%-$neXM)@wBMkc2%jIR_DVAp3p-pC(Z9PH4cHj1zM|IVWGwRBIoaR zU9u(j-98(jO1twuNr-+-X&>0%oNZI`K_LDQdw|rtFbSnk;y**I8O_gVBsw^;JD9rC zZ7&`rBx1f-U)kX%CL;Q#A@wsdG7>7c*kBlA1+27=Q&hAi_?ymt$6x|yn5INXspQkh z29dQuX(>$){dcN|j%C^j%Je~URpM;zdeXC6#!i9#J%8EC3Cy$GScSNcKd);Ae`~-- zejUI5IQJ*g`kyzQ%7#ry@={6RCuSU{V9yY&kKXXuwn-pGP3FQnrk&P1L{p#i7e?JY z^i2I~+Ag1&ou@kYQu;*J4&$pMVN6SXXPkRQG1>m}-mHjPhFS}PcC zoM2(`xSh$hcHk+-Ch83+|CvM`KF8(t6Z)_15|+Jn3w@n7sxs#N<+c?mVW)=lq?TIf zZ@ShdiCjip7W+v3`$wt zQt}nXB`M3yTqtvn&6q0vIH==g!yC)iaZa=nW7`y^J%q-xR~$ox9wd_C$*=^x8mR1A z|ITG$-wv;Wvy`AALeG!YyI-QDnncFh@&-M&;t%dnbe4pp(Vh)9nLUrD_*@nxt>wO7 z^)D^6-%Ln74T}z3pjuy+o;6U@`J%zCe~)uXeMn_GbZ~uataw*l}CL4Q|>HZDF(QcT4d$3F9&KY`Xqr ze)(H5orPT~s)3xFS)*Pzkyv`YY|_S&;WvNvN`Ns*kTGG&+4VbViVv|D&r=^^c5u@) z<2)m7i1@2z$rUyd;p+Idzr`SFVqwWU!o|jskHn~M`?`Y>^QeqN0$$9et z1J{K*x#$*1he-P9}PlF@nCAFp74G%k{h z_W7lO!zf5Mh`bq0)zRX=*tH?Mx)LGh1^iPHhil@RKT!mm$bYd%@r5fYMNGNQ$XKe~ zV6C~ycg=26)T{ZvPES?Yuq8E_k)1Vu6X=JOwnB6*OV0lCvy=?`jtypesIH?|5|KrtNR|$p5>gpbS4{Je9F9!kcX8{{ zNV?}X6aBN%!o z#nlM--QZpq(-Y_t?(e<9hp$pLaOGM~>9Avq=b-kh$3(gdwAk-iC!dwslN^&QTXVQO z3WOe1qN_!650^3g zcdTH2VlpsRs-9!U!$XffaKeIXH!_cI$amq_ha95OMAh{9ZgE*OGaFJVus(MPDDVx* zx9-9j5TtgBIm6mNHpV+$|EG)NSDZ@TEi&3!0ZGyPE(V|Gg(BgMI;O_$eHIGNIH43@DMVvoefuY;>`5 zreXShdd*qSKkeeOg%xxXGN0pd6805gh z!(^O5-fs3z@>te0=bKu@uf%)JIOKnlOwAl>&n$!lUMDvZ6>ERsI*@4fvVsaAB;=|9 z$bE#!gDKV9elT15py#iKFC+yVRDbscHXRiEN}!@I1S;zaVgeAnSu|^8?h>xnuydEp z@c6lS=w6%vzJ{?g-CrZvq7at=6PsCXB8&!CP;aT0w1QrHRln6?foWqAs|~c_9xxJG z1Qm(DzduqRA+9g8P2rc9fzT}o&`3y0bqXX7lvUjMTlwX1u^lfXHxl@>;k!nQ3Iyy-6%xm?<59HVO5OA>UKBC&35BvBrD2c)TzYSoA z6|pzZ;7`CD41jC^B?a{INVEX3Oqbr!JY$XHkhfY0v$1W~RF^Uilxza3(poQ!WA+LV?gdiGhl_LjfiNeFs+p&2Xg7PvB7Tgi-7B}c4 z@Vk=xoT*uqvpgkmbs#PsWG#a%v;E0S_M(O%L4h4Fx)sx3~Yvt{{cy}Ag@zZf>9PHfU#)VnA;d;K+z5YE^rOq~7eiQ|{ zusGVw4Ebjp$HHn&O~zLa*Sre!ZcEpHEFvPkrQz&cQx1xqgWn)WQKRlrg$~^X0HT8b zhpP7u=eqshfQ_;n$VwqANoFY{N;U}@kw|8R%8C#QStY9|qsUe=va%xCBoUE4LPkbN zc+U6z{XNHXJb&EBaUb1xA3oRneO=ez#QP6*cNDEGK7rqkOq* zpB2pQ3ir+IWEDLHm^%JCJN%cv5Kvp)CS0_-Fj!n4h{Piq|9c1hU<#N6l>3*Hfflsn$w_lOEaDHhMqqw;4Zbsgkl>P`1Z$F% z%uHB0MfHOfw)q!0SlnFc^w*4J!qvii9esWQM$V=1f!A+Y-)PDKcjc;{-dD2g9{v6= zU+p(jRJ3V%=F;Uw^M!IjFgf%4D>cTA&GosBu!{w@FCo54+4|k{*W1Bs`Rj<@UB?Ih z{$uGQa3A<08Fg1jUS0aKhgZV7{lDxH6IhvShR z;67^qJqq&vi0J6(>;3l%o$^4fng?-*NEmU-yr|z(?s5CkfJTaXG^Poum7b@)cPUTm zM%6vV-H?y+R>DCX3Dn$uV}b_R zZr^k1v4aA=H<^E?H(pfI*^)n~Sk3*T)MQXbe^z^}r0UeQgMO-(_s+}Hfm%g7du|>gN>A%iN{|k^OcDRcP{0)(A8ZrGxHSGGi5?j>}p1 zS!>&-$D{@W_7`1gNQ%S}rT4C#I(=IiXF^h%*{BC;HwqZ6T`~+8j$VseIjgf^9QX#* z(&l)Xr&yElCr=1_K%-LULjXvxzZ~Dhv?eGdgs=gG!3NHCC2V%bAGcwaD7*eE-xJja zDk(xiy3j1q_SSK1(s1{hr=06t|5-abA%OZwu1Xk$aan`mNn&syQZ`RU7|h`F2v7@a zMYfxRqm{U^U~}h`y`vpaltjfRP&2eMboo#=G~-5Nm9)F?Xoldhpzs^TNw_&d^QAQd zm4Z*;e5=gdsGD3)>H6}til!!={MJ7S82(M50BpPE`p@LvS5>1SpAVo`-QUAz#0Q4L@NdYAm3+&;zSYtXx<;1@|U;z{!W!x3Q%=~ zEsER;GGK9IwNlWOX%Nnqj(6B^(RP_--doU?B zT|mki=3}(9pdgW)?>VR0B}FCj0AwbK?+t5hGbdGo_FLWF;+?U~|6OwO{%w!uZ|lJx zwf2Xz%_{r7Q{Mv6B{njg-!cte-|2U$`}k4R_16UyWuIVf2cT{ze7lH>YU0vL15S?r z3?AYB33nxNFyQz=Ui;?tfR0T8U?HqExuA8DS)S^wnRIr9W$EgQ)b9k?$lL_a&Jnby z-JG1~Fc(<3)P{gRUzk3&t8iLjdh>66VC#oB;laAcmy&xR*P1!jR^1($6zSJ$snVm`P!O6Fq}cGgVB(Oqimw#51b*x zpI@FK$ixID58J{w6@RCk{+?t_G1K8NBfNMp*L1`CHVJs2pqpcl!*J@Oynqg}xC_M@ z`88hv>qJ#KSl|d#Jt+#&wy#@G(^(S{FS#`3TjkB%6O`3NI8}eGb&WYsr%;`9k3LQVYfIk96* zV-Jsxxj3!R)vR(ltp(^@f$)6CzILG`qFJi+)5<&VXQ;=3RGnQ}np~gjehy4y#%p=YGT5-0*KL~8EHRN0@-LLdlnkSz+0$!<`>@uP{ zyrLo~@QMe4mY?>+yT=$XnfM{t0dXKb1%3m^xe89M*MxI`u1=NCL{smvI-(Tw`|)3&w#wHR5}90edxDyA-_t` zuieYg_E^?p@jh|2=(Ihlip4HIo$mkr)+fA8MMg+GUOcr~{JwG^%)qhKCG^~yo}ZVb zNDIRmD-)BqmP}{#Y6Q-cW$(Pqy7p33pG#O=Em7?!ugq&8UX@2VMfBdbAFgUztlFKm z$Q#f&9p13lPxKhKQ3vB0tANhf|E*0-pk+Brpkm3^YhlMhyLIK#cUgirNPLt0u;N;` zED3X{8;fh6;}O=$dSIWJ)qeU^k&x)sg4;(>Pj{Sy@l$&I1795iVH)U-=k1*A(n->! z-BM+=c78JVx;1LIpjf!Wkq3`|I#1UMKPWSINj-1hZzpVXOn4s%iv`lv+Z72=&Dp>! z^{+?48-d?jCWX0!n(IpMmuW;ab$(Jb7ux)`G>Q3j_)VN#V$PdD=gP4s7lX6ZY6KpG zv`kp7dCuLyOQCD7ey}0%=JhxM^6K+T@)F~Y}r^yu&WGo$I9J#@)cdVIZS?wumnHx~YR=xW;R@Y2s6Zf=al zJFJpUK4%%O9*x<4bw_fuIPImqDavtY{*cfrWt*L=daHFs#Rw?|e!1a?3sO7XwN#z! zj}9Ifq@ED(4-V3C@;pXIe9JfbK(HcH>`n)gY$mgrOgh$Y#gbAdqbi=yJ9XQCR`|g` z*M&li8TJmfs|gGo(wjf6VVF)Qf%8OXwVAU;IfJ`;x~fGhtdMxg_g`e@@i|jr$A2My z%n}dZf^qiDWYLDfxMEJHqk#=tD1kr%CIP~o^YrYgSJi<&LVK|lBy+R&6-pblMdvTcx&2yWg_uQjl@Uaz{5XOyUb{d_1wO(tMWWO!++%GAye9sCwGWBGBq`|L7jkj z%G&YC#cV3qewQUBE96$Mr;++CtOev;$160N5g&Wz!Uj3{!n2<73NcX&Q zewLy5h(KW2`oT#!<6tf7HAZP(PoitoiP$4a{_Xuf@uNAtJbRU|GE8=!K*3QJu zNRkw>Y^GJjA2QF@XrA-*BEuQW`cT&^4wDvfsYiDyMClQ;As4%+xx2f`>2PS7AECZX zr7d;xJ}VGPK{>sy?iV|5`nP;CZ0E4IbK%E)!X!goF)!e{r2I&7iNXWL2Y&H)9+sO& zxoU;UrHF2~QoIsa_7m@zR#@u_wHc3|Qn8Gf-mD;X(S8x3oe#+APb*SUQ4tp~T;gaF z+f-n(=6%sYo|JU0@?bSEme4@>)Mayf9`m0bT^auvRx?ze--k9MC^S?kz;DZmJF6~o zF;xW2iZZw!*FH-Th{41B8btdLyow`r_doZ ziP9q$Bw=+mm@_xR(zO9RjaK6oIFS@%l{dmv9`5xId<&;Ml8Vj0*Wrsh%()wgDJ}QC z7VBjAH4wl~I!ER7UuaE=VKU(Kweo5QKN%TWccDEy3DzeS{}TbG5tgwxDqB3tzvRE8 zb~mfgNz>YIki9z4JqtfydU~`tcaMDrBfJ?B1zVVVgPdj!o-(BSewcj|4k@T@!L7LT zFK5UP#UG%fSm1$dy_?XhxDWbLf=x^TS|i~?f^pP9r58XG!ekLNX9AAIH*$<>JNGE* zGI0eQ64v~4s9A|MH1h)9na6=-VI&XBy`MJs*0$OnoD`J-&(EJbv)c|jZ`k7Bycs6vs9}%JdAk_Fznu5~!Cgca} zl^==FWb`%eYc44l$6V9=pezM&nylGh)$IMy9Jak7bq0ZCqhYlHkn34@JH@Uza zS)k>2u@Yy!SegnCW^$}bwI!N7@eR*7hPv$1E_TE_#50X`O}}n+k%PPH9c2}j=@J<7 z0xN5SDR?^2sI-}0>_r!8Z2v8g>mJ|R~$;|u?$Mkqv_XW1z=SQzb^m}h@Y}TPeP5(35p`x$f(b4e^ zA5{vrg}(leGWUFgOg%LWCLdqFR8oFCghiw^zvaAHTSgdAlGm6BtjPE0T09`T0|#Aw zeL&?IaO7-CvmbbO{ppre&bKW1Yi|C6#7O$eN2=vD&+kb}wEJN`ota5EZxLP-1=00SkiRBYh?dIawpsCn^%5p%lXy> z=gn5U8G(TUabjvun`-gzgvBqn0y;{-NymZn&9XHW+!#o}8xEKKYOt1+p=P{L;>ZWh z$PmPKNx%>{y;y`UR6+Sk3=(iRSk~{xh-GqMvz{mHEoge1o9j22g)RUwBQZCxn`0h; zCJQJ^6Z~U9KjY`-zK0fb;%|T4D$zkM*yW2tnbo#6hfwK8w zoVl|y+k!b$+k4FJR1_4*{)44O{@@LhpXU27q6CPSkXc0>cIr(Cz|LnG96{ft3PNV_ zZ0Sg(DZ&gi=K9OsG5Ip=?tKvoDTq{UAITo%ApZ>pAOV&oBJn~=EZ1VPbR3|i`DzGpnkH^@tD!+6pbqTC8VH%!# zllt7K`HR5WYWXis>+hGJoKL(BY&PD(%UVT4k~(|O%X}(dvO|)bJ1*^HD}9j`Ro=TN zj#A$WZcEM2kB1S6cUE%`bE)jDv|#u#jS3JbZUy{bDz@ZSWU`>3oWY=-Ae3!o2SWTL z;m}vSFP|5<#r&G59(^R<0BIHU>r>>v!VGUw_WEm;NECDEPqY^K;CYulltY z&yUi5G8cV52xjYdXKL>}Ab3D=R{bZhzs$FaDB^VW7Q71@Nd~TPlvSurMhYMMCQI8&T1Yh@^-& z7(iMLG~xu3D@CCVb=nzV!_+%=j74Y&gGxt@_@hKbim!&|93s{q=T0NuT9__NUMh8N zFkHh3w;k6ZbX&yl1*DQ2Pob)+%4DT-Dl>}}5j2lvu9Fb9&?Z1R`{3Go6!I{5#7Lly z-Pa3;UQg?HDyVgQgr4H1>?lpNyMcn-tj2OdWj9}%m@BRq60d~SgR!+_V9{Kg>vFK5bC&%yG6Z5*7OJd^( zNemPJdqp$Iw zQ=c5&csNo&NL!mePj6CF*gFf1AEx`6pE>v#4$!qoC13Q?drDHQy0*92B7KJY zMy-91E4tgOP)x^h*xM6(NL>!6Sm;8wU^}(-sp_|nJCct_8FrC+>FnMemCEtss|3{7?(0LG99WV7(3!Eex3sox532_53M2)1Mcf!_L!X>0wKI3A&$- zxYWtL0isOk>e8FvVu^fpnbIykAQ>Qg=;L$VAoqP=Y_oRSMfv$BBR8UyXpZ?D-~L5O zoA>FQfV$N4;dec3aoswuEOi=UbjfZ+o7Q~O|M50Ey0_1J@9*7WM3?Q`kn~Ym_}g@L ztJ9ldnWmheowum^X!}O<7n3_)3s0yR4@}tsV%bOUU>_{LD-dML!+6@ln&h&^JXhEp z23?{YM_n_DAE!wEeW6F5aOB`u9nPF|QC0s_C!5B`;E3TKB-`PNwLM6{Ec>|y8=up7 zt-twv4dg}jogOX$r0idt{zcq<{#iopW<8~gp%Zx{`Kjx_?1ELhy1__lB7XdZ!^7mS z>6*zaGT3c}EskcRblquG$C7VXXH;SFPvYm}Nt)>1OFLtus9WqMp9F=SdL(kqU6PdQ z+)7N&7_G#6bJi}R#g83svXp+z^jOKS(b+nz)0d6if?MC(h-*jNG*|~p7)`v?baaWB z%Wfp14F<*+*P35z?jX@yZh|vMyupM(6ZezftT&6Q;@>Qmwe~NWjl^|s-QGXYUT}~q z{esFPk+X-~qfS&r3idp3Z4G}>dV4bH1C{=EPny89c4>WHHCYwe$(A1d~UB|XZOp{|6ith8Mw~OYUMrGYJ@BPZ7}Q@5h8|RTIAw(-oi%BM* z@q1JMa3dj3pU2Z;F?3RgN?w zSsqz&dJA_Pwsf1>w{COsll<1%7Qa*Pce`}dR@GLOh=lE7XK%vXh-PCs$`WIV#Y29+ z{q?-BlO<vQK9$P2^!cISM(~(q%y=iXd_IeD~T(gI$erUu!(InJKQ&jVKf? z8c>iG2^L%c(-&y9NwFOnOSH_UMU)ABQ^6B~mElpp)nG*q`hXn%V ziQ{#s>reW#CgmN;d-fLViRie|$AGlBjF*cp*^&m6R{DmiP}Q!m+Pa-l6HIsaq%V*Q`mM{7bigkGbwBjn|tKX>Zt5&Ugk2J#?PtW$F*s?Ak&7GVjBb zrqWQN%fTlk8bpOUL%O8wu6ntoqsDdl=lbx-nRP4AzinjCaQxk5BQ4{7Y+tk(3~;bU zz=*&kPe)JQnSD2sh{*d~BZS znOywuYT2kJMb^04Wa}&GOR99ywYcmAGKd9h4yKK? z&?+kZZ@g6Z?7G9l^R)$$==D8F1}qPS;9I{Jj%o`!taz71nT&_$ki^X24dhy= zh)aZpZP!oN_C;;_3^*E*OE`}{VIJ{iiMe(V`V)Fvqv-*()da6j{@*+~a5H{hUOxnv z?SB8`u4xG^PjAT-gfeKhEy2W!5;5cO!H^YIZP3GqV{kA&^7T(>1fOTD>BF!Dfn69t zv`xugw%^B46Y zPXt11VoIEFJCzX+-#KvMXQh|=p3i5tJr|^<4=9yhVB?1ASj`DT0(|Zmmacb24WaGE zK%8=?6)4xFzP$GGUEw}i%8&g7b*%no$&T(m@4JDjUDvmNC$pzdn5WL6*dC5Uey`t+ zuXTH$=kdRc{3T@joJbG?C4guU4jwu35P>)kdL7h6j<9%=!{h7W0QS;4`9w2cN^(gsZUWRC&#l+rqjf0CoCQ+B9$i%!Uz|ZwBNK=W0HvkJbqg|9rfF>#iJ)`8e zI+#v;MPGEG+!P#7NQ-s#J3$A#1`*;>8JXTn7{ORgIZNy7FM~ly^AlRQBpCmEMSdgB zfoy9ltN3HR$U1%psp?at*4}>PSJ{#y+G>UcX$q6f-CK#J7~DmfSmdT`1?-+D?WPQ zz-dC^>^V^%_P;s%)YWC1!t6kkm&f8A&fdOLP;c#|q@;92;Oxca$?{2)U)g}pI_dW`_pZKOU}T%MJD7LTZ>P8^#>0w&A3Qmqq!pJ)rz4|hnlZ~aNEmqAL+=$Huo9Xp~ zk2C-VcGhutXoB{Zjph)BOksal4xO!w`9GT5y`-sKe6>|6cY-=zw}BN>Guf4`T2#Rv z`>Mz|zDblO(&*0)^9Eq370A0%f986NM2h+xY4H`!@hy?(uD1UlP>lr7s#bcJJ{Mh=?fYf(h{+1Zx0~Nx2Rm z4ng~w4~T-BhX)$dxUJBiC8MIjMw0DSVjld9*^eA0YkRyYcgby5F2isp4x9UX(T!b% zBoKjv=J28-W*q=fw~RLX8b_C7IYHlqf7}av6P!?=0TFs~%4jjMu+$L@mYN|h8JXvh zayC}BOf0rT;R_soKj<+WI3(G?I|W&&?bu4jw83cS%DH_{K{(a`u^EArcz@whGry0m zMJ&}a@WRU-P#+zV@Y!EQ#nfNZ1gcMo{L4s4vHsh`kGLa_^-Xp)qi(WrVNSN37Bf36 z9qID0<205U89^M@ zH4GBoVVW>?^TZN1**6@0>6uel=RNgei{{wSfIH6XZwzP#MfUc+HNPJmIQ#wGbZC!O zl*}640(|7&K`U_QSGU-f6U^w0k;mj|FaO*0h*^aRV7ZHcTE1fc#=9~*;m$CI+w(pf zd4RJSn7(ZiG%J5=OUubGWZ|lS0cyJjj4%YNM8JxF7I=me~_x= z*cA#ITfZqeXU~&U;XPaokWzf>5BQv;F(0&_Jrc8WNmaDW>mU7(MqA!$ zx$$GN>i|9H&owg{OIE%Zqx03pT>pOpg8G~7C;3{|!d(qz2K3&FN$@MbkB-_t)|dx2 z;4P%dMn*^1;`(pGnB*!; zJ%EFNU?&k^9Z;3{cYW9xzqVEY&ehk~a~(bUb;|^^!`>p|mO9clgIjq?egG7FU@x^q z93!p>r-C(Lg*Q9S9>3MD#IlwMl5TIziCanD>%?c7ecbs1JZFMex7O(HxHH-9SN)5V z+O&a1(i#rx##?9A)Xb4^OQ;e;L+J==BHZ2_KW&6eOK{?ahj-GD86`H>eVhOiuy4gw ztr15vK{Iv|x@!b`vaJgDhOD{7&%nO6Dzl&y#bY>^)r1dD-Y49x_^;atq$9>r3l7!ER{N!#vqFOVf0_(2_ew!#nu}&Ret;TvYLnA?#^z$;)=i>Lf>YI)TLnm%XR zEA?p)i%o=NO{-I;Go|EbYSORWQ(a&2dD;R9W zU@myo9-3+D#JN?!SR59*7Zp}-80mDVg2JPtl~AW&#h4YlobXA*fjL^Tp+`8A z;rOIumlUd7BoaK}RB;&~f7NdhbrhHZTiK&QA`ii`<|BOEs>dA1WYToXxaB@Kl3nuc zF|cU}8~#;EU}8YIZNUE9oWTwA0;6s^HgUhtpS3a0ufy^;x%MUP)6%%RsH zn1iYKy*4E=bJIwa^9l?JA+H*``4*$(@z#xjmg@glun-qrpFKa;xzZMmRXs8xZjW}2 zuY1)X`a9L7O9zeuBqEdGGB>eBJ$~y$pi@1^<(E`Y^<9bD3DWSXAu)YrmC|>Wo$if! zgq$4XJ#0}W3?Qh0EaTBP8}{TMi83s5xYX~patURgGK#}uMB5UV05QtO@qqd{fyK-- z92e#n+%SYmK3MZw*K2TdU^+u6S-{1wBet>T+14;fNJMQ~_hFb)0^ek$iL(*edQ5_P z_22&V$!;ulq{SQA_Z5o~QP!A?CF5=+R4)Wsyzy|(YEc;b@kc0lIuO`O46)(W^?WW) z`FF&^37>@?(x~q16R)Q#xrfaJa`7O+7QBVG_c4-`p}Sc7R=KH!r(_GlekJa~J);td z0~U4E=-*3r?(8ER5Ha^9!ZZ?zWOKrxknr+=Ddc(NfS5QDFRuLNftDMr zoQb`DjRG@_`@b|YaceYRh8XtKcCIhUE%6TeX(|^lLSTF{j${9f^L1-K6N^lB9fpKD{<&ATMJ#ki&y(EPN-2g z;T(Tq{jdSDB`^}&ab)QrOIIuFHeS@yYn_4{Fiq26ULAf6m>NlJ->xYu2M{JGoAx$> z$#?#_ref2CyfLdZm5`8d`n82q^CvuF&RzFF2?sfsF?37mo8aMW)^e4b=A^!Q^%L9X zD5Mj}4R92??0)SBHpilTYkmD^RHK^(&1vIuB@ZL_%V{~xmi@n60M83VK{#TNe$doR zT|GE8Ep0t<9g}tjOC1D{X@u$(gsaq{LNT{c}`GWe@o4r?Bg(ANEI5K(g zM@LeU{+|2*g#!(eA>q0~!MwNC==qh5>cp+3CjM@S#r0aoerWczX4lGFdaPA6(vQ*3;UIfgt)oM=-F5q8S_6+3GwOAE99>KbtI`7 zEhbqsHXk^*wV4^gD<~L@m-5J?pdji(>82FFoF~#fJ(@=;DBtcMnk?ozekI@9*} zikIs9M}~L2Ftd&L+O&8%g(Nh*;ApjP=cl(qyr=h0xIcm|O-e9R@s4ysVFROhr9&?6 z%5Ng39x1xFPg*_@TRIxhe)Vd>*L!}t6CFu@f-ZJ|O8$|`f^MMiD75!-+#ewd+Fzmp ze)NaOD6%9DrM$7flFWFMORoN3)Wip*86NO_r$?vun8i-gmHf;$j?7B|0lB37#!pxD zrm71BUaH62dPn;2=2Pf?%L~VN4t+<(m1AkLdByDYOY>arAB`J4&Z@#@T!HNNIxpml`LVkR9(kzz+n1j|FRKBipl)p}GoN0@C_@s-4H1?zaEnlX z^0Q+6h1j+r?H>srRE)b}CKXVxn#*P@G9TM%gm^6G2!S8oO_upo9g3@;$CA|SUbtJe zlSDeWNT#Th9Z^r$ot!Zp7xCTB%Au^tUXj_vz<&AeJN8nthh=^r+pnkGBMjKSJsJ4! z$f&)&J)A+E$?#=XN(PUb!QKlq41Y*khVN^B>@9CLGq5?I$@}}Qw2!WVSb!mYVE})} zNoK+lELy0Y)Y`)>!r6u9x`g$%pSP8TgX%<}bIsy+kl!;}Kb%YnHU( z!ykR;k4Q?_QO1yoa0LVeAk7Ww5z~TJ+n={Q*~`S_@`33Wv9_;^N%D^zRqHD8d(fWb zS4u|w7~6Z>0?p5|nO~h(DA9OuO)!P#-YE}@RR#8uL;9Yw1?r7);<8hIL7#3?v2w7~ zlZA#?7bl9PmWz#VR2LWODz%I`9-$B}_RGO4PmT}ou($x3+{1V8OG+7XPg`GCO>(B} zTK&7AgHL~7z`_r9g{GpSA0qAq+v)nqJhi{B9C_#M{qXd)qSK+2g(uA}#49tMc}e|c zI%>$}1%EZ|)w)A@3G{%em2R=8(45uN+k+Ob^ygjTIm~q5l3Q4|DiV_=fy)?&zIZL= zv$^Vsl=n?a!8yA$RI;Pr+uS~u_PUi=hd-H3V_%MSGm&uT^-t09wV%m))qKcSpn65g zeL#18rO093_|5abQXk)6IlmtMqseMz0-evRg*xl}6y`rCs}0q>(&AYZshBSeG2Ch0 zDgK^zy+S>j-#AJ;<$Dt8C$GK;LGVeByS~+6x?OpR!L+UBzNbS6zul*;b^%(EJ_HU)1 z3Ub_IQSS+slbt;(`{*qTRq(E(L2&V%GJchHBVD&`>@3}7Co88)gj6&zcXZh0Qu|Uk z6j{9$aC_-ygseS%GV0^(Xa0s;fbbA?J(@@Duk^_^9Xbo&-*sPX8GD;-Pb-j0dCPfv zt(~SD2^Hl#@{swK@nh}G&$c=W(RcFSKTD?Qr>{8^9-icV@T-0hwYb@PI#P<+`DODG zVV2COQWNfi-9wc2jz;tQg1%IR3s6&Wk|y5SySHxpv#Wni5Bogc^IK-3t~<1N2Gh6#L2~?YSz77ImmQH;Mh!8_udIve3wHK7ZH0x1&JI9QBZ? zvU8R$A+I^hmS!a57_CRREoP321~6+EZ1BEu`9PauXM0bPtk-96cQKFfXSzhD%bNu! zo(WRiV+nrBb2{N@&%bZ1*Ag}s#oib7+;Az3umy%kB+3}nX&VYiNJO5K--yc2&gOof z_9sf4CUDZ;^#lXoSo6XQ@Dr2OD|*UXR$i)o(c$W0?efog;`5WkI*0I&;q!T!Q4Hsp zPw%*o>dZ2`T|$J1+l+V_TTiFu#dr;-U5|Jt{X{!hr-rUH<{nKDY2e`@xGu22-|q9^ z0VQa2mawTMG`|qZ5fE{&$+=w@<Or0xkfm(ncfnAqGqSNw z%KeewTHA%{YY;FXc@=Bq+`4AGG!y+0;T$fe6h!Ey!Kb+ogeDXv7?IZlyt4}2yX;4< zN`w{^O*kM|Sv2QPl@+K?_e$E?n&&m8bsUe9<`MSMuR6!!stj+#OET6glI!s>&ilt5 zaBg427hwL#Cu(X^RksJc>Og7uFEraQXB>DPOAEr1??DiEqYX?K;Y+1A5$Hw&|2ieGB^z2> z*~*p(=jId*7D6V3Nq`Z|?brLzASQ}gd>Sp?1hPknW_aHCM;juIDmT3k8&X0DgaupqgVtCHG|m&ZhW*yx5lmFn;*Ka=-(LQ3 z&%|iq`)$Hz4M?*odRLS4JiOsu9!{fjdOAUO!3=et-kSi8uHA zsW{eg4T`hFfKm?vS!enZEdKI{49y-|&2XaLvCE`sa+zrtND0+JSQ_A^< z9)YkyZckS6jZ6ASJRlUjbf>Od;Z8f3_^F1+hGYwBZE&6~ff@IKbww2Fo@-XE>a~DZ zd8MVLzdaZSZ_5eKjgUNHXA$X$JN6zOgc)6u=h}kod=)tfoLmM+M$R}o=DjB&8=Rh= z-rN9o)PSY#>&0+{Ff^VWIe7NjM=&Pq3EMEjhZ(dbBlwmjtP|pHbTKM;OdwX8qqC;l zFTH0lB39(xTsC05?M1)3bpp>5Dif-&|z zekNOE%ut=_-s7;3b>RXkXBb9v%fbw%7Pg7(dC#Mhv_B|fMl}NJ6M>XqPL(9tG1Wbn zXqLnuYDO76+P2mgE}*57)Z9r?Gi4Hfy|yM?VB}2XXcUi*WElPj1DnRMw{PE)!nxm3 z3dG}AfW^LGC%{bbzTRtN{mr#D??!YrZ8C+BfDGR};aFa1)5g&Q6i}(?T-=ER=*aHF zngP*mg*OI-0gJFaZ5oqH1!x7|){%ZR5)}~rD~d}<5NwnM?q{8Ezxt>NKgB2ug;tQURsJmU0q@( zk2c25-Ms;=sBo-Q&IC0T)njz~jnHkUU=764chb|t3*a4rwjy`}%+uT+yOO&BXuO7p zh7Q2DKN{I0M2rU7oc?le*wmBN6Udd#=0D)?PyGD-kCb*Ny38DUiO9V<$-4bP;=Qb& z6yHRDE1-WOs2W1SdXSs`5${f(j{&@@ovU1n5yWLw8~E}-(gyFsb+=%><(msp^c)}G zQrohy*j6B0L{LtFadf<#?c-is-;hIB>oi<>n*J5T8343HI^m}w$cS6Snldsm)xwD( zZlVMtzL$WJS$^CF=UMgKIU+yQr4mm{j>v*&=YNL3agdMCAMHA3kc@v<=FS1lyjf!6 zxzKPhl>K^}u!YBA8Lz6pYxO*j`24r`#`ViTXi-HnVmM)d!sqw5PJVe;JEn2vccJ0PcV z6@w^|(mBF34>u$+^!X-dK}VP#;!0v^iTkz~=aC3v>LWZchJE|ut`kx7IMMrDd+lex zp;1%;_(d2(0`7A2@NfbeSh7-N-`lmZ4qV1e+#B3&;kAmfr#RsLvcC_R)MDQ?(=zBV zNRD8d>!D%{l#B`tR+VC9IN_|vOhTXaH(6eQXRJOQ)kC`Mw)LtnM;u?f{d=MoXt^l+ z_`q%k&MFyJr=j0XnO~{5lx5>7-Sr092H7pr^zC*nCU=$uSN9|^*rcST;i!M*$;7w7 zfF}f#2O=MO{TqQ%q7P+mk8rlJWsqC+-d~J^@IRSK-Ur4pf{3I>7^i zE)A35TVS~>OFQZh3F*Bti6xvTi5mf$YDjBG`{hAOBP=B`4j?4P1i>90cAZ1f`>+g{ z+Y)Sl!yHrO=RQT+D(vyLVY@hFXNPsUW zhxftB606~lBda8A3!1f6+;9Kc2@`x&6oO83VL?H+wklBd9lhQaiXRP^THm;KMl(z~ z`BshrOTr2CyVKANYHb@LZwSLBLLZ-gA$OQh!tC0>K#!dy;X|0J8C#7__#@{y{tgP6 z-(NJg*kcH*3j$ihOK$t+6*U1%;{73kpvDxFHIoT5LGROO7SdpzF-+ujiPv|miMu$j{D!W+wDi?szM)D z_UmZRgIvvgR?}x*;m?{up+|+Y@|jX#1oGanBOM+`sKU5$|C&vh zX0}_Q?*oiwa_Tiz|*3~`0QGFiJ zB*J+c06DAUiLrs-d!KR_h2t}Qtwgza1l{o>&>;F9&f1+SVWms&;O*+4{Gzv2nD-09} zd=O>KTUZ$r=qNG>5)u-Kfi@wVhiAgb#KhC<1*)cNwCbBI$@-a5)Mq1J3lBYCJ(awJ zTL0zVJax~e?}7BiZB%Vt3*%BVHc5JujL*0(eSF(B`RdcJ{_$!vsV53NUFv)u6p=n+ zRU(o@?J-=DmM+5jWq!P>Di&_+=`^7aX^+lbh@ZUX@9)1u^ivrp6I1k@6H%C>F7=JO z(FTo;7EYJ8!@MN_Rw}n@YifAD>4l;uTfnPbyiODM9x=vdPCs0}=@dEqSbVb#;(BC4 zLMt%BW_$?{eU;ys?#6g#0yo9#`h@4eZNxZKtc|l{-PKSCIbFIA5ecD6!V4abzlp0; zE6ZSO`m7-LR|J0|yC~3mW7=%Os;B4%C;r!(wze?zBxB#7#>O@P%Dp8W4MMR_;=sw1@jy_+0d?!(C<8tJ z96(__*k;4cGL)#fc;RY6U;V)HJx7T;MYuYgi=H)=ZP(N%*W)Z^K1La2!>W(lSxxCz z`&ku+$(khz3@x}d*86tqr|r+~u`^!07eB*3#E@`I%IkAN#-)Jc?`*SLk6n4~)+-UX z?GtI%!;rV#rsKy$ESLfhA5xE^XlQ6445pBDb$p;hH|pJjp!(0H9r(csEizTq4ctO) z_oD?#Zk--K^1|QO*{=mapV)r@g2o|z%e^65KS;QEbxIRw*nNji+OSO#%{@SZ37SiM zMZMyy%&b;)$s=TEKflv`tj*Gez$2VGa=4Y!w+CGh#AR6;2()d_?g!=tcSZG-_=G?I z)Ab;~^w6Ac9)k`~#wT1wW9~_4>hs&XW4>I9qBN}0GWG3aGzyzO;|hgf^C z+!7`81>k8rZT31U$uNvraCKQ-m{W~-DsH|YLppA0I&nBfouB;3CE-+~_!^p;^RF@= zM5e`6+YZXm#gC9TOJ_M{3?Jk*`gfMX$@f`Rdhw}Y=dtK7h=QJdD}7IJ8`2dsGy-SM z|B!J~%U%Nl`uF4ZXJ%JCzH|Z`bo;E)J)|1-dC*_?=FFpL-P-E;JsE-uXMcGTUb}nB zw9EDdiFZjnkC*&;gKk%9O1q>MEyL6eKo>v4xz6onnO0h@aY$1#c@fkJu$3$(y{rJ0!@&S6t=0>CdhP(nS9E95OU zR0G|94+yk0r{qV=%i>cKqz51F@O(JrrIM6=n^%L92&aCNa7x2hUZdvPIlu+&;R4h2 zPp(`zD7hCeD)sN%0PAhe*Pc^NqAOyrpcL%2D+r-IdcIZDNl*O}5Ak#4sLH6fJ$Msg zjQHi0izYYn4+6p|Vw0w!5|+dDJ@zsvDN+bIVhaz>p)XX1B_gV z{E0um+I9L*dux)u7XG@$+sJhTCa*`sO4Hv`eA!-hMkbY1yhc7n~rtE zHi1mp%%#t$P}cVBx81zS+jzx-H3W#X7}NgCh2-V{ym;R~)TZOvy*Z{Dm9u+zhNFz- zN6o%`=``IbZ^fUX<{oNuuXnQ@D*RfwR0lEswC`lAc-e{fSqSZv)GzbrZM>N_|Db3k5Ziy!7hhmeH$Ea>bgexWqK&?}pYf?+}eOm?$++ zdczbpAbvF{q~gj?@&d9rii#Sg?A+Y4uBV<^SD`Tw zEfk}TImUh3p`f>zl4Zkpm#3H7ZQce!6QK`}_p#XSytuDOyTn8o4T}n9h=(o~W_R8S z_9t8;h+faWm!^CpP+Fzys`TagJsu5$&S55eEq0O#w?33tO?*;%-)(Arzq3S-n(N9w zHCehczahr7$RQi$l?<}oW!k?gqKhxZEr|ularbT8cScn#K!xx5tKxp^uuiFHX`&G< z)hwJ6a^6;~v%7J%0JW#~d0dJzLLOF#*f@!6;*RTkJWU_3q;$K`ZI7L7@VnGW<>s1z< zCLjwE6k+`Z1bF|A8#h*_QI#fxTv+lfIN@X==7qqaF3=lZI*|5~GAiyagZbf<@NPGC zx~-!DTYHNS^H*gPQw27K^P_jvEQJGFt6qI)cT-EFF)24!)9t4%4GNL_^qGa_Sm=-; zy#YJ>)@|#fue3sRYM=b~W!pFTo5Hzt$hJ71@SdA~d|dyF(#kPP-;%06N(0p~AsIv` z?=SvVHNp}53U{p&*LHTZSNpA;PHQgzgi#|Pvll3ekma@r@Qaawp&CBvtB7Y03=MVW zB&Z-Ln8}HOK8bOWLkkgB@nL#=r4LH!(QBM9wb2V>_-uH0W7*IFfdMPiCq4e~qSwc2 zfqNEWQiuQYt&~ii+QQG{?eB_CsfFPShg@nuZI#d+sA?nQ>3Ae|4nxK@rU_1x)c@SVqDDtO6?8LG+bS%>mRX`ICrxmf+%|5+;QI zE7O2A2o4p9U>2dIgs&zPmBVv$ZGas~iNrimMB#xZy}GtW`WZikKqGZ^zwiwVg#1{~ z1{$1?js+-=^M}R7JCZIg)e&RNPif_!hwOUY>L|t&`Kr+O78O0krs)4}oe+A#O66>( z8yES{htBVwcZd}ay_=PVNUJvy{BAG14;zd=$v-QoWV<77+y6t;S3qU8t?iPMQqrB$ zjdY2KQc8!?Aqc2+NF$xnD2hr!65JHxqR-@3>H-Y*{uPf z?10=p)OHy1W9#e1V59`UY2nEMI4KdGH=v+6`1sB9!Y1oKQ9v4P1_b~jPe+1bARPtl z(P(w`&|!VO(P#$iziy2Em@&i4=Q;^Ssch1b0^}#7l=KxVcYUn%6Q9As;v0NtP8Awc|#tgz##S66HH$Zs8kQ5GnI$(26{@&qON%@y)2GtBdo5r(G z+>m~Bdb3LMoff8g6p4y)?*Hg@=M=0l&_*N=iL@IrkdwR9mY5u!A{i0@1zTBLSG%k} z2qk2QEiANY9RfYnI$M3EA`~|R3k_+YQ1OxjiMS{TUI4Ig4SX>qEvta{9Hh~70HtmJ zW`<1TP3d)yM{$WUI1-z|8cNK$D%AE(4X^>qM3wY1!RO)z3Vq)Un z@o^!H!6-;V2szI-X@Y%xp)s8sIe>3Mg=Zvulv)7z8l53ggs@2XU;4+N`;4tjQ!%ct#kS=kqGhm^t&-GsB7?u6VgnwNLGV$#rWs~O z=^IhKrz~!|ZxMpE)Nxas;q-6KG$lO>eYIqq7Mmd`_Mc9@=Y$(c|M(t-y{ngdQ&pYq zw;&*V5;HQQQ&UsV4q<1~2J#0{nSoybfc8SD13~eD1cB`*Z)~Da;BW2DAM(-n%>CGH zD3;PmlK?6fe?UsK(K0hJ5Se@zjkz8txMe?PsHOkLvSmzD++H>jExcn!i z0m8efpsNWIIS|wzoCS72%5avWgOLVT*kb=|PA0+y>7)Lfct2$)_;X&GFvK=*&jJeu zkpZ8<^gs!L(qJ`M02lf@;BQZnW2(8ClDosSC$_e#Xov1C^LSH@=VvQ{NB9qdQ`r)q zA|vWu;EriPK-BZ1&`T>=xn0_u{9WGJTW!5nF1`+u{6_3g7L@Zr1?{)-aVQHWN)w8- zA195#y;b5((6%KMnco2gq;uvtNF{+^`PHffs#low zU?)uiaj~TPW-pLa*O#MRAvawHAz zB;*5RscDrq+WLH;-Ex)0x#3yN(MERNl-I4s`22AV&aKcyB~RYz^l?zzP-H*+PlsNK zt;BPMz^%Ei1g8scOp&T7^d{><)&%N zvo)beVD=NIvJb|dN7*friK4u?`PjG|0D;=UZnXIZ;vmac19~u%vk7TAcu$Y~r2LC= zjCvS2Yhe%?b$2h&M>9ijQnRGtpHd5DY57+5jp|CemH;w11fdD>9RFc_$<6d?Y<_b0 z+sq=jpObfr*HA@QVRbHjd|${##M~YKxwBohUB!k=Rzs_R<|G2aH18PuJ`i zH%Vx?9jiHHdwrg}!J&zqw7Mu3FVpE_6_q7wrHkMd(^ARo5sr$m5Z~Gw{L}IA-u)og z&$|usFXp`iUoZ8%skaSi^z6~e-+$W6wRiYn@!34zd|v}fK}rEJ%D+EMRX^SQHTFe7 z3HD>6pF;FLW`}l?D#<#aOe&dIL)VKo;N%5y#N1;#C8*Wgb1K-lq)ay-cx*fv5!8A) zX%XD_d-DoYbUSvVFLLBhpe9*Ge8k9?n>=XE4xvMWs83qP-b4n6JCzm4@Lfaw)PBh9 zfL1VN?2}U(&Ea;4pc$wUcxK5g5!uq4(bwp~yAI{A77Cvm64D49$`9Eve_#v1gD>7% zi`ixU`b$l4v7$k~wmD}zmsI|KUbN7zaJLeS0C zvbVW1%t>5|$a6z!6!Mx*TA+&KQRsb&0^M~bq%`r2Vk$#o1C>3;B6CKAb+i#$m`rG$ zlsS?D!_OPoCBHiGzphfrWMMVDbW%A%$(0DbtPXrq44&K0Ue@AgH@5F$ljov45}8NH zr&YYo)%k{?6_^~C&s~6SuZ=NRTYlul`%ki%2=!F9zPbD*s5@q#i0d znn6e9hp-s^Jnys?OiF!Dv3oVH?On|C4b`JZkL>5grSF!!l=#ih7s~P;3!+W~%~hW9 zlSEEmwS|O**_$gS+j{X{uYeO7H*L1dwJ;{kPioM(odlU^bdaeE!kx-ub9Jisrnl5E zrU0&s*|2+Hx_t@)s7JxoR>G7Mc+wj@cXXZ_`Dv16er3g>pcoAtbCWRl zWIfs2Gu}&D`kkJh0yKqm$nqihL(PzgncMxE6VokPi+q(JpjY*w&{fBY803t`9ZlDM z##|S9@oO~$(Y2;y5i5lg6~!*xS+a64;;+rEI^c49euYi^w+HJDj6|;a$n+C8`iF$( z75*RMPw4kWgF2J@?)@Jqs-v=kfHAnYeR7n6wb|+FvSs`XM+o5j-9@a8e5wYq3q3Ut zIu0adMU)>k83ogHItGtgq}kVa-Kwac)F$;x##K!?;-iQPyun9N-!|KS4j~-k|C#UBL(AYx+s7et!E_Cr>| zRQg%$@qHABA&2cZKc}sX)*6uaXrpts-GEq26yyUwN+N);K_2a9y$DUdMRXBgN>dA zy{521bld>=yZIT9`)%H)M5)D>=@q*dRivK&Soc|<`U+|U$k>qp{-M?WR~F1} zi0cL{TI632D?|VN81NV1yqEXcoRY3tqk#OlVhA32h1#wH=f*}qRzO?7^6JUYCq0wC z3v=Ox8$=#aMBBmJ?Xu|tqt@(?+WK_$upcH-7tW*SG-6*Yz8VlJ6<%RO7T95K9AzjC zMPR!!e!qa4vQ#(MGqm(+kZB=34=CM~B|wsa`EYl)_jIiuY<8gB;(K|Ckcz+x9=Kh& zi~*w#THW!-t7`wZym0k;?=4y$JZZ!h zn+y(U`1#8_V4*+1ppg9z=nsgBp3YkmU;Az8|Iae45rC4DTAu2SH#d0C}}A;;o+K<auiF+pjaU#) z{*%I;wTP$p0Qm`vMjHxn50vPDzW0O5$S*0p-al>QK&1eYY7v5=&?gfM{F65j$mgWX80cgw+wG{wA+jz3aAXDms6^)EFz{)n+7QjGm>i8E) zzY&N18u60>4!PR$g5s|Pxd?L0>BU#O(fKi6dE{sdrS{vu^;cnX!d0C8)KWs@=TpiR zrr@j^!3lXbMyfkkQzm6!HHp7CBeyBfc`ss%tuZR$(K#zax(y=)T~epSk9NInX+|i3 z6%L$qn?ZWTvT*lTxSm4G;@iq4FLkG-VJGDVPMVH09gXu-n#)^npv$hZOZ~HCfY7Q zwoJ@Ck3U2M?F|Yxh;ncgr!6zA4TaAYiMvCN(M)4zMJn;RmUU9sSNP4M4j2w~T5BJmTe z&P~9x>$`}P(VVFt6|fWY3Vg=Cio_Fo0g`|+V*C6A-d9Zy0&2lhfh^2C*A$k}Pthzt zuSc^@!e9La(5#tJF(B2uAQv;a(gk?P-^k3P^Leg*xaG1Dfr9|O2+Zi{hD{pDGChUm zU2NJWo9%l@)b+Nzn0155f_ zScFJkK1|7|=NA_cw_pu2-Dn26Ecj2Wp!XWaGDzaGfM48pfs}w=cv!R3P>n(g!dez4 zriHxW1E~6NhOl@DJ4MQNVMpZ#=Dz@3qWn zdQd#lQ?0e$eJJY9_nzOUQAf(!62~!7-puH=GUuY_Dh|T04U3eqzG7s2Y*tMC_xt`$ z!+Ydp8Gs`;wXw;;Vuyl~HmmG#7ho57^gk`^O#8Q88iFKV1V++pIZ%tdP51%9oZ!Je z0ryqvxd0ML>Tw&*3=EBat+5sjV2F2%nH8m@E z-cWb|a$~gPunS0%1-)kW#yM0mBW76w23a+bQg|)JsE!{a(sz2F-P_PJzpWS!`d?WjrmfID}tDbDg&_c|?&m(T_sky0$k_b}&B(P*4C_wAz45z?m5)$^;W_$m+|-w-<&^d)qq!X+cT z@VjlF9;4|RxhHg{M)|v%x)6bNqy_UA`rKq~gP5ei>R}#v0?(BIUr-=1UjwFdfw;Nl z1BZaqu}HOiL)a1|{LaPUMe3{N*gNh{p|ErHx&<$`ljK2t)|lfL}37QZ10axC!FHqvPLK`H`3>=>5#&;hgzxIFAg zqVhwLtZ){$k)>yQF5)~H%J`ktfuuo#oiH}sXxA%R5Xm464hQ zv039`1ZdKkOc`uxZrOeA2*E=lT!0U0Th<9cYLg+@6;X)6QR}?b1WCnSa8&-DYm;M9 zif*UugmW-v_BlIJfl>{(9DD}Z47hi|RnN2vtfpWO!*7SKCQk^o0P!?}nIVbS+hey- zF8AX6t04UsYK?k91U3Y1X$L-8oZ1D5D*^PE3ZNIfudZ$l>TX1U4SAId3CHIkGzLor z9l&Z|+!z2|2Aer#RxE^2n3w^?H3QU-m5mMD6Tmk;5zxP~2wy)u?kx?j4`ycO-TnPM z$TDue{JVh=FgZCn(*B|UpnkIWHTi=uAns{84PZM-(n_HLk%f%#?`;x@=pre45`2Z* zyoIw-8^VtNN2H^+XT;MFEQD>9M}ROeF+{`#QUuoC*pR_|?(VhEJ0G^I;q%&SgCw=# zzg@-Rh2VT9Wwr3Ix>E^Y!yh%7HT0QbhpPPVw*3y^N&UBXjo$!qpaIfF7;|Pv(LnUs z0aDUon%_ueANab{H|mN~1#3AP`wjG$%gV|&#?pZh5+s;N!5k3I zyYS4K@HjvQh)~fy22}y@(Ie$U$bRQBIs~a5`!K8QLw2eb2r2<)I2rc8T%vb#%3Vct z%gAvL{ytFezk5lTh8hn z)N9=phEaayr77Y(fL#lLl!sxvM|>Jc`PS@k^7wEyBiZI7dX-{TT=j$>%s#JjU5o+@ zZQSVdlenIOdgoy<%@X?HhQ9M9I`@Ch1(_(84fhzai%@(peQaI!7rrHKmaTQZvhbvz zcv|b^ulBGupE3J(aVhazR_(hd6s!J?Yb2c=CnyKQ+%4_~H8ae7dN|(&LOm?e2dbie z8L-uT?j~wS6~XXB`6Zb-@Md;;vuy-_-3KfbB;@3wZEbC1nmpe?0S|Y<)Sa& zwE&7ppd!f~g_0S-))n5{o|cvtLLsGe4=&fii0bBEf`hy#C4wWVtc)VS0p1fv44TfH zjB|G*h`IAaW*_k9=-+&gMRY=HuAnE%keQhvD5N~4_h*H>&#>I=%brNqW07_%@}V1? zZl{RBkzKkYl1~ zOqI!O^TD&5zXoZYO9nF9neJu08S?Y@4`A2O(AX6(8$QUmH~iDP{BXOIN}S)m%|0t- zm+uZc@ii`KjQ@&+7_eh-5_D7jpM*N)!li_SfngXf%AVk^F{X>vj8@a?5U3EUJ~0TH z*u^Nf#+89QN25o!LDy{9S!=!oJQjI*Q&V+Szs`T2nfJG2;q|YAXL@%QayXpY*$Mbl zex2vta*Wp-aJ7u)SV*ZE`K837U#VwC>E$$W5`JDHWHszhzLL0$aUsklpF;kAuF8|H zY?mKZx61m(hv`vI5oQI;Bas!qoJ#CCbb4|g;uXOrLQ|9Hv$&lNNiYH+-By>tGE4F2 zH_)CMQ(G8G{ol`&hbEA$^Og8>;aNg*%UQl-Ru(IJVaiz~F3Uw@skSyf4;{4Tf2*_}E zQ-cnoaZ+6z^_v)bhSFyHjOnDDz zH`R;9C3f59pa~3(Ci?#pJLnKF;$_yHO#l&BSD;zjJPKxYd@=d+c5}0u+3tv_Ln`vh zmBbMP4#OV8J7WLS0;Gx~gCaTpms&EHa4xREx-8p{?fj$Vc{fS2 z-68!|g|_6E56ls>0+HWF=hk?Cci8^f2@aMo;CjwXtCPm{#)o_sLSg@F`|9}&j|W4V zKmIj}BL!1gkF@XBBNGxa*N6}GQsSa)_kT1~rAIuuulJIn$iBe27F-ZWQf_ULhlKO(GElu*$M_YK{>4WWEFVk59 zpW+@z8J(og`%K8Fd?PZ5pF{l=HP#dygBsh3e~oK;-bJtvdr30!3A;j)GY5ybgQ!k& z<=6wO!>gK2i`rL16j?bBOS{;ym(`q&k`}c;;G?!L_DhFY5EJKqkWv55wR?^HI$cLp zyY54kKWT;Z)?YNg73gT<`D4iC;0DR*{kWnFE5?~joyF#$MR(`e?6F|!NX0!1^lhl_ zET>hLuxWzQWR2YIG1*(44R)|b8n(+3lLYb8?R9b77i>|&Z)yJ|Cpp0_p{+^sZK<-Z zzYpXi$+^1GDt&_4+N`zIQsB9og~yGJ3VILms`XdpIepPr+7wdlboZUO}=6-s5hibdqNu&40q-JH~anrhOp+%v?m%!0uHor@o=}Ot3#tW6k z9z*KAfqF&t8?BUTz1-{gwYMB*|RO$?KztQ^H~vykagY)u+} zk3;ji%p!^}dfr$3N2O*@QiG-oO(@XrF5Tyxu63`e7+eZfamMeTJ1QKvEo#exU)3;7 zFn8o-;Dk}TA1S_%AL!_=0gVNeOFVXEx1k&-f)BRBn|Wkrbo4+IrYHR{E!&HUS2@Y; zt9<%B&UG2$PC*c6s2^rd8Wb+QzO(ZXVdCi`onA?78AdFbjv=5kJ!e#uQp5`XBYLTHE9@MAr-qL(VQSemZ#yNv!T?E5+N!X3xDlUt*|; zT?(aO5KnkA-B!3#sajm?Z_laOlK$lSPH1Sz`fA(Z)NNh4x6jT9;s!)e()GIyH&f8l zSK7H*Huh152SjFQ4gGWY-=yeaCoVwv?aX|F(E zOOn`bNl$Y%QraDr`^-5Ujpn_9%tLRDWc+hh?ncMk9ShNpr3MoA!Q-d^W;Zc7kC6s9qv9_U?BRGBhazoBq-xjUvm)Z}~P zeNq@n?5Z7+n zv`bWE#>s0LWHmMx`%NHv(J9YLqLotef{&l(jCe+K25;m+PIS9Iwl`)1txCe9&Gf0; z1Ao*y8@k{82XQ&bsdP;jM|Iwdr`x)c!0}sKbcx2dEM1);foPichhei3TQc#r^lUpQ zU&}rcV_Mfcs6{{Jry&0i`9bs=RK`Qi8;qQt5k=2D$XXPZ3`6&sg6Q}Jb){58^IbW&ze0i3bOt6~L#<&g^TtkVB$bc2 zOt8(|W-AFL=NF54@c^sxs(7dBBMY(%T-s1`QaN}O(HjHc+2}!>!eFI61uV^oE*2J< zQY@`9C<=_|y4AV!6|a|lc!3eV%cxZ}r#@4)=U9#Tgpv>9h$54?dyeR&;KfvJuqkjE zjx(i?B}l6Nc6)?VGT`y&2fiVNfri*ps5%|$zC5BDtcqASoG)EHRIfnX41il1gLc2s#AC9_m}!{U5VKW zDv$*s;Y8Gr8Vb8W76~0*jf}tG;zVAO9VKy0*$fFy6w$LVWHZwg<~S`M*EW!E%3bGV zvu6&wnu!xIHDlXlsiK;=t9R>M+e)`bF1u(%+~>_-le&PIeju}=lDNa*pVUfzk6SN> zX8f;c0#2;^Ge9O(w>5Q`aKUd_9dtHb-_!KyR>_ZY)wSB;8kghkMcHzrDX64x@$qus zn$(^bEqsuz1cUoncYi;gx^nJ^HvjmpUn?7`lj~y=NlSJ9&o{HjEBR|cg&eL_muUJ9 zosCOUBP*PM$lv3W{=B)aEas0V!+9wGu73ZX`FoJRg_j_{Nrb(E2XhMj9gvWvsGC_2 z7!45(%|>$@*fvwUea}yv0P5hM*xufLps4tHjIbyTKYY|bxa)UV-{1s)6&jmS`KH}e z_pM4mh>N&VtgAtC=y!GDagC53za4x}nU#f5KH@n2tbXO?ASjaZ0lrDFW2p{DEirt)i(X)Km4y`${&BQI=9I- z&KK^FG~WunE|^N?0n1OYFPkw)q`) z`aMtJ1%-{kX_Q+t4+Eh2&rfQRW?b?jbu%+Yn7&Sbwxxk`_G|fLG0@cln`Q|bWT$anDAwl*N6@a;Iae2GghRIK$>Jb`|%baX#iIW z10F;h+m;S7Ok#E zaf%qgo&mfx1OqqT_a}gkhhu|%%j+kWxcep$@2ufLvK*1I9`I*K?Go$s^jAm& z{ECF0pIj7(iP}#MPX7Ky@(E(;&YIkpLG^|_1Wv;mRz&*=_)O}p%N1&(%Ih6VBFx2{ zP0vL2a4}etoGSWqH&4nE(=1ZQ<4H_R@bPi_{?5#PD3^bR#^4pad;8UX^VPxM!=&B) z#V(tyT%*Yvo&CLB(@GPcqzlYueOr!Kp@hR@rr)EfzBeA5=p-jC^~8fSoJaC)(_68^ z_t^~P0KQh+ryiWhd2IjZ?I_R+07{GB1s(}~Vxc{I_l;1DH57GXtJn;$j3vD-sp=w3H)5y+Xo;)F4~*MGEOF97;Iiaz`9lJM9Yb|j@8V<^fgV7b zU=Z>Ob|^vrOP{Ql>zt5Q2zQu^OkrU-e)!h>fm|4Pdn*cR&*nCNwxmPGLl_{aPGAgO z6@(1P|3JXHIaL=0dBWgmPR1iajJNclL`K*GudJT@ZZF6bHLS71fnIAXAQzBsc!-(l zob-b~8+ke43~}C_zYP-H2N1d8%;q@Mw_}3@=dM~JeeqgaT9kqo!7l#b=7#r(5NXMR zUE?Nn#?^H5M_0Y5dt%TWiybw(Med-tK=xUJcX}yOQp|`C`M@R&W;Wg5TKRLfk;Ks4 zV!p*2qiNZ_yRp-@sxpHreS`kNW`;y#EA7L`2&QIJImJtpY4Zh07$0o*VtqEN(pY0n z^+x7wcez;m{q{sWS2B0)!r6{ti;qOp@#aG1E3Ck>Wedm}#ecc4yj^0Nea&rS-z|2$ zuWRbXaI34uYIlsS3hvH|;L=|2w|DQsSgc1VEk6Q1OA!%F&g(j|=YK|xdR8c|Bs_kU z-fJ^yp*;G#;UycJO1%nS@4EI4qImq$mQDSw2Z}V+q9dI@$oc-leLv;hGONvqWm!|`=uVnX4# z&2gav??X>__d1+yS@zR_&b^1|l+&Xz=)1pwK!}WE8WGzZ@YbGUF7X>k+H4U&)8Ic)|J!7v!C8x^pA6WykcUad33I>9=95K zyYE!ACUZS4PGGB3)p-5fpzcfK)zHgB5xWkIu_V$9uN4(H7nf1==?}#P5bHSGME13A z&UaP%a!%OB4sy-lYcge@Cj2PUQx}e-?Q_{|)Gl0SG5#pN!=EK*IxTmSb8y);l|9p> zk2>4v^v-2^5*>^5tK5%rZFS{uYY%0=J-TII;5YMU`a$4aXN)zf-*VrhD(&?BC81)ET0)S3O9Q+VTmW$*+@x9fjM9x&WuQXl? zxeUQdOtvc>R4Mz4TP)!`?)pq>({StP#mrMv>-Gor+yO&n~I}o+|w_JY#hmZSm+1|p}waJ zA|2C;acf8<-90>X`v7%`6tJW*u&`FwrB)kF*KMjHqzg9AAqY&6fIysDW4K(veH0>c z!;umIVE(m$e?Vek!0?YNeVGq;^fvwNVBJzXtfbhX9;_LTuQccf9gB7COH}&XA&K{f zVza6A*4*)I2J;^G#2RKdL1KF9&z4$Qk0`U1^fPL)C)?kPQ8uL<1IBxzbJYtUoHv@I z*TaZ2YHqFu+i2MfQ`xB40#yy7*436!?$Z%7J4E-tF44@~k!VfWKJ zUzNMx*w#-Ufh`4gC%wV9sSf^}%6)w&b1&_;hhO;nCk&;>Cz+m0oa&W)4hM>;x3qG9 zcCjmjn%!&1;(6aZzOFxL@wya*lxCrt>4#X1!ky5G=By2!cOk<80m<)hY1MF~C zQ0UqC0rs^_*e~)*hD^mFe+Lmupcd(sQ-koKf9%P<*bPH|GVj|-$3aK+o9}c&$3L11 zy^twaP}LOb`j!z1=hdtN_5djro0y1BunpYEx%tqLKy(gy>=YH0$2FxDcT zGww)sA)y2$3eP6XtGjUvbSz-w$pj($mt<}zq`ie)Hz1gM1#|1!hbYrV4ra)CN``y0 zc+_)AS^_wmSA1GXl>iEYG;T3CIx(PJ6O;a)B66XIZEQ%j9|A2pK|-|RU<$Gn#Ha&2 z93H8viCh$P$|CV+pcA{-%m$4cBjq&3)b#Q>*eH=0bvhLfvH$uKpNqqVD?zHLp1$NHMI=ju87OCUa<5)VKN_Q_j zb$lw3@ZMtWH+!e6A=HJB#!3dHURYOWxN+P4DEc&eoq88kaYlMZq2@Eq2nzYz+R6$9 z6W8=Aj11>3k|DJS5%w2t+H(%KWoH8mDG1gu6FB8SEfx&kG^Be3(qG8ntp`^Ou9%n@ z=)9t=4F|Gh(jh|yqDyAcvLC|QqJ*F)*p&L}T41Y(T(Kl5$c~~g@eBkVo}l}t!8L0N zT%gry;A<8joov33J=+S7LA4C=c=-4!IF5q$-%B*~x7x2BJhMMst5@Up6!%n2)|i(? z4YT{{Pp6BTbY1YaMS-h{HB4B|c}Jjqv4+DZiA$Gjd^7#L%%tTl%rl8eNs4f0I?wXM z8~~TKdAJD-jTL}92ccHsE(d?F&q(GWNIU}D+T@OBJs6M%U$Dy}95FJVz$$csJ1|(v zlWp+9D1z{hBG3Q}w+V!TM*)9C+Uj2FJ`xE5e+vO9jD*+l(YzC~8!0Mc!2ZMz`Yt3x z55#abXK*jhf=C!7aR^a~KvG|LZ0t=&#sKhb>;{SN|20JXMq2qQn&2%0EmdYI-yqxv z5iT3?UVx#sy@rRUe-Yl7)LVXjGjuj)2SHokUZH#A8hmmd8iT`eML0M38rtSJDh=Ux9%5i= zA0JIiq$G5t5z4kVsZp)l`1_@B8o!l|lToVts==jKB!8wLE!X6>*~<+wuLBk(0lNtS zon(K%b3qpPg!@JdhA}p12F``xr~P znyuMa?){jkZr&XbhMg_5dZ|Zvt&bhghd?5Eci&=Qqf&TzOdszSbPLf@0hQ|msZI}N z_b_NgpIKPwkS5pKWVmij#B090cQCc~4WC+EVB6RG~1LzF?$4Mx&M$&r#5rSa#2t-#J0P4e0 zNB{>dmm(-93}IufXe%Svfjj!Y6q#pm*)#*42Vx%t*XuVBDnSak7qsJKoFNqpu)!c2 z4CI3Y$yZYCMLvu)!c$-3i%{Os(s2wrYN(oXbdaNTm3?rMIfD%+W7rp_ama5Oh8h>n z)SmZ0JJMu*C6N#;y;#o9Rp`EyxM2l*IWxR1OOSr=RuK)um)`F{*wW?~76Rkq;#>}6 z4q5;xK-^1k6VQUq4?HbBpuyQaI%+Lz01U$moV*fHP@3CK1=UW77YBCb|KQAr8Cnah zyEbQF-#Zvl<=+D_CI~z4g3K{8F79Ck6?5ueM8QZxLlXrqQfLEe#9d3_(v5^PFCy?rXZ{%visYy6Z(DUSCn-W!ezyMo0jd);p_YF6pUC zhEFmtcmH~oS{TK~ZcS_N98G)ehfwV99j|7ABB{=Xa1W2%Q8o5B!=|HC!gGzt-1m&! zHncm8OlH2E8l<{)`{KTqR(`8 zlaJMA`iuR|uelST9mx@AlZPHx!x~4X{^; zzbNR+?=IG8m7W_)?x*F1cX&fc+D=2CL9KR?wW{5$uUMjmh37Wz zjcM3qPjH><3e1g0VRfyZot#Kdf!SO?%!0HXgk&K6{7QlNuIt5T1K6hSC-><7M%O_d z(VS7Fq$lGjDEO=^3L+Ca0WIQI^_A9|d$e z1^5yXiqpxs_mbK9>zEV#>sHziC9Ocbs31xug2Br@!ZOPqBf3yc`5qPB`PJwAI)uLK zrrFriMNhwDVz7~Qarbns(yy9^KaYTK)P2|s9I-@rusf=0O~xgkhe8c3{El zQk1Om{E~&@uGYoqVW0`j6G-6M{rjiEXf%>)M%aaMF6C*1xzmom&-c7Y6fVq1f?t_L zEjmbC`M<~pTZLSpDId8KsBQCv@y~{sQ&yP$|LT2G(VcW1i??n` z8CDarQBB0fuvUu)ymqLaNHqy+nM@6#3Uwm;A6cP4Tdi}lfln)quDp_NS@(3Dc{9GR zDM73F3B@KCV+V=Z+fvJ0`0q~sd#n(OnLm?MOR$jSVeJzTj$IvaTI5IkA^3r)byA01 zfZF~E0ZYfuH`Eca)erOs?-k$d>oB3q1#)5g$&)#pSUNF~8|xOKHb^*_Jv@{0V(K6W zxoDR)llvkYa`As;(C`jt?BYu`xQ6&s?Twd=?);a7!j>gW6Y2?Pj1X^~d-JIe; z1Dy}_$BJaln~|xrUoOQqo}_X=4&dkIEf3EVsVIPZVuK{cl4MeWd#qHm`1USy*FH1b zXriSaPOQz##onx#XLr7hTyK9;ioe_(AZ^V1qmk8d2~^{+Lhy{~LY%H^%=6dRWDpY$ zP0dJf(`QtBIsW+d$lJtXrO>AH?3x_w`&y*+71 z!)*WRy2Vu|gDVcV=3j1IJ>uaw_6Ic%eh&>vsSA0DOvtbqxg{3-`0(o{eEl2_yuTQl z-8;oXPo(i^SmdrMGU7Ei2uImj+1m9mwIufG|NfH%hVSrALuu zR30vm0MfU)$sM@9=aocbNeU14mW}whdTZ4@4 z+xKs_(QT&8rypGcS!WQtg~?$2pfFU}*sTzz7UeG)NW z`4uhyriMzN%tlZK4xTl`+spw+o9xFD2{*;!qno=O0HRsRN-#G{L{bm{_28TEi=h4h z`*T?bh5fC%YTA5JOb!9I*Tsfyehu%UBMB0|=`*Qy3RJk2kdP0*!)2Hbj(ij@7cTBF zBU|2bu9>j_<+&o)_(mcL#4Ly;HBWXZ`B511CUC!vXssk+hhf+;M@QnmKE{=J9*<{Q z&}yNHng2G3f!uGRs6fR!M^Xc`R|2yG?NVVf%8G2QY@iyKu<>f&AYHWF*aYq%ixW9fw}!Iz?2n3$m!i9oyUUOuroQXr|0BL^M)4h3I*j1 zJstPbVw){cd+$(IPg~Yj$J(X@bbBdTr8#9PyNJnIt{Taw>wK4zSQ;lRH#MFU#*O~O z6($buKZ#{F<2+As3e^*)Phm;DaW*D|?BI1vHikNNlSOu%x&d|x$yG($%1SZxS#sYY zSfnnB$uGSlalI|4wCNf<&#zh6$J2&5ix&D5stwc6}D;U#@tljn2v`sS$M7^Zq;`>BhMw=}6b&^qTxrt=U8^ z(FW}W<=_=;zmn#BQ9suP7eKC#L%KKecEw|`Rlg2BWV2<{&qy_=^pC=QojKOxDbJ&n zcBc>~_ znoWekd(00U4t1SVoTv`BO!e@W*6~cs2ETV3wa4M{W2zszYH$xKsRj?p zi{+43p?8^L#-sU}YO*oiypI+o`f^-A7#>&h8(3A{WKlrRPWpdx%(xm?NA0iKd!hOK zh5dW=~fuvy~BBB7ewX&%sACokxJlg*x4*)kz8fD_!!PoH1?zLE;rJJUXlZpgw%@&4<_z%;9K)t!f3VUfV(KTm z!P;XHWToqx<3mcvaRE$aV1ed?

IneHwfCAm#tVOmAtCxItd|xMLB*VVemEVn)f) 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 P6n_5H-L8|aZR`I(;>W1J literal 0 HcmV?d00001 diff --git a/d1/da6/struct_b_t_1_1has__static__method__metadata.html b/d1/da6/struct_b_t_1_1has__static__method__metadata.html new file mode 100644 index 000000000..7ecb6a3a3 --- /dev/null +++ b/d1/da6/struct_b_t_1_1has__static__method__metadata.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: BT::has_static_method_metadata< T, typename > Struct Template Reference + + + + + + + + + + + + + +

+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::has_static_method_metadata< T, typename > Struct Template Reference
+
+
+
+Inheritance diagram for BT::has_static_method_metadata< T, typename >:
+
+
+Collaboration diagram for BT::has_static_method_metadata< T, typename >:
+
+
Collaboration graph
+ + + + +
[legend]
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d1/da6/tree__node_8h_source.html b/d1/da6/tree__node_8h_source.html new file mode 100644 index 000000000..cd6f45215 --- /dev/null +++ b/d1/da6/tree__node_8h_source.html @@ -0,0 +1,780 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/tree_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
tree_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2* Copyright (C) 2018-2023 Davide Faconti - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include <exception>
+
17#include <map>
+
18#include <utility>
+
19
+
20#include "behaviortree_cpp/utils/signal.h"
+
21#include "behaviortree_cpp/basic_types.h"
+
22#include "behaviortree_cpp/blackboard.h"
+
23#include "behaviortree_cpp/utils/strcat.hpp"
+
24#include "behaviortree_cpp/utils/wakeup_signal.hpp"
+
25#include "behaviortree_cpp/scripting/script_parser.hpp"
+
26
+
27#ifdef _MSC_VER
+
28#pragma warning(disable : 4127)
+
29#endif
+
30
+
31namespace BT
+
32{
+
33
+
34/// This information is used mostly by the XMLParser.
+ +
36{
+
37 NodeType type;
+
38 std::string registration_ID;
+
39 PortsList ports;
+
40 KeyValueVector metadata;
+
41};
+
42
+ + +
45
+
46enum class PreCond
+
47{
+
48 // order of the enums also tell us the execution order
+
49 FAILURE_IF = 0,
+
50 SUCCESS_IF,
+
51 SKIP_IF,
+
52 WHILE_TRUE,
+
53 COUNT_
+
54};
+
55
+
56static const std::array<std::string, 4> PreCondNames = { //
+
57 "_failureIf", "_successIf", "_skipIf", "_while"
+
58};
+
59
+
60enum class PostCond
+
61{
+
62 // order of the enums also tell us the execution order
+
63 ON_HALTED = 0,
+
64 ON_FAILURE,
+
65 ON_SUCCESS,
+
66 ALWAYS,
+
67 COUNT_
+
68};
+
69
+
70static const std::array<std::string, 4> PostCondNames = { //
+
71 "_onHalted", "_onFailure", "_onSuccess", "_post"
+
72};
+
73
+
74template <>
+
75[[nodiscard]] std::string toStr<BT::PostCond>(const BT::PostCond& cond);
+
76
+
77template <>
+
78[[nodiscard]] std::string toStr<BT::PreCond>(const BT::PreCond& cond);
+
79
+ +
81
+
82struct NodeConfig
+
83{
+
84 NodeConfig()
+
85 {}
+
86
+
87 // Pointer to the blackboard used by this node
+
88 Blackboard::Ptr blackboard;
+
89 // List of enums available for scripting
+
90 std::shared_ptr<ScriptingEnumsRegistry> enums;
+
91 // input ports
+
92 PortsRemapping input_ports;
+
93 // output ports
+
94 PortsRemapping output_ports;
+
95
+
96 // Any other attributes found in the xml that are not parsed as ports
+
97 // or built-in identifier (e.g. anything with a leading '_')
+
98 NonPortAttributes other_attributes;
+
99
+
100 const TreeNodeManifest* manifest = nullptr;
+
101
+
102 // Numberic unique identifier
+
103 uint16_t uid = 0;
+
104 // Unique human-readable name, that encapsulate the subtree
+
105 // hierarchy, for instance, given 2 nested trees, it should be:
+
106 //
+
107 // main_tree/nested_tree/my_action
+
108 std::string path;
+
109
+
110 std::map<PreCond, std::string> pre_conditions;
+
111 std::map<PostCond, std::string> post_conditions;
+
112};
+
113
+
114// back compatibility
+
115using NodeConfiguration = NodeConfig;
+
116
+
117template <typename T>
+
118inline constexpr bool hasNodeNameCtor()
+
119{
+
120 return std::is_constructible<T, const std::string&>::value;
+
121}
+
122
+
123template <typename T, typename... ExtraArgs>
+
124inline constexpr bool hasNodeFullCtor()
+
125{
+
126 return std::is_constructible<T, const std::string&, const NodeConfig&,
+
127 ExtraArgs...>::value;
+
128}
+
129
+
130/// Abstract base class for Behavior Tree Nodes
+
131class TreeNode
+
132{
+
133public:
+
134 typedef std::shared_ptr<TreeNode> Ptr;
+
135
+
136 /**
+
137 * @brief TreeNode main constructor.
+
138 *
+
139 * @param name name of the instance, not the type.
+
140 * @param config information about input/output ports. See NodeConfig
+
141 *
+
142 * Note: If your custom node has ports, the derived class must implement:
+
143 *
+
144 * static PortsList providedPorts();
+
145 */
+
146 TreeNode(std::string name, NodeConfig config);
+
147
+
148 TreeNode(const TreeNode& other) = delete;
+
149 TreeNode& operator=(const TreeNode& other) = delete;
+
150
+
151 TreeNode(TreeNode&& other) noexcept;
+
152 TreeNode& operator=(TreeNode&& other) noexcept;
+
153
+
154 virtual ~TreeNode();
+
155
+
156 /// The method that should be used to invoke tick() and setStatus();
+
157 virtual BT::NodeStatus executeTick();
+
158
+
159 void haltNode();
+
160
+
161 [[nodiscard]] bool isHalted() const;
+
162
+
163 [[nodiscard]] NodeStatus status() const;
+
164
+
165 /// Name of the instance, not the type
+
166 [[nodiscard]] const std::string& name() const;
+
167
+
168 /// Blocking function that will sleep until the setStatus() is called with
+
169 /// either RUNNING, FAILURE or SUCCESS.
+ +
171
+
172 virtual NodeType type() const = 0;
+
173
+
174 using StatusChangeSignal = Signal<TimePoint, const TreeNode&, NodeStatus, NodeStatus>;
+ + +
177
+
178 using PreTickCallback = std::function<NodeStatus(TreeNode&)>;
+
179 using PostTickCallback = std::function<NodeStatus(TreeNode&, NodeStatus)>;
+
180 using TickMonitorCallback =
+
181 std::function<void(TreeNode&, NodeStatus, std::chrono::microseconds)>;
+
182
+
183 /**
+
184 * @brief subscribeToStatusChange is used to attach a callback to a status change.
+
185 * When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback
+
186 * is unsubscribed automatically.
+
187 *
+
188 * @param callback The callback to be execute when status change.
+
189 *
+
190 * @return the subscriber handle.
+
191 */
+ + +
194
+
195 /** This method attaches to the TreeNode a callback with signature:
+
196 *
+
197 * NodeStatus callback(TreeNode& node)
+
198 *
+
199 * This callback is executed BEFORE the tick() and, if it returns SUCCESS or FAILURE,
+
200 * the actual tick() will NOT be executed and this result will be returned instead.
+
201 *
+
202 * This is useful to inject a "dummy" implementation of the TreeNode at run-time
+
203 */
+
204 void setPreTickFunction(PreTickCallback callback);
+
205
+
206 /**
+
207 * This method attaches to the TreeNode a callback with signature:
+
208 *
+
209 * NodeStatus myCallback(TreeNode& node, NodeStatus status)
+
210 *
+
211 * This callback is executed AFTER the tick() and, if it returns SUCCESS or FAILURE,
+
212 * the value returned by the actual tick() is overriden with this one.
+
213 */
+
214 void setPostTickFunction(PostTickCallback callback);
+
215
+
216 /**
+
217 * This method attaches to the TreeNode a callback with signature:
+
218 *
+
219 * void myCallback(TreeNode& node, NodeStatus status, std::chrono::microseconds duration)
+
220 *
+
221 * This callback is executed AFTER the tick() and will inform the user about its status and
+
222 * the execution time. Works only if the tick was not substituted by a pre-condition.
+
223 */
+
224 void setTickMonitorCallback(TickMonitorCallback callback);
+
225
+
226 /// The unique identifier of this instance of treeNode.
+
227 /// It is assigneld by the factory
+
228 [[nodiscard]] uint16_t UID() const;
+
229
+
230 /// Human readable identifier, that includes the hierarchy of Subtrees
+
231 /// See tutorial 10 as an example.
+
232 [[nodiscard]] const std::string& fullPath() const;
+
233
+
234 /// registrationName is the ID used by BehaviorTreeFactory to create an instance.
+
235 [[nodiscard]] const std::string& registrationName() const;
+
236
+
237 /// Configuration passed at construction time. Can never change after the
+
238 /// creation of the TreeNode instance.
+
239 [[nodiscard]] const NodeConfig& config() const;
+
240
+
241 /** Read an input port, which, in practice, is an entry in the blackboard.
+
242 * If the blackboard contains a std::string and T is not a string,
+
243 * convertFromString<T>() is used automatically to parse the text.
+
244 *
+
245 * @param key the name of the port.
+
246 * @param destination reference to the object where the value should be stored
+
247 * @return false if an error occurs.
+
248 */
+
249 template <typename T>
+
250 Result getInput(const std::string& key, T& destination) const;
+
251
+
252 /**
+
253 * @brief getInputStamped is similar to getInput(dey, destination),
+
254 * but it returne also the Timestamp object, that can be used to check if
+
255 * a value was updated and when.
+
256 *
+
257 * @param key the name of the port.
+
258 * @param destination reference to the object where the value should be stored
+
259 */
+
260 template <typename T>
+
261 [[nodiscard]] Expected<Timestamp> getInputStamped(const std::string& key,
+
262 T& destination) const;
+
263
+
264 /** Same as bool getInput(const std::string& key, T& destination)
+
265 * but using optional.
+
266 *
+
267 * @param key the name of the port.
+
268 */
+
269 template <typename T>
+
270 [[nodiscard]] Expected<T> getInput(const std::string& key) const
+
271 {
+
272 T out{};
+
273 auto res = getInput(key, out);
+
274 return (res) ? Expected<T>(out) : nonstd::make_unexpected(res.error());
+
275 }
+
276
+
277 /** Same as bool getInputStamped(const std::string& key, T& destination)
+
278 * but return StampedValue<T>
+
279 *
+
280 * @param key the name of the port.
+
281 */
+
282 template <typename T>
+
283 [[nodiscard]] Expected<StampedValue<T>> getInputStamped(const std::string& key) const
+
284 {
+
285 StampedValue<T> out;
+
286 if(auto res = getInputStamped(key, out.value))
+
287 {
+
288 out.stamp = *res;
+
289 return out;
+
290 }
+
291 else
+
292 {
+
293 return nonstd::make_unexpected(res.error());
+
294 }
+
295 }
+
296
+
297 /**
+
298 * @brief setOutput modifies the content of an Output port
+
299 * @param key the name of the port.
+
300 * @param value new value
+
301 * @return valid Result, if succesful.
+
302 */
+
303 template <typename T>
+
304 Result setOutput(const std::string& key, const T& value);
+
305
+
306 /**
+
307 * @brief getLockedPortContent should be used when:
+
308 *
+
309 * - your port contains an object with reference semantic (usually a smart pointer)
+
310 * - you want to modify the object we are pointing to.
+
311 * - you are concerned about thread-safety.
+
312 *
+
313 * For example, if your port has type std::shared_ptr<Foo>,
+
314 * the code below is NOT thread safe:
+
315 *
+
316 * auto foo_ptr = getInput<std::shared_ptr<Foo>>("port_name");
+
317 * // modifying the content of foo_ptr is NOT thread-safe
+
318 *
+
319 * What you must do, instead, to guaranty thread-safety, is:
+
320 *
+
321 * if(auto any_ref = getLockedPortContent("port_name")) {
+
322 * Any* any = any_ref.get();
+
323 * auto foo_ptr = any->cast<std::shared_ptr<Foo>>();
+
324 * // modifying the content of foo_ptr inside this scope IS thread-safe
+
325 * }
+
326 *
+
327 * It is important to destroy the object AnyPtrLocked, to release the lock.
+
328 *
+
329 * NOTE: this method doesn't work, if the port contains a static string, instead
+
330 * of a blackboard pointer.
+
331 *
+
332 * @param key the identifier of the port.
+
333 * @return empty AnyPtrLocked if the blackboard entry doesn't exist or the content
+
334 * of the port was a static string.
+
335 */
+
336 [[nodiscard]] AnyPtrLocked getLockedPortContent(const std::string& key);
+
337
+
338 // function provided mostly for debugging purpose to see the raw value
+
339 // in the port (no remapping and no conversion to a type)
+
340 [[nodiscard]] StringView getRawPortValue(const std::string& key) const;
+
341
+
342 /// Check a string and return true if it matches the pattern: {...}
+
343 [[nodiscard]] static bool isBlackboardPointer(StringView str,
+
344 StringView* stripped_pointer = nullptr);
+
345
+
346 [[nodiscard]] static StringView stripBlackboardPointer(StringView str);
+
347
+
348 [[nodiscard]] static Expected<StringView> getRemappedKey(StringView port_name,
+
349 StringView remapped_port);
+
350
+
351 /// Notify that the tree should be ticked again()
+
352 void emitWakeUpSignal();
+
353
+
354 [[nodiscard]] bool requiresWakeUp() const;
+
355
+
356 /** Used to inject config into a node, even if it doesn't have the proper
+
357 * constructor
+
358 */
+
359 template <class DerivedT, typename... ExtraArgs>
+ +
361 const NodeConfig& config,
+
362 ExtraArgs... args)
+
363 {
+
364 static_assert(hasNodeFullCtor<DerivedT, ExtraArgs...>() ||
+
365 hasNodeNameCtor<DerivedT>());
+
366
+
367 if constexpr(hasNodeFullCtor<DerivedT, ExtraArgs...>())
+
368 {
+
369 return std::make_unique<DerivedT>(name, config, args...);
+
370 }
+
371 else if constexpr(hasNodeNameCtor<DerivedT>())
+
372 {
+
373 auto node_ptr = new DerivedT(name, args...);
+
374 node_ptr->config() = config;
+
375 return std::unique_ptr<DerivedT>(node_ptr);
+
376 }
+
377 }
+
378
+
379protected:
+
380 friend class BehaviorTreeFactory;
+
381 friend class DecoratorNode;
+
382 friend class ControlNode;
+
383 friend class Tree;
+
384
+
385 [[nodiscard]] NodeConfig& config();
+
386
+
387 /// Method to be implemented by the user
+
388 virtual BT::NodeStatus tick() = 0;
+
389
+
390 /// Set the status to IDLE
+
391 void resetStatus();
+
392
+
393 // Only BehaviorTreeFactory should call this
+
394 void setRegistrationID(StringView ID);
+
395
+
396 void setWakeUpInstance(std::shared_ptr<WakeUpSignal> instance);
+
397
+
398 void modifyPortsRemapping(const PortsRemapping& new_remapping);
+
399
+
400 /**
+
401 * @brief setStatus changes the status of the node.
+
402 * it will throw if you try to change the status to IDLE, because
+
403 * your parent node should do that, not the user!
+
404 */
+
405 void setStatus(NodeStatus new_status);
+
406
+ + +
409
+
410 PreScripts& preConditionsScripts();
+
411 PostScripts& postConditionsScripts();
+
412
+
413 template <typename T>
+
414 T parseString(const std::string& str) const;
+
415
+
416private:
+
417 struct PImpl;
+
418 std::unique_ptr<PImpl> _p;
+
419
+
420 Expected<NodeStatus> checkPreConditions();
+
421 void checkPostConditions(NodeStatus status);
+
422
+
423 /// The method used to interrupt the execution of a RUNNING node.
+
424 /// Only Async nodes that may return RUNNING should implement it.
+
425 virtual void halt() = 0;
+
426};
+
427
+
428//-------------------------------------------------------
+
429
+
430template <typename T>
+
431T TreeNode::parseString(const std::string& str) const
+
432{
+
433 if constexpr(std::is_enum_v<T> && !std::is_same_v<T, NodeStatus>)
+
434 {
+
435 auto it = config().enums->find(str);
+
436 // conversion available
+
437 if(it != config().enums->end())
+
438 {
+
439 return static_cast<T>(it->second);
+
440 }
+
441 else
+
442 {
+
443 // hopefully str contains a number that can be parsed. May throw
+
444 return static_cast<T>(convertFromString<int>(str));
+
445 }
+
446 }
+
447 return convertFromString<T>(str);
+
448}
+
449
+
450template <typename T>
+ +
452 T& destination) const
+
453{
+
454 std::string port_value_str;
+
455
+
456 auto input_port_it = config().input_ports.find(key);
+
457 if(input_port_it != config().input_ports.end())
+
458 {
+
459 port_value_str = input_port_it->second;
+
460 }
+
461 else if(!config().manifest)
+
462 {
+
463 return nonstd::make_unexpected(StrCat("getInput() of node '", fullPath(),
+
464 "' failed because the manifest is "
+
465 "nullptr (WTF?) and the key: [",
+
466 key, "] is missing"));
+
467 }
+
468 else
+
469 {
+
470 // maybe it is declared with a default value in the manifest
+
471 auto port_manifest_it = config().manifest->ports.find(key);
+
472 if(port_manifest_it == config().manifest->ports.end())
+
473 {
+
474 return nonstd::make_unexpected(StrCat("getInput() of node '", fullPath(),
+
475 "' failed because the manifest doesn't "
+
476 "contain the key: [",
+
477 key, "]"));
+
478 }
+
479 const auto& port_info = port_manifest_it->second;
+
480 // there is a default value
+
481 if(port_info.defaultValue().empty())
+
482 {
+
483 return nonstd::make_unexpected(StrCat("getInput() of node '", fullPath(),
+
484 "' failed because nor the manifest or the "
+
485 "XML contain the key: [",
+
486 key, "]"));
+
487 }
+
488 if(port_info.defaultValue().isString())
+
489 {
+
490 port_value_str = port_info.defaultValue().cast<std::string>();
+
491 }
+
492 else
+
493 {
+
494 destination = port_info.defaultValue().cast<T>();
+
495 return Timestamp{};
+
496 }
+
497 }
+
498
+
499 auto blackboard_ptr = getRemappedKey(key, port_value_str);
+
500 try
+
501 {
+
502 // pure string, not a blackboard key
+
503 if(!blackboard_ptr)
+
504 {
+
505 try
+
506 {
+
507 destination = parseString<T>(port_value_str);
+
508 }
+
509 catch(std::exception& ex)
+
510 {
+
511 return nonstd::make_unexpected(StrCat("getInput(): ", ex.what()));
+
512 }
+
513 return Timestamp{};
+
514 }
+
515 const auto& blackboard_key = blackboard_ptr.value();
+
516
+
517 if(!config().blackboard)
+
518 {
+
519 return nonstd::make_unexpected("getInput(): trying to access "
+
520 "an invalid Blackboard");
+
521 }
+
522
+
523 if(auto entry = config().blackboard->getEntry(std::string(blackboard_key)))
+
524 {
+
525 std::unique_lock lk(entry->entry_mutex);
+
526 auto& any_value = entry->value;
+
527
+
528 // support getInput<Any>()
+
529 if constexpr(std::is_same_v<T, Any>)
+
530 {
+
531 destination = any_value;
+
532 return Timestamp{ entry->sequence_id, entry->stamp };
+
533 }
+
534
+
535 if(!entry->value.empty())
+
536 {
+
537 if(!std::is_same_v<T, std::string> && any_value.isString())
+
538 {
+
539 destination = parseString<T>(any_value.cast<std::string>());
+
540 }
+
541 else
+
542 {
+
543 destination = any_value.cast<T>();
+
544 }
+
545 return Timestamp{ entry->sequence_id, entry->stamp };
+
546 }
+
547 }
+
548
+
549 return nonstd::make_unexpected(StrCat("getInput() failed because it was unable to "
+
550 "find the key [",
+
551 key, "] remapped to [", blackboard_key, "]"));
+
552 }
+
553 catch(std::exception& err)
+
554 {
+
555 return nonstd::make_unexpected(err.what());
+
556 }
+
557}
+
558
+
559template <typename T>
+
560inline Result TreeNode::getInput(const std::string& key, T& destination) const
+
561{
+
562 auto res = getInputStamped(key, destination);
+
563 if(!res)
+
564 {
+
565 return nonstd::make_unexpected(res.error());
+
566 }
+
567 return {};
+
568}
+
569
+
570template <typename T>
+
571inline Result TreeNode::setOutput(const std::string& key, const T& value)
+
572{
+
573 if(!config().blackboard)
+
574 {
+
575 return nonstd::make_unexpected("setOutput() failed: trying to access a "
+
576 "Blackboard(BB) entry, but BB is invalid");
+
577 }
+
578
+
579 auto remap_it = config().output_ports.find(key);
+
580 if(remap_it == config().output_ports.end())
+
581 {
+
582 return nonstd::make_unexpected(StrCat("setOutput() failed: "
+
583 "NodeConfig::output_ports "
+
584 "does not contain the key: [",
+
585 key, "]"));
+
586 }
+
587 StringView remapped_key = remap_it->second;
+
588 if(remapped_key == "{=}" || remapped_key == "=")
+
589 {
+
590 config().blackboard->set(static_cast<std::string>(key), value);
+
591 return {};
+
592 }
+
593
+
594 if(!isBlackboardPointer(remapped_key))
+
595 {
+
596 return nonstd::make_unexpected("setOutput requires a blackboard pointer. Use {}");
+
597 }
+
598
+
599 if constexpr(std::is_same_v<BT::Any, T>)
+
600 {
+
601 auto port_type = config().manifest->ports.at(key).type();
+
602 if(port_type != typeid(BT::Any) && port_type != typeid(BT::AnyTypeAllowed))
+
603 {
+
604 throw LogicError("setOutput<Any> is not allowed, unless the port "
+
605 "was declared using OutputPort<Any>");
+
606 }
+
607 }
+
608
+
609 remapped_key = stripBlackboardPointer(remapped_key);
+
610 config().blackboard->set(static_cast<std::string>(remapped_key), value);
+
611
+
612 return {};
+
613}
+
614
+
615// Utility function to fill the list of ports using T::providedPorts();
+
616template <typename T>
+
617inline void assignDefaultRemapping(NodeConfig& config)
+
618{
+
619 for(const auto& it : getProvidedPorts<T>())
+
620 {
+
621 const auto& port_name = it.first;
+
622 const auto direction = it.second.direction();
+
623 if(direction != PortDirection::OUTPUT)
+
624 {
+
625 // PortDirection::{INPUT,INOUT}
+
626 config.input_ports[port_name] = "{=}";
+
627 }
+
628 if(direction != PortDirection::INPUT)
+
629 {
+
630 // PortDirection::{OUTPUT,INOUT}
+
631 config.output_ports[port_name] = "{=}";
+
632 }
+
633 }
+
634}
+
635
+
636} // namespace BT
+
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Definition: bt_factory.h:210
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
Definition: control_node.h:22
+
Definition: decorator_node.h:9
+
Definition: signal.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
void emitWakeUpSignal()
Notify that the tree should be ticked again()
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
virtual BT::NodeStatus tick()=0
Method to be implemented by the user.
+
const std::string & registrationName() const
registrationName is the ID used by BehaviorTreeFactory to create an instance.
+
static std::unique_ptr< TreeNode > Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)
Definition: tree_node.h:360
+
Expected< Timestamp > getInputStamped(const std::string &key, T &destination) const
getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object,...
Definition: tree_node.h:451
+
Result setOutput(const std::string &key, const T &value)
setOutput modifies the content of an Output port
Definition: tree_node.h:571
+
const NodeConfig & config() const
+
void resetStatus()
Set the status to IDLE.
+
uint16_t UID() const
+
const std::string & fullPath() const
+
Expected< T > getInput(const std::string &key) const
Definition: tree_node.h:270
+
static bool isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)
Check a string and return true if it matches the pattern: {...}.
+
Expected< StampedValue< T > > getInputStamped(const std::string &key) const
Definition: tree_node.h:283
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
AnyPtrLocked getLockedPortContent(const std::string &key)
getLockedPortContent should be used when:
+
const std::string & name() const
Name of the instance, not the type.
+
Result getInput(const std::string &key, T &destination) const
Definition: tree_node.h:560
+
void setPreTickFunction(PreTickCallback callback)
+
TreeNode(std::string name, NodeConfig config)
TreeNode main constructor.
+
BT::NodeStatus waitValidStatus()
+
StatusChangeSubscriber subscribeToStatusChange(StatusChangeCallback callback)
subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber ...
+
void setTickMonitorCallback(TickMonitorCallback callback)
+
void setPostTickFunction(PostTickCallback callback)
+
Definition: wakeup_signal.hpp:13
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
Definition: blackboard.h:23
+
This information is used mostly by the XMLParser.
Definition: tree_node.h:36
+
+
+ + + + diff --git a/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.map b/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.map new file mode 100644 index 000000000..a89e71b33 --- /dev/null +++ b/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.md5 b/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.md5 new file mode 100644 index 000000000..4427fd216 --- /dev/null +++ b/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.md5 @@ -0,0 +1 @@ +058f49bc371e03dfb025df4117af73b8 \ No newline at end of file diff --git a/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.png b/d1/daa/class_b_t_1_1_retry_node_typo__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1b80a6c25eba86e7f7543e814065b1c6d5716bfb GIT binary patch literal 8574 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 literal 0 HcmV?d00001 diff --git a/d1/dae/class_b_t_1_1_queue_size__inherit__graph.map b/d1/dae/class_b_t_1_1_queue_size__inherit__graph.map new file mode 100644 index 000000000..6714bec4e --- /dev/null +++ b/d1/dae/class_b_t_1_1_queue_size__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d1/dae/class_b_t_1_1_queue_size__inherit__graph.md5 b/d1/dae/class_b_t_1_1_queue_size__inherit__graph.md5 new file mode 100644 index 000000000..c6a496828 --- /dev/null +++ b/d1/dae/class_b_t_1_1_queue_size__inherit__graph.md5 @@ -0,0 +1 @@ +b51744ac8753440cb141f90b9310a830 \ No newline at end of file diff --git a/d1/dae/class_b_t_1_1_queue_size__inherit__graph.png b/d1/dae/class_b_t_1_1_queue_size__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ff397adbd79f36c35c31db788f506e01b89a775e GIT binary patch literal 11445 zcmc(lbyQYux9%5>G)haOsGyXjbO_Q&NH>ClNQX2i5>kptNr)gI-7Q_OA|UY4ozh53 zp80&=-e-JgjQ#i7!?6aU@T|4&nDcjC*Bz#zra(+UM}Qy*vElk>3ie#T6R#wF7M#g`X)fsU-0NrI1VOj4 zi0)2LGcAO@wb%P7(sy{~wexFNY+0n&!&>6wW9tMA8p{aY4jMZ~>G3N+lZCkT#$8H3 zya^9KR!iRfZRf&=kYSr=S1wx>{3^k^gzPT$w8pT=y7CGPXgE9bWn^TOOBAWB-Q`2! zlU$3X_}68HM@~l<{^}LBaeTimeHY2xV6IlR%W_oV_a_1=MvsL$EA7XNU+h{V0nGTt z6&3AT>f*s7E=yAC>ZF9!Tyh2m1~2D@o{a=Zzr-CHA5JQ{volj!fBNTpf}nlU$hW5h z>{gE-&%Pv;cv4m~#@UU>$H_@3A|etR6@^Pad%VBqxt!t=lb9H$llRDcbE2l&|3U&W z>rE9OY48^Mc6MOsR396w^>X}q&&Y?V57T}p#I&@uG?IQ|KYsi`5Zxk^`(9pN$v=lo z6eVI1v**uA{Qdorrj`EBZ&Okt8@vxKhQ8|1h-Nr0^HqoXK$qp8EPQ;I_4V}~ zU0hlX9U9QT=On7SPs(tQLPtkOugscw%KzdF*J1Z9o5J=+)pSO2F`4XZqULwkmCbBz zISwwiTS-U0`HHHjsF2ao8QAz}xjoRS6Aih>YEX`ZxYvE03@MPH=Iu&%zl+?x&W|7#GB$w$iC+M3^X@Ftyz^R@l;(O5Atv74fzbw6vb z3O-ApYVgjhproeO^6?SV(bgWUo9G+a-gf-6x2J7r(-p%)K~DY&wY0IJYU;BSEPux2 zvyJih?_YBA{!GQ#C-6vea^+Utm%R=~ZQ6OUaEa1~@^s&PKir&Tb8&Gw{+*rHc20a% zF!XG6bTl(NTcOT<<5v!e>b2|F`%nMwDvtksLLIVRXk2H}9!`k_1O;K{n>I2QH5|~n zZ%s`u=n)bUR>&T;evjPQ-X^HO@Z{otz5^O;{+%BlyF&w7#sX!xIy zwY0VljfLT(*OlP2gc0knPNsf&{MMZ^w>C!_&ER8FnUyhkj+3HNU^@x=W^)W{o10Pb zrhc?c{--7KjXQT5a&mi<1nkVr%>x<5y_z~Z@h0m$I&IQ?U&EN&4qotFy?V9&aLT*d zb0@>#M1jc{yT*vb#>U3e%gX}hcBKBrT_Yo-wil&kW&LF~>gZLthALQ@YN+dQD>X>+ ze%R_Nt4l4gVL{q`E+HJFqWM2x_RMwIUAOw(C>dU=nS7555C7FYeJa7hzb!&WZbf~# zQv2RreJ$`>M($YZ?nBl@6{)TMWM=$KrSUoqjok9{Re6Ps{oaG$Pg+RcGHDBwATj20 zKL%PZF~koR?ub}%z9ksIxQX0MZz=zRvWc7*x8lqXy>Yg#w1DNgEm6&?z&27yb4Pov zwD2I}Fs2~JIIQG|GXiPmsKQiVEzCHG#u~lHk|Sa?93w4_DdVcEcG4NLPL)Kd-r*Hj zP1uz0E_x{@o}$%Sx0reO;nNMeEf&KEMVRv#2@(@rWD&RT?BtUut&$1H+_`S{T1o>o z@R_xRs9<Go%wn_c&CGT36>}-S75@%N%G&it(R)&%eAkOD6uPYgpcx0cVRPSvfGb zZ{08UtcJ^SjFL)WI=KDqqsHE>&vWAc-3|Viz83gpy7>5C)Odc( zsm(!&G>weVG7I{fpaaU})Id+WNVBL-Jt6as_J0IOSRP{@U<-oUTc8 z%k4jZWU|###_FREK4v&k)!oor$;UgTy zD9%whoTW@%f3jJZz&l@5lqcbTE*23H(N|>J=oO!wp>Z?j?OO~iEUfCc6NCvkCOv?qgvNX3ek+gAt8AA1qB!g^sUZhhi_rk)z$LLT%4S( zS<3N!a3f(6k)hw*w{Oc?TeBY@Y>cmu(b}5i);P{$3WU6UOTIB$reIW9SjY}{9IJ9L zO>wh-_Uy^`4|iy16xzyBDD?2-7%g(4Q=pZHjP%o`4EM%f3&xPIAP?4$Ln<8{PW&s@)c5^MkgnP?* zb_`m|Sbx(lPDAGA=YP*Mzoej}Q}R7I$a?qg-Muvwbr-z(FQ}VzM$d1?07;~)rQ8eq z#KKBIN}8RXp6<2wqo?P(x3{;FiVDRzE)k8?c$Gtui#G|AgbI`25eqR5Pr%o_yfth- zaq$!)BBGmuf*(Rdm6Vmchlk^rdee$f{_7*WtgN-rIrg`vO^K{r>>NV5Fh{vaM$u~o z&?8;rrsMvq&a2n2Tbi1rK9|^`@}Iiau;7t0zDh}9h=`1AAHXCfC4DwkPb-Hlo%76>vhWp!5hJJ5KC-r`Z;qNR-3x`#rE#%&e_n%Z89N_w{K!=W;~ai9teL!fhN6ih;shf;BA!C3^@4MA?Gr@l%~zKW!qHu|AQ=&9O!fHn=|-kxLHl1%)?sb-eO4fqQ&1SLGx9zmrJbWvV}^+(wY0SSDC~p@1Ts?R!A(z3?>OH<{A{!o=iuOAq{@NmU2N>^@^bdh#${{_ zr~&N>yq1GwH`G3cQgS{r`{(^Fy<#&A;FMzb4TERnmBa|o(_hzan|`Ao_@dgnK3e8< zu&%#8QX=a^t)o?;oVb7`;=J&HUc?z2O_YIw7;wYwv%~4(7k;G3>FH_PGBcB-hlj5B zy`|a3v2p*VU%xKHE|fJgq6Yy{?6GB{{pgWJTPV5b#n~YSf`%kiq467l?VwOHGBSjk zntEj9bf2mmrXBUdW}xdW+Ym{opP!#z`4e(YP0h9&?ZiYx+v5(6v-8oC@~*D@wXVN| z()`b9foCi(cIG=vY==0|Ym||Z@n|X8q1dLE5eZOXw<~wQHE?{@)!yDdjR|(9AQXDn zow@rHH7*Ky4tUChE~Ti`Luw~pAj#`@aqeqW@A+_iKtgj_NfZka`$6bt zq&WWTVA=}HfaDr^3Q*Z#_w9*Zr0sa5^#@N?)qSmwK3|_~|l_s_wokHhmXL!<;=}%zr}5 zWrTh1O*_?`RAt|~@Si|rIb|&=6$^~;>O(o~3&@ohK^6s)OEpEH3 z8cdGh^KcK#rVHAxKDc(_F{;Uy;~2T!XNSTx!9&PUxdK-TpBC|ToKyUZHu^nk3qP~X z$O`_K_Wb`(8}IKi{jN7_4l?J6TO~H87%=HCj%UI{W*3%iT#c2zS!26V^78Uueb1ay z)cbUDwWETV#Uwqq%{FvUQ##j&PS+NP46B06nQq;>rID*$hww9Y;Zfbz+wOW};crU3 z_@X`A(L3+0x@R&8xuoFd*eQB8h5kgbjuq%b7kzI{Vh8A~0ezeUExkd2IvHcw44ayRT<2HtA-Q&(3< z7ck3?h```r9Iy#OpmOI9@z|kmPc-^7nfm>G{IaSd_r>$6`mpqLW<5Q9%roa%u+UBQ0lfk)7s802K?G z+HBa3R4FATr8i3sVS=PqZf*jXuUvWi{{1Ux3>iI@S7~X(hE4q$UcY{gE@XlZQ~4-K zmnD_V%*>hPH2)4D!P&*d;G-i?sI^!?Z%2Q=b4$xTP*KVEIB9Nf27T8tT4wY1ht9VRDN5|2Y|HYfd@A03@%ggWYs-)bbgnz7d zUL^24-RZoSP50^3r)r1MK+h^($DIx-2_f0f&e%RnlKVptIU(9zS5L7rOTYg5Zpw zwOU_PJ^_VU+e-=w#nUq|FNhZ%AG`)ARs)BDAXevpv4 zsHORN*@q7w%E`F`h+s+$7nxF@XlZF(LcpmYCw~k4c3(~|^b809I{?U|?PO-sWBPiW z(*3EasdAsc&Q6=r62}idzbG`SkwI=sN}8@qIxpa3q>FlNY5=TYq)$v3m6+ygzk_v= zBI$3EFFVjV7pN}r_th7*6eT&i;X-4!yLaz8c~?B;Yy1M;RUQ3`e!~9tek8ft98U05 zRyH=4V1U?{ZX_hoz&EXZePlt*>B{k3UEjaAf^~v{Bqk>I4GhR`P2KUnB_b+%_4xRB zWwb1NRpKv$C?XD;EwH7MKVKaNBX{%V56%u1h_C{=96dySp3cB5_Qt!eIcG z1qK50nVQ>ZZ*R{Lx{sB$b@-aVzTWy+1>s9P($_ULBG}SWo}R)m90S$Tr)XB%@X;8@L>*MTsY zOPSVCjdXH#m4iiGT3Xsx$*Efy>f0j#l!lFsjUI7(lo$vr^tOCH{q4?yY2CrF5Iu0V zEPL$i=474iAr86u>CukcYR*FT%FNO(IX>z zAMd#lz)o$3M*q;nWNQ7dVMY&@qFmRHA8k<#qBFCzpZXIzxNI#fEisU2@q>i11VB|* z&_B7kxsJ}xG8!6WOFt4{N}eBKwYRs2hKIMPOP*mPE2x62Khq?qXDEG(Od5EAS#BGY zDnCaygez6*T-(h02zi=6CUpD1Oi@zPl{UIfbPM{!&9tQ2OrT9 zLCYqAQ|`9*h=`6KAF7Znya?K(iC`3`LyDh`^3jWVlCiV1&*>brx^GTg0`m*ZlGg9v z31P)J9PFl4faaNFx;P3Mqbz6NU7x7Al9iRUGFc}CWeqCESHW|TUV#9lm{?fmHZ~!; zCNFTxtb2mqzI|J*W*L1SjMNhA9y*mY2?lVbJm({YwkKSA!z>jd>2NqXIbj4_pg@B; z)9NwpiwC!lTy}`O=g^lTpE)bw zovokVn!wTK$ijk^J*vNOQbP|z&Qb6-%I(&M$;-e9FmbFIHj@6STS{3j)jGXFUZAra zM~4#I^}jY?i$#HtL`0aKj6V5vE+oSjxeYE&?jA3B06B)d4&{^Ns`}GNCuYO209r&F zQ~Exp$)KC~1_M*6;VhHn+X@+`s^85u!qT}s0cS#%!I%v3sOLM3rIZx7o`E?i-g3nSq2gCtJ6fhm*Le}fmMj81@wxbZRO_B#~eD)UjyB&K=E0>O;4n?h(NU1V|-dNcDGd=qUNB3_lWQxP(`VgP(vAB+ZsbL(mqo@nJ?va9~}J zjtHYcKzP(CkwN)XhpH#@Z^&IfBmk+FYAOs#V!GHht=P&X$LB&cn-T`K3Evm`4L;Jy1_xs)21^lJYNRR262Z!g#V`p!oINkFfkLc6EjR($&IR#pq$A>(Vr znMzq+vShE8nSAvbUaq%gBZxGa`)c)jciAk>4czUP)(v96%w5pcCGdF)1{5dW;SmvS zzX!6{Hs)O(u-~HpzZWV82mq(drWZBlL;rvw=j+!XaK@covMz`_svM@#W(aD@u8dpF z3p|&HIyyKAkD#DDxES02a2BNla|pYwQhc~$h?>#k=H`}@ljE;FtFIS(Hc?GZ&1ED7 zo(<3Q3E}#qxi@_Sd0T|~Op(xx=fRyBDYGHHedmq<9b5c&avGXY22uBPs4ocO>+1^^ z4rYp|$MdqWRKMe=2?+^i(2Kx5(M}eH@Zjut->$5NF-wqep{VgZ9Nbe5KmBXn?z)%dJ!OI_V$x2m4pNYAeV_992|Zm-o=B^Ar#a+ zcjIYL(YNET1jmSz|vJHUXU_I!y%ps(x=rs4Jk z&^IEl3e80dO=%?80l}y)|EhhlyR>n9y4#y80#s2p>pGM|{y_6*db|FCDEPi6_& zp$6;fy$_%B2?^cE(##e7QeB-88am~7Vh`@N=Gw_(yy+8Ql1$B9wDBSzNp~NbV!7vz z1={j|3djH&lD*JWN9R81;Ovd=b@F=HJwL~e&sy;eDlT)1$uCMe2)(sFI49{qq707v}9z0MzR&ppa@eiGOD3a zC~XZ5<|r&FMMXur9$7ip!%br^V4|nc+V(cFlGcAIWaIWataGOx?}wtR)fan!%M{*Sx8X5H_uAHm8<_VF>y z%JS~Qz{2f=Dd_6#3_%-dfIj<$hSQ9HK#0FjO`V$g1Hj%rHI=%)v2lx;IRM-NWoTP+ z+Pj8!4i4&gB=pRz8NjW-1_nM44r>3~(ZWav!VeoCuXW2iN^W$RmME>P`~q%INh5G4 zxGbTeD=-w-nV6VLxcT_rS@$Ge=MoY;Z#G$ln^~k8aos?Z=wnvau?jot(UFmy4Ro?4 zPRC~zD!+eaXyPJ-lHH%-#?<1)wrR=^+* zZf@!mQhH%2H8r(C`p6BI@x5`gY!EQyZ1Pf{G?=en$GJG$@}Hfb$C8w6Wbdr4s}riF zXJm{*&rLj+v5b-u0V^x(Hf#gdTemL3dQ1@Y;F7pFb%FU{<=`Ly+6CV^eN1p-VxsM0 zd}Jg&CkG#iNlF5+19P@#EMk zamc7PH#d0zrN&g9V|WvOf=qU7 z=>Q-Nc;Fd$ZCzd6k0LI(Amb81J{<4;e);2vN?Ti-+2TKO`%y*e5MF_`rr}^}Zq7nN zFB|~tJuh+^9J9)2qd|ZvS^Yc2J^IOUaXKlE@PDL_9zE)rqC)ZwDhR+*Z7;FxOcIFB z%6gn~KKA{?hYya9jv94RzUc?tj&@?DE?w}<5DeO#4t9XOw%xD5G*stvdgSB-mJ~B< zi6rExLCj6f%^1kc!osV700bKk55yEjb8}MTmD`}Ycz?5#U1p9g(EXkwewIW`h zBS$ouq2sn*2+Sb$USjV|PD*M4%W%VI&m64ccF?|#3ti+08l457PvlhIu#K`xxh{$z zL?-C708oZ4VY}$nx;`yidQp7kFT||~g67(=F!D}3n0+B3YJy;ydM3zI9e@A2zOp9S zQe@(=A+iAc-rdphy1u@Cu<#mF&KAA%M70wI71g6HXYkM)wp$3T?Cn)yn_P#%2dvM4 zh&0EZ4Qyhh?>l#6KI(ji{x({jhBtYT4ZSztg+x)?#bhW~>jnh7*C6z!6Zhhu zZ1C2dKW6$UD*<-8jB%ZNflJ)vh?tzf@+zP#KbR%Xj*jV2f$~!FHm4iYz+UX?>4_8* z7w>Lv4*Yh!ns@I|-I7i;%`?YHtkRZ2rb`F5=_Z#*uaiKTNBj}3{28LSH0&)WC zyPz+^xlHOGIM>wwbO&vB2}zOgH7GFtq=EijNS{OPad2?Y# zx#!XW4+X13ASwHxGB!3g7y8(r-QC~tQEscSp|W8=hEe=0_T7gMuWMYE=b%?ZpB{1($)~(0$Lzhg5(q&zx#QA^%!vs^<@_{eg%PROpGTW3gkFc@Y0d=0D=KmV|DLN@2*FB{ly=9}l9@Jk6OJvCrW|9iYGAewms3 z*6W@^GwH(5zs3a6Ky8B4fyLunZOlxgZ!o9N@P3d5Oi-mJqQLb0Y=!%;Xbp<8UxEio zSnnBdJK}LQVfwjb#g%jox|YqnewoQet;dmbU}Vy)&A#AwpC-3Dj!VdI2){={Vx>%G zE!dzmuvT0PIIiLn9V4#8Myh(jmxt{uEEi4rr{bZmLbG?*lBO94f8Df|f8qB8_y0oa zl)|+Yd{5HuYr$Cmdso&^g?qi|b3J6QQfhC0X<)sJ7J|sVg4QT>?;8*@U5}QraU?+T%{Zlz@$uHd@}E^$ zYerxwfTqR*u7utxV|r0kcXYHfk3L3$OH7v;J2v*G#8Z3hT8!lBHkPxC3usb2_*v+& zpWs3(atOAz!S)YdTUuO{W{>@Zre|Bs{O%MmF+<=uMbpFtJy>kjz9)k94Gp~ZWBfF< zv=!|=Pb$#;50okoq`YBamjE+)tbfozJHI567}@(NZ@bWHmW8Ae8)n7Z}8H5574nu$&-FoqzSmG56%ra_3Fb|!JD7~o=?AL z^b+}}^mKGG3)L|=u-SB)XCi3_4&U(d@+R<@V|GL_a88jzh)P+N78i%3tgNhOU;y(& zR8v#qw%G}hcj&IrBRgLxH*XUXLZ|&N7$BT%g@GPA-rwI(_PMDhr5KPeXjU|?@@}vgFF*$ zfwr~DP1L`*0vT+Ah|8BT-ys7Cs^L5dE7&gRr$k%F!^6~Qf2^d$DY*x$+?;s}6i!40 z5iCgPi&$_PD}nEExV$CYDgWRfjg3Wc20`fzzFv_P?)U0BIgR?x5wmn^4=(KekxEh@Udj9FYG5h=X=z>Z4^}YRl@SZUM;<^@{L0B>K@{&V1 z8&Fp#3Q0enfI;Iwf~c)soKE}OVj4($L97o)NkLt3xe$$LBorwm8}-c z%zvud2LW>k9DIT^gcd5+Y7Pkf`17|A3>za1JDERI|~;V35X;RHy=!x z?b2i~lcPDUCt1jHwDfVo*yhW;eTW9{aoYf=WdN#HR#vJ$&jz9jVx9qRvE2Yr2Jg(C z&x8z{h*69NCJt9)cfECWC~tOd4wH!~&8y0Ldqx`a0S2@Y4PGdJDyOh84SHb%E0j3R z%O?P7!C50f<2hdx3T^G9S3ZbwOyub3XeOB2B%q44bSD{5&H1^vg7 z#)EKR?=#G~u+2_u_^+Yv>|CJtBQrjn&XTTrKG}Bg z&p%2#j+03{pqiLjD`c&s8O7lYVHCuiUJf1*v4Eq9rfB62Bb8VKj3$tBQBhHz=YN;q zLVt%PTz_$X;^^wy2F}3vy4W8W=cB*NX-=Rr(PIEcoD6slbdzgU+R16M62exU?d{D2 z16rR;;E|CgfURpLMnp^!^q>#W={KM@6_?S?*XWaFk{73UVKK49e|K8xV{sw@?h)Jl zarbEY;ylD@zM~mzyB9BBpi%wWyb0kyX+97 z_JMIwQUFIGVad*Y+MIn11|!i`K_Y<82g=H=07x+~j#blshW4U>r!Y^nVEB>-%LD=p zq8|~Es&9B$q0#RQj-R|i8^qA2z}zH8fn1f9kSf?!ZF%^e-`_T2GM zRd3w50euUyfGhB9VC>7v%fCJvfa7S8&kN|=$)b1a$_l1QK8GA*V)H)7?VFgC&i~Y`ybcSZH^PzAY=J2d69i= zP4?KwdD>qm;S}V+eerb%Irx697PkX^;um#(CYhLDMM + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/abstract_logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
abstract_logger.h
+
+
+
1#ifndef ABSTRACT_LOGGER_H
+
2#define ABSTRACT_LOGGER_H
+
3
+
4#include "behaviortree_cpp/behavior_tree.h"
+
5#include "behaviortree_cpp/bt_factory.h"
+
6
+
7namespace BT
+
8{
+
9enum class TimestampType
+
10{
+
11 absolute,
+
12 relative
+
13};
+
14
+ +
16{
+
17public:
+
18 StatusChangeLogger(TreeNode* root_node);
+
19 virtual ~StatusChangeLogger() = default;
+
20
+
21 StatusChangeLogger(const StatusChangeLogger& other) = delete;
+
22 StatusChangeLogger& operator=(const StatusChangeLogger& other) = delete;
+
23
+
24 StatusChangeLogger(StatusChangeLogger&& other) = default;
+
25 StatusChangeLogger& operator=(StatusChangeLogger&& other) = default;
+
26
+
27 virtual void callback(BT::Duration timestamp, const TreeNode& node,
+
28 NodeStatus prev_status, NodeStatus status) = 0;
+
29
+
30 virtual void flush() = 0;
+
31
+
32 void setEnabled(bool enabled)
+
33 {
+
34 enabled_ = enabled;
+
35 }
+
36
+
37 void setTimestampType(TimestampType type)
+
38 {
+
39 type_ = type;
+
40 }
+
41
+
42 bool enabled() const
+
43 {
+
44 return enabled_;
+
45 }
+
46
+
47 // false by default.
+
48 bool showsTransitionToIdle() const
+
49 {
+
50 return show_transition_to_idle_;
+
51 }
+
52
+
53 void enableTransitionToIdle(bool enable)
+
54 {
+
55 show_transition_to_idle_ = enable;
+
56 }
+
57
+
58private:
+
59 bool enabled_;
+
60 bool show_transition_to_idle_;
+
61 std::vector<TreeNode::StatusChangeSubscriber> subscribers_;
+
62 TimestampType type_;
+
63 BT::TimePoint first_timestamp_ = {};
+
64 std::mutex callback_mutex_;
+
65};
+
66
+
67//--------------------------------------------
+
68
+
69inline StatusChangeLogger::StatusChangeLogger(TreeNode* root_node)
+
70 : enabled_(true), show_transition_to_idle_(true), type_(TimestampType::absolute)
+
71{
+
72 first_timestamp_ = std::chrono::high_resolution_clock::now();
+
73
+
74 auto subscribeCallback = [this](TimePoint timestamp, const TreeNode& node,
+
75 NodeStatus prev, NodeStatus status) {
+
76 std::unique_lock lk(callback_mutex_);
+
77 if(enabled_ && (status != NodeStatus::IDLE || show_transition_to_idle_))
+
78 {
+
79 if(type_ == TimestampType::absolute)
+
80 {
+
81 this->callback(timestamp.time_since_epoch(), node, prev, status);
+
82 }
+
83 else
+
84 {
+
85 this->callback(timestamp - first_timestamp_, node, prev, status);
+
86 }
+
87 }
+
88 };
+
89
+
90 auto visitor = [this, subscribeCallback](TreeNode* node) {
+
91 subscribers_.push_back(node->subscribeToStatusChange(std::move(subscribeCallback)));
+
92 };
+
93
+
94 applyRecursiveVisitor(root_node, visitor);
+
95}
+
96} // namespace BT
+
97
+
98#endif // ABSTRACT_LOGGER_H
+
Definition: abstract_logger.h:16
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.map b/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.map new file mode 100644 index 000000000..f0c79eacf --- /dev/null +++ b/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.md5 b/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.md5 new file mode 100644 index 000000000..3921fb654 --- /dev/null +++ b/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.md5 @@ -0,0 +1 @@ +e435dfb4d4424cf9a02f964aba2926a8 \ No newline at end of file diff --git a/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.png b/d1/dbe/class_b_t_1_1_if_then_else_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..808717916215f8faf8b46d2c662290c5830e0edb GIT binary patch literal 5817 zcmcgwhdbNt*ALoSC1~wgwQ6rli`q)9Dz#UKy?03{wKpxbQmcwuRe}(+v{glIvG)p5 zd%w5m{k_li{sq4)mn7e>f`C|zweG7<(72n0f=p{}eCUJ>9ANpuZ7Utfqt zftPDGnrh0Bi_6D{rlJ%GgvLcf`GJ977IyNLL8|vTA?`p-v`yjrB%iw;g*$~r<1Ile z-f!hmA$RQGrG*I&?+@gAYoGq^AJig3KJg_J=-%Z|_3seap?X-X%lABYVXov>{kkhP zo_$LQeR}T}bpA&OJyW_hS_@{e>_*;ua1w~vddV_%FYSE@9-VEhNav_)_Ok?yKLZ2# zWY^ly_S0jG6C$Ih{g<=hz6bZTC-37y=&px9Pv+?P(q;CGYYB4r3B_Hdc?g*aA!Jbq z2xw^fXlwqg7m?KFA|^6?Eh2%qeb%@Gp~C^ z6g7$UF;rB<_mW|Tw0!$^H8(fcZ}ttXu-A%imW($EpHaEEtRycl$=KK!*U4vk%oAc_ zV%=hc(dw7bfP+mkNS{NEx|Wu*wl;ZNTbq*%B7dc7Ru*k3!$ z@)G}@EgO-TNb%XE=Anhuojb&uX@cLr+7Cb=78VvSkd8f19a&;ptyLsI88Um9c>^t96ETeMI2Qs?li1v2IyNU!dKMP(jg9x}P^ft!_z`Jzbo2)U-lXK@ z*Qu#D{TTzA(CsjY-)8-Cr4QDG|7j&;YHEs$wL&%jfsc=*HbRcf($ezsc2!lC2i)6R zVz|sSB8FCoT~w5+wY61sUZ6Oid$oTS_1NG4?ry++d;$UilZ#*P#c&4)QYfc~o}OZt z+qt*hal>!%tx;lD)^#Zw<6AWxl=s5Iy$Ucg7Ge+bUQ!w=iuUE7ZQRd-1|!ee$mF(mXd)Xx(ESdm<~E% z28j$m*=jy3DJ=A!@O;N_{AC%7oc{RR&BuqU#^jN^ySq5-)X&4$w`gO-DP{fm@UXAk z92GnMP*bzGv2kMKOL0|AP0f|yeJqCi0Din$G>CMyZ17%xH?cqV5}~J{5Ug@mmaw?f zD_=BFq?1xzEoNTl79!3-hW8;knTnl#9F)k>;i0aQQs_Ow+qXkIW9e@nK8SX) z*w_uX`rG-cammf{o=exkI*IA&JV*&i$vLp;*M_A{j?E7XlQC)uEOCQ_292kGyGQFi zi~6$`7Z)RAW5Y^IODAZUnd6XC0h*hv5)P?>?f8)St^_qby(AUyDPuLA{`~fl{fw*WlG5-i`1whzf;2@&64lk!JsouY`SUHGp1Ha6prq5Nu+vl{{f{3%=|!Y@3~#U0?}x;r9+pymDvqRsx)&BBQY)3Fa0SCuPPp z(Kn6q+^NH0RJdVTsOH7(1}?RZkwA0Y)^_C8TviALuEUm9PpDtwE<3p;EnRR|)Q6Mj z{m2B_IhEo0Ptt+esrzJiIN6>g_Z`2pxqmaA?<)`Cx7l@$l1?Sa@kDwpi}ytlvp8d` zeo6)+D=L0Jfh?i~U%1LfPVEXsk40eQwB~a%xxXUT(t%oZus&fS79j+Q2>qf zrMg;n0;Z%yaEaDXxkCtOeMN*^kglFyNWJIsT#wXr*u%mvC9pEXm>((J`FVNx4<0-) zbS^Cm3%de9GVtQ;fKJ3FtUnO&xoU3XGBpj&<{du1{7abs7<97#qr0%M@JcWsyYaI1 z`FSOj4_4HHPe7m$Y_qx>e%Q{+!_NL1B$pexx)*S~Zh7%=q})6Ov$npzig9f&{Q2`? zK6ZUCfR~@YptDo8!F~SP+tk#)o=mC5^VhHO@fGUp>kXbhRZkN%caZw{=~E;?Wtl9s z(jh8HgWK%uezaccP-;Ephicq1VqvZSvYyr*VTe5e?|yZf&sGz})T5)hGlRNSOC-L* zrE6lsKzYW1UhGcmwlyp_(@5dg;mWgYcUy**dTW7y(qF$8vm`=`?v=mD0?@7CP?M37 znTdI`<$`g>%Dc~nnVI_e)iI&LIfBinwLenc?UFxF`ly4LnuT2kSY%jwM^G@HOFK*b z?07Gqn$J+z*47r~{pd}_?NXzPj~_mKARie6+Xl(~`N{cUb8=y8OGml++UoDeN8E@& z#gLE?EZ9`CJh|Irk( z2GS$Dq`ADDJSQhd^~_gry3UP?Fj4k@Y#*AYS88$(?*s-Z@{&&c(Z=- z6}OW+iSbWm!IwQL=;$KJ7$veM0NG`v)_|$AI`-H zEmY{p9d(qqR%g_V1gga|<^KAmwKj>8YC73OVTZ9BWQ3G@Fqj+&ELmlzRBC#<`q9x*>ihQ^0J>5U2yjd}iWO${?5;aAt)b#}eQf@B z+1P?D{1>TZd^YIJ8@zrjq@#KU`t6ZJ09}fGx29B!CQ;5tMFVY9ljnHNNs^GHB+b>U zR{`Epi;9Wq85)K+y*jYz&r`t;$3;aYA?6*a>FJ|DRhHQOX8yno|PVa3&L2cOUBNxmQ-nY{J ze>s3muX4snic3h$hC=090NyP6Ls{iwfhSm4UbbESoxL*MEbrmzDR4$P9y{d9wYRgA zS!h`5`~>PrVHvpn2Hc{C^>l5T|Ep>)9oK(EPA|#D2wMYw*NZ(zl>Ei180>JC&~$K4 zm%${)7dWQR!#}7OP-a3wmj@fk*;++S&=U)mO-P`6B*WGoQ(Ap+mk*fH0JL)5*>~ecP zS0gG?IA+`-$C5p*q|kl>_BHosOz7Wi$&g=!3y(L2uzhzTb(*q)Dhm6Cuw@Sp!OC## zhKCgyma$JEvRhNr)l(ARjo7jT&%d&s?IXG zz!)IYe(_Jevp{klIYK}G9xC&PI>QqavB$>&DM2qT1U3O`Hk7gXY<(&&7Gab_Fa29( zu}a|;K%#6l9k5sgZmWE@Xd2HGxwMS(=i3P`<-Z!Gru+!Fb#iV>Hgm$xk6soO6=gQ5 zR!c;jGR6P-qiF`S52IX~;TPxW_fPhh%gpLMt^yAX*63T`GjyG%*_{1uY0G~cYTP^;%p3HJzaH(QO1xP|Lo+iO_cteFa5y)fo81pOZ{AeM?`LCUgLp3edT{BDYalHhQ8(O=ckOS|(%Swh(BN9`vlBnWwL`%i zf*bvfYEDl49v&Y2i5%Js|@dH z^W9z10|hn@CIsKY$rvdB(Cg)^8jJ7GMzBiC{H!sreS7EeM>ZZFBESi%fr0nHykKo@ zP1n>kW($2n4(K+bqC&{b%q$ViWdI!J=OgR4%S;Yhvn@YvGQHYcyUNYY4IHaNv4IV4 zrd3@-0}m48h!+gzTWuH&V+8P}QeAP3Qn(8E8L8*;Z(zu|8yg!FGcuxqxCDMVx1@vw zWV&Ud-g9=W97z_q+A=E4yXay6t6_J{Kf)xX1 z^XEH`avI4q>+3P@^PRKv3G$nIvtnIcU4+RTw`65a(JX5&p#H#2;|k^MVDaPcKYuD3 z8X6Wkg5g|Mg=>({FJNd%+g(9xHO z(bJ5Iz3)c)`j_#>bTY|!5z*7rzeq!6f)!NbnW8S!0X#vdc2PU1!z%A}Lvbl7OduM5 zzJvJQ+uOCbKGOf^4}NGXq{#xxzNRk#Mh851?j$7`wqWxe?d*5}doF6mfYF<>vT_TU zrGP!ti9RC&w{!dL+~zyUHZaKE@{^7iYG@$N=T`dj6FG1HtP|(iBlqQGXxHytA7GNV8U4BtC|}|4x)EcI+i7IOGju z!jm`$J3C>_OUXcLYU)Y->z8xh%VF;@_MBBI@zFGLT+J2Cq9Gb8+REjMR + + + + + + +BehaviorTree: BT::Grammar::Expression::conditional Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::conditional Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::conditional:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::conditional:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = logical
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::conditional::op
+
+staticconstexpr
+
+Initial value:
=
+
dsl::op<void>(LEXY_LIT("?") >> (dsl::p<nested_expr> + dsl::lit_c<':'>))
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.map b/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.map new file mode 100644 index 000000000..d70896435 --- /dev/null +++ b/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.md5 b/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.md5 new file mode 100644 index 000000000..1b930e4e4 --- /dev/null +++ b/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.md5 @@ -0,0 +1 @@ +4baea5f36257f6338f629079ae76a876 \ No newline at end of file diff --git a/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.png b/d1/dc5/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1a54ce4b1df967e2f357835de76111d01.png new file mode 100644 index 0000000000000000000000000000000000000000..481f6fe21d9db95ba524402a610d99497a087956 GIT binary patch literal 13193 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 literal 0 HcmV?d00001 diff --git a/d1/de2/class_b_t_1_1_leaf_node.html b/d1/de2/class_b_t_1_1_leaf_node.html new file mode 100644 index 000000000..9bf06c12f --- /dev/null +++ b/d1/de2/class_b_t_1_1_leaf_node.html @@ -0,0 +1,322 @@ + + + + + + + +BehaviorTree: BT::LeafNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::LeafNode Class Reference
+
+
+
+Inheritance diagram for BT::LeafNode:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for BT::LeafNode:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/de7/class_b_t_1_1_decorator_node.html b/d1/de7/class_b_t_1_1_decorator_node.html new file mode 100644 index 000000000..0af17b817 --- /dev/null +++ b/d1/de7/class_b_t_1_1_decorator_node.html @@ -0,0 +1,455 @@ + + + + + + + +BehaviorTree: BT::DecoratorNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::DecoratorNode Class Reference
+
+
+
+Inheritance diagram for BT::DecoratorNode:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for BT::DecoratorNode:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + +

+Protected Attributes

+TreeNodechild_node_
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Member Function Documentation

+ +

◆ executeTick()

+ +
+
+ + + + + +
+ + + + + + + +
NodeStatus BT::DecoratorNode::executeTick ()
+
+overridevirtual
+
+ +

The method that should be used to invoke tick() and setStatus();.

+ +

Reimplemented from BT::TreeNode.

+ +
+
+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::DecoratorNode::halt ()
+
+overridevirtual
+
+ +

The method used to interrupt the execution of this node.

+ +

Implements BT::TreeNode.

+ +

Reimplemented in BT::DelayNode, and BT::RetryNode.

+ +
+
+ +

◆ resetChild()

+ +
+
+ + + + + + + +
void BT::DecoratorNode::resetChild ()
+
+

Set the status of the child to IDLE. also send a halt() signal to a RUNNING child

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeType BT::DecoratorNode::type () const
+
+inlineoverridevirtual
+
+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/de7/class_b_t_1_1_decorator_node.js b/d1/de7/class_b_t_1_1_decorator_node.js new file mode 100644 index 000000000..34fbc8694 --- /dev/null +++ b/d1/de7/class_b_t_1_1_decorator_node.js @@ -0,0 +1,7 @@ +var class_b_t_1_1_decorator_node = +[ + [ "executeTick", "d1/de7/class_b_t_1_1_decorator_node.html#add55473b513501079f3064dcac8c8dfc", null ], + [ "halt", "d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d", null ], + [ "haltChild", "d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a", null ], + [ "resetChild", "d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882", null ] +]; \ No newline at end of file diff --git a/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.map b/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.map new file mode 100644 index 000000000..b5356611c --- /dev/null +++ b/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.md5 b/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.md5 new file mode 100644 index 000000000..266450dae --- /dev/null +++ b/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.md5 @@ -0,0 +1 @@ +f6003b8dd4aa2b441157fd1a76ad2b63 \ No newline at end of file diff --git a/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.png b/d1/ded/class_b_t_1_1_precondition_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..914cf35ecfbe2ac93b142a16d885be10c601d292 GIT binary patch literal 6125 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 literal 0 HcmV?d00001 diff --git a/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.map b/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.map new file mode 100644 index 000000000..18d366b26 --- /dev/null +++ b/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.map @@ -0,0 +1,4 @@ + + + + diff --git a/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.md5 b/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.md5 new file mode 100644 index 000000000..384b2fd88 --- /dev/null +++ b/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.md5 @@ -0,0 +1 @@ +a7edb40b5020fa0fbd4ca96e55756d3f \ No newline at end of file diff --git a/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.png b/d1/ded/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s0a27870d8d352ab348a9b2d749bed9e1.png new file mode 100644 index 0000000000000000000000000000000000000000..678771233b6cd31ac7241e4af5722d0ee0d25b5a GIT binary patch literal 13729 zcmd6ObyQVh_vR&~TLI}15D-b}5RgVdP`bM$1f-=wL_$PDx{*dgR9Zl#r4f{nlI|2{ zpZR9Znwj;RHUEyTB`mz0d(Qjr_t{VE`&{$BA|c*&JQNB=sH`Oa0EI$BgYS!Ru;Jg? zC_@+cf^DIyD37{C{$@87C8AJ_C}sJ(I^O9U89sUx-D8(6k^}?r6mPR`ljc~^n26t0miP%g1JLqlq?7o$gQ<7?~zb2 zGvW~RRQ22uXjQwsm`x3|x3Rn;aB$-I@nh+l&glN?yT4+~C`|NV8AcME|9l}Jb;!q} z+Bo0oX5dmVz;18N=J?yyn<~)Ba;w`eT>J-mj2B1r>EnEBMgoGg!b_srUZoyB116Ph z$`}S|df6P;{7%OGP{;9#m$f)~^!-ZsaA}2WxtKVZ7?B)k=xwb`DrOWlUK<9iY;3W$ zRG1jS9Kl*jzP@4(4h{+i1R=pPuUmO*o?Qm6Pt`e&{N7W39X$B#D|@^7pSh06;_`C3 zgCl=3YsP(sTuf~0YQ31-&By4^E>74bBqX-S3|-o~yRS(9+b3^6+Z6Zk@L=TR#6xZW zbZKe(@&$9bKck~WyU5JOCZf)9yk;}`?b{dXZ|}^lPri3`bv2_aDlByPyqqH!$(W>K zZfP0XlYEU_a~~%F`jHKXFa2@Y(C{=W@bjAo^Ji>Yzw`jWnh3OEiLUd zS%XDHL?pIWT4LgNwApFs(iEN*c#3OdW7Au=Hdfy8qd>LVZisn(<`X4c^3kJ5#~Tg5 z&77TIKD*e2y2!r#0c$e569Pf_%Iy#pAv+j)|KD(?Y{yX>N@7*&W%Ds0y8%n&rGQ_eJsIIQAq^1^T#G@-d<~7jX zF6;EWnXaUyM6V@Ka%mtd?(=5}3QEfNR_dy%mcM3oD~#^y=uk}0%v9SCv(?tsF$oG% zI6FJT(!Oi_8k|8ka%NO}F(-wMo_^7C; z*3c`&*sR3CyemdczDaMCSUp@waWFmH-T9wP|M<~<9(cCVuyw&u~VmZsm_J7jnW@V!U6^w=OSkoA|EYz{JM3INe{>YxWoI z?duaVQ5_cC-P7QpWB@9(WnO1di0JLXaL@;N#Cp@B_WVM1bJXlyLe`Tnqm zny<1l?w-vi7qaPRTP<+P2Fkf0z`enA0J(G;C`rt&%P-n@BZ=j3Gd!!E6Bp*zmc*kr)( z9n^qBcSc4=S?$=^qa}JME4?OPAypnw`xemahypP#&<;`@qK z6PM9y8AhrqsJFXgnAoJLY7tF-N3uDZtv`R#&hneh;lhYznl37o94 zh7$bp`ldF?)vMvf#T-fn4-~XkWZx20HXUA{pP#RKx@F=tQ5AeJb|vWdvrD?k$w^eu z-@gw2P$MaleuqJeOeEMz&1JYAUS2;cTQ0<$U0gIG!^4MUbK+xTV{OK;YTm!McXV|0 z-Tm{;!^(>FR&tMhwVs+rx=4bTn_CVBI{M1juS!#$o#FcAO6uwbXoJ?)*4N{NX7*kR z|H>A2nrMAhUQ_exaCbMiJC;rr`Mto+#$~$%r7vZ;fp{5?Ps7^^*My}V<(P8i6;v&Y%8dhIZlY4pC&@x0vM~CsI zNZd+2h}Z1&Bd^l1;LOB?Qc*#{P-kbS!GJNG5q*la_4WKG?(QpaN)1YMe%RaFdw6;Z zsSlr0Vhhc@&(03IfYKlR{-$SfKSTT}RpaAdpOwc)Mye`G%F7FehlkJ3tL)!Vst@m< z9;~f~<5Rvfu6&@gv9STmR^L^BJxYQzij0vU<$?oEma?v{t~NXzD#E-Z$*seg*UR?A~&~U zRB4srdu5J>l0s<)h0M>MkY0PvD@$_2tXR`KI5!7{x;`7y6{5>CJjQbCn)xx4N-N6e zg4r31F{1F}ErQ`$P6|B{_Xng3c)6GaB-$+8kxR{{0@F1l3iR*;QiFw#ezfi0%TMz7 zk%qMGUu9nh1y^5CPT{r^pcKl;DP)FaBFTCb<$2qq?!teWTZOe~2R&F&#-nwudbA+g zZVLUAfFQcdz;5*^UbYO2$G^(j?roKORLW6gyo@HFW&M6ogxDMZyPq>0g}(F6Rt9cd z#+5=3E5NYRo@!Wdj4)0{Uw>Cam)-*98%F)CL zmkoaRjx$Q0*$K{HS6A2Z$#PbzBNr!U>zwQCpFfz{s`e7kRc8NuON@$+mi6{N4%#g< zY4YXxLPK$?t=OK}oy~!U!okIDi@wT*Lh+{(Fa+$ARv3SZNJ*jk{O|B*ujdtF`moeg z>ahyrp8V1A@dcm*y}!aTyE&(R{sfYO#l^)1+>x#6^Jm)f^73pBy!!h3s`u};6Dun! zi2C~aNS@2j?szvu=x9#{pgnwDbcg44ZCvLmvcK->=^3w5;Og!k zQe9nr-{+y-8a_&sGbvt)6@^k%R1`W97ZcOe*T?ENJd^BGpHhR>px92q@dsiv~u85DXU3$Vi}}~U;%V=bXvcE$Fr!W;(Aop`tR&W zOIPzzaveapMNZ zty`Tn);+#S<6~oQ4#u{82s~~vIsv!DBiX9a-wfVPKH+nsRbWD7D zdK;+~U~YM^{f&){$LsG0%p4q|`}^-(Sy`@Bm1iyJx@m#M;5f6RLzAtfcH z*XVvjgqDbti)-k|k6c|`l(EY)oTJu>3997Vrd`l@sz4*CWl7NiqY!_(DQ{qKotcH@ z?yw*cgH%jws|>f%2NH^VOk7;}igEOvK$ICWb{$~vMcn`3w70icdGA=DT33gQ-2Qwe z^#|SsH6h})PL-RNM@mkPkyhxoKEa0+#4RX@=;-J{;HCt(;RNc-85xH~L@)~q>a6jh z!otH5<$#)9SO|qj61;PVUv3kK*2vhHEKhRBi*NDD0k0TYJ2y8s?{)n(JWNhYbY-|u9b>TWaDH<$HZAQs z%2*o{B+b1S*ZA-o{G}M6g>&4#J>KYSWM~RI2XD%shmJ}SuqCQ6X^NhjGN^56$ZKxS z)S`lw5EDDSeYUu)Y_2qh2~`Ee)OBT$>GRp3JvlZOKEe-8E3T;M0yVb1T9n1l5_f#;{bz9z4fV%e z6i)k6Zz@K%V@iu}cMmH) zBLfWud@NM=rfdtZ zVtKee8TImI=VzZiP~EO)ht6uL{8+)k!A%Z5zbqaFR`A+* zr6s5d;QGFc8_xkYK!3VIVIzkC4)4y+j`vckEeKm|0Re%q$Ve6d0pO~UYHS^yFDS3n znS?c4jtDTZvVO_REp90h^mHM4(FrTB05FV)hqryaV+l2H(H4T`kQE7Ml8FRoc5$&2 zf&09sCb~p6^&j3w4<4XvXlRIth@e)|9#dSqX7T;?O=wafadE_(GoK=%O|(u=(+(GD zM9SvK$jG49*Vkv)*JIY#onTAb0Ml-N-bUx<=Jps=N50q&V~$MEwZJkF!=*H1i4x-GlppqX|+*)7bcBR1{8crX&r;=;B9aMn)7I zudn_65k@@SfZ$rj#(f3@j0A-62YOWF)6HqopOVI<+6nRT@pFl>GK>VGaMtDJ;m$$e;ua%XLW44>^%BPSWC4KlH^5@SVJIP8-j+B{~ z|ID*baKnban7Xr)kdh9q%|wT`5lf#30pg*p)Vy_db89Qpe-8^Wx#frGYA_KZT3Rj{ zl}qm1+OjvF@2ZwBi_#MP@?E>tbVN<0k1N-0`T%$3EK_pgb#gMOPjms>{xBWRPM4N{ z5iv0YPCx6*e`hs8H=bKv6*Zf*;-}u6Zp0ubCkM%z>e>JGD-QlOZnM~Dr>pGH2*>Jw z&%I9KV?&wG{7d`r1FZEyP2^ z1@}Rd0t;5DE9#zgNrU^MN?}ZW{T*5nR}|EFXhsGd$V0tYvDYd$DvTOKfF70KL4o)1 z_51e_9nSEE24S1NG%OaDJd@>y>T2_I<`17fS@yiSg-B;@4N0uD!n!dRB!x9)$-F$kNi%W|x+bj^#MLpRdE2kenPjGNLoxX`t|G9 zsj2Hvmiw(gTU{P6#Bp$PqTka3CM4(WE#gSIge*qjxi_qQ9#lS%B!pqSD=ke(Nx=dA z{VkEbbh2vY)vB`f*Ktf06%|+LP_81h^78W8g@xEz0f*FL;^L`$rqBKfK}jRePf1A$ zfXydP1VVQkB;o?NF({O`w>KjnAL+}NFV(0U9?!^XYm-~5jSO3l!#jZQL5TFUnHf68 zSX%RM-gE6({+IubsDvNW7HVY0rl-@=O8VB0pZHl=TVoMLhQgDg2K5=#ovX~+(1GRw z4x0l^AY2Bn+k8Ba4}dV6YMY4`*WCecpuhMgDG71ZCTgtl5fcuW8q$8fk7l02kse=@ zTEk~zVsfYfz-AE@P33!p9t6u@TVKx~kiYdTr&0rX^7CUi=ou{h{A9o%CmLKBo|x3> zJ3}oZCEpxyrU{hnI|C)<6{)N^Y5|*USWi>`9jyKg@yOX(Ga$^fK*G5(cmwz)O9*;A z7(tO!d!3%0E&MzBt!QJzR;ZQ=ee{m=bqfm%6bjx$>Hht$H@6H^GMv$aQHXi8)SrP5 z?E3cY+xdls{63GTKje&76_u3Wj#rv?*E|1A`S%xSk%<2>Z%~ES7XaCvUw&JB!#Jj< zrl0rv#lffyfByV=|9RTiuU}E>!>*p5qlOHlPPOI}!UU z;^bC>5_DM0Aasw^PR=A19bMfHsHVBOIVB|}88tNmXdmE+Mvt5LsasBtj*jx)xubC8 zJUFvh^6p)TY)&hjywP11Rx$vPjFX2z5|P~lL-gUphk7+uxU_V1T6%iL4N{UnWymeN zV(x;iS1~Ob=~XlOkO7$x^W-FBpd2=f~Ck=bRFfl6+5=)ZocMwk;9SWobR@^*wCch|w%IJBD}=b!a_f!BeI0yhpZY!eVS+N?Cd~n=HsLpTo&eu#Y z+u@4Dz@yVe+|Vg`j0O$fNP$rEtO(tIeRah*+om@qST&gk;r{T9wFXko{~d+nVB^8L zHvje62Zw+FSkM({WM_JgcQBId1qHZS(BQTa6MSrJthlV~3rL+>2Mrb$me0rYFMyBT zQ&7N$b_3LztMYUEj}fToi6%c`?pwD!Kd#;3=Whpd4Z1cO;6ZLvQ-;v(KdvGZAKX}C z>BJ-c{ILRT92prg`#Vws%08Pz#WpZtzg|ibmyobCRlwGDxt|Um6MJu|PtM<8qWNTr z239aPHy3?C@+kd&77nbtUacMJH6Ej{+z$?~RO^-T#TVSsf7pxzt|BP|196UK@lbMh z#btPf)KFw%A~~B{N>I6BLpyL=aA*M+&9Bj&g*IP)OYDs|B;A~-#(*o+Lg&;3i4MN+ z7=!Lx7r$`XwlZS7T|Imh$k(c>Dot&UG>K!cBUeWVMRIeQy?uPDBj$htfyWz?mzOtH zBy4=rX~Czarp8EtS63feacbun3JP~*bhK?^B1J#O!O2P9(voF;W8)xA?kFib8V>|w z_0o6LHY7-vi{F#PlCs$J?bEuhF!%?-O7Qb^>a3iZ77vcGOa4^5`rBfCqPo|$>D@a# zh#SBvKqxs}kHv7{9Lxx?Ys&_r-d+5ito(Svo|j76!2D;&`?_vfUAYB#ud5l3_Gg*p z_U|>1q>Ji5gKJ_iW489a(nX7S(3rv58Tj?cw2z|-4R`Ig2I$;PCYgfYlAz;*z0)<2 z!&dw6wvOFeVy2JprVnZYKN7MU?i)V^TEP8QMMG(7N1R&uKA?^#gVm6Aaw_Y3^5x@3 zrJT$3=Yu~jm;Y`@zjy&+a+qEE1vrZ$SD8o%Fr9~kwHkBzrb2Z7;3l4^@4ky@bMY4^4M?BE@5EV4vK`c#s_uFZ=CZ|&S zEbqF?>_VJ0&|Kk&PZR7BN5A~yaFww=CNW|_F6%YlBfj^0zl_*?ew z-fR>8?H}sWe1dJ+9oy-*)f5Ra%mP4bOvz&ihSmacadFE;FeT#_-9`JeqzCwSjOrY& zT2|L1+6)_e9>Tep$yK;GLUB;7znc6Y5$TX8j|HLtO~Fw>!`k|W)aCh;s7?!D3}z5Y za5t>Z46(=Ycx_B|VsbqEhUGy$+nXUy`Qq9w3u9AIJ#U3wm?b6YK&?TvGgwzFJ{>UJ zB=zw-dkk%81ttjV=F1B|#G?Y)DW|Vb{dndhmawq!XNY`?OG>ox-KlA4@WJ$0pKc`Q zPgPs9Rdl8m_aXq@=M7{TWOy(>C6C$V#lPdDmdiegudrNSV4>$gw1DqFyE2q_e7-ku zSBv6~%P)fL9-+yZaG+Z-tS( z2U>>r#mRE&eqkZo^hZy8$lr=9D;1TLaPBxwpdc&AIAVC-yy|=smS8zJju{gZ)4J$x z4(=2PY;RxRzcKfXz>5U-3zpq=NPm!+vRC6F#IccAUlyOa$;n~x3kX!(^j)9$`LknW zgaW$0oVq$8I1VWiK(|8x1mWl+@e5S^n*p?JM@P_GTsHmb&p$ogs_6&NYabt{EG#Tk z`;rOvSKaCUqs(Ae&_3y+Pq2XyAOA_z*oIZ;=C&L_a({^j)GoFE1}J zCgG7c$NOtxGias!sgRf}D~kc{_u_bg7`EqyXU5;T%|Hpa`7d{qi-h&`^}$rR4qixa znv9bZH|!3{wQCU|BFoo^J0^t#Ze@Y?IrU(?eVcfBAWIP<8wxxuXdz-^Vks;2&}P8A zv28aM7ZGXg>A^3$pCJo31dFl*2fAi66&gLU)UnJ$b$R(M2qt?tibEAO19}1kY4GRs_q1T9X18u2-I4^s0Icv zf531u+!{tT9U}=r82fjxAW+;4R^79_4|H`SkA6QhU1+o)E;RpldeFf|5{$~ljJOJs z9LO+a;($aiezg@vrS^Vm$ig}K)hqsN<6su`fmQ)YYP+m|SJg|tDVe>_?c18w%+=xC z>ABrv2EKgEfRyq64Wmg{uz=g~?h20pHg#F@$92v9! z`$xGh;9O4q@nas~#1aw`gOiibvz}d~it1`Lk}&t@Prfi-oIG-8k`A-PuD!Z!5D*N*CbnV zPbbVt^ree?Z!`Ax_9FHxTX}OceH??djX%ku#29=@D$_$lDXFS86AL>(_Xko8w89(`akVOvhhgRqSsFilFawKJ4GV7K|80)*%2mNbBb5ho z0_;;zz%aEDI>nau=FPR~<^UQ%6nSVvK#HmWGGl0j?>h#7rgsHa2WlS--O`gEZIt_Xm{?da;ELct$hx`l$upB842+!pzS($%am?F&0BQe&QC$Rs zQV(ky8WiD0Wo2b4u6BUKf0O(R3JS^wZBCUmG;C7|k6<+i;FQhH&LU<`TYo_ zK`bmS+ZNqZGr|yb0;K+8!H1}5|J`rwy`hi|gu!6IEBjFJiQcU4%ABd0USuNfAz})A z|Nb33$tYlP&2srx=)kLE4z!C$C%J4iFVQcn(Pk^Q~Ki2?+_=_SYkc85GRS z7=g6nMCZnX4$4!Eo0q;kA%>n4pOqB{T@(RFIBFf>Q;|?mPavT23pa6{0dx=dv(EST9e zGJDfP!9BA;=3w?t5aS12$Q?*R?y{1tI=_W2uhTUDSXEbN?Zdq3Q>IEk`tvg!y`K#( zkx<2e)S%)cKxK2Ae5OLVp6=Vzin?Pm1RgVikF^7nIm~e9psP_IbE(wR1eNoa3xW?* z;kiN6BLwO}2_|So(6b3FinU{k)}=#Dgh4#S8Z&3jWo2s1PXsk1_Sb>{+5s!TaUU8S zMDZlQfcF~{f|Lvh*Ig|wQZSzNbF$H(y~X&*NJ>h!&AC!Z9|GY4*&m~&3LORZzblsR z1yt9c%#Q7&*5= zZIsW8=km;tvL6_OE=90dSy>sZaDI@{4s%Vgx&0DffBpKky}d01jka>CYhvPq#vvgP zFXRY~SsL#aBYw%=abqjm|)I_!f``FiA#ng{95q&;fxusP5Wd60JKC$L}0@$ zFTkdNxC##q#ej~pkC<|HxxxcOGE_ej{>$8a>oo$RfgDLW1^_*M_X2Aq|+yt;>6L_vf&uY)^Mf!S0iVCd zIzmg!1(VStTN*pr-$*s+;DY0T1f@92&=|bdCxT(937X41%()$dZ-u2WN&=#T3g7%+>7P{Fo;0IiYfvqW9zA4e}~p>PFk5=aA5 zU|a*Xy}P?eW24f=Tr*iB&DFyLQ+*gp)m%a8-o1NpF4Z`A;Xc69%P%To0r?FY*&u*} zpmreb?OV?!-Jt;Us>*{Q`GMx~16sm}#?yGt;8(B6(xso#!z*Lh>7i+)q@@9*x;7fI z-nh{QAsFD|2d|B^u|bWdHi!?vKJ5g9k7`T$>eZ_s0{@9YF!k>6YH-J#S$i063a>f( ze@y8-q3uE#!b0ZZXlPzQ#3;v>I0rU<6VFe$3Xm8DU~Ef$Z?6Q)1i_KFgscKg0Ua(4 z4hm)g0djC(d4+{-A4TQm=2rO~J??rcqw)B6Ga;A`9~v9yKn3vf@!fTG<^5n(@vA-+ zChr0-PHewg)tCgVjWzHVtJ14OZ-5jA9cSh_lV~i4Y3GBPQ+!f~Em!>r8xbw8M&IS{>05aY`R%=TED;-H}|s`0U{?G*^Tt!!;s0Cxb_ zyywCx5x)w|cfiG25LDjVvuH4ohD6OA6nHjyiZEsdrAF;?=bZ-o%;h<>bdU(WKW$+S z3xookV|scCZxnEf(Nf(tg~p%CeFP4$?WZDg z?RoYXXaLAaCP>;s1C;v1{NKUc*B|QYE+DK`8u)8)v>3-O33eRQbCv0#p&YkZOb^1& zkBZ?p2-1OzAU11n3ZDa>SrsH~p}8m=4I+#O=nqO>!~B#uE9cJa9*B9!_GoW6?Z4{U z1HkTZaLkSyVk5pQ&>=;)B04PrbCOV>`aAPN1*8hMVFIATp;m5%A+PJbCU`)Oq@6Hp z2RzZzIPd0$GCL1X>~pq#UAe3i9&-N9_XxaY-horg3LSTkq@dI;afagWR5$ zmX_DDivVD)?e}j62rIV_4v>amm!_big2!Y0F$|Qm3{SGa8zY%yAxadYl#zi{m>Grl zXS(*n4cs#c-+df3G&Dr}faw=wuiy4mLhMe%FTraad$jtAERwR~AV7 zS?E0ui--Bp^;<4Zx#kxZw6wJ`q_T)1SA6+t8JYcvkB3)p1*T_a#=;fVQh0+Ko6E}y z{SMcIA@4c%mkK=JQ8fDOO^Q%Q;L>pZ^lg5F6N(%O1uL8xHG?<_S8#c_o z6f9X*R#x7#IY|i#!L*0OHpW7A<)BA_x0JqwH?M}d$HEIRSgxoKBLo@o`vE5*!+P)K zOY|@Ro80*fGh(zv$=H}~ZJ8$;19+j zbpM(OKmr&7JJU}F%*V>~0kMyvE|7^~Tyi#;9if1!U~oHclaP~#LRf?3Q0y9+Is$1! zVGiW@sEi|UdG5k2cBzrNTACm(F}3 z1_NS%g44}Qya9eB%oKc)Sb^iXeRLH0pd<`TZGiLb)3wUd$y>$HBP}*wZUOg%wFC-= znuP~|UXNtqW{`XXVa$e@9yso9{MbY7p9cE+b6~?n!K~+Ns01W zfIM@8LE}ePFR!jwH&l^P6Ntm-VPfEe_YU)$+ot{A4dDA)Ps({nU&9OE-rbdTaNyKF z0!m+{U^cVBetL3pmo1S=R8+r|Z15gX2_BQrQHZmr72Vw2?7f`vRMXI~bU4Z}+jDfR z9wq}Ip0WukXS;EuWYQX%25-L&+|JI$*%k}*GC0d}23d1vdPzZ$_N)=+$R?^*UVJ$D z{`IR2xMB-S_Q3I>m&==*GXZ&W4nNr64|`A|5A1U9<^xl+UWkhrA!>s|7?zw&3HJTj zpD@d+tvp%lqj->+^Ya!UF~WrwYwGI4fg6o2Y;U_leKP{!!$21@4&hkY)Rhj*P)S84 zM4lO}mu_S}xv6<55#%g1t8_`fM;qz#%tI%G1PaDNq}0^k*0*kRbIS(=NOEyYqQ)q1 zjb7V>*G^1M650nugqlA@2Tgfh_Z$Y*-tcq;7iS|1wIk&$uKU4S;F`IEaLf1p#|&M+XKHjg(e4PuX_7ijOBrmkPL! z#QTpPT|-AlPf?e0Z={9k{hKi48x09#Q1`+df+pruA1$q{zND~YTvGm{Ua8RlR|#gL zwe}XWo#`BS*WTemIJ14?k0dg%HAvD~&n9VV0*w(kX7v@U25{zpPI~mWI6FBB66JtJY3||@2O$SC)Q|dj?Pf-Lx`%@UG}A}R$&jWO6kx#$ zM}GPw4z3jVk2obdQ|yWN1CCbpE72#t1-MEI+$Y+-MelJl#61Ax#LO6ukXB%;M{T_KhF66`^`` zV|HsR4kUt&=hYQFPh%LixK8A#LjI!j-^Hejl~ov}sXr+g(U6t`UkBESxKSPzUn3$S z=E3d!@MM{&D~3AMXK#r~N{ars{~n=}v$Ga>#LJm}u>~j{?N^&+h7GZv@YC`=DaoGE zKX;!()f-^s9?Fkfq((!Cz9yKW-1PSYPqK@7{mdH~47M^tz{|LTsil8;YEP!RB*^k$U|05bPpv(h(2V&Vn z%u$nr0%jH=I4T_<&-9xCB8m+Dfe&os`(t7v3L+PK_8v=K7Dk>$VpdhSl9F=QZTukrE;9)!K_-L`+RG=>c3IjN2KxL;1=@H5*4XkKK$Q5&J=t}j9-9#H$Su-20~FN N<$L$#D`d?={u|>pAIty% literal 0 HcmV?d00001 diff --git a/d1/dee/class_b_t_1_1_parallel_node.html b/d1/dee/class_b_t_1_1_parallel_node.html new file mode 100644 index 000000000..6723f599a --- /dev/null +++ b/d1/dee/class_b_t_1_1_parallel_node.html @@ -0,0 +1,408 @@ + + + + + + + +BehaviorTree: BT::ParallelNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ParallelNode Class Reference
+
+
+ +

The ParallelNode execute all its children concurrently, but not in separate threads! + More...

+ +

#include <parallel_node.h>

+
+Inheritance diagram for BT::ParallelNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ParallelNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ParallelNode (const std::string &name)
 
ParallelNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override
 
+size_t successThreshold () const
 
+size_t failureThreshold () const
 
+void setSuccessThreshold (int threshold)
 
+void setFailureThreshold (int threshold)
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The ParallelNode execute all its children concurrently, but not in separate threads!

+

Even if this may look similar to ReactiveSequence, this Control Node is the only one that can have multiple children RUNNING at the same time.

+

The Node is completed either when the THRESHOLD_SUCCESS or THRESHOLD_FAILURE number is reached (both configured using ports).

+

If any of the thresholds is reached, and other children are still running, they will be halted.

+

Note that threshold indexes work as in Python: https://www.i2tutorials.com/what-are-negative-indexes-and-why-are-they-used/

+

Therefore -1 is equivalent to the number of children.

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ParallelNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/dee/class_b_t_1_1_parallel_node.js b/d1/dee/class_b_t_1_1_parallel_node.js new file mode 100644 index 000000000..2d86f9527 --- /dev/null +++ b/d1/dee/class_b_t_1_1_parallel_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_parallel_node = +[ + [ "halt", "d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a", null ] +]; \ No newline at end of file diff --git a/d1/def/class_b_t_1_1_retry_node_typo.html b/d1/def/class_b_t_1_1_retry_node_typo.html new file mode 100644 index 000000000..5d3297126 --- /dev/null +++ b/d1/def/class_b_t_1_1_retry_node_typo.html @@ -0,0 +1,355 @@ + + + + + + + +BehaviorTree: BT::RetryNodeTypo Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::RetryNodeTypo Class Reference
+
+
+
+Inheritance diagram for BT::RetryNodeTypo:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::RetryNodeTypo:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RetryNodeTypo (const std::string &name, int NTries)
 
RetryNodeTypo (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::RetryNode
RetryNode (const std::string &name, int NTries)
 
RetryNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::RetryNode
+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d1/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix-members.html b/d1/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix-members.html new file mode 100644 index 000000000..10f2a4588 --- /dev/null +++ b/d1/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::bit_prefix Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::bit_prefix, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::bit_prefix)BT::Grammar::Expression::bit_prefixstatic
operand typedef (defined in BT::Grammar::Expression::bit_prefix)BT::Grammar::Expression::bit_prefix
+
+ + + + diff --git a/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.map b/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.map new file mode 100644 index 000000000..277e3d177 --- /dev/null +++ b/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.md5 b/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.md5 new file mode 100644 index 000000000..a038d0611 --- /dev/null +++ b/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.md5 @@ -0,0 +1 @@ +e15e87df2e0529df1fa0b4c0bec37b6a \ No newline at end of file diff --git a/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.png b/d2/d01/class_b_t_1_1_fallback_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e96e60845915070d8407c45d6a1ba3eb762661f9 GIT binary patch literal 5889 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 literal 0 HcmV?d00001 diff --git a/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.map b/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.map new file mode 100644 index 000000000..773b95be7 --- /dev/null +++ b/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.md5 b/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.md5 new file mode 100644 index 000000000..ef541863e --- /dev/null +++ b/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.md5 @@ -0,0 +1 @@ +955fda9187cb2243e3c27491440bbb6b \ No newline at end of file diff --git a/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.png b/d2/d07/struct_b_t_1_1has__static__method__provided_ports__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..217199dea9b330290212d000903d10023376749e GIT binary patch literal 7447 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 G`~M$^0^&jd literal 0 HcmV?d00001 diff --git a/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.map b/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.map new file mode 100644 index 000000000..842e89c28 --- /dev/null +++ b/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.md5 b/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.md5 new file mode 100644 index 000000000..c3cc153ff --- /dev/null +++ b/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.md5 @@ -0,0 +1 @@ +511b6e7f7d0cb86924893d027b7327f4 \ No newline at end of file diff --git a/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.png b/d2/d0d/class_b_t_1_1_force_success_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1e8a62f7bcd59ebade3468c61bc92d31670edcc1 GIT binary patch literal 7517 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 G{_r1oRprnC literal 0 HcmV?d00001 diff --git a/d2/d0e/struct_b_t_1_1_stamped_value-members.html b/d2/d0e/struct_b_t_1_1_stamped_value-members.html new file mode 100644 index 000000000..186b626be --- /dev/null +++ b/d2/d0e/struct_b_t_1_1_stamped_value-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::StampedValue< T > Member List
+
+
+ +

This is the complete list of members for BT::StampedValue< T >, including all inherited members.

+ + + +
stamp (defined in BT::StampedValue< T >)BT::StampedValue< T >
value (defined in BT::StampedValue< T >)BT::StampedValue< T >
+
+ + + + diff --git a/d2/d11/class_b_t_1_1_behavior_tree_exception-members.html b/d2/d11/class_b_t_1_1_behavior_tree_exception-members.html new file mode 100644 index 000000000..75e1507e0 --- /dev/null +++ b/d2/d11/class_b_t_1_1_behavior_tree_exception-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::BehaviorTreeException Member List
+
+
+ +

This is the complete list of members for BT::BehaviorTreeException, including all inherited members.

+ + + + +
BehaviorTreeException(std::string_view message) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
BehaviorTreeException(const SV &... args) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
what() const noexcept (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
+
+ + + + diff --git a/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.map b/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.map new file mode 100644 index 000000000..d5ddd9e79 --- /dev/null +++ b/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.md5 b/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.md5 new file mode 100644 index 000000000..393ad4fdb --- /dev/null +++ b/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.md5 @@ -0,0 +1 @@ +efd8f7eeb242aebbbafc3ed3903a4e5c \ No newline at end of file diff --git a/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.png b/d2/d13/class_b_t_1_1_pop_from_queue__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e55a7c19f5e0d09c84d892d14f5508b6ac0ae3e9 GIT binary patch literal 11810 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 Pz7f*ma$ + + + + diff --git a/d2/d1d/class_b_t_1_1_logic_error__inherit__graph.md5 b/d2/d1d/class_b_t_1_1_logic_error__inherit__graph.md5 new file mode 100644 index 000000000..c8aebefc6 --- /dev/null +++ b/d2/d1d/class_b_t_1_1_logic_error__inherit__graph.md5 @@ -0,0 +1 @@ +9dc039bbe02371c5ac18417c5fb67d82 \ No newline at end of file diff --git a/d2/d1d/class_b_t_1_1_logic_error__inherit__graph.png b/d2/d1d/class_b_t_1_1_logic_error__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..70b218a2166b8d529c2bc2a271c9f3a147697b07 GIT binary patch literal 6731 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 F{15zTDGmSt literal 0 HcmV?d00001 diff --git a/d2/d27/class_b_t_1_1_run_once_node__coll__graph.map b/d2/d27/class_b_t_1_1_run_once_node__coll__graph.map new file mode 100644 index 000000000..14a976d60 --- /dev/null +++ b/d2/d27/class_b_t_1_1_run_once_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d2/d27/class_b_t_1_1_run_once_node__coll__graph.md5 b/d2/d27/class_b_t_1_1_run_once_node__coll__graph.md5 new file mode 100644 index 000000000..7f1cf1588 --- /dev/null +++ b/d2/d27/class_b_t_1_1_run_once_node__coll__graph.md5 @@ -0,0 +1 @@ +dec7d2c72b1ff417fe47aa19507e96c0 \ No newline at end of file diff --git a/d2/d27/class_b_t_1_1_run_once_node__coll__graph.png b/d2/d27/class_b_t_1_1_run_once_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b384d9d3b1bf8bc8f64404ef8b329121266d9a1 GIT binary patch literal 7405 zcmcgxbyQSuw;mV?sZr?$K`D`tZb3@Ar3R!MM7lu%=~7Za7(yDQ8-LQ>HI#JMNY{P& zzP0ZC{-tXI21S#2n1hV?v*K&1ry!vRoUr&Zd?6cS0w|ETnh_U2b1~OjgZ77tIJ&HxFQ3~ z<`!`o8O%UII;iZ07%hy}*uApqdON$L`#5HVii_*wf=5-_IdyCSUuHyAM zb9(*yHN?r;Ia?v=`Lj3W5OHyF5e}z$_wF6zlP7;RH@k~od5ceK?d@GoV+`VlK)Mm)x*urO_B4J1Z;X61Gqz9GMCTw@ubM@6{_*-s8{QR z`q87Hni_u8`r!I(-TO!i-tZFr8g93pH?I{G$OW9}4C`Iq?#!o+%rL*}i~FRcr2mR)Jq-=b(g&DWdGhJFj#1dy z*qBXz(ag!k@izJcVfQ^Aj)e-#n1iFENBj=6oP)?3$IOkPtPh2&t1+t;gJOj8^78)- z535}r{DwW|;81}qjTLA}V$&}zF9(N)hB7lVb2`@eoI4-3LSe~Cz~vE3OD3ozPt;l% zFs7(fD(dd*!NGxiR64oR9(}%I%0B^UP-b@aCoC*sq((k*z}AP49+|izGeo^71Pl{e zTP09~EG#TUq@*uw#+Xr!+1ZarMn;&QJ*%vrot~Z+X>s45S4`m!7Qfz9v74#v&K?{a z)ATyok*~1m??VNB_@G$HSR63fas z()b-MCW>`kwkM+Io4iL6vaqjTziP6Vy>@ZoNl8f|L0w&6d+t_EV&mc>fEUj$E|zw7 z`W9|Z_)$l|c5asq)u5mtY;5du0e{^jp~}8I(v6VN&`vB245hK2TqX5mP=_8!D$duw zGey8*1>K@Kf00k1EY{)wQ;lAyKK|DMGiq#v)y|{TXXIUa7h9}3K29Y+daZui-OQ`2 ztH)c2p}g}yT9O(V$c%dGkT^cQAr73?nBY&tRL>u6GUK6Gwx5=j;>PUPTROCU8Ea^r zHFA=K1wV5{Ca^>qYWO~qWaM+h=kwhzXGu8@+c0w^BE2Y99Nvt;XFh;?s1JSZC@m_8 zGnM=D7YA1_qnG%?1PVca+Cucz!`;x%gETf!^X-7cAM{t1H>?UAfB9jo=<6iy(F~MT z)iK)R1TP*T5|F3U%pqwUW<+l_jlGt&C;oOx=sl!lb76i}=bu?JO3vC`sQp)x z(@ko~dQyh1^nQF`h{v2zKsa; zpg#yt9u_d?RpO52O|H_JFcQ?H94W#EiobC*!dVOH^cJ9 zOU>)jNY#6vXL`#@N}0H0$32cT{sbGRnmQDGP|!nr?YjSnf;jy_Pah_G>HUPjVwse< zbLPcEEfPtc-;{bdIN=+Y7K_u$_}T`9PocWO7?&RrLl47R=TUYOCGTU#ABDpoCQ#Tanw3kfEWVzB&YLV!|CVc)P-uwGdVrP(Pe+W zdW%jcWkuf-JlNpN!ul%{952K-O#XdS%=rt{gJY=wbs7x4Wc$rv z`cK`3qu7$5%cc!H@^8#!c4O@?TZd)r7qraiw3xf49P2;-V-eVBg>c&!;*Mn{d#xC# z8L17O#vT1r19hT0Gb$J88^pYUd`5FbmvtP-4BdQiCW&t!ilz}Lsc0%t^%%{P4w2f7 z7J?pwRuV8OLFI%X@jXR<%qhC3Y0Mi7kD%yZAydadpos>kqiCG(IpKBPLr4RzC6H;o#Zlz6&>I3OG&d+)pfYRkzE4H;)~=EYeIwJy`xYiYeLn3~XAShc4u zD}P3LMsuJuT!TIf>uak_dUiV*mpaI*sSr)C#VLfyFYeHpMjz!EL4;UrU6{wCkJ1#G zco2W%TS!(jTtFYiVEA&ℑzVW9ysb*n-hJ6vR?n_4E`3C5rzvmN)Zc`u?l;+ezy< zW0N&{J6I%6wpd5^@*+gHDt3=XmETHuD=y3N`rcBG${%UW&PWNFQbQs!P3XVc017J(!{;?npop>sDbr zuI^VFe7%i%Wo>P@?sJh5M?k4a-8;VP!0_nh;WPP_3R6a2{?K}n7`Md7K< zFC1?g818oLy>^Hf2Kzk9ooy&D{9Gr11>ZoyysA_QQ$4ualKJACo)epjSdMt6p62Hd zDIG%gNjGHbWlZ&^$APm_Gr)gd z(pD%fw}i*gg7|DzM%Z*UNaXkcbhXY?%O}Smi5>+}r3dNbPfEQ$mcUehLcKy3Rjd78 zG)GhA?qn>2xvCyhtq@8s_k}3fE^80RagzW%CkZjO$7)|d@b4R#(b?ZUl4^w>xdx8Z z*M++92yE<7HYDaLVyfq+1v0j1L>R4{O3g$!O6WWhrY4tJY)DBjYdXa;w>F&|)dc

vKBi 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 + + + + + + +BehaviorTree: BT::TreeObserver Class Reference + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TreeObserver Class Reference
+
+
+ +

The TreeObserver is used to collect statistics about which nodes are executed and their returned status. + More...

+ +

#include <bt_observer.h>

+
+Inheritance diagram for BT::TreeObserver:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::TreeObserver:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  NodeStatistics
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TreeObserver (const BT::Tree &tree)
 
virtual void flush () override
 
+void resetStatistics ()
 
+const NodeStatisticsgetStatistics (const std::string &path) const
 
+const NodeStatisticsgetStatistics (uint16_t uid) const
 
+const std::unordered_map< uint16_t, NodeStatistics > & statistics () const
 
+const std::unordered_map< std::string, uint16_t > & pathToUID () const
 
+const std::map< uint16_t, std::string > & uidToPath () const
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Detailed Description

+

The TreeObserver is used to collect statistics about which nodes are executed and their returned status.

+

It is particularly useful to create unit tests, since if allow to determine if a certain transition happened as expected, in a non intrusive way.

+

Member Function Documentation

+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::TreeObserver::flush ()
+
+inlineoverridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d2/d2b/class_b_t_1_1_tree_observer.js b/d2/d2b/class_b_t_1_1_tree_observer.js new file mode 100644 index 000000000..78a26bd8a --- /dev/null +++ b/d2/d2b/class_b_t_1_1_tree_observer.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_tree_observer = +[ + [ "NodeStatistics", "d7/d9d/struct_b_t_1_1_tree_observer_1_1_node_statistics.html", null ] +]; \ No newline at end of file diff --git a/d2/d39/json__export_8h_source.html b/d2/d39/json__export_8h_source.html new file mode 100644 index 000000000..1a110a981 --- /dev/null +++ b/d2/d39/json__export_8h_source.html @@ -0,0 +1,382 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/json_export.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
json_export.h
+
+
+
1#pragma once
+
2
+
3#include "behaviortree_cpp/basic_types.h"
+
4#include "behaviortree_cpp/utils/safe_any.hpp"
+
5#include "behaviortree_cpp/basic_types.h"
+
6
+
7// Use the version nlohmann::json embedded in BT.CPP
+
8#include "behaviortree_cpp/contrib/json.hpp"
+
9
+
10namespace BT
+
11{
+
12
+
13/**
+
14* To add new type to the JSON library, you should follow these instructions:
+
15* https://json.nlohmann.me/features/arbitrary_types/
+
16*
+
17* Considering for instance the type:
+
18*
+
19* struct Point2D {
+
20* double x;
+
21* double y;
+
22* };
+
23*
+
24* This would require the implementation of:
+
25*
+
26* void to_json(nlohmann::json& j, const Point2D& point);
+
27* void from_json(const nlohmann::json& j, Point2D& point);
+
28*
+
29* To avoid repeating yourself, we provide the macro BT_JSON_CONVERTION
+
30* that implements both those function, at once. Usage:
+
31*
+
32* BT_JSON_CONVERTER(Point2D, point)
+
33* {
+
34* add_field("x", &point.x);
+
35* add_field("y", &point.y);
+
36* }
+
37*
+
38* Later, you MUST register the type using:
+
39*
+
40* BT::RegisterJsonDefinition<Point2D>();
+
41*/
+
42
+
43//-----------------------------------------------------------------------------------
+
44
+
45/**
+
46* Use RegisterJsonDefinition<Foo>();
+
47*/
+
48
+
49class JsonExporter
+
50{
+
51public:
+
52 static JsonExporter& get();
+
53
+
54 /**
+
55 * @brief toJson adds the content of "any" to the JSON "destination".
+
56 *
+
57 * It will return false if the conversion toJson is not possible
+
58 * If it is a custom type, you might register it first with addConverter().
+
59 */
+
60 bool toJson(const BT::Any& any, nlohmann::json& destination) const;
+
61
+
62 /// This information is needed to create a BT::Blackboard::entry
+
63 using Entry = std::pair<BT::Any, BT::TypeInfo>;
+
64
+
65 using ExpectedEntry = nonstd::expected<Entry, std::string>;
+
66
+
67 /**
+
68 * @brief fromJson will return an Entry (value wrappedn in Any + TypeInfo)
+
69 * from a json source.
+
70 * If it is a custom type, you might register it first with addConverter().
+
71 * @param source
+
72 * @return
+
73 */
+
74 ExpectedEntry fromJson(const nlohmann::json& source) const;
+
75
+
76 /// Same as the other, but providing the specific type,
+
77 /// To be preferred if the JSON doesn't contain the field [__type]
+
78 ExpectedEntry fromJson(const nlohmann::json& source, std::type_index type) const;
+
79
+
80 template <typename T>
+
81 Expected<T> fromJson(const nlohmann::json& source) const;
+
82
+
83 /**
+
84 * @brief Register new JSON converters with addConverter<Foo>().
+
85 * You should used first the macro BT_JSON_CONVERTER.
+
86 * The convertions from/to vector<T> are automatically registered.
+
87 */
+
88 template <typename T>
+
89 void addConverter();
+
90
+
91 /**
+
92 * @brief addConverter register a to_json function that converts a json to a type T.
+
93 * The convertion to std:vector<T> is automatically registered.
+
94 *
+
95 * @param to_json the function with signature void(const T&, nlohmann::json&)
+
96 * @param add_type if true, add a field called [__type] with the name ofthe type.
+
97 */
+
98 template <typename T>
+
99 void addConverter(std::function<void(const T&, nlohmann::json&)> to_json,
+
100 bool add_type = true);
+
101
+
102 /**
+
103 * @brief addConverter register a from_json function that converts a json to a type T.
+
104 * The convertions from std::vector<T> is automatically registered.
+
105 *
+
106 * @param from_json the function with signature void(const nlohmann::json&, T&)
+
107 */
+
108 template <typename T>
+
109 void addConverter(std::function<void(const nlohmann::json&, T&)> from_json);
+
110
+
111private:
+
112 using ToJonConverter = std::function<void(const BT::Any&, nlohmann::json&)>;
+
113 using FromJonConverter = std::function<Entry(const nlohmann::json&)>;
+
114
+
115 std::unordered_map<std::type_index, ToJonConverter> to_json_converters_;
+
116 std::unordered_map<std::type_index, FromJonConverter> from_json_converters_;
+
117 std::unordered_map<std::type_index, FromJonConverter> from_json_array_converters_;
+
118 std::unordered_map<std::string, BT::TypeInfo> type_names_;
+
119};
+
120
+
121template <typename T>
+
122inline Expected<T> JsonExporter::fromJson(const nlohmann::json& source) const
+
123{
+
124 auto res = fromJson(source);
+
125 if(!res)
+
126 {
+
127 return nonstd::make_unexpected(res.error());
+
128 }
+
129 auto casted = res->first.tryCast<T>();
+
130 if(!casted)
+
131 {
+
132 return nonstd::make_unexpected(casted.error());
+
133 }
+
134 return *casted;
+
135}
+
136
+
137//-------------------------------------------------------------------
+
138
+
139template <typename T>
+
140inline void JsonExporter::addConverter()
+
141{
+
142 // we need to get the name of the type
+
143 nlohmann::json const js = T{};
+
144 // we insert both the name obtained from JSON and demangle
+
145 if(js.contains("__type"))
+
146 {
+
147 type_names_.insert({ std::string(js["__type"]), BT::TypeInfo::Create<T>() });
+
148 }
+
149 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
+
150
+
151 ToJonConverter to_converter = [](const BT::Any& entry, nlohmann::json& dst) {
+
152 dst = *const_cast<BT::Any&>(entry).castPtr<T>();
+
153 };
+
154 to_json_converters_.insert({ typeid(T), to_converter });
+
155
+
156 FromJonConverter from_converter = [](const nlohmann::json& src) -> Entry {
+
157 T value = src.get<T>();
+
158 return { BT::Any(value), BT::TypeInfo::Create<T>() };
+
159 };
+
160
+
161 from_json_converters_.insert({ typeid(T), from_converter });
+
162
+
163 //---- include vectors of T
+
164 ToJonConverter to_array_converter = [](const BT::Any& entry, nlohmann::json& dst) {
+
165 dst = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
+
166 };
+
167 to_json_converters_.insert({ typeid(std::vector<T>), to_array_converter });
+
168
+
169 FromJonConverter from_array_converter = [](const nlohmann::json& src) -> Entry {
+
170 std::vector<T> value;
+
171 for(const auto& item : src)
+
172 {
+
173 value.push_back(item.get<T>());
+
174 }
+
175 return { BT::Any(value), BT::TypeInfo::Create<std::vector<T>>() };
+
176 };
+
177 from_json_array_converters_.insert({ typeid(T), from_array_converter });
+
178}
+
179
+
180template <typename T>
+
181inline void JsonExporter::addConverter(
+
182 std::function<void(const T&, nlohmann::json&)> func, bool add_type)
+
183{
+
184 auto converter = [func, add_type](const BT::Any& entry, nlohmann::json& json) {
+
185 func(entry.cast<T>(), json);
+
186 if(add_type)
+
187 {
+
188 json["__type"] = BT::demangle(typeid(T));
+
189 }
+
190 };
+
191 to_json_converters_.insert({ typeid(T), std::move(converter) });
+
192 //---------------------------------------------
+
193 // add the vector<T> converter
+
194 auto vector_converter = [converter](const BT::Any& entry, nlohmann::json& json) {
+
195 auto& vec = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
+
196 for(const auto& item : vec)
+
197 {
+
198 nlohmann::json item_json;
+
199 converter(BT::Any(item), item_json);
+
200 json.push_back(item_json);
+
201 }
+
202 };
+
203 to_json_converters_.insert({ typeid(std::vector<T>), std::move(vector_converter) });
+
204}
+
205
+
206template <typename T>
+
207inline void
+
208JsonExporter::addConverter(std::function<void(const nlohmann::json&, T&)> func)
+
209{
+
210 auto converter = [func](const nlohmann::json& json) -> Entry {
+
211 T tmp;
+
212 func(json, tmp);
+
213 return { BT::Any(tmp), BT::TypeInfo::Create<T>() };
+
214 };
+
215 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
+
216 from_json_converters_.insert({ typeid(T), std::move(converter) });
+
217 //---------------------------------------------
+
218 // add the vector<T> converter
+
219 auto vector_converter = [func](const nlohmann::json& json) -> Entry {
+
220 std::vector<T> tmp;
+
221 for(const auto& item : json)
+
222 {
+
223 T item_tmp;
+
224 func(item, item_tmp);
+
225 tmp.push_back(item_tmp);
+
226 }
+
227 return { BT::Any(tmp), BT::TypeInfo::Create<std::vector<T>>() };
+
228 };
+
229 from_json_array_converters_.insert({ typeid(T), std::move(vector_converter) });
+
230}
+
231
+
232template <typename T>
+
233inline void RegisterJsonDefinition()
+
234{
+
235 JsonExporter::get().addConverter<T>();
+
236}
+
237
+
238} // namespace BT
+
239
+
240//------------------------------------------------
+
241//------------------------------------------------
+
242//------------------------------------------------
+
243
+
244// Macro to implement to_json() and from_json()
+
245
+
246#define BT_JSON_CONVERTER(Type, value)
+
247 template <class AddField>
+
248 void _JsonTypeDefinition(Type&, AddField&);
+
249
+
250 inline void to_json(nlohmann::json& js, const Type& p)
+
251 {
+
252 auto op = [&js](const char* name, auto* val) { js[name] = *val; };
+
253 _JsonTypeDefinition(const_cast<Type&>(p), op);
+
254 js["__type"] = #Type;
+
255 }
+
256
+
257 inline void from_json(const nlohmann::json& js, Type& p)
+
258 {
+
259 auto op = [&js](const char* name, auto* v) { js.at(name).get_to(*v); };
+
260 _JsonTypeDefinition(p, op);
+
261 }
+
262
+
263 template <class AddField>
+
264 inline void _JsonTypeDefinition(Type& value, AddField& add_field)
+
265
+
266//end of file
+
Definition: safe_any.hpp:37
+
Definition: json_export.h:50
+
ExpectedEntry fromJson(const nlohmann::json &source, std::type_index type) const
+
void addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
addConverter register a to_json function that converts a json to a type T. The convertion to std:vect...
Definition: json_export.h:181
+
void addConverter(std::function< void(const nlohmann::json &, T &)> from_json)
addConverter register a from_json function that converts a json to a type T. The convertions from std...
Definition: json_export.h:208
+
bool toJson(const BT::Any &any, nlohmann::json &destination) const
toJson adds the content of "any" to the JSON "destination".
+
void addConverter()
Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVER...
Definition: json_export.h:140
+
ExpectedEntry fromJson(const nlohmann::json &source) const
fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source....
+
Definition: basic_types.h:348
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.map b/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.map new file mode 100644 index 000000000..e094b577d --- /dev/null +++ b/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.md5 b/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.md5 new file mode 100644 index 000000000..f0bd1817c --- /dev/null +++ b/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.md5 @@ -0,0 +1 @@ +6c45ce2c1e4a6b894472c530caa0079f \ No newline at end of file diff --git a/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.png b/d2/d4c/struct_b_t_1_1_grammar_1_1_expression_1_1comparison__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d43d1cf0cc45d312bf4ea76469f07cfd687fb6d2 GIT binary patch literal 6134 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 literal 0 HcmV?d00001 diff --git a/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.map b/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.map new file mode 100644 index 000000000..3fcd25f1e --- /dev/null +++ b/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.md5 b/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.md5 new file mode 100644 index 000000000..1350af799 --- /dev/null +++ b/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.md5 @@ -0,0 +1 @@ +8b1f5605b482b56ae9ee32c025ae53a5 \ No newline at end of file diff --git a/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.png b/d2/d4d/class_b_t_1_1_keep_running_until_failure_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9696032de2c5f4a017a410f01db409cee75dea GIT binary patch literal 8281 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 literal 0 HcmV?d00001 diff --git a/d2/d51/class_b_t_1_1_sequence_with_memory-members.html b/d2/d51/class_b_t_1_1_sequence_with_memory-members.html new file mode 100644 index 000000000..3eb996af9 --- /dev/null +++ b/d2/d51/class_b_t_1_1_sequence_with_memory-members.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SequenceWithMemory Member List
+
+
+ +

This is the complete list of members for BT::SequenceWithMemory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::SequenceWithMemoryvirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
SequenceWithMemory(const std::string &name) (defined in BT::SequenceWithMemory)BT::SequenceWithMemory
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~SequenceWithMemory() override=default (defined in BT::SequenceWithMemory)BT::SequenceWithMemoryvirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d2/d52/class_b_t_1_1_pop_from_queue-members.html b/d2/d52/class_b_t_1_1_pop_from_queue-members.html new file mode 100644 index 000000000..9e2a0d80d --- /dev/null +++ b/d2/d52/class_b_t_1_1_pop_from_queue-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::PopFromQueue< T > Member List
+
+
+ +

This is the complete list of members for BT::PopFromQueue< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
PopFromQueue(const std::string &name, const NodeConfig &config) (defined in BT::PopFromQueue< T >)BT::PopFromQueue< T >inline
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::PopFromQueue< T >)BT::PopFromQueue< T >inlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
tick() overrideBT::PopFromQueue< T >inlinevirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html b/d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html new file mode 100644 index 000000000..a592a6f8f --- /dev/null +++ b/d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html @@ -0,0 +1,187 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprName Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprName Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprName:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprName:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

ExprName (std::string n)
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + +

+Public Attributes

+std::string name
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprName::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.map b/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.map new file mode 100644 index 000000000..2661e6db0 --- /dev/null +++ b/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.md5 b/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.md5 new file mode 100644 index 000000000..f5b69c21c --- /dev/null +++ b/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.md5 @@ -0,0 +1 @@ +2bdbcf60a4cba10bc9161012787e149d \ No newline at end of file diff --git a/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.png b/d2/d5f/struct_b_t_1_1_ast_1_1_expr_if__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..94948f9b83ba11d3e80b72ef794b361c4ab93e8a GIT binary patch literal 4312 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 literal 0 HcmV?d00001 diff --git a/d2/d61/class_b_t_1_1_threaded_action.html b/d2/d61/class_b_t_1_1_threaded_action.html new file mode 100644 index 000000000..03eb04288 --- /dev/null +++ b/d2/d61/class_b_t_1_1_threaded_action.html @@ -0,0 +1,398 @@ + + + + + + + +BehaviorTree: BT::ThreadedAction Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ThreadedAction Class Reference
+
+
+ +

The ThreadedAction executes the tick in a different thread. + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::ThreadedAction:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::ThreadedAction:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ThreadedAction (const std::string &name, const NodeConfig &config)
 
+bool isHaltRequested () const
 
virtual NodeStatus executeTick () override final
 The method that should be used to invoke tick() and setStatus();.
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

The ThreadedAction executes the tick in a different thread.

+

IMPORTANT: this action is quite hard to implement correctly. Please make sure that you know what you are doing.

+
    +
  • In your overriden tick() method, you must check periodically the result of the method isHaltRequested() and stop your execution accordingly.
  • +
  • in the overriden halt() method, you can do some cleanup, but do not forget to invoke the base class method ThreadedAction::halt();
  • +
  • remember, with few exceptions, a halted ThreadedAction must return NodeStatus::IDLE.
  • +
+

For a complete example, look at AsyncActionTest in action_test_node.h in the folder test.

+

NOTE: when the thread is completed, i.e. the tick() returns its status, a TreeNode::emitWakeUpSignal() will be called.

+

Member Function Documentation

+ +

◆ executeTick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::ThreadedAction::executeTick ()
+
+finaloverridevirtual
+
+ +

The method that should be used to invoke tick() and setStatus();.

+ +

Reimplemented from BT::TreeNode.

+ +
+
+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ThreadedAction::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d2/d61/class_b_t_1_1_threaded_action.js b/d2/d61/class_b_t_1_1_threaded_action.js new file mode 100644 index 000000000..bc65d6940 --- /dev/null +++ b/d2/d61/class_b_t_1_1_threaded_action.js @@ -0,0 +1,5 @@ +var class_b_t_1_1_threaded_action = +[ + [ "executeTick", "d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1", null ], + [ "halt", "d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a", null ] +]; \ No newline at end of file diff --git a/d2/d62/class_b_t_1_1_timer_queue-members.html b/d2/d62/class_b_t_1_1_timer_queue-members.html new file mode 100644 index 000000000..54354b47b --- /dev/null +++ b/d2/d62/class_b_t_1_1_timer_queue-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TimerQueue< _Clock, _Duration > Member List
+
+
+ +

This is the complete list of members for BT::TimerQueue< _Clock, _Duration >, including all inherited members.

+ + + + + + +
add(std::chrono::milliseconds milliseconds, std::function< void(bool)> handler)BT::TimerQueue< _Clock, _Duration >inline
cancel(uint64_t id)BT::TimerQueue< _Clock, _Duration >inline
cancelAll()BT::TimerQueue< _Clock, _Duration >inline
TimerQueue() (defined in BT::TimerQueue< _Clock, _Duration >)BT::TimerQueue< _Clock, _Duration >inline
~TimerQueue() (defined in BT::TimerQueue< _Clock, _Duration >)BT::TimerQueue< _Clock, _Duration >inline
+
+ + + + diff --git a/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.map b/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.map new file mode 100644 index 000000000..ff77e96ac --- /dev/null +++ b/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.md5 b/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.md5 new file mode 100644 index 000000000..c383fcfed --- /dev/null +++ b/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.md5 @@ -0,0 +1 @@ +9457a6d6c0f27fef94c19f9819522423 \ No newline at end of file diff --git a/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.png b/d2/d6f/class_b_t_1_1_always_failure_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72a5a80ef8e39773e5f52d671c24d9988aa29fb8 GIT binary patch literal 12113 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 literal 0 HcmV?d00001 diff --git a/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.map b/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.map new file mode 100644 index 000000000..b78b446e7 --- /dev/null +++ b/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.md5 b/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.md5 new file mode 100644 index 000000000..423da46b4 --- /dev/null +++ b/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.md5 @@ -0,0 +1 @@ +535644c4418651a3b2bd5a5d53bbca3d \ No newline at end of file diff --git a/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.png b/d2/d72/struct_b_t_1_1_grammar_1_1_expression__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3af2b76124201d74a579e612016eefe247103b5 GIT binary patch literal 5332 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 literal 0 HcmV?d00001 diff --git a/d2/d77/class_b_t_1_1_leaf_node__coll__graph.map b/d2/d77/class_b_t_1_1_leaf_node__coll__graph.map new file mode 100644 index 000000000..5c205b10c --- /dev/null +++ b/d2/d77/class_b_t_1_1_leaf_node__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d77/class_b_t_1_1_leaf_node__coll__graph.md5 b/d2/d77/class_b_t_1_1_leaf_node__coll__graph.md5 new file mode 100644 index 000000000..13591f3bd --- /dev/null +++ b/d2/d77/class_b_t_1_1_leaf_node__coll__graph.md5 @@ -0,0 +1 @@ +b73eedf2e1966db7ddf98be4584aaffb \ No newline at end of file diff --git a/d2/d77/class_b_t_1_1_leaf_node__coll__graph.png b/d2/d77/class_b_t_1_1_leaf_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f476e4e551977f0d99fd34b011107a195ef7564c GIT binary patch literal 3454 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 S(L-QEMWv;o3&E(_g#Q~Um+oc& literal 0 HcmV?d00001 diff --git a/d2/d7b/class_b_t_1_1_file_logger2.html b/d2/d7b/class_b_t_1_1_file_logger2.html new file mode 100644 index 000000000..939d44f65 --- /dev/null +++ b/d2/d7b/class_b_t_1_1_file_logger2.html @@ -0,0 +1,326 @@ + + + + + + + +BehaviorTree: BT::FileLogger2 Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::FileLogger2 Class Reference
+
+
+ +

The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency. + More...

+ +

#include <bt_file_logger_v2.h>

+
+Inheritance diagram for BT::FileLogger2:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::FileLogger2:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  Transition
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FileLogger2 (const Tree &tree, std::filesystem::path const &filepath)
 To correctly read this log with Groot2, you must use the suffix ".btlog". Constructor will throw otherwise.
 
FileLogger2 (const FileLogger2 &other)=delete
 
+FileLogger2operator= (const FileLogger2 &other)=delete
 
FileLogger2 (FileLogger2 &&other)=default
 
+FileLogger2operator= (FileLogger2 &&other)=default
 
void callback (Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override
 
void flush () override
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Detailed Description

+

The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency.

+

Format:

+
    +
  • first 4 bytes: size of the XML string (N)
  • +
  • next N bytes: string containing the XML representing the tree.
  • +
  • next 8 bytes: first timestamp (microseconds since epoch)
  • +
  • next: each 9 bytes is a FileLogger2::Transition. See definition.
  • +
+

Constructor & Destructor Documentation

+ +

◆ FileLogger2()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BT::FileLogger2::FileLogger2 (const Treetree,
std::filesystem::path const & filepath 
)
+
+ +

To correctly read this log with Groot2, you must use the suffix ".btlog". Constructor will throw otherwise.

+
Parameters
+ + + +
treethe tree to log
filepathpath of the file where info will be stored
+
+
+ +
+
+

Member Function Documentation

+ +

◆ callback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void BT::FileLogger2::callback (Duration timestamp,
const TreeNodenode,
NodeStatus prev_status,
NodeStatus status 
)
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::FileLogger2::flush ()
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d2/d7b/class_b_t_1_1_file_logger2.js b/d2/d7b/class_b_t_1_1_file_logger2.js new file mode 100644 index 000000000..c96c3ada1 --- /dev/null +++ b/d2/d7b/class_b_t_1_1_file_logger2.js @@ -0,0 +1,5 @@ +var class_b_t_1_1_file_logger2 = +[ + [ "Transition", "dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html", null ], + [ "FileLogger2", "d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e", null ] +]; \ No newline at end of file diff --git a/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.map b/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.map new file mode 100644 index 000000000..88a64d889 --- /dev/null +++ b/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.md5 b/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.md5 new file mode 100644 index 000000000..27092dac4 --- /dev/null +++ b/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.md5 @@ -0,0 +1 @@ +4f1df4d6df523628e6d6478d3781507c \ No newline at end of file diff --git a/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.png b/d2/d7b/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8ba7e1b6266a8a9ca2c7d040e6f31175cded99ef GIT binary patch literal 5523 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 af(pyIhg|%|u>rfR5SX;GRFQ;Hz<&Ya+59;G literal 0 HcmV?d00001 diff --git a/d2/d7e/class_b_t_1_1_signal-members.html b/d2/d7e/class_b_t_1_1_signal-members.html new file mode 100644 index 000000000..c4bc06f74 --- /dev/null +++ b/d2/d7e/class_b_t_1_1_signal-members.html @@ -0,0 +1,112 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Signal< CallableArgs > Member List
+
+
+ +

This is the complete list of members for BT::Signal< CallableArgs >, including all inherited members.

+ + + + + +
CallableFunction typedef (defined in BT::Signal< CallableArgs >)BT::Signal< CallableArgs >
notify(CallableArgs... args) (defined in BT::Signal< CallableArgs >)BT::Signal< CallableArgs >inline
subscribe(CallableFunction func) (defined in BT::Signal< CallableArgs >)BT::Signal< CallableArgs >inline
Subscriber typedef (defined in BT::Signal< CallableArgs >)BT::Signal< CallableArgs >
+
+ + + + diff --git a/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.map b/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.map new file mode 100644 index 000000000..478e2d34c --- /dev/null +++ b/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.md5 b/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.md5 new file mode 100644 index 000000000..441c4e276 --- /dev/null +++ b/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.md5 @@ -0,0 +1 @@ +5264d140a1ea20ec3fd205d1c82de457 \ No newline at end of file diff --git a/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.png b/d2/d80/class_b_t_1_1_unset_blackboard_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..af5beb7b12c30c768bb85ca6cd4d9d1f89d6f666 GIT binary patch literal 12199 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 yS + + + + + + +BehaviorTree: BT Namespace Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT Namespace Reference
+
+
+ + + + + +

+Namespaces

namespace  details
 The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed according to the value of a blackboard entry.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

class  ActionNodeBase
 The ActionNodeBase is the base class to use to create any kind of action. A particular derived class is free to override executeTick() as needed. More...
 
class  AlwaysFailureNode
 
class  AlwaysSuccessNode
 
class  Any
 
struct  AnyTypeAllowed
 
class  BehaviorTreeException
 
class  BehaviorTreeFactory
 The BehaviorTreeFactory is used to create instances of a TreeNode at run-time. More...
 
class  Blackboard
 The Blackboard is the mechanism used by BehaviorTrees to exchange typed data. More...
 
class  ConditionNode
 
class  ConsumeQueue
 
class  ControlNode
 
class  CoroActionNode
 The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface. More...
 
class  DecoratorNode
 
class  DelayNode
 The delay node will introduce a delay and then tick the child returning the status of the child as it is upon completion The delay is in milliseconds and it is passed using the port "delay_msec". More...
 
class  EntryUpdatedAction
 The EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since the last time. More...
 
class  EntryUpdatedDecorator
 The EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated since the last time (true, the first time). More...
 
class  FallbackNode
 The FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNING, previous children will NOT be ticked again. More...
 
class  FileLogger2
 The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency. More...
 
class  ForceFailureNode
 The ForceFailureNode returns always FAILURE or RUNNING. More...
 
class  ForceSuccessNode
 The ForceSuccessNode returns always SUCCESS or RUNNING. More...
 
class  Groot2Publisher
 The Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2. More...
 
struct  has_static_method_metadata
 
struct  has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >
 
struct  has_static_method_providedPorts
 
struct  has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >
 
class  IfThenElseNode
 IfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive. More...
 
class  InverterNode
 The InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propagated. More...
 
class  JsonExporter
 
class  KeepRunningUntilFailureNode
 The KeepRunningUntilFailureNode returns always FAILURE or RUNNING. More...
 
class  LeafNode
 
class  LockedPtr
 The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object. More...
 
class  LogicError
 
class  LoopNode
 The LoopNode class is used to pop_front elements from a std::deque. This element is copied into the port "value" and the child will be executed, as long as we have elements in the queue. More...
 
class  ManualSelectorNode
 Use a Terminal User Interface (ncurses) to select a certain child manually. More...
 
class  MinitraceLogger
 
struct  NodeConfig
 
class  ParallelAllNode
 The ParallelAllNode execute all its children concurrently, but not in separate threads! More...
 
class  ParallelNode
 The ParallelNode execute all its children concurrently, but not in separate threads! More...
 
class  Parser
 The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory. More...
 
class  PopFromQueue
 
class  PortInfo
 
class  PreconditionNode
 
struct  ProtectedQueue
 
class  QueueSize
 
class  ReactiveFallback
 The ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last: More...
 
class  ReactiveSequence
 The ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last: More...
 
class  RepeatNode
 The RepeatNode is used to execute a child several times, as long as it succeed. More...
 
class  RetryNode
 The RetryNode is used to execute a child several times if it fails. More...
 
class  RetryNodeTypo
 
class  RunOnceNode
 The RunOnceNode is used when you want to execute the child only once. If the child is asynchronous, we will tick until either SUCCESS or FAILURE is returned. More...
 
class  RuntimeError
 
class  scoped_demangled_name
 
class  ScriptCondition
 Execute a script, and if the result is true, return SUCCESS, FAILURE otherwise. More...
 
class  ScriptNode
 
class  SequenceNode
 The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again. More...
 
class  SequenceWithMemory
 The SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING, previous children are not ticked again. More...
 
class  SetBlackboardNode
 The SetBlackboard is action used to store a string into an entry of the Blackboard specified in "output_key". More...
 
class  SharedLibrary
 
class  Signal
 
class  SimpleActionNode
 The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callback with this signature. More...
 
class  SimpleConditionNode
 The SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callback with this signature. More...
 
class  SimpleDecoratorNode
 The SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callback with this signature. More...
 
class  SleepNode
 Sleep for a certain amount of time. Consider also using the decorator <Delay> More...
 
class  SqliteLogger
 The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file). More...
 
struct  StampedValue
 
class  StatefulActionNode
 The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier to use correctly, when compared with ThreadedAction. More...
 
class  StatusChangeLogger
 
class  StdCoutLogger
 StdCoutLogger is a very simple logger that displays all the transitions on the console. More...
 
class  SubTreeNode
 The SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard. If you want to have data flow through ports, you need to explicitly remap the ports. More...
 
class  SwitchNode
 
class  SyncActionNode
 The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require an implementation of halt(). More...
 
class  TestNode
 The TestNode is a Node that can be configure to: More...
 
struct  TestNodeConfig
 
class  ThreadedAction
 The ThreadedAction executes the tick in a different thread. More...
 
class  TimeoutNode
 The TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time. The timeout is in milliseconds and it is passed using the port "msec". More...
 
class  TimerQueue
 
struct  Timestamp
 
class  Tree
 Struct used to store a tree. If this object goes out of scope, the tree is destroyed. More...
 
class  TreeNode
 Abstract base class for Behavior Tree Nodes. More...
 
struct  TreeNodeManifest
 This information is used mostly by the XMLParser. More...
 
class  TreeObserver
 The TreeObserver is used to collect statistics about which nodes are executed and their returned status. More...
 
class  TypeInfo
 
class  UnsetBlackboardNode
 
class  WakeUpSignal
 
class  WhileDoElseNode
 WhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode. More...
 
class  XMLParser
 The XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

+using StringView = std::string_view
 
+using KeyValueVector = std::vector< std::pair< std::string, std::string > >
 
template<typename T >
using Expected = nonstd::expected< T, std::string >
 
+using StringConverter = std::function< Any(StringView)>
 
+using StringConvertersMap = std::unordered_map< const std::type_info *, StringConverter >
 
+template<typename Predicate >
using enable_if = typename std::enable_if< Predicate::value >::type *
 
+template<typename Predicate >
using enable_if_not = typename std::enable_if<!Predicate::value >::type *
 
using Result = Expected< std::monostate >
 
+using PortsList = std::unordered_map< std::string, PortInfo >
 
+using TimePoint = std::chrono::high_resolution_clock::time_point
 
+using Duration = std::chrono::high_resolution_clock::duration
 
+using SerializedTreeStatus = std::vector< std::pair< uint16_t, uint8_t > >
 
using AnyPtrLocked = LockedPtr< Any >
 
+using NodeBuilder = std::function< std::unique_ptr< TreeNode >(const std::string &, const NodeConfig &)>
 The term "Builder" refers to the Builder Pattern (https://en.wikipedia.org/wiki/Builder_pattern)
 
+template<typename T >
using SharedQueue = std::shared_ptr< std::deque< T > >
 
+using SerializedTransition = std::array< uint8_t, 12 >
 
using EnumsTable = std::unordered_map< std::string, int >
 
+using EnumsTablePtr = std::shared_ptr< EnumsTable >
 
+using ScriptFunction = std::function< Any(Ast::Environment &env)>
 
+using PortsRemapping = std::unordered_map< std::string, std::string >
 
+using NonPortAttributes = std::unordered_map< std::string, std::string >
 
+using ScriptingEnumsRegistry = std::unordered_map< std::string, int >
 
+using NodeConfiguration = NodeConfig
 
+ + + + + + + + + + + + + + +

+Enumerations

enum class  NodeType {
+  UNDEFINED = 0 +, ACTION +, CONDITION +, CONTROL +,
+  DECORATOR +, SUBTREE +
+ }
 Enumerates the possible types of nodes.
 
enum class  NodeStatus {
+  IDLE = 0 +, RUNNING = 1 +, SUCCESS = 2 +, FAILURE = 3 +,
+  SKIPPED = 4 +
+ }
 
enum class  PortDirection { INPUT +, OUTPUT +, INOUT + }
 
enum class  TimestampType { absolute +, relative + }
 
enum class  PreCond {
+  FAILURE_IF = 0 +, SUCCESS_IF +, SKIP_IF +, WHILE_TRUE +,
+  COUNT_ +
+ }
 
enum class  PostCond {
+  ON_HALTED = 0 +, ON_FAILURE +, ON_SUCCESS +, ALWAYS +,
+  COUNT_ +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

+bool isStatusActive (const NodeStatus &status)
 
+bool isStatusCompleted (const NodeStatus &status)
 
+bool StartWith (StringView str, StringView prefix)
 
+bool StartWith (StringView str, char prefix)
 
Any convertFromJSON (StringView json_text, std::type_index type)
 convertFromJSON will parse a json string and use JsonExporter to convert its content to a given type. It will work only if the type was previously registered. May throw if it fails.
 
+template<typename T >
convertFromJSON (StringView str)
 Same as the non template version, but with automatic casting.
 
template<typename T >
convertFromString (StringView str)
 
+template<>
std::string convertFromString< std::string > (StringView str)
 
+template<>
const char * convertFromString< const char * > (StringView str)
 
+template<>
int8_t convertFromString< int8_t > (StringView str)
 
+template<>
int16_t convertFromString< int16_t > (StringView str)
 
+template<>
int32_t convertFromString< int32_t > (StringView str)
 
+template<>
int64_t convertFromString< int64_t > (StringView str)
 
+template<>
uint8_t convertFromString< uint8_t > (StringView str)
 
+template<>
uint16_t convertFromString< uint16_t > (StringView str)
 
+template<>
uint32_t convertFromString< uint32_t > (StringView str)
 
+template<>
uint64_t convertFromString< uint64_t > (StringView str)
 
+template<>
float convertFromString< float > (StringView str)
 
+template<>
double convertFromString< double > (StringView str)
 
+template<>
std::vector< int > convertFromString< std::vector< int > > (StringView str)
 
+template<>
std::vector< double > convertFromString< std::vector< double > > (StringView str)
 
+template<>
std::vector< std::string > convertFromString< std::vector< std::string > > (StringView str)
 
+template<>
bool convertFromString< bool > (StringView str)
 
+template<>
NodeStatus convertFromString< NodeStatus > (StringView str)
 
+template<>
NodeType convertFromString< NodeType > (StringView str)
 
+template<>
PortDirection convertFromString< PortDirection > (StringView str)
 
+template<typename T >
StringConverter GetAnyFromStringFunctor ()
 
+template<>
StringConverter GetAnyFromStringFunctor< void > ()
 
+template<typename T >
constexpr bool IsConvertibleToString ()
 
+Expected< std::string > toJsonString (const Any &value)
 
template<typename T >
std::string toStr (const T &value)
 toStr is the reverse operation of convertFromString.
 
+template<>
std::string toStr< bool > (const bool &value)
 
+template<>
std::string toStr< std::string > (const std::string &value)
 
+template<>
std::string toStr< BT::NodeStatus > (const BT::NodeStatus &status)
 
+std::string toStr (BT::NodeStatus status, bool colored)
 toStr converts NodeStatus to string. Optionally colored.
 
+std::ostream & operator<< (std::ostream &os, const BT::NodeStatus &status)
 
+template<>
std::string toStr< BT::NodeType > (const BT::NodeType &type)
 
+std::ostream & operator<< (std::ostream &os, const BT::NodeType &type)
 
+template<>
std::string toStr< BT::PortDirection > (const BT::PortDirection &direction)
 
+std::ostream & operator<< (std::ostream &os, const BT::PortDirection &type)
 
+std::vector< StringView > splitString (const StringView &strToSplit, char delimeter)
 
+bool IsAllowedPortName (StringView str)
 
+bool IsReservedAttribute (StringView str)
 
+template<typename T = AnyTypeAllowed>
std::pair< std::string, PortInfoCreatePort (PortDirection direction, StringView name, StringView description={})
 
template<typename T = AnyTypeAllowed>
std::pair< std::string, PortInfoInputPort (StringView name, StringView description={})
 
template<typename T = AnyTypeAllowed>
std::pair< std::string, PortInfoOutputPort (StringView name, StringView description={})
 
template<typename T = AnyTypeAllowed>
std::pair< std::string, PortInfoBidirectionalPort (StringView name, StringView description={})
 
template<typename T = AnyTypeAllowed, typename DefaultT = T>
std::pair< std::string, PortInfoInputPort (StringView name, const DefaultT &default_value, StringView description)
 
template<typename T = AnyTypeAllowed, typename DefaultT = T>
std::pair< std::string, PortInfoBidirectionalPort (StringView name, const DefaultT &default_value, StringView description)
 
template<typename T = AnyTypeAllowed>
std::pair< std::string, PortInfoOutputPort (StringView name, StringView default_value, StringView description)
 
+template<typename T >
PortsList getProvidedPorts (enable_if< has_static_method_providedPorts< T > >=nullptr)
 
+void applyRecursiveVisitor (const TreeNode *root_node, const std::function< void(const TreeNode *)> &visitor)
 
+void applyRecursiveVisitor (TreeNode *root_node, const std::function< void(TreeNode *)> &visitor)
 
void printTreeRecursively (const TreeNode *root_node, std::ostream &stream=std::cout)
 
void buildSerializedStatusSnapshot (const TreeNode *root_node, SerializedTreeStatus &serialized_buffer)
 buildSerializedStatusSnapshot can be used to create a buffer that can be stored (or sent to a client application) to know the status of all the nodes of a tree. It is not "human readable".
 
template<typename T >
NodeType getType ()
 
+const char * LibraryVersionString ()
 
+int LibraryVersionNumber ()
 
+nlohmann::json ExportBlackboardToJSON (const Blackboard &blackboard)
 ExportBlackboardToJSON will create a JSON that contains the current values of the blackboard. Complex types must be registered with JsonExporter::get()
 
+void ImportBlackboardFromJSON (const nlohmann::json &json, Blackboard &blackboard)
 ImportBlackboardFromJSON will append elements to the blackboard, using the values parsed from the JSON file created using ExportBlackboardToJSON. Complex types must be registered with JsonExporter::get()
 
+template<typename T , typename... Args>
NodeBuilder CreateBuilder (Args... args)
 
+template<typename T >
TreeNodeManifest CreateManifest (const std::string &ID, PortsList portlist=getProvidedPorts< T >())
 
+bool WildcardMatch (const std::string &str, StringView filter)
 
void BlackboardClone (const Blackboard &src, Blackboard &dst)
 BlackboardClone make a copy of the content of the blackboard.
 
std::vector< Blackboard::Ptr > BlackboardBackup (const BT::Tree &tree)
 BlackboardBackup uses Blackboard::cloneInto to backup all the blackboards of the tree.
 
void BlackboardRestore (const std::vector< Blackboard::Ptr > &backup, BT::Tree &tree)
 BlackboardRestore uses Blackboard::cloneInto to restore all the blackboards of the tree.
 
+nlohmann::json ExportTreeToJSON (const BT::Tree &tree)
 ExportTreeToJSON it calls ExportBlackboardToJSON for all the blackboards in the tree.
 
+void ImportTreeFromJSON (const nlohmann::json &json, BT::Tree &tree)
 ImportTreeFromJSON it calls ImportBlackboardFromJSON for all the blackboards in the tree.
 
+template<>
SharedQueue< int > convertFromString< SharedQueue< int > > (StringView str)
 
+template<>
SharedQueue< bool > convertFromString< SharedQueue< bool > > (StringView str)
 
+template<>
SharedQueue< double > convertFromString< SharedQueue< double > > (StringView str)
 
+template<>
SharedQueue< std::string > convertFromString< SharedQueue< std::string > > (StringView str)
 
+Serialization::NodeType convertToFlatbuffers (BT::NodeType type)
 
+Serialization::NodeStatus convertToFlatbuffers (BT::NodeStatus type)
 
+Serialization::PortDirection convertToFlatbuffers (BT::PortDirection direction)
 
+void CreateFlatbuffersBehaviorTree (flatbuffers::FlatBufferBuilder &builder, const BT::Tree &tree)
 
SerializedTransition SerializeTransition (uint16_t UID, Duration timestamp, NodeStatus prev_status, NodeStatus status)
 
+template<typename T >
void RegisterJsonDefinition ()
 
+Result ValidateScript (const std::string &script)
 ValidateScript will check if a certain string is valid.
 
+Expected< ScriptFunction > ParseScript (const std::string &script)
 
+Expected< AnyParseScriptAndExecute (Ast::Environment &env, const std::string &script)
 
+template<>
std::string toStr< BT::PostCond > (const BT::PostCond &cond)
 
+template<>
std::string toStr< BT::PreCond > (const BT::PreCond &cond)
 
+template<typename T >
constexpr bool hasNodeNameCtor ()
 
+template<typename T , typename... ExtraArgs>
constexpr bool hasNodeFullCtor ()
 
+template<typename T >
void assignDefaultRemapping (NodeConfig &config)
 
+char const * demangle_alloc (char const *name) noexcept
 
+void demangle_free (char const *name) noexcept
 
+std::string demangle (char const *name)
 
+std::string demangle (const std::type_index &index)
 
+std::string demangle (const std::type_info &info)
 
+template<typename SRC , typename TO >
bool ValidCast (const SRC &val)
 
+template<typename T >
bool isCastingSafe (const std::type_index &type, const T &val)
 
+std::string StrCat ()
 
+std::string StrCat (const std::string_view &a)
 
+std::string StrCat (const std::string_view &a, const std::string_view &b)
 
+std::string StrCat (const std::string_view &a, const std::string_view &b, const std::string_view &c)
 
+template<typename... AV>
std::string StrCat (const std::string_view &a, const std::string_view &b, const std::string_view &c, const std::string_view &d, const AV &... args)
 
+void StrAppend (std::string *destination, const std::string_view &a)
 
+void StrAppend (std::string *destination, const std::string_view &a, const std::string_view &b)
 
+void StrAppend (std::string *destination, const std::string_view &a, const std::string_view &b, const std::string_view &c)
 
+template<typename... AV>
void StrAppend (std::string *destination, const std::string_view &a, const std::string_view &b, const std::string_view &c, const std::string_view &d, const AV &... args)
 
+void VerifyXML (const std::string &xml_text, const std::unordered_map< std::string, NodeType > &registered_nodes)
 
std::string writeTreeNodesModelXML (const BehaviorTreeFactory &factory, bool include_builtin=false)
 writeTreeNodesModelXML generates an XMl that contains the manifests in the <TreeNodesModel>
 
std::string writeTreeXSD (const BehaviorTreeFactory &factory)
 writeTreeXSD generates an XSD for the nodes defined in the factory
 
std::string WriteTreeToXML (const Tree &tree, bool add_metadata, bool add_builtin_models)
 WriteTreeToXML create a string that contains the XML that corresponds to a given tree. When using this function with a logger, you should probably set both add_metadata and add_builtin_models to true.
 
+ + + +

+Variables

+constexpr const char * PLUGIN_SYMBOL = "BT_RegisterNodesFromPlugin"
 
+

Detailed Description

+

Template Action used in ex04_waypoints.cpp example.

+

Its purpose is to do make it easy to create while loops wich consume the elements of a queue.

+

Note that modifying the queue is not thread safe, therefore the action that creates the queue or push elements into it, must be Synchronous.

+

When ticked, we pop_front from the "queue" and insert that value in "popped_item". Return FAILURE if the queue is empty, SUCCESS otherwise.

+

Typedef Documentation

+ +

◆ AnyPtrLocked

+ +
+
+ + + + +
using BT::AnyPtrLocked = typedef LockedPtr<Any>
+
+

This type contains a pointer to Any, protected with a locked mutex as long as the object is in scope

+ +
+
+ +

◆ EnumsTable

+ +
+
+ + + + +
using BT::EnumsTable = typedef std::unordered_map<std::string, int>
+
+

Simple map (string->nt), used to convert enums in the scripting language

+ +
+
+ +

◆ Expected

+ +
+
+
+template<typename T >
+ + + + +
using BT::Expected = typedef nonstd::expected<T, std::string>
+
+

Usage: given a function/method like this:

+

Expected<double> getAnswer();

+

User code can check result and error message like this:

auto res = getAnswer();
+if( res )
+{
+    std::cout << "answer was: " << res.value() << std::endl;
+}
+else{
+    std::cerr << "failed to get the answer: " << res.error() << std::endl;
+}
+
+
+
+ +

◆ Result

+ +
+
+ + + + +
using BT::Result = typedef Expected<std::monostate>
+
+

Usage: given a function/method like:

+

Result DoSomething();

+

User code can check result and error message like this:

auto res = DoSomething();
+if( res )
+{
+    std::cout << "DoSomething() done " << std::endl;
+}
+else{
+    std::cerr << "DoSomething() failed with message: " << res.error() << std::endl;
+}
+
+
+
+

Enumeration Type Documentation

+ +

◆ NodeStatus

+ +
+
+ + + + + +
+ + + + +
enum class BT::NodeStatus
+
+strong
+
+

Enumerates the states every node can be in after execution during a particular time step. IMPORTANT: Your custom nodes should NEVER return IDLE.

+ +
+
+

Function Documentation

+ +

◆ BidirectionalPort() [1/2]

+ +
+
+
+template<typename T = AnyTypeAllowed, typename DefaultT = T>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::BidirectionalPort (StringView name,
const DefaultT & default_value,
StringView description 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...) It also sets the PortInfo::defaultValue()

+
Parameters
+ + + + +
namethe name of the port
default_valuedefault value of the port, either type T of BlackboardKey
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ BidirectionalPort() [2/2]

+ +
+
+
+template<typename T = AnyTypeAllowed>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::BidirectionalPort (StringView name,
StringView description = {} 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)

+
Parameters
+ + + +
namethe name of the port
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ BlackboardBackup()

+ +
+
+ + + + + + + + +
std::vector< Blackboard::Ptr > BT::BlackboardBackup (const BT::Treetree)
+
+ +

BlackboardBackup uses Blackboard::cloneInto to backup all the blackboards of the tree.

+
Parameters
+ + +
treesource
+
+
+
Returns
destination (the backup)
+ +
+
+ +

◆ BlackboardClone()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BlackboardClone (const Blackboardsrc,
Blackboarddst 
)
+
+ +

BlackboardClone make a copy of the content of the blackboard.

+
Parameters
+ + + +
srcsource
dstdestination
+
+
+ +
+
+ +

◆ BlackboardRestore()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BlackboardRestore (const std::vector< Blackboard::Ptr > & backup,
BT::Treetree 
)
+
+ +

BlackboardRestore uses Blackboard::cloneInto to restore all the blackboards of the tree.

+
Parameters
+ + + +
backupa vectror of blackboards
treethe destination
+
+
+ +
+
+ +

◆ buildSerializedStatusSnapshot()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::buildSerializedStatusSnapshot (const TreeNoderoot_node,
SerializedTreeStatus & serialized_buffer 
)
+
+ +

buildSerializedStatusSnapshot can be used to create a buffer that can be stored (or sent to a client application) to know the status of all the nodes of a tree. It is not "human readable".

+
Parameters
+ + + +
root_node
serialized_bufferis the output.
+
+
+ +
+
+ +

◆ convertFromJSON()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Any BT::convertFromJSON (StringView json_text,
std::type_index type 
)
+
+ +

convertFromJSON will parse a json string and use JsonExporter to convert its content to a given type. It will work only if the type was previously registered. May throw if it fails.

+
Parameters
+ + + +
json_texta valid JSON string
typeyou must specify the typeid()
+
+
+
Returns
the object, wrapped in Any.
+ +
+
+ +

◆ convertFromString()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
T BT::convertFromString (StringView str)
+
+inline
+
+

convertFromString is used to convert a string into a custom type.

+

This function is invoked under the hood by TreeNode::getInput(), but only when the input port contains a string.

+

If you have a custom type, you need to implement the corresponding template specialization.

+

If the string starts with the prefix "json:", it will fall back to convertFromJSON()

+ +
+
+ +

◆ getType()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
NodeType BT::getType ()
+
+inline
+
+

Simple way to extract the type of a TreeNode at COMPILE TIME. Useful to avoid the cost of dynamic_cast or the virtual method TreeNode::type().

+ +
+
+ +

◆ InputPort() [1/2]

+ +
+
+
+template<typename T = AnyTypeAllowed, typename DefaultT = T>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::InputPort (StringView name,
const DefaultT & default_value,
StringView description 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT,...) It also sets the PortInfo::defaultValue()

+
Parameters
+ + + + +
namethe name of the port
default_valuedefault value of the port, either type T of BlackboardKey
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ InputPort() [2/2]

+ +
+
+
+template<typename T = AnyTypeAllowed>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::InputPort (StringView name,
StringView description = {} 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT, ...)

+
Parameters
+ + + +
namethe name of the port
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ OutputPort() [1/2]

+ +
+
+
+template<typename T = AnyTypeAllowed>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::OutputPort (StringView name,
StringView default_value,
StringView description 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...) It also sets the PortInfo::defaultValue()

+
Parameters
+ + + + +
namethe name of the port
default_valuedefault blackboard entry where the output is written
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ OutputPort() [2/2]

+ +
+
+
+template<typename T = AnyTypeAllowed>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
std::pair< std::string, PortInfo > BT::OutputPort (StringView name,
StringView description = {} 
)
+
+inline
+
+

Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)

+
Parameters
+ + + +
namethe name of the port
descriptionoptional human-readable description
+
+
+ +
+
+ +

◆ printTreeRecursively()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::printTreeRecursively (const TreeNoderoot_node,
std::ostream & stream = std::cout 
)
+
+

Debug function to print the hierarchy of the tree. Prints to std::cout by default.

+ +
+
+ +

◆ SerializeTransition()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SerializedTransition BT::SerializeTransition (uint16_t UID,
Duration timestamp,
NodeStatus prev_status,
NodeStatus status 
)
+
+inline
+
+

Serialize manually the informations about state transition No flatbuffer serialization here

+ +
+
+ +

◆ toStr()

+ +
+
+
+template<typename T >
+ + + + + + + + +
std::string BT::toStr (const T & value)
+
+ +

toStr is the reverse operation of convertFromString.

+

If T is a custom type and there is no template specialization, it will try to fall back to toJsonString()

+ +
+
+ +

◆ writeTreeNodesModelXML()

+ +
+
+ + + + + + + + + + + + + + + + + + +
std::string BT::writeTreeNodesModelXML (const BehaviorTreeFactoryfactory,
bool include_builtin = false 
)
+
+ +

writeTreeNodesModelXML generates an XMl that contains the manifests in the <TreeNodesModel>

+
Parameters
+ + + +
factorythe factory with the registered types
include_builtinif true, include the builtin Nodes
+
+
+
Returns
string containing the XML.
+ +
+
+ +

◆ WriteTreeToXML()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::string BT::WriteTreeToXML (const Treetree,
bool add_metadata,
bool add_builtin_models 
)
+
+ +

WriteTreeToXML create a string that contains the XML that corresponds to a given tree. When using this function with a logger, you should probably set both add_metadata and add_builtin_models to true.

+
Parameters
+ + + + +
treethe input tree
add_metadataif true, the attributes "_uid" and "_fullPath" will be added to the nodes
add_builtin_modelsif true, include the builtin Nodes into the <TreeNodesModel>
+
+
+
Returns
string containing the XML.
+ +
+
+ +

◆ writeTreeXSD()

+ +
+
+ + + + + + + + +
std::string BT::writeTreeXSD (const BehaviorTreeFactoryfactory)
+
+ +

writeTreeXSD generates an XSD for the nodes defined in the factory

+
Parameters
+ + +
factorythe factory with the registered types
+
+
+
Returns
string containing the XML.
+ +
+
+
+
+ + + + diff --git a/d2/d8d/namespace_b_t.js b/d2/d8d/namespace_b_t.js new file mode 100644 index 000000000..dd04ad921 --- /dev/null +++ b/d2/d8d/namespace_b_t.js @@ -0,0 +1,136 @@ +var namespace_b_t = +[ + [ "details", "df/da8/namespace_b_t_1_1details.html", "df/da8/namespace_b_t_1_1details" ], + [ "ActionNodeBase", "d3/de2/class_b_t_1_1_action_node_base.html", null ], + [ "AlwaysFailureNode", "d0/d9c/class_b_t_1_1_always_failure_node.html", null ], + [ "AlwaysSuccessNode", "dd/dce/class_b_t_1_1_always_success_node.html", null ], + [ "Any", "d7/df4/class_b_t_1_1_any.html", null ], + [ "AnyTypeAllowed", "d4/df1/struct_b_t_1_1_any_type_allowed.html", null ], + [ "BehaviorTreeException", "df/d93/class_b_t_1_1_behavior_tree_exception.html", null ], + [ "BehaviorTreeFactory", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html", "d6/dcd/class_b_t_1_1_behavior_tree_factory" ], + [ "Blackboard", "d0/d51/class_b_t_1_1_blackboard.html", "d0/d51/class_b_t_1_1_blackboard" ], + [ "ConditionNode", "dc/dfc/class_b_t_1_1_condition_node.html", "dc/dfc/class_b_t_1_1_condition_node" ], + [ "ConsumeQueue", "df/dc2/class_b_t_1_1_consume_queue.html", "df/dc2/class_b_t_1_1_consume_queue" ], + [ "ControlNode", "d6/ddb/class_b_t_1_1_control_node.html", "d6/ddb/class_b_t_1_1_control_node" ], + [ "CoroActionNode", "d8/dd4/class_b_t_1_1_coro_action_node.html", "d8/dd4/class_b_t_1_1_coro_action_node" ], + [ "DecoratorNode", "d1/de7/class_b_t_1_1_decorator_node.html", "d1/de7/class_b_t_1_1_decorator_node" ], + [ "DelayNode", "d4/d56/class_b_t_1_1_delay_node.html", "d4/d56/class_b_t_1_1_delay_node" ], + [ "EntryUpdatedAction", "df/d9f/class_b_t_1_1_entry_updated_action.html", null ], + [ "EntryUpdatedDecorator", "d1/d7b/class_b_t_1_1_entry_updated_decorator.html", null ], + [ "FallbackNode", "dc/da6/class_b_t_1_1_fallback_node.html", "dc/da6/class_b_t_1_1_fallback_node" ], + [ "FileLogger2", "d2/d7b/class_b_t_1_1_file_logger2.html", "d2/d7b/class_b_t_1_1_file_logger2" ], + [ "ForceFailureNode", "d4/d8c/class_b_t_1_1_force_failure_node.html", null ], + [ "ForceSuccessNode", "d7/db8/class_b_t_1_1_force_success_node.html", null ], + [ "Groot2Publisher", "da/df5/class_b_t_1_1_groot2_publisher.html", "da/df5/class_b_t_1_1_groot2_publisher" ], + [ "has_static_method_metadata", "d1/da6/struct_b_t_1_1has__static__method__metadata.html", null ], + [ "has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >", "dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html", null ], + [ "has_static_method_providedPorts", "d0/d56/struct_b_t_1_1has__static__method__provided_ports.html", null ], + [ "has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >", "d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html", null ], + [ "IfThenElseNode", "d8/d08/class_b_t_1_1_if_then_else_node.html", "d8/d08/class_b_t_1_1_if_then_else_node" ], + [ "InverterNode", "d2/ded/class_b_t_1_1_inverter_node.html", null ], + [ "JsonExporter", "d0/d64/class_b_t_1_1_json_exporter.html", "d0/d64/class_b_t_1_1_json_exporter" ], + [ "KeepRunningUntilFailureNode", "de/d22/class_b_t_1_1_keep_running_until_failure_node.html", null ], + [ "LeafNode", "d1/de2/class_b_t_1_1_leaf_node.html", null ], + [ "LockedPtr", "d4/d98/class_b_t_1_1_locked_ptr.html", null ], + [ "LogicError", "df/d4f/class_b_t_1_1_logic_error.html", null ], + [ "LoopNode", "dd/d32/class_b_t_1_1_loop_node.html", "dd/d32/class_b_t_1_1_loop_node" ], + [ "ManualSelectorNode", "dc/d0b/class_b_t_1_1_manual_selector_node.html", "dc/d0b/class_b_t_1_1_manual_selector_node" ], + [ "MinitraceLogger", "de/d4f/class_b_t_1_1_minitrace_logger.html", null ], + [ "NodeConfig", "dc/d26/struct_b_t_1_1_node_config.html", null ], + [ "ParallelAllNode", "d3/d02/class_b_t_1_1_parallel_all_node.html", "d3/d02/class_b_t_1_1_parallel_all_node" ], + [ "ParallelNode", "d1/dee/class_b_t_1_1_parallel_node.html", "d1/dee/class_b_t_1_1_parallel_node" ], + [ "Parser", "de/da6/class_b_t_1_1_parser.html", null ], + [ "PopFromQueue", "d7/d3a/class_b_t_1_1_pop_from_queue.html", "d7/d3a/class_b_t_1_1_pop_from_queue" ], + [ "PortInfo", "d8/d5e/class_b_t_1_1_port_info.html", null ], + [ "PreconditionNode", "d7/dd5/class_b_t_1_1_precondition_node.html", null ], + [ "ProtectedQueue", "d6/dee/struct_b_t_1_1_protected_queue.html", null ], + [ "QueueSize", "d9/d8c/class_b_t_1_1_queue_size.html", "d9/d8c/class_b_t_1_1_queue_size" ], + [ "ReactiveFallback", "dc/d04/class_b_t_1_1_reactive_fallback.html", null ], + [ "ReactiveSequence", "de/d9f/class_b_t_1_1_reactive_sequence.html", null ], + [ "RepeatNode", "d6/d78/class_b_t_1_1_repeat_node.html", null ], + [ "RetryNode", "dd/de4/class_b_t_1_1_retry_node.html", "dd/de4/class_b_t_1_1_retry_node" ], + [ "RetryNodeTypo", "d1/def/class_b_t_1_1_retry_node_typo.html", null ], + [ "RunOnceNode", "dd/dbd/class_b_t_1_1_run_once_node.html", null ], + [ "RuntimeError", "da/d35/class_b_t_1_1_runtime_error.html", null ], + [ "scoped_demangled_name", "d3/d8c/class_b_t_1_1scoped__demangled__name.html", null ], + [ "ScriptCondition", "da/d26/class_b_t_1_1_script_condition.html", null ], + [ "ScriptNode", "db/d0f/class_b_t_1_1_script_node.html", null ], + [ "SequenceNode", "d9/ddd/class_b_t_1_1_sequence_node.html", "d9/ddd/class_b_t_1_1_sequence_node" ], + [ "SequenceWithMemory", "de/d69/class_b_t_1_1_sequence_with_memory.html", "de/d69/class_b_t_1_1_sequence_with_memory" ], + [ "SetBlackboardNode", "d7/d4f/class_b_t_1_1_set_blackboard_node.html", null ], + [ "SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html", "d2/ddd/class_b_t_1_1_shared_library" ], + [ "Signal", "d1/d73/class_b_t_1_1_signal.html", null ], + [ "SimpleActionNode", "d7/da7/class_b_t_1_1_simple_action_node.html", "d7/da7/class_b_t_1_1_simple_action_node" ], + [ "SimpleConditionNode", "dc/d49/class_b_t_1_1_simple_condition_node.html", "dc/d49/class_b_t_1_1_simple_condition_node" ], + [ "SimpleDecoratorNode", "d3/d37/class_b_t_1_1_simple_decorator_node.html", "d3/d37/class_b_t_1_1_simple_decorator_node" ], + [ "SleepNode", "d9/d33/class_b_t_1_1_sleep_node.html", "d9/d33/class_b_t_1_1_sleep_node" ], + [ "SqliteLogger", "df/ddb/class_b_t_1_1_sqlite_logger.html", "df/ddb/class_b_t_1_1_sqlite_logger" ], + [ "StampedValue", "d6/dfa/struct_b_t_1_1_stamped_value.html", null ], + [ "StatefulActionNode", "d0/d1f/class_b_t_1_1_stateful_action_node.html", "d0/d1f/class_b_t_1_1_stateful_action_node" ], + [ "StatusChangeLogger", "d9/dbb/class_b_t_1_1_status_change_logger.html", null ], + [ "StdCoutLogger", "d1/d52/class_b_t_1_1_std_cout_logger.html", null ], + [ "SubTreeNode", "df/d34/class_b_t_1_1_sub_tree_node.html", "df/d34/class_b_t_1_1_sub_tree_node" ], + [ "SwitchNode", "dc/dae/class_b_t_1_1_switch_node.html", "dc/dae/class_b_t_1_1_switch_node" ], + [ "SyncActionNode", "da/d73/class_b_t_1_1_sync_action_node.html", "da/d73/class_b_t_1_1_sync_action_node" ], + [ "TestNode", "d5/d7f/class_b_t_1_1_test_node.html", "d5/d7f/class_b_t_1_1_test_node" ], + [ "TestNodeConfig", "d6/d58/struct_b_t_1_1_test_node_config.html", "d6/d58/struct_b_t_1_1_test_node_config" ], + [ "ThreadedAction", "d2/d61/class_b_t_1_1_threaded_action.html", "d2/d61/class_b_t_1_1_threaded_action" ], + [ "TimeoutNode", "d4/d20/class_b_t_1_1_timeout_node.html", null ], + [ "TimerQueue", "df/d4c/class_b_t_1_1_timer_queue.html", "df/d4c/class_b_t_1_1_timer_queue" ], + [ "Timestamp", "d0/d59/struct_b_t_1_1_timestamp.html", null ], + [ "Tree", "d1/d79/class_b_t_1_1_tree.html", "d1/d79/class_b_t_1_1_tree" ], + [ "TreeNode", "da/d61/class_b_t_1_1_tree_node.html", "da/d61/class_b_t_1_1_tree_node" ], + [ "TreeNodeManifest", "dc/d6c/struct_b_t_1_1_tree_node_manifest.html", null ], + [ "TreeObserver", "d2/d2b/class_b_t_1_1_tree_observer.html", "d2/d2b/class_b_t_1_1_tree_observer" ], + [ "TypeInfo", "d0/d34/class_b_t_1_1_type_info.html", null ], + [ "UnsetBlackboardNode", "d1/d77/class_b_t_1_1_unset_blackboard_node.html", null ], + [ "WakeUpSignal", "da/d2f/class_b_t_1_1_wake_up_signal.html", "da/d2f/class_b_t_1_1_wake_up_signal" ], + [ "WhileDoElseNode", "d7/d54/class_b_t_1_1_while_do_else_node.html", "d7/d54/class_b_t_1_1_while_do_else_node" ], + [ "XMLParser", "d8/d05/class_b_t_1_1_x_m_l_parser.html", null ], + [ "AnyPtrLocked", "d2/d8d/namespace_b_t.html#ab3912e0e286d30ab35df23ed44632e4f", null ], + [ "EnumsTable", "d2/d8d/namespace_b_t.html#aae2df96e431683d5655acbfe26026f59", null ], + [ "Expected", "d2/d8d/namespace_b_t.html#a7ed468293f4e7dc7ebbaca1a475526f3", null ], + [ "NodeBuilder", "d2/d8d/namespace_b_t.html#a92afa24aac8b115778d5a99099b40d5b", null ], + [ "Result", "d2/d8d/namespace_b_t.html#ad8e3c5c30d6bff91c95a9184fec5a2d5", null ], + [ "NodeStatus", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4e", [ + [ "IDLE", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4eaa5daf7f2ebbba4975d61dab1c40188c7", null ], + [ "RUNNING", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4ea43491564ebcfd38568918efbd6e840fd", null ], + [ "SUCCESS", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4ead0749aaba8b833466dfcbb0428e4f89c", null ], + [ "FAILURE", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4ea36fc6065a3e970bc3e6b2e59da52bf2a", null ], + [ "SKIPPED", "d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4ea203ec08f57cb105eeb2b121ba6503b52", null ] + ] ], + [ "NodeType", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363e", [ + [ "UNDEFINED", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363ea0db45d2a4141101bdfe48e3314cfbca3", null ], + [ "ACTION", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363eae58a1b00942e66d8b4abc960da7877ab", null ], + [ "CONDITION", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363ea9f768c0bb1c3e84ca086a85211e978ac", null ], + [ "CONTROL", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363eac861cd34025f9002df5912d623326130", null ], + [ "DECORATOR", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363ea328f58520ec7de39622da273d415c408", null ], + [ "SUBTREE", "d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363eaaec2090d0bba165a11a2dfa6c2cc301c", null ] + ] ], + [ "BidirectionalPort", "d2/d8d/namespace_b_t.html#aa5246156c75012e4106eb05bc9c3cf47", null ], + [ "BidirectionalPort", "d2/d8d/namespace_b_t.html#a13321f9dceb6909198966973042a13a1", null ], + [ "BlackboardBackup", "d2/d8d/namespace_b_t.html#a39d3de37134ad6c26809809a99c85cd1", null ], + [ "BlackboardClone", "d2/d8d/namespace_b_t.html#ae1c2a1676d84ad1a9b3a809c7c8e8fdb", null ], + [ "BlackboardRestore", "d2/d8d/namespace_b_t.html#a9fd0bac756271d4c997ed0a3d67067c1", null ], + [ "buildSerializedStatusSnapshot", "d2/d8d/namespace_b_t.html#aa260ec6d0ad8a20a2beff083a470d6ce", null ], + [ "convertFromJSON", "d2/d8d/namespace_b_t.html#a183200576f5fa139ae3359abbe8ef1c4", null ], + [ "convertFromJSON", "d2/d8d/namespace_b_t.html#a6f1eef4943ac07de099ec403979c488f", null ], + [ "convertFromString", "d2/d8d/namespace_b_t.html#afaf200f50db2b15eea2e20e6a068a0d2", null ], + [ "ExportBlackboardToJSON", "d2/d8d/namespace_b_t.html#a9700fbeea6af84efe32e9f22bc45d8e2", null ], + [ "ExportTreeToJSON", "d2/d8d/namespace_b_t.html#a02848b586dc8265d5d51be939401626d", null ], + [ "getType", "d2/d8d/namespace_b_t.html#aa8bda3dd22bdb1c2aaa354a610e25ac9", null ], + [ "ImportBlackboardFromJSON", "d2/d8d/namespace_b_t.html#a93b8bbf4a1f09391295076701c1457e4", null ], + [ "ImportTreeFromJSON", "d2/d8d/namespace_b_t.html#a47af04695aeb786b3c2ec2267f5bf02b", null ], + [ "InputPort", "d2/d8d/namespace_b_t.html#a8794519d3bc2203f70a65b38f9e37a3c", null ], + [ "InputPort", "d2/d8d/namespace_b_t.html#a9d63b9f7eba8a9a98322107ef8e0ae3d", null ], + [ "OutputPort", "d2/d8d/namespace_b_t.html#a533a06e2f82bd5d915194dcb696f444c", null ], + [ "OutputPort", "d2/d8d/namespace_b_t.html#a8ac171179c71fc0def23cf28e36b8ee2", null ], + [ "printTreeRecursively", "d2/d8d/namespace_b_t.html#a81fc68e6864ea125011a4ab64e9d6dc3", null ], + [ "SerializeTransition", "d2/d8d/namespace_b_t.html#a1e5dd1ca538e17930637816c78ccba5a", null ], + [ "toStr", "d2/d8d/namespace_b_t.html#a59b08b9acce3233964741ac39102abda", null ], + [ "toStr", "d2/d8d/namespace_b_t.html#acdc7285d759ccee669271f9884941cf9", null ], + [ "ValidateScript", "d2/d8d/namespace_b_t.html#a28330518fc63ccc458b55303d05b18d1", null ], + [ "writeTreeNodesModelXML", "d2/d8d/namespace_b_t.html#a7f653b41d3df395036c6245ef3265424", null ], + [ "WriteTreeToXML", "d2/d8d/namespace_b_t.html#a4a84d486b78c9a316e997bd3cc799f75", null ], + [ "writeTreeXSD", "d2/d8d/namespace_b_t.html#a415454b3b6fe0ce36db71ef677c13a4e", null ] +]; \ No newline at end of file diff --git a/d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html b/d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html new file mode 100644 index 000000000..716bd4f34 --- /dev/null +++ b/d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::math_sum Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::math_sum Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::math_sum:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::math_sum:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = math_product
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::math_sum::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
+
auto plus = dsl::not_followed_by(LEXY_LIT("+"), dsl::lit_c<'='>);
+
auto minus = dsl::not_followed_by(LEXY_LIT("-"), dsl::lit_c<'='>);
+
return dsl::op<Ast::ExprBinaryArithmetic::plus>(plus) /
+
dsl::op<Ast::ExprBinaryArithmetic::minus>(minus);
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.map b/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.map new file mode 100644 index 000000000..16c913008 --- /dev/null +++ b/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.md5 b/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.md5 new file mode 100644 index 000000000..98d2874d6 --- /dev/null +++ b/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.md5 @@ -0,0 +1 @@ +e334e1cfc2ce2cea1d8580d5aec71a33 \ No newline at end of file diff --git a/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.png b/d2/d9c/struct_b_t_1_1_ast_1_1_environment__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7af72ce5756a2cb57d2063280f7352138df9a8 GIT binary patch literal 19092 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 literal 0 HcmV?d00001 diff --git a/d2/d9d/behavior__tree_8h_source.html b/d2/d9d/behavior__tree_8h_source.html new file mode 100644 index 000000000..c737095ac --- /dev/null +++ b/d2/d9d/behavior__tree_8h_source.html @@ -0,0 +1,221 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/behavior_tree.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
behavior_tree.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2023 Davide Faconti - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/controls/parallel_node.h"
+
17#include "behaviortree_cpp/controls/parallel_all_node.h"
+
18#include "behaviortree_cpp/controls/reactive_sequence.h"
+
19#include "behaviortree_cpp/controls/reactive_fallback.h"
+
20#include "behaviortree_cpp/controls/fallback_node.h"
+
21#include "behaviortree_cpp/controls/sequence_node.h"
+
22#include "behaviortree_cpp/controls/sequence_with_memory_node.h"
+
23#include "behaviortree_cpp/controls/switch_node.h"
+
24#include "behaviortree_cpp/controls/if_then_else_node.h"
+
25#include "behaviortree_cpp/controls/while_do_else_node.h"
+
26
+
27#include "behaviortree_cpp/action_node.h"
+
28#include "behaviortree_cpp/condition_node.h"
+
29
+
30#include "behaviortree_cpp/decorators/inverter_node.h"
+
31#include "behaviortree_cpp/decorators/retry_node.h"
+
32#include "behaviortree_cpp/decorators/repeat_node.h"
+
33#include "behaviortree_cpp/decorators/run_once_node.h"
+
34#include "behaviortree_cpp/decorators/subtree_node.h"
+
35#include "behaviortree_cpp/decorators/loop_node.h"
+
36#include "behaviortree_cpp/decorators/updated_decorator.h"
+
37
+
38#include "behaviortree_cpp/actions/always_success_node.h"
+
39#include "behaviortree_cpp/actions/always_failure_node.h"
+
40#include "behaviortree_cpp/actions/script_condition.h"
+
41#include "behaviortree_cpp/actions/script_node.h"
+
42#include "behaviortree_cpp/actions/set_blackboard_node.h"
+
43#include "behaviortree_cpp/actions/test_node.h"
+
44#include "behaviortree_cpp/actions/sleep_node.h"
+
45#include "behaviortree_cpp/actions/unset_blackboard_node.h"
+
46#include "behaviortree_cpp/actions/updated_action.h"
+
47
+
48#include "behaviortree_cpp/decorators/force_success_node.h"
+
49#include "behaviortree_cpp/decorators/force_failure_node.h"
+
50#include "behaviortree_cpp/decorators/keep_running_until_failure_node.h"
+
51#include "behaviortree_cpp/decorators/script_precondition.h"
+
52#include "behaviortree_cpp/decorators/timeout_node.h"
+
53#include "behaviortree_cpp/decorators/delay_node.h"
+
54
+
55#include <iostream>
+
56
+
57namespace BT
+
58{
+
59//Call the visitor for each node of the tree, given a root.
+
60void applyRecursiveVisitor(const TreeNode* root_node,
+
61 const std::function<void(const TreeNode*)>& visitor);
+
62
+
63//Call the visitor for each node of the tree, given a root.
+
64void applyRecursiveVisitor(TreeNode* root_node,
+
65 const std::function<void(TreeNode*)>& visitor);
+
66
+
67/**
+
68 * Debug function to print the hierarchy of the tree. Prints to std::cout by default.
+
69 */
+
70void printTreeRecursively(const TreeNode* root_node, std::ostream& stream = std::cout);
+
71
+ +
73
+
74/**
+
75 * @brief buildSerializedStatusSnapshot can be used to create a buffer that can be stored
+
76 * (or sent to a client application) to know the status of all the nodes of a tree.
+
77 * It is not "human readable".
+
78 *
+
79 * @param root_node
+
80 * @param serialized_buffer is the output.
+
81 */
+
82void buildSerializedStatusSnapshot(const TreeNode* root_node,
+
83 SerializedTreeStatus& serialized_buffer);
+
84
+
85/// Simple way to extract the type of a TreeNode at COMPILE TIME.
+
86/// Useful to avoid the cost of dynamic_cast or the virtual method TreeNode::type().
+
87template <typename T>
+
88inline NodeType getType()
+
89{
+
90 // clang-format off
+
91 if( std::is_base_of<ActionNodeBase, T>::value ) return NodeType::ACTION;
+
92 if( std::is_base_of<ConditionNode, T>::value ) return NodeType::CONDITION;
+
93 if( std::is_base_of<SubTreeNode, T>::value ) return NodeType::SUBTREE;
+
94 if( std::is_base_of<DecoratorNode, T>::value ) return NodeType::DECORATOR;
+
95 if( std::is_base_of<ControlNode, T>::value ) return NodeType::CONTROL;
+
96 return NodeType::UNDEFINED;
+
97 // clang-format on
+
98}
+
99
+
100const char* LibraryVersionString();
+
101
+
102int LibraryVersionNumber();
+
103
+
104} // namespace BT
+
The ActionNodeBase is the base class to use to create any kind of action. A particular derived class ...
Definition: action_node.h:36
+
Definition: condition_node.h:22
+
Definition: control_node.h:22
+
Definition: decorator_node.h:9
+
The SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard....
Definition: subtree_node.h:53
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
void printTreeRecursively(const TreeNode *root_node, std::ostream &stream=std::cout)
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
void buildSerializedStatusSnapshot(const TreeNode *root_node, SerializedTreeStatus &serialized_buffer)
buildSerializedStatusSnapshot can be used to create a buffer that can be stored (or sent to a client ...
+
NodeType getType()
Definition: behavior_tree.h:88
+
+
+ + + + diff --git a/d2/da9/reactive__fallback_8h_source.html b/d2/da9/reactive__fallback_8h_source.html new file mode 100644 index 000000000..421982031 --- /dev/null +++ b/d2/da9/reactive__fallback_8h_source.html @@ -0,0 +1,165 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/reactive_fallback.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
reactive_fallback.h
+
+
+
1/* Copyright (C) 2020-2022 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The ReactiveFallback is similar to a ParallelNode.
+
21 * All the children are ticked from first to last:
+
22 *
+
23 * - If a child returns RUNNING, continue to the next sibling.
+
24 * - If a child returns FAILURE, continue to the next sibling.
+
25 * - If a child returns SUCCESS, stop and return SUCCESS.
+
26 *
+
27 * If all the children fail, than this node returns FAILURE.
+
28 *
+
29 * IMPORTANT: to work properly, this node should not have more than
+
30 * a single asynchronous child.
+
31 *
+
32 */
+
33class ReactiveFallback : public ControlNode
+
34{
+
35public:
+
36 ReactiveFallback(const std::string& name) : ControlNode(name, {})
+
37 {}
+
38
+
39 /** A ReactiveFallback is not supposed to have more than a single
+
40 * anychronous node; if it does an exception is thrown.
+
41 * You can disabled that check, if you know what you are doing.
+
42 */
+
43 static void EnableException(bool enable);
+
44
+
45private:
+
46 BT::NodeStatus tick() override;
+
47
+
48 void halt() override;
+
49
+
50 int running_child_ = -1;
+
51 static bool throw_if_multiple_running;
+
52};
+
53
+
54} // namespace BT
+
Definition: control_node.h:22
+
The ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last:
Definition: reactive_fallback.h:34
+
static void EnableException(bool enable)
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d2/dae/timeout__node_8h_source.html b/d2/dae/timeout__node_8h_source.html new file mode 100644 index 000000000..e229ee9be --- /dev/null +++ b/d2/dae/timeout__node_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/timeout_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
timeout_node.h
+
+
+
1/* Copyright (C) 2018-2023 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16#include "behaviortree_cpp/utils/timer_queue.h"
+
17#include <atomic>
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * @brief The TimeoutNode will halt() a running child if
+
23 * the latter has been RUNNING longer than a given time.
+
24 * The timeout is in milliseconds and it is passed using the port "msec".
+
25 *
+
26 * If timeout is reached, the node returns FAILURE.
+
27 *
+
28 * Example:
+
29 *
+
30 * <Timeout msec="5000">
+
31 * <KeepYourBreath/>
+
32 * </Timeout>
+
33 */
+
34
+
35class TimeoutNode : public DecoratorNode
+
36{
+
37public:
+
38 TimeoutNode(const std::string& name, unsigned milliseconds)
+
39 : DecoratorNode(name, {})
+
40 , child_halted_(false)
+
41 , timer_id_(0)
+
42 , msec_(milliseconds)
+
43 , read_parameter_from_ports_(false)
+
44 , timeout_started_(false)
+
45 {
+
46 setRegistrationID("Timeout");
+
47 }
+
48
+
49 TimeoutNode(const std::string& name, const NodeConfig& config)
+
50 : DecoratorNode(name, config)
+
51 , child_halted_(false)
+
52 , timer_id_(0)
+
53 , msec_(0)
+
54 , read_parameter_from_ports_(true)
+
55 , timeout_started_(false)
+
56 {}
+
57
+
58 ~TimeoutNode() override
+
59 {
+
60 timer_.cancelAll();
+
61 }
+
62
+
63 static PortsList providedPorts()
+
64 {
+
65 return { InputPort<unsigned>("msec", "After a certain amount of time, "
+
66 "halt() the child if it is still running.") };
+
67 }
+
68
+
69private:
+
70 virtual BT::NodeStatus tick() override;
+
71
+
72 void halt() override;
+
73
+
74 TimerQueue<> timer_;
+
75 std::atomic_bool child_halted_ = false;
+
76 uint64_t timer_id_;
+
77
+
78 unsigned msec_;
+
79 bool read_parameter_from_ports_;
+
80 std::atomic_bool timeout_started_ = false;
+
81 std::mutex timeout_mutex_;
+
82};
+
83
+
84} // namespace BT
+
Definition: decorator_node.h:9
+
The TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time....
Definition: timeout_node.h:36
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d2/db6/sleep__node_8h_source.html b/d2/db6/sleep__node_8h_source.html new file mode 100644 index 000000000..769cefefe --- /dev/null +++ b/d2/db6/sleep__node_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/sleep_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sleep_node.h
+
+
+
1#pragma once
+
2
+
3#include "behaviortree_cpp/action_node.h"
+
4#include "behaviortree_cpp/utils/timer_queue.h"
+
5#include <atomic>
+
6
+
7namespace BT
+
8{
+
9/**
+
10 * @brief Sleep for a certain amount of time.
+
11 * Consider also using the decorator <Delay/>
+
12 *
+
13 * <Sleep msec="5000"/>
+
14 */
+
15class SleepNode : public StatefulActionNode
+
16{
+
17public:
+
18 SleepNode(const std::string& name, const NodeConfig& config);
+
19
+
20 ~SleepNode() override
+
21 {
+
22 halt();
+
23 }
+
24
+
25 NodeStatus onStart() override;
+
26
+
27 NodeStatus onRunning() override;
+
28
+
29 void onHalted() override;
+
30
+
31 static PortsList providedPorts()
+
32 {
+
33 return { InputPort<unsigned>("msec") };
+
34 }
+
35
+
36private:
+
37 TimerQueue<> timer_;
+
38 uint64_t timer_id_;
+
39
+
40 std::atomic_bool timer_waiting_ = false;
+
41 std::mutex delay_mutex_;
+
42};
+
43
+
44} // namespace BT
+
Sleep for a certain amount of time. Consider also using the decorator <Delay>
Definition: sleep_node.h:16
+
NodeStatus onStart() override
+
void onHalted() override
+
NodeStatus onRunning() override
method invoked when the action is already in the RUNNING state.
+
The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier ...
Definition: action_node.h:160
+
void halt() override final
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.map b/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.map new file mode 100644 index 000000000..acb347a89 --- /dev/null +++ b/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.md5 b/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.md5 new file mode 100644 index 000000000..b93eed766 --- /dev/null +++ b/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.md5 @@ -0,0 +1 @@ +4d63764b7c26ed40eb2af2e626275b5c \ No newline at end of file diff --git a/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.png b/d2/db6/struct_b_t_1_1has__static__method__metadata__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..36cd58f0b98aa51d9788003c6acd1275fde7b7f3 GIT binary patch literal 6722 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 T8Uy%H2uoH{QKC@X@ZEm^((0J{ literal 0 HcmV?d00001 diff --git a/d2/dbf/timer__queue_8h_source.html b/d2/dbf/timer__queue_8h_source.html new file mode 100644 index 000000000..406e43dbd --- /dev/null +++ b/d2/dbf/timer__queue_8h_source.html @@ -0,0 +1,382 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/timer_queue.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
timer_queue.h
+
+
+
1#pragma once
+
2
+
3#include <atomic>
+
4#include <mutex>
+
5#include <condition_variable>
+
6#include <thread>
+
7#include <queue>
+
8#include <chrono>
+
9#include <functional>
+
10#include <assert.h>
+
11
+
12namespace BT
+
13{
+
14// http://www.crazygaze.com/blog/2016/03/24/portable-c-timer-queue/
+
15
+
16namespace details
+
17{
+
18class Semaphore
+
19{
+
20public:
+
21 Semaphore(unsigned int count = 0) : m_count(count)
+
22 {}
+
23
+
24 void notify()
+
25 {
+
26 {
+
27 std::lock_guard<std::mutex> lock(m_mtx);
+
28 m_count++;
+
29 }
+
30 m_cv.notify_one();
+
31 }
+
32
+
33 template <class Clock, class Duration>
+
34 bool waitUntil(const std::chrono::time_point<Clock, Duration>& point)
+
35 {
+
36 std::unique_lock<std::mutex> lock(m_mtx);
+
37 if(!m_cv.wait_until(lock, point, [this]() { return m_count > 0 || m_unlock; }))
+
38 {
+
39 return false;
+
40 }
+
41 m_count--;
+
42 m_unlock = false;
+
43 return true;
+
44 }
+
45
+
46 void manualUnlock()
+
47 {
+
48 m_unlock = true;
+
49 m_cv.notify_one();
+
50 }
+
51
+
52private:
+
53 std::mutex m_mtx;
+
54 std::condition_variable m_cv;
+
55 unsigned m_count = 0;
+
56 std::atomic_bool m_unlock = false;
+
57};
+
58} // namespace details
+
59
+
60// Timer Queue
+
61//
+
62// Allows execution of handlers at a specified time in the future
+
63// Guarantees:
+
64// - All handlers are executed ONCE, even if canceled (aborted parameter will
+
65//be set to true)
+
66// - If TimerQueue is destroyed, it will cancel all handlers.
+
67// - Handlers are ALWAYS executed in the Timer Queue worker thread.
+
68// - Handlers execution order is NOT guaranteed
+
69//
+
70template <typename _Clock = std::chrono::steady_clock,
+
71 typename _Duration = std::chrono::steady_clock::duration>
+
72class TimerQueue
+
73{
+
74public:
+
75 TimerQueue()
+
76 {
+
77 m_th = std::thread([this] { run(); });
+
78 }
+
79
+
80 ~TimerQueue()
+
81 {
+
82 m_finish = true;
+
83 cancelAll();
+
84 m_checkWork.manualUnlock();
+
85 m_th.join();
+
86 }
+
87
+
88 //! Adds a new timer
+
89 // \return
+
90 // Returns the ID of the new timer. You can use this ID to cancel the
+
91 // timer
+
92 uint64_t add(std::chrono::milliseconds milliseconds, std::function<void(bool)> handler)
+
93 {
+
94 WorkItem item;
+
95 item.end = _Clock::now() + milliseconds;
+
96 item.handler = std::move(handler);
+
97
+
98 std::unique_lock<std::mutex> lk(m_mtx);
+
99 uint64_t id = ++m_idcounter;
+
100 item.id = id;
+
101 m_items.push(std::move(item));
+
102 lk.unlock();
+
103
+
104 // Something changed, so wake up timer thread
+
105 m_checkWork.notify();
+
106 return id;
+
107 }
+
108
+
109 //! Cancels the specified timer
+
110 // \return
+
111 // 1 if the timer was cancelled.
+
112 // 0 if you were too late to cancel (or the timer ID was never valid to
+
113 // start with)
+ +
115 {
+
116 // Instead of removing the item from the container (thus breaking the
+
117 // heap integrity), we set the item as having no handler, and put
+
118 // that handler on a new item at the top for immediate execution
+
119 // The timer thread will then ignore the original item, since it has no
+
120 // handler.
+
121 std::unique_lock<std::mutex> lk(m_mtx);
+
122 for(auto&& item : m_items.getContainer())
+
123 {
+
124 if(item.id == id && item.handler)
+
125 {
+
126 WorkItem newItem;
+
127 // Zero time, so it stays at the top for immediate execution
+
128 newItem.end = std::chrono::time_point<_Clock, _Duration>();
+
129 newItem.id = 0; // Means it is a canceled item
+
130 // Move the handler from item to newItem.
+
131 // Also, we need to manually set the handler to nullptr, since
+
132 // the standard does not guarantee moving an std::function will
+
133 // empty it. Some STL implementation will empty it, others will
+
134 // not.
+
135 newItem.handler = std::move(item.handler);
+
136 item.handler = nullptr;
+
137 m_items.push(std::move(newItem));
+
138
+
139 lk.unlock();
+
140 // Something changed, so wake up timer thread
+
141 m_checkWork.notify();
+
142 return 1;
+
143 }
+
144 }
+
145 return 0;
+
146 }
+
147
+
148 //! Cancels all timers
+
149 // \return
+
150 // The number of timers cancelled
+ +
152 {
+
153 // Setting all "end" to 0 (for immediate execution) is ok,
+
154 // since it maintains the heap integrity
+
155 std::unique_lock<std::mutex> lk(m_mtx);
+
156 for(auto&& item : m_items.getContainer())
+
157 {
+
158 if(item.id)
+
159 {
+
160 item.end = std::chrono::time_point<_Clock, _Duration>();
+
161 item.id = 0;
+
162 }
+
163 }
+
164 auto ret = m_items.size();
+
165
+
166 lk.unlock();
+
167 m_checkWork.notify();
+
168 return ret;
+
169 }
+
170
+
171private:
+
172 TimerQueue(const TimerQueue&) = delete;
+
173 TimerQueue& operator=(const TimerQueue&) = delete;
+
174
+
175 void run()
+
176 {
+
177 while(!m_finish)
+
178 {
+
179 auto end = calcWaitTime();
+
180 if(end.first)
+
181 {
+
182 // Timers found, so wait until it expires (or something else
+
183 // changes)
+
184 m_checkWork.waitUntil(end.second);
+
185 }
+
186 else
+
187 {
+
188 // No timers exist, so wait an arbitrary amount of time
+
189 m_checkWork.waitUntil(_Clock::now() + std::chrono::milliseconds(10));
+
190 }
+
191
+
192 // Check and execute as much work as possible, such as, all expired
+
193 // timers
+
194 checkWork();
+
195 }
+
196
+
197 // If we are shutting down, we should not have any items left,
+
198 // since the shutdown cancels all items
+
199 assert(m_items.size() == 0);
+
200 }
+
201
+
202 std::pair<bool, std::chrono::time_point<_Clock, _Duration>> calcWaitTime()
+
203 {
+
204 std::lock_guard<std::mutex> lk(m_mtx);
+
205 while(m_items.size())
+
206 {
+
207 if(m_items.top().handler)
+
208 {
+
209 // Item present, so return the new wait time
+
210 return std::make_pair(true, m_items.top().end);
+
211 }
+
212 else
+
213 {
+
214 // Discard empty handlers (they were cancelled)
+
215 m_items.pop();
+
216 }
+
217 }
+
218
+
219 // No items found, so return no wait time (causes the thread to wait
+
220 // indefinitely)
+
221 return std::make_pair(false, std::chrono::time_point<_Clock, _Duration>());
+
222 }
+
223
+
224 void checkWork()
+
225 {
+
226 std::unique_lock<std::mutex> lk(m_mtx);
+
227 while(m_items.size() && m_items.top().end <= _Clock::now())
+
228 {
+
229 WorkItem item(std::move(m_items.top()));
+
230 m_items.pop();
+
231
+
232 lk.unlock();
+
233 if(item.handler)
+
234 {
+
235 item.handler(item.id == 0);
+
236 }
+
237 lk.lock();
+
238 }
+
239 }
+
240
+
241 details::Semaphore m_checkWork;
+
242 std::thread m_th;
+
243 bool m_finish = false;
+
244 uint64_t m_idcounter = 0;
+
245
+
246 struct WorkItem
+
247 {
+
248 std::chrono::time_point<_Clock, _Duration> end;
+
249 uint64_t id; // id==0 means it was cancelled
+
250 std::function<void(bool)> handler;
+
251 bool operator>(const WorkItem& other) const
+
252 {
+
253 return end > other.end;
+
254 }
+
255 };
+
256
+
257 std::mutex m_mtx;
+
258 // Inheriting from priority_queue, so we can access the internal container
+
259 class Queue
+
260 : public std::priority_queue<WorkItem, std::vector<WorkItem>, std::greater<WorkItem>>
+
261 {
+
262 public:
+
263 std::vector<WorkItem>& getContainer()
+
264 {
+
265 return this->c;
+
266 }
+
267 } m_items;
+
268};
+
269} // namespace BT
+
Definition: timer_queue.h:73
+
uint64_t add(std::chrono::milliseconds milliseconds, std::function< void(bool)> handler)
Adds a new timer.
Definition: timer_queue.h:92
+
size_t cancel(uint64_t id)
Cancels the specified timer.
Definition: timer_queue.h:114
+
size_t cancelAll()
Cancels all timers.
Definition: timer_queue.h:151
+
Definition: timer_queue.h:19
+
The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
Definition: basic_types.h:503
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d2/dc1/force__success__node_8h_source.html b/d2/dc1/force__success__node_8h_source.html new file mode 100644 index 000000000..5c8df919d --- /dev/null +++ b/d2/dc1/force__success__node_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/force_success_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
force_success_node.h
+
+
+
1/* Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The ForceSuccessNode returns always SUCCESS or RUNNING.
+
21 */
+ +
23{
+
24public:
+
25 ForceSuccessNode(const std::string& name) : DecoratorNode(name, {})
+
26 {
+
27 setRegistrationID("ForceSuccess");
+
28 }
+
29
+
30private:
+
31 virtual BT::NodeStatus tick() override;
+
32};
+
33
+
34//------------ implementation ----------------------------
+
35
+
36inline NodeStatus ForceSuccessNode::tick()
+
37{
+
38 setStatus(NodeStatus::RUNNING);
+
39
+
40 const NodeStatus child_status = child_node_->executeTick();
+
41
+
42 if(isStatusCompleted(child_status))
+
43 {
+
44 resetChild();
+
45 return NodeStatus::SUCCESS;
+
46 }
+
47
+
48 // RUNNING or skipping
+
49 return child_status;
+
50}
+
51} // namespace BT
+
Definition: decorator_node.h:9
+ +
The ForceSuccessNode returns always SUCCESS or RUNNING.
Definition: force_success_node.h:23
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.map b/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.map new file mode 100644 index 000000000..b979fe22a --- /dev/null +++ b/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.md5 b/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.md5 new file mode 100644 index 000000000..25e4a2a5d --- /dev/null +++ b/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.md5 @@ -0,0 +1 @@ +5c8a846e2db90de01dfb7a3a8e2e952d \ No newline at end of file diff --git a/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.png b/d2/dc5/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d3efebfb865e399f90c5b8d47bfce75ed3022a GIT binary patch literal 6399 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 literal 0 HcmV?d00001 diff --git a/d2/dc8/reactive__sequence_8h_source.html b/d2/dc8/reactive__sequence_8h_source.html new file mode 100644 index 000000000..6c78a9704 --- /dev/null +++ b/d2/dc8/reactive__sequence_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/reactive_sequence.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
reactive_sequence.h
+
+
+
1/* Copyright (C) 2020-2022 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The ReactiveSequence is similar to a ParallelNode.
+
21 * All the children are ticked from first to last:
+
22 *
+
23 * - If a child returns RUNNING, halt the remaining siblings in the sequence and return RUNNING.
+
24 * - If a child returns SUCCESS, tick the next sibling.
+
25 * - If a child returns FAILURE, stop and return FAILURE.
+
26 *
+
27 * If all the children return SUCCESS, this node returns SUCCESS.
+
28 *
+
29 * IMPORTANT: to work properly, this node should not have more than a single
+
30 * asynchronous child.
+
31 *
+
32 */
+
33class ReactiveSequence : public ControlNode
+
34{
+
35public:
+
36 ReactiveSequence(const std::string& name) : ControlNode(name, {})
+
37 {}
+
38
+
39 /** A ReactiveSequence is not supposed to have more than a single
+
40 * anychronous node; if it does an exception is thrown.
+
41 * You can disabled that check, if you know what you are doing.
+
42 */
+
43 static void EnableException(bool enable);
+
44
+
45private:
+
46 BT::NodeStatus tick() override;
+
47
+
48 void halt() override;
+
49
+
50 int running_child_ = -1;
+
51
+
52 static bool throw_if_multiple_running;
+
53};
+
54
+
55} // namespace BT
+
Definition: control_node.h:22
+
The ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last:
Definition: reactive_sequence.h:34
+
static void EnableException(bool enable)
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d2/dd4/wakeup__signal_8hpp_source.html b/d2/dd4/wakeup__signal_8hpp_source.html new file mode 100644 index 000000000..a56dd9aea --- /dev/null +++ b/d2/dd4/wakeup__signal_8hpp_source.html @@ -0,0 +1,148 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/wakeup_signal.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
wakeup_signal.hpp
+
+
+
1#ifndef BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
+
2#define BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
+
3
+
4#include <chrono>
+
5#include <mutex>
+
6#include <atomic>
+
7#include <condition_variable>
+
8
+
9namespace BT
+
10{
+
11
+
12class WakeUpSignal
+
13{
+
14public:
+
15 /// Return true if the timeout was NOT reached and the
+
16 /// signal was received.
+
17 bool waitFor(std::chrono::microseconds usec)
+
18 {
+
19 std::unique_lock<std::mutex> lk(mutex_);
+
20 auto res = cv_.wait_for(lk, usec, [this] { return ready_.load(); });
+
21 ready_ = false;
+
22 return res;
+
23 }
+
24
+
25 void emitSignal()
+
26 {
+
27 ready_ = true;
+
28 cv_.notify_all();
+
29 }
+
30
+
31private:
+
32 std::mutex mutex_;
+
33 std::condition_variable cv_;
+
34 std::atomic_bool ready_ = false;
+
35};
+
36
+
37} // namespace BT
+
38
+
39#endif // BEHAVIORTREECORE_WAKEUP_SIGNAL_HPP
+
Definition: wakeup_signal.hpp:13
+
bool waitFor(std::chrono::microseconds usec)
Definition: wakeup_signal.hpp:17
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.map b/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.map new file mode 100644 index 000000000..e87888705 --- /dev/null +++ b/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.md5 b/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.md5 new file mode 100644 index 000000000..5fb412e42 --- /dev/null +++ b/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.md5 @@ -0,0 +1 @@ +f3a5beeb069ecc79dc3a8eab4e33d8fb \ No newline at end of file diff --git a/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.png b/d2/dda/class_b_t_1_1_entry_updated_action__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..11efb2ea8b2fa697675a839399e196b6a5e2fe6c GIT binary patch literal 11996 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 Z5KSgOS=~M{fpK+&jHJSoVsTxc{{`&MDO3Oe literal 0 HcmV?d00001 diff --git a/d2/ddd/class_b_t_1_1_shared_library.html b/d2/ddd/class_b_t_1_1_shared_library.html new file mode 100644 index 000000000..2c1a2efe0 --- /dev/null +++ b/d2/ddd/class_b_t_1_1_shared_library.html @@ -0,0 +1,409 @@ + + + + + + + +BehaviorTree: BT::SharedLibrary Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

#include <shared_library.h>

+ + + + +

+Public Types

enum  Flags { SHLIB_GLOBAL = 1 +, SHLIB_LOCAL = 2 + }
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SharedLibrary ()
 Creates a SharedLibrary object.
 
 SharedLibrary (const std::string &path, int flags=0)
 
virtual ~SharedLibrary ()=default
 
void load (const std::string &path, int flags=0)
 
+void unload ()
 Unloads a shared library.
 
+bool isLoaded () const
 Returns true iff a library has been loaded.
 
bool hasSymbol (const std::string &name)
 
void * getSymbol (const std::string &name)
 
const std::string & getPath () const
 
+ + + + + + + +

+Static Public Member Functions

static std::string prefix ()
 
static std::string suffix ()
 
static std::string getOSName (const std::string &name)
 
+

Detailed Description

+

The SharedLibrary class dynamically loads shared libraries at run-time.

+

Member Enumeration Documentation

+ +

◆ Flags

+ +
+
+ + + + +
enum BT::SharedLibrary::Flags
+
+ + + +
Enumerator
SHLIB_GLOBAL 

On platforms that use dlopen(), use RTLD_GLOBAL. This is the default if no flags are given.

+

This flag is ignored on platforms that do not use dlopen().

+
SHLIB_LOCAL 

On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL.

Note that if this flag is specified, RTTI (including dynamic_cast and throw) will
+not work for types defined in the shared library with GCC and possibly other
+compilers as well. See http://gcc.gnu.org/faq.html#dso for more information.
+
+This flag is ignored on platforms that do not use dlopen(). 
+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ SharedLibrary()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BT::SharedLibrary::SharedLibrary (const std::string & path,
int flags = 0 
)
+
+

Creates a SharedLibrary object and loads a library from the given path, using the given flags. See the Flags enumeration for valid values.

+ +
+
+ +

◆ ~SharedLibrary()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BT::SharedLibrary::~SharedLibrary ()
+
+virtualdefault
+
+

Destroys the SharedLibrary. The actual library remains loaded.

+ +
+
+

Member Function Documentation

+ +

◆ getOSName()

+ +
+
+ + + + + +
+ + + + + + + + +
static std::string BT::SharedLibrary::getOSName (const std::string & name)
+
+static
+
+

Returns the platform-specific filename for shared libraries by prefixing and suffixing name with prefix() and suffix()

+ +
+
+ +

◆ getPath()

+ +
+
+ + + + + + + +
const std::string & BT::SharedLibrary::getPath () const
+
+

Returns the path of the library, as specified in a call to load() or the constructor.

+ +
+
+ +

◆ getSymbol()

+ +
+
+ + + + + + + + +
void * BT::SharedLibrary::getSymbol (const std::string & name)
+
+

Returns the address of the symbol with the given name. For functions, this is the entry point of the function. Throws a NotFoundException if the symbol does not exist.

+ +
+
+ +

◆ hasSymbol()

+ +
+
+ + + + + + + + +
bool BT::SharedLibrary::hasSymbol (const std::string & name)
+
+

Returns true iff the loaded library contains a symbol with the given name.

+ +
+
+ +

◆ load()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::SharedLibrary::load (const std::string & path,
int flags = 0 
)
+
+

Loads a shared library from the given path, using the given flags. See the Flags enumeration for valid values. Throws a LibraryAlreadyLoadedException if a library has already been loaded. Throws a LibraryLoadException if the library cannot be loaded.

+ +
+
+ +

◆ prefix()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string BT::SharedLibrary::prefix ()
+
+static
+
+

Returns the platform-specific filename prefix for shared libraries. Most platforms would return "lib" as prefix, while on Cygwin, the "cyg" prefix will be returned.

+ +
+
+ +

◆ suffix()

+ +
+
+ + + + + +
+ + + + + + + +
static std::string BT::SharedLibrary::suffix ()
+
+static
+
+

Returns the platform-specific filename suffix for shared libraries (including the period). In debug mode, the suffix also includes a "d" to specify the debug version of a library.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d2/ddd/class_b_t_1_1_shared_library.js b/d2/ddd/class_b_t_1_1_shared_library.js new file mode 100644 index 000000000..a7b70ac77 --- /dev/null +++ b/d2/ddd/class_b_t_1_1_shared_library.js @@ -0,0 +1,16 @@ +var class_b_t_1_1_shared_library = +[ + [ "Flags", "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cf", [ + [ "SHLIB_GLOBAL", "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5130e85a4b3e349814a493d8947a5c91", null ], + [ "SHLIB_LOCAL", "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5cc31a63af764ead3372762681b625f8", null ] + ] ], + [ "SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac", null ], + [ "SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e", null ], + [ "~SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html#aab93b1e125fbc01b896b4cf6ef019fcf", null ], + [ "getPath", "d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3", null ], + [ "getSymbol", "d2/ddd/class_b_t_1_1_shared_library.html#a5ab4789785c0f37caaf1955bab03b034", null ], + [ "hasSymbol", "d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a", null ], + [ "isLoaded", "d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763", null ], + [ "load", "d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f", null ], + [ "unload", "d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011", null ] +]; \ No newline at end of file diff --git a/d2/ded/class_b_t_1_1_inverter_node.html b/d2/ded/class_b_t_1_1_inverter_node.html new file mode 100644 index 000000000..c03d8f70a --- /dev/null +++ b/d2/ded/class_b_t_1_1_inverter_node.html @@ -0,0 +1,343 @@ + + + + + + + +BehaviorTree: BT::InverterNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::InverterNode Class Reference
+
+
+ +

The InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propagated. + More...

+ +

#include <inverter_node.h>

+
+Inheritance diagram for BT::InverterNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::InverterNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

InverterNode (const std::string &name)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propagated.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d2/df8/class_b_t_1_1_action_node_base-members.html b/d2/df8/class_b_t_1_1_action_node_base-members.html new file mode 100644 index 000000000..0f8a57b97 --- /dev/null +++ b/d2/df8/class_b_t_1_1_action_node_base-members.html @@ -0,0 +1,165 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ActionNodeBase Member List
+
+
+ +

This is the complete list of members for BT::ActionNodeBase, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html b/d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html new file mode 100644 index 000000000..55d1f0b31 --- /dev/null +++ b/d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::assignment Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::assignment Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::assignment:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::assignment:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = conditional
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::assignment::op
+
+staticconstexpr
+
+Initial value:
=
+
dsl::op<Ast::ExprAssignment::assign_create>(LEXY_LIT(":=")) /
+
dsl::op<Ast::ExprAssignment::assign_existing>(
+
dsl::not_followed_by(LEXY_LIT("="), dsl::lit_c<'='>)) /
+
dsl::op<Ast::ExprAssignment::assign_plus>(LEXY_LIT("+=")) /
+
dsl::op<Ast::ExprAssignment::assign_minus>(LEXY_LIT("-=")) /
+
dsl::op<Ast::ExprAssignment::assign_times>(LEXY_LIT("*=")) /
+
dsl::op<Ast::ExprAssignment::assign_div>(LEXY_LIT("/="))
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.map b/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.map new file mode 100644 index 000000000..f4bff7c78 --- /dev/null +++ b/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.md5 b/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.md5 new file mode 100644 index 000000000..a658cb9d6 --- /dev/null +++ b/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.md5 @@ -0,0 +1 @@ +49ebbbe72522529feed82b53c6dba9fc \ No newline at end of file diff --git a/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.png b/d2/dfb/struct_b_t_1_1_ast_1_1_expr_assignment__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..018935037bb2ee3afa133d58c46b351e6733f72e GIT binary patch literal 12058 zcmZv?1yt2hx9&|NjUY&a(%qc`Qqo-#A}ytKD=31LlyrB9l%SF-A|(wXDJ9*Tj&JVw zjPIN~?zuWdhkNs9ueIiS=6rs0Mrvy+6W~(eqM)D;l0*~~1{77rd-}eaTQdRX`d(KjdlQt~QRe#1V~-yF$$xXV)FExb zKTNI2&8f&W4a=~iVa(1&c4{{Rv6bQMcs_G$&~RjPg}L90)8`-|{pbBoPT$)qqs#fZ z=60zAJ49A!lP&JhSsX7teY2%U7gir zfq|=Eb#K>%kYSZgVTRGBV~H589j1iLFJos*H@y1goGk)B|J`&vGS`$-K@D; zl0E`H+vczEDdnxL?>LWFTJO$x&`A3yec5TvSY37K{k+%}XFpzP5=|wHi{j?yma+b` zzu$H!|Ni0XP}o?7(ZTuL^=$FeqN1YB-!)? zt)yYg@oYekgOH&K9X)-u-9UDgQVdm5ZC#y?;>zk8xBDB~= zNgV9#I`o0N&(ry=U-)0_b&dULaIV_6bRnddsYEU}d3H|ETDJc^(dx+DJC=zblpjfg*8x&c1` z6=gv7S_&oPm5l2?fOvK9}CpjbP>`8 z9qPPz@gh~iizDRvd@eF7s=PLEeY6Y%3v2&uqk3_B+oFojxoZzGVaX~Xk^asym{M6; z8HBQ8ugir?nP2geZ>x{wPGI^TIzi{Mk+6rP7pBQki_w-GL=i0v6OI7RiB z;o+qsE`Lg2;@viVIAMynI^Pkt4(k=x+?oEQ2d^3z+dO(STJJc*HS&g>TbEHOy0o_c z#S63|eG_MNZHVGBy{zQpvIT=rzow_ny(S*|l%)yUbNKl9kkQjy+EQxU%EApuDt6=$ z6db9&_(5*?FxKYf;GlNH)8(EFx`_S^(F#IZiPDXUYO@rV$=ds;XJ_M|FR4}WN|zn? zgXB=+q>m^RUg38*2qk1@_DSwEE2ya4IG*vD)95`~8z~uI`~BOvwzl>L0Rd)iQ&Vaf zHqm|uHvRnaa%ZBJOgEA2h1~VkC8dNXTY*x{T`sQ8l=aGHEi%(aR~Nq>c+*1X8%o(= zsp_^X33P12O2gLu=Fm`->FH^e2M-we_=wy0s~aSoC1R&Oy4WDr#~wd^tZi=Ix3}0O z{%i$buBz(}GxN)Zg-2h%edG2bBO~*;y70rr!}ECdtODU1nNnfGlsk8^BASB1?=;Fr zLP~1VlQIR{lLZP z!Q=;P^qQI)gP!RgnVFvsLi^iac7_|>EM+ba^{!63WDPg82jGS@^Kx+HmzLh(<>l>_ zQtn!(cX8?RINqL7R8%CUrR@*LA$5QD%x1RP?-n^Z+NeK`l(h8PaM6QgJT$V*%*=J) z$BGYzH_t+&qN2otFT`A?J~lXB!WutVb)Z#@a2mZ|f=g|Cvimpu)hkmAy%J4k5fSoG z#KuHodV18CFOm=#40rFoXbCt*8!R{A%*@K_?(VMnq-oZC^v4-)&%)y3+FYCLNU=u6 z$6v7N{2BcyT&DG}CAXWxEL!|0&AVc{_?ek8Wo2b8eE(v?e(oU<%e#NSr68Oo3IG26 z``FIzkq{Mk*9W(`R=9zt8sYN#4&-yOpPv1zbr`xEt;ASXRyGX**q0$XP+SZ5blUG< zmSM@_!a}OBvtfe(e8Tzfk)*K25x=q|4}LPnX`7lxWn@s>4`erZzIRHuTk~xBmmQEQ zV2i7xqth_%wjl5L7pY7@>;X^|}X&4%k zJ5RjtoSaO9Xr9;*Q&Lpieb;t@ToYuFpWWSgAZaPJ4YU!iGoNex5l+P#8LuKDu;0Ib zZ~oac(r4DM|?ZdTFmajik?Z{e{-f(vspko`>ZZ*7_dh0!v-Teoj7?(A6p8>!y^D>e=?YyJb>=}vke8i|2{rkv=<@^nd6 zIc}}G4RjLuX&EL|VZrU~ZP*9`dV2a6g_{d0!f!Mk_VARIyQp~Q@P?*U@Q`^{RZjlK zj0)QDTU}e;JEk0}auRC2+yRq{9c4RD**_WnDdoqp*7Dv7Zw)*Zm}+!u^l8x0Z7$oi z`$pU)lrcUq^{?;9@4YWRTZi-Oo2>MzO8I_u&S=9zTS0Y`T;I4+Si%y&vFnvAQwX7{ zv*vg|V-udKj1Fjf)V0aYL%*{1)b-t$UP^mjubaE%WDidqbe%+c$VJ^aK;QPuSap*x36}t}CrQaONu+=rp(w zk0e`yhm8^o>r{kPhtY=bm66_T=Z!1p%zO|<;p}{BpAgoD8H`bhpcdzpQ@~T&vz;y5 zF0lzCwS0}ES-;izD*OW@Y_&EYS*a9V1V@g&U|7e6a{GGR>ttc)WShw~%C@gheD%@@ zd`5Xq?@+~MzL=b>%Sdh-ZuYHyS2R#q@DbXx^qMp*o7|;p2ziBDB+b>WEM$-nx~a|{98sPf zDny_W#=2fxWlwl0nP)|5RcT0+DH738RNfJ-1ac$v+x_!SQc$$nN=|_-O zV8QyRk&TG>mC4K?WtBFHy>L-Wb7hD;V(#!}eq=nxV`VJCIA;UNoQlErrPZGWUXv?z z>_NPg^Ff2rDCzQ)gR@F{Ezf=HCU?IL=NA46`Kf**O9ic#5mPJGx#_9FFP$*fjn5D3 zipd>Hol)#Y_kS+Ue-cbQvpil8c9PnCi7N8r=s|F0s|VhY@e)UBmioB`!ky1%M6aX> z%l|z^RaR;5kyGav5@lA^ZxRoZHDNp4pDdfW);S-bh_ur*m0L);zeRLrDTD|}Iy$NC2ypeL zvMuDA%xtLL#QhLgOCC=thEphFRhl0OfkmYV4~;X|h;7NfTAQV5vANkFk@+GL>j1g9 z2CkG5b{();*1W6;LOCJnr?@Qtv0X!}`3jBVJUG)K?`Az-7b}y*J9zq-BT^Tw_;%h9 zOv}pc7%Psz@d-)5UCgV;z+Z8xxuO-Z)%kG;)~uS?nyyckMkA!xG3DT7Vy->R>EFdf zmCeL3^w`nC$?mCp{qQI!?v*GH+nPp;4GF;mc;LPr3&OIL-6fsloR;5%`mHj*Vjb}( z*;UdO8)5=2)Bj4i$j`3XkzNDUKA}iPf7`Gm;hiUWNq_2~u8r^}=)=BL?zN%cmxwba3pnXrNM80Finj}Zi|2&N(o>*QKP9*CB43QLKRIjl)3!H|$ zg2Jc3)2HZ)1|b9uviZSGsF4z%Jl9BYaBv!%X`u)Km&(S&;~HAJUY&QOJQ~NufGP*Y zPF`N#V_VxbTD7{uX& zBL9A6)p1p`Zborpp@H$T+ z0?biSef?-{f0bF|{^5w08JKs*H@A6LhLq`-ecH}x&yTh$Y6yp-`%g53#1|zI%l#Ae zJOTpy6-5u;ahSRMsaFN3q8S7(*$FCmq>Xm^`}L(7d(jo5I)q&==xEa32`W}_sCwmv zg^FO59>mbgTDVL%>D*UV<|HB_8vEko)+^E#O<7>qmul_x`QzEsXV1uT{SoU$hLy&7 z>mIlZA0Rmy*;o-3kPF)+S*7dTIY}hlCH#JR7 z#%by-h=GtRJ&kNBlLprrQvzBE{m$>-OTqkMU0zg{u~{_!pMX+8(bnGHtm>N~7zYjkfv3Y&*JH1-Y<4i}!I}s^ z`u>{Z02dcGNmp(8-#<>dEb(VQYBwvYTXlin7rhvQ1D z_4+EHw-yM^L^?j)fw7)s&WfbD57uF}rz`y#1`&j`qhP`V|q_tU%mfDWoK!U?(^r*dpbMsx16qItWSS>CR+7H{-La_Ga^UKBYzyD z-eXZ|d26d`e}A8=_ko(4zN%{En8XtUJ+uU6e$#l?oWKP7;FIT9m*;|>tJ*+T?i(8$ z$86Bc24}Xn%YoJ7K9HA}2Y%IP`&lbT#-K+(`(sh7<@MP_$}wCFMqb_lffhJ0!)gl+ za1XFx8u(U0`(OI(^b`~hemMyV@*W=iVDeJ@?%%(Uyg6UL%4Zz?vjd{x;73nP911qg z(b4g6XRhssK(Y-+D%>7^ets^C=G5qD{9?_lo)6aF28F7|KX06!j_HTEK)@)%f$be0 z*7rSo`V`F}i8Cc3)RY+9v54!m%DsE2dwY9*IkGtbL4f2qBYJn%)=Zf1po|r7m|4C| zzgqR)nblBK#26YHQcvYW6%`eQO;-k%l#HOE4LQXP@b?Gzd^^9Opu%OKyL&C=_}>r2 zo2V!@4vw$Ay%pn2I^s&9z$XNQ&OC>Qhm9MY$h4#pw*VD&C$b89t?Q$qp;fw;ywAyL zIOCknP-p2q@42)B+s!N~IkoQXn!>Q5AdzPl|Nn5NIqRaMmvu!OfQe4p>`xwjZRJ76J z+*fcI&FP+m&vqYUoRmE1v8$_VrgT6GXbqa}^%v=@lSQfBc61OrY4tRLm!+j_Aa?CP z-!kqUAG30Dz5!4OJIXbsuB!U?m*h^p#6zn>@m|~ zaNLy^E$NOU#SmW4fy07@UdZy9MeWf%cKs+TY9o@dcW_YPwJ{FKqQ-m6w3mG*rps-Z zY3j^eSi@#@Fb|(rBB>2@4j@Lw#ux%5wXLpB@L;9i=Hg@z*iPGD2m}ml?8KZL%Vi3g zgFZnZ5JW|{TKo~fn<{_oymlzwoWZF|(zUBI0ideR%*t8;oWQ^=J3YPJd-J!>GOn_> z_eV8#b$t->b$}yI5V|S04PNpShB-qH_2!?-%?IEBxJHGPAIh19bA*{LTNs ze7whK_6UH~SVtJP0UUY5asyKOBs>8mk9EGeZJ?{GoBYewxvTmk#YP2Bj-?C2-p;Q4 z`*%gJtv|xa$;m||BqZfrygWRHpeeQfMZJG~mh7C?!(C4jC9LbBmg)kd4Xb+--@bio ziHVJ^6~7lsW%=Jkz{qhAXR0q#oU~}P0EAY6A&pq{>}bl(4-j1yPrz2g1ci`8d={e< zC9v^(CjU12c^oUKw-?A8HQ&GZZ&(iHjjFqs*Zq-tr|PH(Y3eVUMn*<(Lrxan@KROD z=wu=5l_$SHpcd&TPsI4#6gABH^yyPyy6_vw%kFRvN>z0%0QepO-^!E;GKECW0M(Bl zoPH;4LjnabIh-3e=0WZSwY?+FM}%Z9b`>D`Ktjd_#>|kGmS&K0z2z2C00Jf^DQQHl z-`n3G1F?sXh29lQTh|9fQ+Y%P#15Wg1%NKa77hazo(NJizqQqG6DR!xBABZe9)J`M z85tSRwc(dg0vJ)cE-6(v@8bfX0^S>ON8uGQDXHE+<@@PCFY>#og`IBkHt(X5vT81! zAvUCd(wv-}?5s#KdGP`Z+LQe|2$svF+2g2)GLcSsOs$A$j8I!M`*pET9;{?#ZsEk_i-p ztOz)*)@@EEmQK1S=jyP8>i8M-1}aVJUR73dK|{c}Em+!T+5?-EMIE_t;n_RfiY==i zte$$y3k&(79MwJF9w$LsoVz+|~jz-K?$2IeJm8kM&OotMKxjLh7|$_>f^${DOMGclDy9q=bu zJ4yHac*h7nE3P)2X_ek&abdA!UJ)i!dNlQUD2HsI6CVX&K5}eA8U_xIa#K94_JM(c z{Z^Z<*m~EQ^yp~I;Hc?|iN+rikl&CZ<#)c-czUuJ_q_Hz7^&<)N+EpjjR=W6`E511 z0)>p(^G$Pia0|uSl^x6$9i8S;#`BOzYfZ7j`biaQ6+5~Ie zJwCSo_KE25IayncKlsA8H(5NaqaEs)p8(xX{zlNVv9Ve0 zFLk4MZv9D?2|Cl?&^J;WD%PN`;19gMJVq*~W|l;a=bA3`T7LfgX$6HOuwdgK%bx&K zkZ5F2KC$abVvnW~Pl%H_du?Rl_fj>H#ejO?6q*YEVEyK;foUdncKi;54E{%(j(W7f z_rk+5KDy0mf;>I1O?h2Vz?hw#o!V~)_29P@ZZj@h5NbJdbDG<{7LZ;ZiDa;|v7z*2 zuYftW*`EGn-t7ApNb(0*8dV4*?L44GD0%4sVSWIhneDfdX4(}&zL26qKge5&K-H1C zu=n(=UmvS@XL~X}d+3exip-^+?{|Fgn ztb$O0g@uKHzLFp__y5%rRFzve()F;9b09Ay{hZd@+snw$ud~CK9)4j%^+|PJ(m+7_ z*&UqHG)br#-cYsoP{mzHHZj^TR8@P;*Uz<`@@yB*-oc^n&Ki{XJSLfE_POXX0h?Or z3VW0f1=GZ#$Hz`Lgi@>|EuK8y!8-+^brLiAzH1vh-D|z0NOd8mPd9ah3^IoFZ;H0)R%Ehy8C$)3tr(UF*QF3RSxYJn zHu|UB$}6dItRjbXxzXpr0h=`04h-N96Un^zc3;~)#n*ATU0)l!!jbefH;uq;<7S2f z1@dJ(Zvl(Z`AQSLNqseWT)D-6>I0mX8|0Zyw#ZizwmXc!(uc>6|JO*G%Ll7MG4)3_1NRI+Ff>^A9i&$XhXSpMVbfi2w5 zub<1S#~Iip`eWiZ89k%0fABEsD^2oIw#8oLD@M_~Q7p_XY-`u3b$*T9)B)#x-f5SOj-}bl@AnEjh?58kQ z7Tv|=+gVH?42P_+kDpWLzaRB1ow%X&cZ;ojQb?-qzD7YI{Dzzb2zrW$RTUz5%3AN> znLfEog7vIIH*xWDfCbT3>LZoEhKylP*#L{vy0A&UrOB}8X(Hs5cr<9Zp;@7pr-Aki zSWOs9XgTP#RAT1V%5by=Z)Rntg=|6w2fWz!`F4qSIT?t28w0O|tSE@lPS7k-ugBcq z;szw@@eSQ-!OG+ex%SC@w3(B?Zxnp$oOP){N}vkpBZ|ks-||LNa+@VVJ$fq^4V$F& zIiCCE`=LlI#uBT1aej1q6ot?^wC#4Phm0hRitsIb{P$FOe;~wvSKX}e#e9t+fu@-h z6f#3yBQx|9SOwNiB(Ds6DV9X&^xer2t)u-OLsqS1X^!jnGeyQk83vEuN9W91*a#lA za~puN1MAv{Kjwl53eMa*LV9`Q?99=!*+U|yLYWvm9y|(5C=QJpv2uks9s_F?;spw} z&i&DHU(D*|3nIqEusI}ay?{tTklao>G!sH#?yBlP9ehCWq5CSyi{}kFeB@GIUaS6r z?t5>k(w#!LxY3n_+r1S9?*_@`TR^Z+pl={R#oU16{s&JDD%=mz;_TVpD7#P$;AFVb z^iA#4`*xJ2m2Xq8m>BXRY}-i~$c!;AiUWf&+;17~oHyi}abAA1%vi$KM?+S1^5IZtdr1s&;s-%h zxv%BN*gGE2xIJcXcnXRo{ScKW6E|FWSaCS3e^t#GPk@0|#V+Y38J_uKhI~n&xs-)P zY)F-Jyj5QBc`Cs-dnW9Xb(#dp_-zHqOY^| z1WCd^jE$`2w3XF8S~{ngKW@KYp7S-*4uIYVZ8q*5{bS~K-+n7Pdaqndc}9a|6%({F zmu$-4_ae{53gw4Vl-BP^$RTf<<_jmZ|0Je&T)0182;GV?PHx~2 zbj>tE3pY%U<%Jk{4cAS_$5>)YXL%uZWS(4yBJoK+EGfSz<} z=ZPkI03ylntjlksJFPr=L7JmnCK{RsZI_TDA1V3Km-V6PHNSHU9n*)&^UB0QMm_wy z7!@C?qB#}A^RDoWUlr#UB%JjoZsnUKV2t8JqfWYT{+UpN7)RN4$Odg3F@hPVlyZ1p z)?vN+t!hWeDEu_nm!9&X3U9kR0-m?%_+#Jw&YeJx)Zsrdf_E7iSsl}lUea~c3$1)n zMzaz-<;`Mrq)gI{`_b7MROUmoa9cS01=!F2Y>#@VVtTHUZDv+~Wr`R0-1r(rMXC*0 zZHqF3I7W>`dxYtK(^61+$9U?Sf&v0a*NuV|h6;!SfFe<-ZWI`bQPWnaq(#QSoDRT@ z$1VcVIW{)7asq@67@;T~9i7O#vSzL18R!JpJB{_MY>g@h9oLD#AkiIYI0pRDK83v2(V%y1MRxfs$wce!&bAiu>QMm@w?{v!~}SH#Y&; zO(a7ruiKX~@CI8fASn0=pfEp0&#y0bhJvNq% zcbjMMql?*}dPlvT%jU`2gMR~yYip4uB_+1mLk>${U*h=&1T3zs`~VoVHrpZz16&3R zy*)iZVbFPbtDW|~G&RL1C%=66?w#!vz=?bqVu90HTs1~;7AM`6l*|AY22L+LF)?w> z=BZ7Va8PW%pL3FZhxx;Y0I~9N+dtC(ord*(@!om_w$HEx6%0KfX6)m+5Lsw>|ATp+ zlk;6bm?ijGF@mX0&mkKVO9+<(>^0LQ#J1T^o0`f$q{AxA4#=m!VA_r84 z0VyMo2|x{f(BaL8U%VUYS7c6?NFmAwfd239?lJ(CiJ%Wo1psZFa(;5+eza)<(^Or* zYiv#d5I@|xtaPDF%6b8yG#uP7N_`;7+64$NLXT_}=KITpDNaKJEu@E?;l@)OSE!;?t? zF#L`H$^88M;P}7QhBS$ zi$d+N{oGU3;!l~7gBO7wf`WqL{)cQkEyr{)sgbJA0)rqZzN>i=DyphwPE2YaRDN=gnfT>!1Z;o$2jfNsfEJ}rmlAD92`u6j|ES_PeN<~(@F-4 zfNoo23qcZ1FFX5GC*PpLFexc1J}u2r^-8otZ`y*Yh)9LK6R7^{m>64#`o`uhK=H#c zkHe8Q3HEJswj~3QDGc@WQ@b_a3k;M3LHsLweM$s7U!NH~YNQb)NA~BV%bV`UU%R@x zoN8P4oJ=YVtIEwyDyCU68b9WEiDSVKCmfA|YU=p=O@nQP^3@FvZtjM@3YA;hDc@n} zifhB5PY~vy03pCSkz7MJqPn`;mey?jR^vORHS}R20!zy|DlJr3eX|IdJ>rL+7r@2p z9(q52e+l3U%v@a20D_vEo4Jgl;jZ{?R5jkf$1j9@A|@u5n^X$}STOHJ0<(%B0^)G^ z03MfXy67ruf59<-0)&gom!=L=ZF~;#2+Loe#x6ZQJu49u`r|M<^Z?rv)PTE21OU54 zo+A|q>c>%&nz>|B6PL>WsL-xVZj{~!;2yEi2*~IeAHS0sA1{aOCN=PFHy>z%5{tpr zL8gaG!~|0GK@6XP(tuprh_|c_=Ai@EDFN&al!nUE(lSFLuL^+*1PKRvMuzXrRY4Ic z1nuzAvGA=x+mO?fBcY<3QgM{o~N#@;sxCxLh$w4)R4Hnv^Hz?dWw-hr(2ZO?o`j^UPPwVK*& zJ-gMP@hwL1MOavXbGk@Pe$H2N2q)x}R(-vYW~NvN5Gx8XcLv}BRl`gXwO81Xc0c>< zxTd{JOjLmW$#Pudz9+;D+;e1<8+D!@^o7p}NMm|t=6P-2 z{o#=jP~$rw`jB}|H<~?iINBsUSLIw?c~~_wt9PQ|J`{;pf|$YP5&_ZTj>H)%IQH<$r)UYSZ%N6G*gGUGp$fcye|&4Cjji&r^V? z0Ww7K8?gD8lYqah2*>~?Qv;%AEId(q% zql2k7G4D+Z;F^$8`TX`D_pZ(Luh$=m|5=B;hvEz=EAF>B7(ps*COksIamMVaA7*YX zosgW|{!qTZT`*+4OqU5GYX@;57hy2}rrcFZrKPKzfUh!+(VaTTtuHT+_HQ7k#HiW= ziKAdx6xmN*qfK$Jh6Zy2kT8)o`xLnP(cO=04>hFszLN?cY2geRBVX-_OBcGIUd#_Y zt5<}y + + + + + + diff --git a/d2/dfc/class_b_t_1_1_queue_size__coll__graph.md5 b/d2/dfc/class_b_t_1_1_queue_size__coll__graph.md5 new file mode 100644 index 000000000..c6a496828 --- /dev/null +++ b/d2/dfc/class_b_t_1_1_queue_size__coll__graph.md5 @@ -0,0 +1 @@ +b51744ac8753440cb141f90b9310a830 \ No newline at end of file diff --git a/d2/dfc/class_b_t_1_1_queue_size__coll__graph.png b/d2/dfc/class_b_t_1_1_queue_size__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ff397adbd79f36c35c31db788f506e01b89a775e GIT binary patch literal 11445 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 + + + + + + +BehaviorTree: BT::ParallelAllNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ParallelAllNode Class Reference
+
+
+ +

The ParallelAllNode execute all its children concurrently, but not in separate threads! + More...

+ +

#include <parallel_all_node.h>

+
+Inheritance diagram for BT::ParallelAllNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ParallelAllNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ParallelAllNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override
 
+size_t failureThreshold () const
 
+void setFailureThreshold (int threshold)
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The ParallelAllNode execute all its children concurrently, but not in separate threads!

+

It differs in the way ParallelNode works because the latter may stop and halt other children if a certain number of SUCCESS/FAILURES is reached, whilst this one will always complete the execution of ALL its children.

+

Note that threshold indexes work as in Python: https://www.i2tutorials.com/what-are-negative-indexes-and-why-are-they-used/

+

Therefore -1 is equivalent to the number of children.

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ParallelAllNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d3/d02/class_b_t_1_1_parallel_all_node.js b/d3/d02/class_b_t_1_1_parallel_all_node.js new file mode 100644 index 000000000..e5449066a --- /dev/null +++ b/d3/d02/class_b_t_1_1_parallel_all_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_parallel_all_node = +[ + [ "halt", "d3/d02/class_b_t_1_1_parallel_all_node.html#a8d277cfa32781567a3ef8b967ce28c70", null ] +]; \ No newline at end of file diff --git a/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.map b/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.map new file mode 100644 index 000000000..8bae576c2 --- /dev/null +++ b/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.md5 b/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.md5 new file mode 100644 index 000000000..e0e177d4e --- /dev/null +++ b/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.md5 @@ -0,0 +1 @@ +a4b76f241e74ae57589f60fc1bf18398 \ No newline at end of file diff --git a/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.png b/d3/d06/class_b_t_1_1_force_success_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8c0f0b9a7e9d3f54a6e2ef257dfb381e4ce2a225 GIT binary patch literal 6402 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 + + + diff --git a/d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.md5 b/d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.md5 new file mode 100644 index 000000000..1f74cf4ee --- /dev/null +++ b/d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.md5 @@ -0,0 +1 @@ +63d1b41f19786a6c7628464c228af2c1 \ No newline at end of file diff --git a/d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.png b/d3/d07/class_b_t_1_1_minitrace_logger__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4c030f8ed7e6c5d4e5172e53506efea911fe2f8f GIT binary patch literal 5383 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Timestamp Member List
+
+
+ +

This is the complete list of members for BT::Timestamp, including all inherited members.

+ + + +
seq (defined in BT::Timestamp)BT::Timestamp
time (defined in BT::Timestamp)BT::Timestamp
+
+ + + + diff --git a/d3/d22/bt__cout__logger_8h_source.html b/d3/d22/bt__cout__logger_8h_source.html new file mode 100644 index 000000000..e5987affc --- /dev/null +++ b/d3/d22/bt__cout__logger_8h_source.html @@ -0,0 +1,141 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/bt_cout_logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_cout_logger.h
+
+
+
1#ifndef BT_COUT_LOGGER_H
+
2#define BT_COUT_LOGGER_H
+
3
+
4#include <cstring>
+
5#include "behaviortree_cpp/loggers/abstract_logger.h"
+
6
+
7namespace BT
+
8{
+
9/**
+
10 * @brief StdCoutLogger is a very simple logger that
+
11 * displays all the transitions on the console.
+
12 */
+
13
+ +
15{
+
16public:
+
17 StdCoutLogger(const BT::Tree& tree);
+
18 ~StdCoutLogger() override;
+
19
+
20 virtual void flush() override;
+
21
+
22private:
+
23 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
24 NodeStatus status) override;
+
25};
+
26
+
27} // namespace BT
+
28
+
29#endif // BT_COUT_LOGGER_H
+
Definition: abstract_logger.h:16
+
StdCoutLogger is a very simple logger that displays all the transitions on the console.
Definition: bt_cout_logger.h:15
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d3/d23/struct_b_t_1_1_tree_1_1_subtree.html b/d3/d23/struct_b_t_1_1_tree_1_1_subtree.html new file mode 100644 index 000000000..ecee8b90f --- /dev/null +++ b/d3/d23/struct_b_t_1_1_tree_1_1_subtree.html @@ -0,0 +1,150 @@ + + + + + + + +BehaviorTree: BT::Tree::Subtree Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Tree::Subtree Struct Reference
+
+
+
+Collaboration diagram for BT::Tree::Subtree:
+
+
Collaboration graph
+ + + + + + + + + + +
[legend]
+ + + + +

+Public Types

+using Ptr = std::shared_ptr< Subtree >
 
+ + + + + + + + + +

+Public Attributes

+std::vector< TreeNode::Ptr > nodes
 
+Blackboard::Ptr blackboard
 
+std::string instance_name
 
+std::string tree_ID
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d3/d25/class_b_t_1_1_switch_node__inherit__graph.map b/d3/d25/class_b_t_1_1_switch_node__inherit__graph.map new file mode 100644 index 000000000..e09d5f728 --- /dev/null +++ b/d3/d25/class_b_t_1_1_switch_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d3/d25/class_b_t_1_1_switch_node__inherit__graph.md5 b/d3/d25/class_b_t_1_1_switch_node__inherit__graph.md5 new file mode 100644 index 000000000..2fd874ae2 --- /dev/null +++ b/d3/d25/class_b_t_1_1_switch_node__inherit__graph.md5 @@ -0,0 +1 @@ +8b6673561df03ef094e6e4ca99431365 \ No newline at end of file diff --git a/d3/d25/class_b_t_1_1_switch_node__inherit__graph.png b/d3/d25/class_b_t_1_1_switch_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3daa740c089cfd5e15df49d51bd12be4132c47d4 GIT binary patch literal 7971 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 literal 0 HcmV?d00001 diff --git a/d3/d28/struct_b_t_1_1_monitor_1_1_request_header-members.html b/d3/d28/struct_b_t_1_1_monitor_1_1_request_header-members.html new file mode 100644 index 000000000..7fe6fd9bc --- /dev/null +++ b/d3/d28/struct_b_t_1_1_monitor_1_1_request_header-members.html @@ -0,0 +1,116 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Monitor::RequestHeader Member List
+
+
+ +

This is the complete list of members for BT::Monitor::RequestHeader, including all inherited members.

+ + + + + + + + + +
operator!=(const RequestHeader &other) const (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeaderinline
operator==(const RequestHeader &other) const (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeaderinline
protocol (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeader
RequestHeader()=default (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeader
RequestHeader(RequestType type) (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeaderinline
size() (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeaderinlinestatic
type (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeader
unique_id (defined in BT::Monitor::RequestHeader)BT::Monitor::RequestHeader
+
+ + + + diff --git a/d3/d2f/switch__node_8h_source.html b/d3/d2f/switch__node_8h_source.html new file mode 100644 index 000000000..d4532adf5 --- /dev/null +++ b/d3/d2f/switch__node_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/switch_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
switch_node.h
+
+
+
1/* Copyright (C) 2020-2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The SwitchNode is equivalent to a switch statement, where a certain
+
21 * branch (child) is executed according to the value of a blackboard entry.
+
22 *
+
23 * Note that the same behaviour can be achieved with multiple Sequences, Fallbacks and
+
24 * Conditions reading the blackboard, but switch is shorter and more readable.
+
25 *
+
26 * Example usage:
+
27 *
+
28
+
29<Switch3 variable="{var}" case_1="1" case_2="42" case_3="666" >
+
30 <ActionA name="action_when_var_eq_1" />
+
31 <ActionB name="action_when_var_eq_42" />
+
32 <ActionC name="action_when_var_eq_666" />
+
33 <ActionD name="default_action" />
+
34 </Switch3>
+
35
+
36When the SwitchNode is executed (Switch3 is a node with 3 cases)
+
37the "variable" will be compared to the cases and execute the correct child
+
38or the default one (last).
+
39 *
+
40 */
+
41
+
42namespace details
+
43{
+
44
+
45bool CheckStringEquality(const std::string& v1, const std::string& v2,
+
46 const ScriptingEnumsRegistry* enums);
+
47}
+
48
+
49template <size_t NUM_CASES>
+
50class SwitchNode : public ControlNode
+
51{
+
52public:
+
53 SwitchNode(const std::string& name, const BT::NodeConfig& config);
+
54
+
55 virtual ~SwitchNode() override = default;
+
56
+
57 void halt() override;
+
58
+
59 static PortsList providedPorts();
+
60
+
61private:
+
62 int running_child_;
+
63 std::vector<std::string> case_keys_;
+
64 virtual BT::NodeStatus tick() override;
+
65};
+
66
+
67//-----------------------------------------------
+
68//-----------------------------------------------
+
69
+
70template <size_t NUM_CASES>
+
71inline SwitchNode<NUM_CASES>::SwitchNode(const std::string& name,
+
72 const NodeConfig& config)
+
73 : ControlNode::ControlNode(name, config), running_child_(-1)
+
74{
+
75 setRegistrationID("Switch");
+
76 for(unsigned i = 1; i <= NUM_CASES; i++)
+
77 {
+
78 case_keys_.push_back(std::string("case_") + std::to_string(i));
+
79 }
+
80}
+
81
+
82template <size_t NUM_CASES>
+
83inline void SwitchNode<NUM_CASES>::halt()
+
84{
+
85 running_child_ = -1;
+ +
87}
+
88
+
89template <size_t NUM_CASES>
+
90inline PortsList SwitchNode<NUM_CASES>::providedPorts()
+
91{
+
92 static PortsList provided_ports = []() {
+
93 PortsList ports;
+
94 ports.insert(BT::InputPort<std::string>("variable"));
+
95 for(unsigned i = 1; i <= NUM_CASES; i++)
+
96 {
+
97 auto key = std::string("case_") + std::to_string(i);
+
98 ports.insert(BT::InputPort<std::string>(key));
+
99 }
+
100 return ports;
+
101 }();
+
102
+
103 return provided_ports;
+
104}
+
105
+
106template <size_t NUM_CASES>
+
107inline NodeStatus SwitchNode<NUM_CASES>::tick()
+
108{
+
109 if(childrenCount() != NUM_CASES + 1)
+
110 {
+
111 throw LogicError("Wrong number of children in SwitchNode; "
+
112 "must be (num_cases + default)");
+
113 }
+
114
+
115 std::string variable;
+
116 std::string value;
+
117 int match_index = int(NUM_CASES); // default index;
+
118
+
119 // no variable? jump to default
+
120 if(getInput("variable", variable))
+
121 {
+
122 // check each case until you find a match
+
123 for(int index = 0; index < int(NUM_CASES); ++index)
+
124 {
+
125 const std::string& case_key = case_keys_[index];
+
126 if(getInput(case_key, value))
+
127 {
+
128 if(details::CheckStringEquality(variable, value, this->config().enums.get()))
+
129 {
+
130 match_index = index;
+
131 break;
+
132 }
+
133 }
+
134 }
+
135 }
+
136
+
137 // if another one was running earlier, halt it
+
138 if(running_child_ != -1 && running_child_ != match_index)
+
139 {
+
140 haltChild(running_child_);
+
141 }
+
142
+
143 auto& selected_child = children_nodes_[match_index];
+
144 NodeStatus ret = selected_child->executeTick();
+
145 if(ret == NodeStatus::SKIPPED)
+
146 {
+
147 // if the matching child is SKIPPED, should I jump to default or
+
148 // be SKIPPED myself? Going with the former, for the time being.
+
149 running_child_ = -1;
+
150 return NodeStatus::SKIPPED;
+
151 }
+
152 else if(ret == NodeStatus::RUNNING)
+
153 {
+
154 running_child_ = match_index;
+
155 }
+
156 else
+
157 {
+ +
159 running_child_ = -1;
+
160 }
+
161 return ret;
+
162}
+
163
+
164} // namespace BT
+
Definition: control_node.h:22
+
void resetChildren()
+
virtual void halt() override
+
Definition: switch_node.h:51
+
void halt() override
Definition: switch_node.h:83
+
The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
Definition: basic_types.h:503
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d3/d31/struct_b_t_1_1_test_node_config-members.html b/d3/d31/struct_b_t_1_1_test_node_config-members.html new file mode 100644 index 000000000..d31d1d32b --- /dev/null +++ b/d3/d31/struct_b_t_1_1_test_node_config-members.html @@ -0,0 +1,114 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TestNodeConfig Member List
+
+ +
+ + + + diff --git a/d3/d37/class_b_t_1_1_simple_decorator_node.html b/d3/d37/class_b_t_1_1_simple_decorator_node.html new file mode 100644 index 000000000..c144e64c3 --- /dev/null +++ b/d3/d37/class_b_t_1_1_simple_decorator_node.html @@ -0,0 +1,397 @@ + + + + + + + +BehaviorTree: BT::SimpleDecoratorNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callback with this signature. + More...

+ +

#include <decorator_node.h>

+
+Inheritance diagram for BT::SimpleDecoratorNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::SimpleDecoratorNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Types

+using TickFunctor = std::function< NodeStatus(NodeStatus, TreeNode &)>
 
- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SimpleDecoratorNode (const std::string &name, TickFunctor tick_functor, const NodeConfig &config)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual NodeStatus tick () override
 Method to be implemented by the user.
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + + + + +

+Protected Attributes

+TickFunctor tick_functor_
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callback with this signature.

+

BT::NodeStatus functionName(BT::NodeStatus child_status)

+

This avoids the hassle of inheriting from a DecoratorNode.

+

Using lambdas or std::bind it is easy to pass a pointer to a method.

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::SimpleDecoratorNode::tick ()
+
+overrideprotectedvirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d3/d37/class_b_t_1_1_simple_decorator_node.js b/d3/d37/class_b_t_1_1_simple_decorator_node.js new file mode 100644 index 000000000..471c858f2 --- /dev/null +++ b/d3/d37/class_b_t_1_1_simple_decorator_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_simple_decorator_node = +[ + [ "tick", "d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29", null ] +]; \ No newline at end of file diff --git a/d3/d42/class_b_t_1_1_tree_node-members.html b/d3/d42/class_b_t_1_1_tree_node-members.html new file mode 100644 index 000000000..e2949c45c --- /dev/null +++ b/d3/d42/class_b_t_1_1_tree_node-members.html @@ -0,0 +1,165 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TreeNode Member List
+
+
+ +

This is the complete list of members for BT::TreeNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
BehaviorTreeFactory (defined in BT::TreeNode)BT::TreeNodefriend
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode (defined in BT::TreeNode)BT::TreeNodefriend
DecoratorNode (defined in BT::TreeNode)BT::TreeNodefriend
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
Tree (defined in BT::TreeNode)BT::TreeNodefriend
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const =0 (defined in BT::TreeNode)BT::TreeNodepure virtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html b/d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html new file mode 100644 index 000000000..de600c22e --- /dev/null +++ b/d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::bit_and Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::bit_and Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::bit_and:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::bit_and:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = bit_prefix
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::bit_and::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
+
auto bit_and = dsl::not_followed_by(LEXY_LIT("&"), dsl::lit_c<'&'>);
+
return dsl::op<Ast::ExprBinaryArithmetic::bit_and>(bit_and);
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.map b/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.map new file mode 100644 index 000000000..44492da53 --- /dev/null +++ b/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.md5 b/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.md5 new file mode 100644 index 000000000..9d1ac8e87 --- /dev/null +++ b/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.md5 @@ -0,0 +1 @@ +c15b2e08c8e402e13b9fe780c2e9a16a \ No newline at end of file diff --git a/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.png b/d3/d47/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..45de70f6273e1241d452a2e961dcf697f1ad2a09 GIT binary patch literal 5875 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 E56T2miU0rr literal 0 HcmV?d00001 diff --git a/d3/d59/class_b_t_1_1_control_node-members.html b/d3/d59/class_b_t_1_1_control_node-members.html new file mode 100644 index 000000000..41d24aeb8 --- /dev/null +++ b/d3/d59/class_b_t_1_1_control_node-members.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ControlNode Member List
+
+
+ +

This is the complete list of members for BT::ControlNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::ControlNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d3/d60/platform_8hpp_source.html b/d3/d60/platform_8hpp_source.html new file mode 100644 index 000000000..5ff0148fc --- /dev/null +++ b/d3/d60/platform_8hpp_source.html @@ -0,0 +1,226 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/platform.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
platform.hpp
+
+
+
1//
+
2// Platform.h
+
3//
+
4// $Id: //poco/1.3/Foundation/include/Poco/Platform.h#5 $
+
5//
+
6// Library: Foundation
+
7// Package: Core
+
8// Module: Platform
+
9//
+
10// Platform and architecture identification macros.
+
11//
+
12// NOTE: This file may be included from both C++ and C code, so it
+
13// must not contain any C++ specific things.
+
14//
+
15// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+
16// and Contributors.
+
17//
+
18// Permission is hereby granted, free of charge, to any person or organization
+
19// obtaining a copy of the software and accompanying documentation covered by
+
20// this license (the "Software") to use, reproduce, display, distribute,
+
21// execute, and transmit the Software, and to prepare derivative works of the
+
22// Software, and to permit third-parties to whom the Software is furnished to
+
23// do so, all subject to the following:
+
24//
+
25// The copyright notices in the Software and this entire statement, including
+
26// the above license grant, this restriction and the following disclaimer,
+
27// must be included in all copies of the Software, in whole or in part, and
+
28// all derivative works of the Software, unless such copies or derivative
+
29// works are solely in the form of machine-executable object code generated by
+
30// a source language processor.
+
31//
+
32// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
33// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
34// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+
35// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+
36// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+
37// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
38// DEALINGS IN THE SOFTWARE.
+
39//
+
40
+
41#ifndef Foundation_Platform_INCLUDED
+
42#define Foundation_Platform_INCLUDED
+
43
+
44//
+
45// Platform Identification
+
46//
+
47#define BT_OS_FREE_BSD 0x0001
+
48#define BT_OS_AIX 0x0002
+
49#define BT_OS_HPUX 0x0003
+
50#define BT_OS_TRU64 0x0004
+
51#define BT_OS_LINUX 0x0005
+
52#define BT_OS_MAC_OS_X 0x0006
+
53#define BT_OS_NET_BSD 0x0007
+
54#define BT_OS_OPEN_BSD 0x0008
+
55#define BT_OS_IRIX 0x0009
+
56#define BT_OS_SOLARIS 0x000a
+
57#define BT_OS_QNX 0x000b
+
58#define BT_OS_VXWORKS 0x000c
+
59#define BT_OS_CYGWIN 0x000d
+
60#define BT_OS_UNKNOWN_UNIX 0x00ff
+
61#define BT_OS_WINDOWS_NT 0x1001
+
62#define BT_OS_WINDOWS_CE 0x1011
+
63#define BT_OS_VMS 0x2001
+
64
+
65#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+
66#define BT_OS_FAMILY_UNIX 1
+
67#define BT_OS_FAMILY_BSD 1
+
68#define BT_OS BT_OS_FREE_BSD
+
69#elif defined(_AIX) || defined(__TOS_AIX__)
+
70#define BT_OS_FAMILY_UNIX 1
+
71#define BT_OS BT_OS_AIX
+
72#elif defined(hpux) || defined(_hpux)
+
73#define BT_OS_FAMILY_UNIX 1
+
74#define BT_OS BT_OS_HPUX
+
75#elif defined(__digital__) || defined(__osf__)
+
76#define BT_OS_FAMILY_UNIX 1
+
77#define BT_OS BT_OS_TRU64
+
78#elif defined(linux) || defined(__linux) || defined(__linux__) || defined(__TOS_LINUX__)
+
79#define BT_OS_FAMILY_UNIX 1
+
80#define BT_OS BT_OS_LINUX
+
81#elif defined(__APPLE__) || defined(__TOS_MACOS__)
+
82#define BT_OS_FAMILY_UNIX 1
+
83#define BT_OS_FAMILY_BSD 1
+
84#define BT_OS BT_OS_MAC_OS_X
+
85#elif defined(__NetBSD__)
+
86#define BT_OS_FAMILY_UNIX 1
+
87#define BT_OS_FAMILY_BSD 1
+
88#define BT_OS BT_OS_NET_BSD
+
89#elif defined(__OpenBSD__)
+
90#define BT_OS_FAMILY_UNIX 1
+
91#define BT_OS_FAMILY_BSD 1
+
92#define BT_OS BT_OS_OPEN_BSD
+
93#elif defined(sgi) || defined(__sgi)
+
94#define BT_OS_FAMILY_UNIX 1
+
95#define BT_OS BT_OS_IRIX
+
96#elif defined(sun) || defined(__sun)
+
97#define BT_OS_FAMILY_UNIX 1
+
98#define BT_OS BT_OS_SOLARIS
+
99#elif defined(__QNX__)
+
100#define BT_OS_FAMILY_UNIX 1
+
101#define BT_OS BT_OS_QNX
+
102#elif defined(unix) || defined(__unix) || defined(__unix__)
+
103#define BT_OS_FAMILY_UNIX 1
+
104#define BT_OS BT_OS_UNKNOWN_UNIX
+
105#elif defined(_WIN32_WCE)
+
106#define BT_OS_FAMILY_WINDOWS 1
+
107#define BT_OS BT_OS_WINDOWS_CE
+
108#elif defined(_WIN32) || defined(_WIN64)
+
109#define BT_OS_FAMILY_WINDOWS 1
+
110#define BT_OS BT_OS_WINDOWS_NT
+
111#elif defined(__CYGWIN__)
+
112#define BT_OS_FAMILY_UNIX 1
+
113#define BT_OS BT_OS_CYGWIN
+
114#elif defined(__VMS)
+
115#define BT_OS_FAMILY_VMS 1
+
116#define BT_OS BT_OS_VMS
+
117#endif
+
118
+
119#endif // Foundation_Platform_INCLUDED
+
#define BT_OS_LINUX
Definition: platform.hpp:51
+
+
+ + + + diff --git a/d3/d64/class_b_t_1_1_condition_node__inherit__graph.map b/d3/d64/class_b_t_1_1_condition_node__inherit__graph.map new file mode 100644 index 000000000..511200f69 --- /dev/null +++ b/d3/d64/class_b_t_1_1_condition_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d3/d64/class_b_t_1_1_condition_node__inherit__graph.md5 b/d3/d64/class_b_t_1_1_condition_node__inherit__graph.md5 new file mode 100644 index 000000000..db7680754 --- /dev/null +++ b/d3/d64/class_b_t_1_1_condition_node__inherit__graph.md5 @@ -0,0 +1 @@ +9a231a746fc7d459b9ccb729542143c4 \ No newline at end of file diff --git a/d3/d64/class_b_t_1_1_condition_node__inherit__graph.png b/d3/d64/class_b_t_1_1_condition_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cad567f50ded2e9b773627e774c5b781eb5e3cce GIT binary patch literal 11410 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 CwSut# literal 0 HcmV?d00001 diff --git a/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.map b/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.map new file mode 100644 index 000000000..773b95be7 --- /dev/null +++ b/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.md5 b/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.md5 new file mode 100644 index 000000000..ef541863e --- /dev/null +++ b/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.md5 @@ -0,0 +1 @@ +955fda9187cb2243e3c27491440bbb6b \ No newline at end of file diff --git a/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.png b/d3/d69/struct_b_t_1_1has__static__method__provided_ports__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..217199dea9b330290212d000903d10023376749e GIT binary patch literal 7447 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 G`~M$^0^&jd literal 0 HcmV?d00001 diff --git a/d3/d86/script__node_8h_source.html b/d3/d86/script__node_8h_source.html new file mode 100644 index 000000000..caace4d03 --- /dev/null +++ b/d3/d86/script__node_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/script_node.h Source File + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
script_node.h
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2 *
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/action_node.h"
+
17#include "behaviortree_cpp/scripting/script_parser.hpp"
+
18
+
19namespace BT
+
20{
+
21class ScriptNode : public SyncActionNode
+
22{
+
23public:
+
24 ScriptNode(const std::string& name, const NodeConfig& config)
+
25 : SyncActionNode(name, config)
+
26 {
+
27 setRegistrationID("ScriptNode");
+
28
+
29 loadExecutor();
+
30 }
+
31
+
32 static PortsList providedPorts()
+
33 {
+
34 return { InputPort<std::string>("code", "Piece of code that can be parsed") };
+
35 }
+
36
+
37private:
+
38 virtual BT::NodeStatus tick() override
+
39 {
+
40 loadExecutor();
+
41 if(_executor)
+
42 {
+
43 Ast::Environment env = { config().blackboard, config().enums };
+
44 _executor(env);
+
45 }
+
46 return NodeStatus::SUCCESS;
+
47 }
+
48
+
49 void loadExecutor()
+
50 {
+
51 std::string script;
+
52 if(!getInput("code", script))
+
53 {
+
54 throw RuntimeError("Missing port [code] in Script");
+
55 }
+
56 if(script == _script)
+
57 {
+
58 return;
+
59 }
+
60 auto executor = ParseScript(script);
+
61 if(!executor)
+
62 {
+
63 throw RuntimeError(executor.error());
+
64 }
+
65 else
+
66 {
+
67 _executor = executor.value();
+
68 _script = script;
+
69 }
+
70 }
+
71
+
72 std::string _script;
+
73 ScriptFunction _executor;
+
74};
+
75
+
76} // namespace BT
+
Definition: script_node.h:22
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
The Environment class is used to encapsulate the information and states needed by the scripting langu...
Definition: script_parser.hpp:32
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d3/d8c/class_b_t_1_1scoped__demangled__name.html b/d3/d8c/class_b_t_1_1scoped__demangled__name.html new file mode 100644 index 000000000..276eea898 --- /dev/null +++ b/d3/d8c/class_b_t_1_1scoped__demangled__name.html @@ -0,0 +1,128 @@ + + + + + + + +BehaviorTree: BT::scoped_demangled_name Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::scoped_demangled_name Class Reference
+
+
+ + + + + + + + + + +

+Public Member Functions

scoped_demangled_name (char const *name) noexcept
 
+char const * get () const noexcept
 
scoped_demangled_name (scoped_demangled_name const &)=delete
 
+scoped_demangled_nameoperator= (scoped_demangled_name const &)=delete
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d3/d96/bt__observer_8h_source.html b/d3/d96/bt__observer_8h_source.html new file mode 100644 index 000000000..4ba8cc30d --- /dev/null +++ b/d3/d96/bt__observer_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/bt_observer.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_observer.h
+
+
+
1#ifndef BT_OBSERVER_H
+
2#define BT_OBSERVER_H
+
3
+
4#include <cstring>
+
5#include "behaviortree_cpp/loggers/abstract_logger.h"
+
6
+
7namespace BT
+
8{
+
9
+
10/**
+
11 * @brief The TreeObserver is used to collect statistics about which nodes
+
12 * are executed and their returned status.
+
13 *
+
14 * It is particularly useful to create unit tests, since if allow to
+
15 * determine if a certain transition happened as expected, in a non intrusive way.
+
16 */
+ +
18{
+
19public:
+
20 TreeObserver(const BT::Tree& tree);
+
21 ~TreeObserver() override;
+
22
+
23 virtual void flush() override
+
24 {}
+
25
+
26 void resetStatistics();
+
27
+
28 struct NodeStatistics
+
29 {
+
30 // Last __valid__ result, either SUCCESS or FAILURE
+
31 NodeStatus last_result = NodeStatus::IDLE;
+
32 // Last status. Can be any status, including IDLE or SKIPPED
+
33 NodeStatus current_status = NodeStatus::IDLE;
+
34
+
35 // count status transitions, excluding transition to IDLE
+
36 unsigned transitions_count = 0;
+
37 // count number of transitions to SUCCESS
+
38 unsigned success_count = 0;
+
39 // count number of transitions to FAILURE
+
40 unsigned failure_count = 0;
+
41 // count number of transitions to SKIPPED
+
42 unsigned skip_count = 0;
+
43
+
44 Duration last_timestamp = {};
+
45 };
+
46
+
47 // find the statistics of a node, based on its path
+
48 const NodeStatistics& getStatistics(const std::string& path) const;
+
49
+
50 // find the statistics of a node, based on its TreeNode::UID()
+
51 const NodeStatistics& getStatistics(uint16_t uid) const;
+
52
+
53 // all statistics
+
54 const std::unordered_map<uint16_t, NodeStatistics>& statistics() const;
+
55
+
56 // path to UID map
+
57 const std::unordered_map<std::string, uint16_t>& pathToUID() const;
+
58
+
59 const std::map<uint16_t, std::string>& uidToPath() const;
+
60
+
61private:
+
62 std::unordered_map<uint16_t, NodeStatistics> _statistics;
+
63 std::unordered_map<std::string, uint16_t> _path_to_uid;
+
64 std::map<uint16_t, std::string> _uid_to_path;
+
65
+
66 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
67 NodeStatus status) override;
+
68};
+
69
+
70} // namespace BT
+
71
+
72#endif // BT_OBSERVER_H
+
Definition: abstract_logger.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
The TreeObserver is used to collect statistics about which nodes are executed and their returned stat...
Definition: bt_observer.h:18
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: bt_observer.h:29
+
+
+ + + + diff --git a/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.map b/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.map new file mode 100644 index 000000000..549ed2d50 --- /dev/null +++ b/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.md5 b/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.md5 new file mode 100644 index 000000000..32bfe97ce --- /dev/null +++ b/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.md5 @@ -0,0 +1 @@ +d3c1933dda4b55092d08d92e28fad39e \ No newline at end of file diff --git a/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.png b/d3/da4/class_b_t_1_1_entry_updated_decorator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1015518bd5c6f371f5c878420295482b9939316b GIT binary patch literal 6831 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 literal 0 HcmV?d00001 diff --git a/d3/da8/class_b_t_1_1_sub_tree_node-members.html b/d3/da8/class_b_t_1_1_sub_tree_node-members.html new file mode 100644 index 000000000..e67b60be6 --- /dev/null +++ b/d3/da8/class_b_t_1_1_sub_tree_node-members.html @@ -0,0 +1,175 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SubTreeNode Member List
+
+
+ +

This is the complete list of members for BT::SubTreeNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::SubTreeNode)BT::SubTreeNodestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setSubtreeID(const std::string &ID) (defined in BT::SubTreeNode)BT::SubTreeNodeinline
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
subtreeID() const (defined in BT::SubTreeNode)BT::SubTreeNodeinline
SubTreeNode(const std::string &name, const NodeConfig &config) (defined in BT::SubTreeNode)BT::SubTreeNode
tick() overrideBT::SubTreeNodevirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::SubTreeNode)BT::SubTreeNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~SubTreeNode() override=default (defined in BT::SubTreeNode)BT::SubTreeNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d3/db1/decorator__node_8h_source.html b/d3/db1/decorator__node_8h_source.html new file mode 100644 index 000000000..8ee221f47 --- /dev/null +++ b/d3/db1/decorator__node_8h_source.html @@ -0,0 +1,188 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorator_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
decorator_node.h
+
+
+
1#ifndef DECORATORNODE_H
+
2#define DECORATORNODE_H
+
3
+
4#include "behaviortree_cpp/tree_node.h"
+
5
+
6namespace BT
+
7{
+
8class DecoratorNode : public TreeNode
+
9{
+
10protected:
+
11 TreeNode* child_node_;
+
12
+
13public:
+
14 DecoratorNode(const std::string& name, const NodeConfig& config);
+
15
+
16 virtual ~DecoratorNode() override = default;
+
17
+
18 void setChild(TreeNode* child);
+
19
+
20 const TreeNode* child() const;
+
21
+
22 TreeNode* child();
+
23
+
24 /// The method used to interrupt the execution of this node
+
25 virtual void halt() override;
+
26
+
27 /// Same as resetChild()
+
28 void haltChild();
+
29
+
30 virtual NodeType type() const override
+
31 {
+
32 return NodeType::DECORATOR;
+
33 }
+
34
+
35 NodeStatus executeTick() override;
+
36
+
37 /// Set the status of the child to IDLE.
+
38 /// also send a halt() signal to a RUNNING child
+
39 void resetChild();
+
40};
+
41
+
42/**
+
43 * @brief The SimpleDecoratorNode provides an easy to use DecoratorNode.
+
44 * The user should simply provide a callback with this signature
+
45 *
+
46 * BT::NodeStatus functionName(BT::NodeStatus child_status)
+
47 *
+
48 * This avoids the hassle of inheriting from a DecoratorNode.
+
49 *
+
50 * Using lambdas or std::bind it is easy to pass a pointer to a method.
+
51 */
+ +
53{
+
54public:
+
55 using TickFunctor = std::function<NodeStatus(NodeStatus, TreeNode&)>;
+
56
+
57 // You must provide the function to call when tick() is invoked
+
58 SimpleDecoratorNode(const std::string& name, TickFunctor tick_functor,
+
59 const NodeConfig& config);
+
60
+
61 ~SimpleDecoratorNode() override = default;
+
62
+
63protected:
+
64 virtual NodeStatus tick() override;
+
65
+
66 TickFunctor tick_functor_;
+
67};
+
68} // namespace BT
+
69
+
70#endif
+
Definition: decorator_node.h:9
+ +
void haltChild()
Same as resetChild()
+
virtual void halt() override
The method used to interrupt the execution of this node.
+
NodeStatus executeTick() override
The method that should be used to invoke tick() and setStatus();.
+
The SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callb...
Definition: decorator_node.h:53
+
virtual NodeStatus tick() override
Method to be implemented by the user.
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d3/db1/struct_b_t_1_1_grammar_1_1_real-members.html b/d3/db1/struct_b_t_1_1_grammar_1_1_real-members.html new file mode 100644 index 000000000..4be04bee5 --- /dev/null +++ b/d3/db1/struct_b_t_1_1_grammar_1_1_real-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Real Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Real, including all inherited members.

+ + + +
rule (defined in BT::Grammar::Real)BT::Grammar::Realstatic
value (defined in BT::Grammar::Real)BT::Grammar::Realstatic
+
+ + + + diff --git a/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.map b/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.map new file mode 100644 index 000000000..bd02e5fa6 --- /dev/null +++ b/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.md5 b/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.md5 new file mode 100644 index 000000000..8a84aaa4e --- /dev/null +++ b/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.md5 @@ -0,0 +1 @@ +0621eba7239a2dd0ead1e724a187d22a \ No newline at end of file diff --git a/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.png b/d3/db3/struct_b_t_1_1_grammar_1_1_integer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..de0866eb09580209f8e5f4f3783d88aa8b6c21a0 GIT binary patch literal 4750 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 I + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/fallback_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
fallback_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/control_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The FallbackNode is used to try different strategies,
+
22 * until one succeeds.
+
23 * If any child returns RUNNING, previous children will NOT be ticked again.
+
24 *
+
25 * - If all the children return FAILURE, this node returns FAILURE.
+
26 *
+
27 * - If a child returns RUNNING, this node returns RUNNING.
+
28 *
+
29 * - If a child returns SUCCESS, stop the loop and return SUCCESS.
+
30 *
+
31 */
+
32class FallbackNode : public ControlNode
+
33{
+
34public:
+
35 FallbackNode(const std::string& name, bool make_asynch = false);
+
36
+
37 virtual ~FallbackNode() override = default;
+
38
+
39 virtual void halt() override;
+
40
+
41private:
+
42 size_t current_child_idx_;
+
43 size_t skipped_count_ = 0;
+
44 bool asynch_ = false;
+
45
+
46 virtual BT::NodeStatus tick() override;
+
47};
+
48
+
49} // namespace BT
+
Definition: control_node.h:22
+
The FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNIN...
Definition: fallback_node.h:33
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d3/dc4/class_b_t_1_1_status_change_logger-members.html b/d3/dc4/class_b_t_1_1_status_change_logger-members.html new file mode 100644 index 000000000..0949dfea2 --- /dev/null +++ b/d3/dc4/class_b_t_1_1_status_change_logger-members.html @@ -0,0 +1,121 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::StatusChangeLogger Member List
+
+
+ +

This is the complete list of members for BT::StatusChangeLogger, including all inherited members.

+ + + + + + + + + + + + + + +
callback(BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0 (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerpure virtual
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
flush()=0 (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerpure virtual
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
+
+ + + + diff --git a/d3/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1math__product-members.html b/d3/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1math__product-members.html new file mode 100644 index 000000000..7e22c6627 --- /dev/null +++ b/d3/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1math__product-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::math_product Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::math_product, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::math_product)BT::Grammar::Expression::math_productstatic
operand typedef (defined in BT::Grammar::Expression::math_product)BT::Grammar::Expression::math_product
+
+ + + + diff --git a/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.map b/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.map new file mode 100644 index 000000000..139acddc4 --- /dev/null +++ b/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.md5 b/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.md5 new file mode 100644 index 000000000..30bc40a96 --- /dev/null +++ b/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.md5 @@ -0,0 +1 @@ +58fd00d364b2e538571dd17bfa9d5447 \ No newline at end of file diff --git a/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.png b/d3/ddf/class_b_t_1_1_consume_queue__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b6392ab74d6259ceb10ac5a784f773b8849a349 GIT binary patch literal 7812 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 + + + + + + +BehaviorTree: BT::ActionNodeBase Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ActionNodeBase Class Reference
+
+
+ +

The ActionNodeBase is the base class to use to create any kind of action. A particular derived class is free to override executeTick() as needed. + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::ActionNodeBase:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for BT::ActionNodeBase:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

The ActionNodeBase is the base class to use to create any kind of action. A particular derived class is free to override executeTick() as needed.

+

Member Function Documentation

+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeType BT::ActionNodeBase::type () const
+
+inlinefinaloverridevirtual
+
+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.map b/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.map new file mode 100644 index 000000000..b942aae6c --- /dev/null +++ b/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.md5 b/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.md5 new file mode 100644 index 000000000..41428f4dc --- /dev/null +++ b/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.md5 @@ -0,0 +1 @@ +16481f5f9f00998386feeb0ebe1664fd \ No newline at end of file diff --git a/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.png b/d3/de4/class_b_t_1_1_force_failure_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ae49a6294e14ab837ab726b3dd731c5edf26d006 GIT binary patch literal 7287 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 aZWxOm);J4X>fW9tLSD+N%9Y5NeE46HoN_n- literal 0 HcmV?d00001 diff --git a/d4/d03/exceptions_8h_source.html b/d4/d03/exceptions_8h_source.html new file mode 100644 index 000000000..6ccfc918e --- /dev/null +++ b/d4/d03/exceptions_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/exceptions.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
exceptions.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#ifndef BT_EXCEPTIONS_H
+
15#define BT_EXCEPTIONS_H
+
16
+
17#include <string>
+
18#include <stdexcept>
+
19#include "utils/strcat.hpp"
+
20
+
21namespace BT
+
22{
+
23class BehaviorTreeException : public std::exception
+
24{
+
25public:
+
26 BehaviorTreeException(std::string_view message)
+
27 : message_(static_cast<std::string>(message))
+
28 {}
+
29
+
30 template <typename... SV>
+
31 BehaviorTreeException(const SV&... args) : message_(StrCat(args...))
+
32 {}
+
33
+
34 const char* what() const noexcept
+
35 {
+
36 return message_.c_str();
+
37 }
+
38
+
39private:
+
40 std::string message_;
+
41};
+
42
+
43// This errors are usually related to problems which "probably" require code refactoring
+
44// to be fixed.
+ +
46{
+
47public:
+
48 LogicError(std::string_view message) : BehaviorTreeException(message)
+
49 {}
+
50
+
51 template <typename... SV>
+
52 LogicError(const SV&... args) : BehaviorTreeException(args...)
+
53 {}
+
54};
+
55
+
56// This errors are usually related to problems that are relted to data or conditions
+
57// that happen only at run-time
+ +
59{
+
60public:
+
61 RuntimeError(std::string_view message) : BehaviorTreeException(message)
+
62 {}
+
63
+
64 template <typename... SV>
+
65 RuntimeError(const SV&... args) : BehaviorTreeException(args...)
+
66 {}
+
67};
+
68
+
69} // namespace BT
+
70
+
71#endif
+
Definition: exceptions.h:24
+
Definition: exceptions.h:46
+
Definition: exceptions.h:59
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.map b/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.map new file mode 100644 index 000000000..efd1f3d46 --- /dev/null +++ b/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.md5 b/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.md5 new file mode 100644 index 000000000..2d7f17e46 --- /dev/null +++ b/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.md5 @@ -0,0 +1 @@ +0cdcd780144c6ee29dff8da593a757fd \ No newline at end of file diff --git a/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.png b/d4/d14/class_b_t_1_1_manual_selector_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4b29a60f68cd8b6edffc788b1fb196c95ff0beb3 GIT binary patch literal 6386 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 literal 0 HcmV?d00001 diff --git a/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.map b/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.map new file mode 100644 index 000000000..ed2dc23d1 --- /dev/null +++ b/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.md5 b/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.md5 new file mode 100644 index 000000000..2d16e4908 --- /dev/null +++ b/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.md5 @@ -0,0 +1 @@ +02e3250011545877c5e6d638ecdc5bf7 \ No newline at end of file diff --git a/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.png b/d4/d17/struct_b_t_1_1_monitor_1_1_hook__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..20a66d89b65066d814f679b6ee142bde90460e0a GIT binary patch literal 4196 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 literal 0 HcmV?d00001 diff --git a/d4/d20/class_b_t_1_1_timeout_node.html b/d4/d20/class_b_t_1_1_timeout_node.html new file mode 100644 index 000000000..a3ff420f3 --- /dev/null +++ b/d4/d20/class_b_t_1_1_timeout_node.html @@ -0,0 +1,356 @@ + + + + + + + +BehaviorTree: BT::TimeoutNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TimeoutNode Class Reference
+
+
+ +

The TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time. The timeout is in milliseconds and it is passed using the port "msec". + More...

+ +

#include <timeout_node.h>

+
+Inheritance diagram for BT::TimeoutNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::TimeoutNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TimeoutNode (const std::string &name, unsigned milliseconds)
 
TimeoutNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time. The timeout is in milliseconds and it is passed using the port "msec".

+

If timeout is reached, the node returns FAILURE.

+

Example:

+

<Timeout msec="5000"> <KeepYourBreath> </Timeout>

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.map b/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.map new file mode 100644 index 000000000..63fef68bf --- /dev/null +++ b/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.md5 b/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.md5 new file mode 100644 index 000000000..936778ca1 --- /dev/null +++ b/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.md5 @@ -0,0 +1 @@ +aaf895493d13e4c72f46ecb336b2ecee \ No newline at end of file diff --git a/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.png b/d4/d20/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..89b2fbbc1bf103726872f785ccf80ab7555bfb63 GIT binary patch literal 6772 zcmch62U8PV*DVSv3Wzl6AVrEu7wJU=BvK+shakQ8DqRKC2LuG98&E*Hv`A=%A|m?G zrAZbeG`BHkH+6bm1({lA_T8Xr zCFJM6BB%U16@Ml0;`%!ETyZ+`8{<#rS&y$-eP`oE-Wdv-#pWp zZj8g!)RdyX0HQ%;z6YIGSy@Tw=-*Mfo-|naHUA|qRR(=hzI96e^VnG1KWk&dGX8~k z@7^V+rk-CKDn)yQ@GNb93@m<>UxVWn#BIS%c8100yup~J~R@T_s+S+!)`b2Zi;y|Hf$gUg7wQJW*>V51z zqaCFt!ViUMXlPs%(?lQiyq5KS{^G@ly9z$q-lSte^JvuFm`|TnU!&1O_KuE@1=<Ku(dV5!yDk5LYJnnb;V5T6gqaV6Imv-IqV|scz(|GW*aLr*-T3W{oW=R?E>8J*G z8yjxe>K8kS&HeeDt?dD17JF%aew6b-L1IcuJJy|GQs?#7tN?X0L;K^-u({fuJ9LbU z9q+W#y5dt_zwUxc)t&r3G_7%An46nh9e#`Pb#6pfRaJ!^?~EKRA|trv zs+JfAp}px?(Y=G^iu2Ue#wSvNIdZOPJ>*=PnwnOBkM#1Zn`lD4FKljBW)!uYjgua~qM-2e+E{TGx1eRn zs+8r!sWYG2+JcTYJ4SIK(g_N`$w|h?$JI16BqIKXmRsWPy0~0xJ{((zMrix;2?jii?Y@sjJg)a`tlm-8hH&aaq_bDlU!+N@-_j zcj@wF4HODh*fG4caNx4M|MzfxW@hHLwl*a!_W8?~fc;RTKdZG9J;=LvX;I?d(`r@D z1AJUjm#$vD`l+W!_qB|-s<5b#5Z&(XE;kR)Z4@IN9Zzma_E4o;d@i(YRcxS`<>|J(7H!^GYKyH&=q7?E>KXkL(8h4{5@7T zG)yrIU&YtlT<#yO$K%6))_G5-7+dP4`TF<_`ciOx_KY|*uL|AwsZqFkRb56#CVdE( z7vPKx4{z#Q^mC{R+v=A7G(2qdDkY`3N*L8(AYAeOJpqWCNK5U>RuoD~N@`kIbHy)_u2L|H+1MTLaq{Q2{g917`; z>rGjXIbp+Ygt|JJ%hyd>0PV6qv*e?rqb{}Wy}i`R%F6zP)K2B&ZMtAwc7NWT(m6VQ zU4s)2X%9A};tqY_co2UwKhojfSAtzx(iLM3etzYrkrCC*YZ^-YC$ z%ekcO<`)*`4J_6jt~Cz%C-dp#zJ2>RC*p6$%a@l(patHf5(osz@S}$!7IjwrvYDpA zVV-DWDn_zWYC@~Z&1>V|-hSrutBW})Il0^NY?fhSy`-9R8$s?0aT2Pj3jrpw1%o3@K^yMAxsgLP}Vy8}>`ndlqYpKD1c~~6Qzyz*A0~Gly25$=p3JR*Jsrd1cz$5P*s7%$X|J z5fP>1?fZTWCpcb>7fh`HRb5R@@_|C6<5+_~tX`t!9S{&ks0OB(o|!pMLD4AK)U{l_ z%{Tv9bKH2epe`T5aNsGhkw5j1Kj6xu91IhhCgYUq?#$j-uw1%CCuzJ64{ zlR=seU$W-iyZYyL7Z(?&r`uy4c9i@U?xo@1@%a1uPp^z(rhnG^<~B8rm$?x^o{UtY zVPIh3mXb20XJ9b(>%uOLmc3sVQd%`+SrHC#fjahrO%6{WR=w_dGv8 zzn+DK+v>f8s9*VeR~ID%bAnaX)X3mGN1F)|pU1|=@KYw}ey7>D&p2E#*Ciy9(jJ8G z7bxs@=OTIAACsOdWB;Vn4z~(-5U|Wth|F25v7J~cQ|e32&x+H&fcX9r!G&Ov5cHr` zHIYAEoS_|)^?6*|>D52p_ZO-fkzvR2YM!(LE5%u#hdSpszt<>6t2KBxpy^|B*%(w6 ze$ci4EYZz6{l$RdFr|3s)=ATZ($!Y{=26ljTwuT-reSovz^RQrjw;jsDl!34(T=Uy z{ktPMvx&hk*zTK*N`^#5>W*v^3RPQ2+fy=z;}?zilRy1i!m#FP;C1>Q86O!=dc>mo zx%LGiy2^Wxf9)?}RkSUV7CgJtJ^UpE%N91-KQTuOkOg!v(^rP2sQkm9$(YY9SA@uPu;8eOaT4^mH?zg=b^< zFOn;(Pl?DmMVw(-SQt=Sl7elu*iBo@W!dmlCZhzFVKw$?fThs&I z=9>?H$Ehkb8F$qNuq7SkzsxtX)7MOT`hVRBFXA>|G_Ui2n&U-YULFH? zLpTBJZrhbE4ub6q{_VE5{?YP-6K-kgG=PDPM1~kk+{2I%qHeQwbnNIs%MZC%Skyn! zEo|%Tq;R^+t(7!Aaq?F>WOwCO;lR||ny#rS^Tmr7yRsFtUcP*pUGzm%w==-gdHiD# zs2+2{l4T4qkn6KIONsd;F>ninf~3b!8UN-dPfo+QE){XKx3?B!>Ra9c1x?&Y zP>^g&N{T?tlg37Q4h{|nZ|U`!$;n6kPM^EGb&kod2?)HwVlR7odb+v0H`XA5OVqtT zyudXzHMIrwV?(sy&9lFL(bCgL>5dF)l@}FV5fw$EMyfgX_xB$@d^kBfJ7}%l(*x>K zKt!aVp@BtIR1}E0s|RIap{=fd2Gj)z5fg({G&-)dv~;vE!nc>is_)G$7sU@%%yAkP z78Y=6u0t0`@;Z`oui`8d3Jdv1%261n!J2Fx1)D*oc+^3O0i4-JI!=kGstp;^5%WxcZ&>+_`gD&xxLmskRJh zPY%B1fBsBFa7IK#>?H5cBq%#TqggbCGQ+AbGObz9u5Vr=(;VCLRy!O4!xO zX%d9!%w%h%LmX_r1B6=@1~b$0m^5^E)bYC62TfeM>u?#DtZYW{{X)w>N^sW28yDSI zh*ks}iybp(k@FM4VzCOFpXtg_jj7gcPrWy%)#1QUx9m|YeDvpzj+uppuf57AT?EhO z?yreFps1Z0k}o}xavc^6STV`X%hRKehDnVH+HwGGr4=5oG~b)!2pVT$Cm0j~(MJWd z6NCmNGPHU5_#{Al+t}EU>>W;==z_ZfA9F1xw`i4)lQRK_Q*`Xjo{OYbvO3sa1flXF z$U2gz)8Q@3OG`=LJZKJg3G(m|0T90}DT#Ugn(d~? z&!SYF%o~U>J*m>Nvizc==XktXXlQ7i-(r&K{^x(_hD21XtggtR;}OYxr*v#NpgDlO z8gWQRZztRJB2=bSZHSh)xA*q)NWv-7vy~u$Kre#Xu%7!j#Q`Pv=vy*>Y2@!WZ>~J0 zWL7mZ%gm$~wgpUH;pcxgig7HJMzXQ97nhda@3;x|Ws?th0WE4P#*{AO&E5B^Z#Bhv zZhrp0fq~ubQyOMwguXtly1M$q;NX&xmho|pM{p7SeSIp>JEi5$#ykI}tCF|!=Y*=N zs-6~Y+Ow&RCs?!saqO&vaVEAXpyxj}1?xG=|Fj@5-L@lM+-p(=FaqP(vqs0a?KCh6 z8jUtRG1Q}n`)#aAxa#ecCfq-so|^#-1A-Sm9lOu>4yQG@u;3JMr_^2>(0p5u{vw-< z6*eI!hZCeJxVb8qp=%(GMzQX!ux0HWB{Y;G(4@f7&@fsT9D1ZvJjUKlxP!Ob-BTh1 z?@pmb+`bc@(NTWH;f8ilz#Hqfp?4eV(nC$H&M2z~g_91y0Z~F=++_+&o9kVF!FUR^i1+JV*`22gQPo-@iY# zw@1G>uLT*~)|DYy4`SaG<3QE+jC#IDe%+u}M@OgKN^Ej|z5|?ARc-Bjy!@JzBnODX zwZ?U&zXv1D628B*DbJD`ms?C7t~Wall^ELD+iwmTKcHb@iD|W(++G|2#>pF5t_P>x zXm1824-}P{p04TVcLT_fT|Pj}9e)Gk;pe%Sm|wSwC4la?17?L5!C)jM9eWJcc|Xj~ z%nU5uMBO2EcWUU|UMj8lef(#__wP{4pnLmD*_{#%wU=$3_{XIV1TEX=C zz!a2_kl5JTvTc2G#^C{<%b&%O3QkA^95$Uj3UD4>6IR#IuyJ+O3JX)z zN)s{sgQ~VW|BRZ`VX#PVNh)1FP~_dacWg?bOh_d1vWP`dygWX}8Ab{vvqTiQEpKps z0O-Br^@xP`?}drwdwh;#68P!0oPW%%$g@PVZewdZV9k8Pztt>Y9oG0d)%Hv_=r?an zE`(U>PEJmZtM3FZz+0u4hb=1tI3*ekn=dt{lv(03nI#=Q$WN{=i=Z0RpczY_y_o&U zPt?uc6t1NqygT2=3e8OcwL3dIAU@jgZ$G#~u%(@?FzQwkx2^m;IrkaE<;$62gmB4* z(EaN6`(7UE5`qm=(Dy52jU#w#6P*X|n^%n8XDwQR#y>7WCuhs&!3Y+v41oMiURh)qR}!l7mv#$b#&%nVUoJKI5V?BD@Uzct@GQ1L(+ z23SE4rMpO=pC7NVaNMIuBn8MET{AP5js(ua>S|iJYHn`suCXi6qhv4mz(>E?|e^9Nkr!zvhZ&Q+JA~08ZyC4 z!f?P_h+MxuyIj%Cr>vaQ*LM$&N;HqG(jK2jM$*7e$Fs|SX$m_Ww7tkK_X>a_4qD+$ zJbNecIUm^2(~Ime6%`c?I=&L`^7CJ2WFVZJ1hTWU-F{R)uCA`uUG8JE4Gxxj`}Qqh zf@uGDGM+#x7_jyep`mdW5(pc(zx;xN->v63y$J5LfT4e*DHtElqXP#Qhrx2WjWwi9 zPFj75W9@*wfL1cvEsjjM6i&brV+7k_j@ z0yPXy1puJC2q`qK8v2lqjjaoSy}wft@jg7r(8%Zu&}aR6(;*3fiiz^9e?(+!%kX>i z3|U`34-XG`21J>eqU^%*a;Xwx_~=vj*RNt(mi-*?vhVM-VDwhmcIX3tN>7BgeTt@d zTo80ic%9{V)iYuSQZPrDqbdV84!|I0U>tiT9J-ix*Ty=*s6xVcE;D>~4RWZeI#lz~ zZ!L$e^jii7^dvAm43)hJr6;1O9K;2jrDuTmht5Z%7Ca##ArKOD4LdtNH!?KzUg+b3 z3KzkAZEDI+N}`3a((UlsMM~L)(Dm(GakpbJVS0Vt^X8)Xl`AbPi=TkuOCu<_zV`O= zi;4A>T?B>66sMt)z@Y;<*XZD-$X2V(SK(Y_pgP_=OznO)h{-a|LBuQ%^_LN-m5(l| z>ycAYwSW8e&-d^8N(T!(+I)0!=yEN|0AWKEYRsj6j#p-N+Ye_sac!!kq{Pe5&kbWi zZXIwDtvlk<;P3AKKKKX}IV1t24rMsKldM}g%=bZTZ|)L2OPi@mP)!^Vc>z;G-l7WW zN_~C3!yG%#s(b|c;p;c&gT%R*mU4QPPlLmG67Ny>#D zfj}%_*e4=R6s4r3mj05SrMv=(B6}p{(@%f@_Nh4nLbsY|3UjeBG&TlB#{4F5DME5V zGKU^b^`W8z6rC2xBCzfSA3s{)C$dS&8i3i8t&%heNR^BPC z_odeR&R2WSXc(25JdTZ}0CG?`SjbyKQg)-|)0&UwM9WO7PQwU!4Usg*MvjF21?8g+ zQX%7VwTh9M>1mr`T&ASsMPj}yWK>2J`LEK_wifadu%;(XK7WdPyOQ1)7jwzWXFrMIdyiK1D+>YzN~;^HSW0PGvTzL11NIWHdcD zH&oI)@#DvHFg`s!@u0 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ReactiveSequence Member List
+
+
+ +

This is the complete list of members for BT::ReactiveSequence, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
EnableException(bool enable)BT::ReactiveSequencestatic
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
ReactiveSequence(const std::string &name) (defined in BT::ReactiveSequence)BT::ReactiveSequenceinline
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d4/d37/class_b_t_1_1_unset_blackboard_node-members.html b/d4/d37/class_b_t_1_1_unset_blackboard_node-members.html new file mode 100644 index 000000000..8a3f05728 --- /dev/null +++ b/d4/d37/class_b_t_1_1_unset_blackboard_node-members.html @@ -0,0 +1,169 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::UnsetBlackboardNode Member List
+
+
+ +

This is the complete list of members for BT::UnsetBlackboardNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::UnsetBlackboardNode)BT::UnsetBlackboardNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
UnsetBlackboardNode(const std::string &name, const NodeConfig &config) (defined in BT::UnsetBlackboardNode)BT::UnsetBlackboardNodeinline
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d4/d3d/class_b_t_1_1_threaded_action-members.html b/d4/d3d/class_b_t_1_1_threaded_action-members.html new file mode 100644 index 000000000..c0f8a78ef --- /dev/null +++ b/d4/d3d/class_b_t_1_1_threaded_action-members.html @@ -0,0 +1,168 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ThreadedAction Member List
+
+
+ +

This is the complete list of members for BT::ThreadedAction, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() override finalBT::ThreadedActionvirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::ThreadedActionvirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
isHaltRequested() const (defined in BT::ThreadedAction)BT::ThreadedActioninline
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
ThreadedAction(const std::string &name, const NodeConfig &config) (defined in BT::ThreadedAction)BT::ThreadedActioninline
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.map b/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.map new file mode 100644 index 000000000..bd02e5fa6 --- /dev/null +++ b/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.md5 b/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.md5 new file mode 100644 index 000000000..8a84aaa4e --- /dev/null +++ b/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.md5 @@ -0,0 +1 @@ +0621eba7239a2dd0ead1e724a187d22a \ No newline at end of file diff --git a/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.png b/d4/d47/struct_b_t_1_1_grammar_1_1_integer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..de0866eb09580209f8e5f4f3783d88aa8b6c21a0 GIT binary patch literal 4750 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 I + + + diff --git a/d4/d4f/class_b_t_1_1_file_logger2__coll__graph.md5 b/d4/d4f/class_b_t_1_1_file_logger2__coll__graph.md5 new file mode 100644 index 000000000..04dab68b2 --- /dev/null +++ b/d4/d4f/class_b_t_1_1_file_logger2__coll__graph.md5 @@ -0,0 +1 @@ +d18523b01916e8bd90074560915f4601 \ No newline at end of file diff --git a/d4/d4f/class_b_t_1_1_file_logger2__coll__graph.png b/d4/d4f/class_b_t_1_1_file_logger2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a13ab210578c1191b556db23727f86af445808b8 GIT binary patch literal 4823 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 literal 0 HcmV?d00001 diff --git a/d4/d53/safe__any_8hpp_source.html b/d4/d53/safe__any_8hpp_source.html new file mode 100644 index 000000000..ce982f068 --- /dev/null +++ b/d4/d53/safe__any_8hpp_source.html @@ -0,0 +1,648 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/safe_any.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
safe_any.hpp
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#if __has_include(<charconv>)
+
16#include <charconv>
+
17#endif
+
18
+
19#include <string>
+
20#include <type_traits>
+
21#include <typeindex>
+
22
+
23#include "behaviortree_cpp/contrib/any.hpp"
+
24#include "behaviortree_cpp/contrib/expected.hpp"
+
25#include "behaviortree_cpp/utils/demangle_util.h"
+
26#include "behaviortree_cpp/utils/convert_impl.hpp"
+
27#include "behaviortree_cpp/utils/strcat.hpp"
+
28
+
29namespace BT
+
30{
+
31
+
32static std::type_index UndefinedAnyType = typeid(nullptr);
+
33
+
34// Rational: since type erased numbers will always use at least 8 bytes
+
35// it is faster to cast everything to either double, uint64_t or int64_t.
+
36class Any
+
37{
+
38 template <typename T>
+
39 using EnableIntegral = typename std::enable_if<std::is_integral<T>::value ||
+
40 std::is_enum<T>::value>::type*;
+
41
+
42 template <typename T>
+
43 using EnableNonIntegral = typename std::enable_if<!std::is_integral<T>::value &&
+
44 !std::is_enum<T>::value>::type*;
+
45
+
46 template <typename T>
+
47 using EnableString =
+
48 typename std::enable_if<std::is_same<T, std::string>::value>::type*;
+
49
+
50 template <typename T>
+
51 using EnableArithmetic = typename std::enable_if<std::is_arithmetic<T>::value>::type*;
+
52
+
53 template <typename T>
+
54 using EnableEnum = typename std::enable_if<std::is_enum<T>::value>::type*;
+
55
+
56 template <typename T>
+
57 using EnableUnknownType =
+
58 typename std::enable_if<!std::is_arithmetic<T>::value && !std::is_enum<T>::value &&
+
59 !std::is_same<T, std::string>::value>::type*;
+
60
+
61 template <typename T>
+
62 nonstd::expected<T, std::string> stringToNumber() const;
+
63
+
64public:
+
65 Any() : _original_type(UndefinedAnyType)
+
66 {}
+
67
+
68 ~Any() = default;
+
69
+
70 Any(const Any& other) : _any(other._any), _original_type(other._original_type)
+
71 {}
+
72
+
73 Any(Any&& other) : _any(std::move(other._any)), _original_type(other._original_type)
+
74 {}
+
75
+
76 explicit Any(const double& value) : _any(value), _original_type(typeid(double))
+
77 {}
+
78
+
79 explicit Any(const uint64_t& value) : _any(value), _original_type(typeid(uint64_t))
+
80 {}
+
81
+
82 explicit Any(const float& value) : _any(double(value)), _original_type(typeid(float))
+
83 {}
+
84
+
85 explicit Any(const std::string& str)
+
86 : _any(SafeAny::SimpleString(str)), _original_type(typeid(std::string))
+
87 {}
+
88
+
89 explicit Any(const char* str)
+
90 : _any(SafeAny::SimpleString(str)), _original_type(typeid(std::string))
+
91 {}
+
92
+
93 explicit Any(const SafeAny::SimpleString& str)
+
94 : _any(str), _original_type(typeid(std::string))
+
95 {}
+
96
+
97 explicit Any(const std::string_view& str)
+
98 : _any(SafeAny::SimpleString(str)), _original_type(typeid(std::string))
+
99 {}
+
100
+
101 // all the other integrals are casted to int64_t
+
102 template <typename T>
+
103 explicit Any(const T& value, EnableIntegral<T> = 0)
+
104 : _any(int64_t(value)), _original_type(typeid(T))
+
105 {}
+
106
+
107 Any(const std::type_index& type) : _original_type(type)
+
108 {}
+
109
+
110 // default for other custom types
+
111 template <typename T>
+
112 explicit Any(const T& value, EnableNonIntegral<T> = 0)
+
113 : _any(value), _original_type(typeid(T))
+
114 {
+
115 static_assert(!std::is_reference<T>::value, "Any can not contain references");
+
116 }
+
117
+
118 Any& operator=(const Any& other);
+
119
+
120 [[nodiscard]] bool isNumber() const;
+
121
+
122 [[nodiscard]] bool isIntegral() const;
+
123
+
124 [[nodiscard]] bool isString() const
+
125 {
+
126 return _any.type() == typeid(SafeAny::SimpleString);
+
127 }
+
128
+
129 // check is the original type is equal to T
+
130 template <typename T>
+
131 [[nodiscard]] bool isType() const
+
132 {
+
133 return _original_type == typeid(T);
+
134 }
+
135
+
136 // copy the value (casting into dst). We preserve the destination type.
+
137 void copyInto(Any& dst) const;
+
138
+
139 // this is different from any_cast, because if allows safe
+
140 // conversions between arithmetic values and from/to string.
+
141 template <typename T>
+
142 nonstd::expected<T, std::string> tryCast() const;
+
143
+
144 // same as tryCast, but throws if fails
+
145 template <typename T>
+
146 [[nodiscard]] T cast() const
+
147 {
+
148 if(auto res = tryCast<T>())
+
149 {
+
150 return res.value();
+
151 }
+
152 else
+
153 {
+
154 throw std::runtime_error(res.error());
+
155 }
+
156 }
+
157
+
158 // Method to access the value by pointer.
+
159 // It will return nullptr, if the user try to cast it to a
+
160 // wrong type or if Any was empty.
+
161 template <typename T>
+
162 [[nodiscard]] T* castPtr()
+
163 {
+
164 static_assert(!std::is_same_v<T, float>, "The value has been casted internally to "
+
165 "[double]. Use that instead");
+
166
+
167 return _any.empty() ? nullptr : linb::any_cast<T>(&_any);
+
168 }
+
169
+
170 // This is the original type
+
171 [[nodiscard]] const std::type_index& type() const noexcept
+
172 {
+
173 return _original_type;
+
174 }
+
175
+
176 // This is the type we casted to, internally
+
177 [[nodiscard]] const std::type_info& castedType() const noexcept
+
178 {
+
179 return _any.type();
+
180 }
+
181
+
182 [[nodiscard]] bool empty() const noexcept
+
183 {
+
184 return _any.empty();
+
185 }
+
186
+
187private:
+
188 linb::any _any;
+
189 std::type_index _original_type;
+
190
+
191 //----------------------------
+
192
+
193 template <typename DST>
+
194 nonstd::expected<DST, std::string> convert(EnableString<DST> = 0) const;
+
195
+
196 template <typename DST>
+
197 nonstd::expected<DST, std::string> convert(EnableArithmetic<DST> = nullptr) const;
+
198
+
199 template <typename DST>
+
200 nonstd::expected<DST, std::string> convert(EnableEnum<DST> = 0) const;
+
201
+
202 template <typename DST>
+
203 nonstd::expected<DST, std::string> convert(EnableUnknownType<DST> = 0) const
+
204 {
+
205 return nonstd::make_unexpected(errorMsg<DST>());
+
206 }
+
207
+
208 template <typename T>
+
209 std::string errorMsg() const
+
210 {
+
211 return StrCat("[Any::convert]: no known safe conversion between [", demangle(type()),
+
212 "] and [", demangle(typeid(T)), "]");
+
213 }
+
214};
+
215
+
216//-------------------------------------------------------------
+
217//-------------------------------------------------------------
+
218//-------------------------------------------------------------
+
219
+
220template <typename SRC, typename TO>
+
221inline bool ValidCast(const SRC& val)
+
222{
+
223 // First check numeric limits
+
224 if constexpr(std::is_arithmetic_v<SRC> && std::is_arithmetic_v<TO>)
+
225 {
+
226 // Handle conversion to floating point
+
227 if constexpr(std::is_floating_point_v<TO>)
+
228 {
+
229 if constexpr(std::is_integral_v<SRC>)
+
230 {
+
231 // For integral to float, check if we can represent the value exactly
+
232 TO as_float = static_cast<TO>(val);
+
233 SRC back_conv = static_cast<SRC>(as_float);
+
234 return back_conv == val;
+
235 }
+
236 }
+
237 // Handle conversion to integral
+
238 else if constexpr(std::is_integral_v<TO>)
+
239 {
+
240 if(val > static_cast<SRC>(std::numeric_limits<TO>::max()) ||
+
241 val < static_cast<SRC>(std::numeric_limits<TO>::lowest()))
+
242 {
+
243 return false;
+
244 }
+
245 }
+
246 }
+
247
+
248 TO as_target = static_cast<TO>(val);
+
249 SRC back_to_source = static_cast<SRC>(as_target);
+
250 return val == back_to_source;
+
251}
+
252
+
253template <typename T>
+
254inline bool isCastingSafe(const std::type_index& type, const T& val)
+
255{
+
256 if(type == typeid(T))
+
257 {
+
258 return true;
+
259 }
+
260
+
261 if(std::type_index(typeid(uint8_t)) == type)
+
262 {
+
263 return ValidCast<T, uint8_t>(val);
+
264 }
+
265 if(std::type_index(typeid(uint16_t)) == type)
+
266 {
+
267 return ValidCast<T, uint16_t>(val);
+
268 }
+
269 if(std::type_index(typeid(uint32_t)) == type)
+
270 {
+
271 return ValidCast<T, uint32_t>(val);
+
272 }
+
273 if(std::type_index(typeid(uint64_t)) == type)
+
274 {
+
275 return ValidCast<T, uint64_t>(val);
+
276 }
+
277 //------------
+
278 if(std::type_index(typeid(int8_t)) == type)
+
279 {
+
280 return ValidCast<T, int8_t>(val);
+
281 }
+
282 if(std::type_index(typeid(int16_t)) == type)
+
283 {
+
284 return ValidCast<T, int16_t>(val);
+
285 }
+
286 if(std::type_index(typeid(int32_t)) == type)
+
287 {
+
288 return ValidCast<T, int32_t>(val);
+
289 }
+
290 if(std::type_index(typeid(int64_t)) == type)
+
291 {
+
292 return ValidCast<T, int64_t>(val);
+
293 }
+
294 //------------
+
295 if(std::type_index(typeid(float)) == type)
+
296 {
+
297 return ValidCast<T, float>(val);
+
298 }
+
299 if(std::type_index(typeid(double)) == type)
+
300 {
+
301 return ValidCast<T, double>(val);
+
302 }
+
303 return false;
+
304}
+
305
+
306inline Any& Any::operator=(const Any& other)
+
307{
+
308 this->_any = other._any;
+
309 this->_original_type = other._original_type;
+
310 return *this;
+
311}
+
312
+
313inline bool Any::isNumber() const
+
314{
+
315 return _any.type() == typeid(int64_t) || _any.type() == typeid(uint64_t) ||
+
316 _any.type() == typeid(double);
+
317}
+
318
+
319inline bool Any::isIntegral() const
+
320{
+
321 return _any.type() == typeid(int64_t) || _any.type() == typeid(uint64_t);
+
322}
+
323
+
324inline void Any::copyInto(Any& dst) const
+
325{
+
326 if(dst.empty())
+
327 {
+
328 dst = *this;
+
329 return;
+
330 }
+
331
+
332 const auto& dst_type = dst.castedType();
+
333
+
334 if((castedType() == dst_type) || (isString() && dst.isString()))
+
335 {
+
336 dst._any = _any;
+
337 }
+
338 else if(isNumber() && dst.isNumber())
+
339 {
+
340 if(dst_type == typeid(int64_t))
+
341 {
+
342 dst._any = cast<int64_t>();
+
343 }
+
344 else if(dst_type == typeid(uint64_t))
+
345 {
+
346 dst._any = cast<uint64_t>();
+
347 }
+
348 else if(dst_type == typeid(double))
+
349 {
+
350 dst._any = cast<double>();
+
351 }
+
352 else
+
353 {
+
354 throw std::runtime_error("Any::copyInto fails");
+
355 }
+
356 }
+
357 else
+
358 {
+
359 throw std::runtime_error("Any::copyInto fails");
+
360 }
+
361}
+
362
+
363template <typename DST>
+
364inline nonstd::expected<DST, std::string> Any::convert(EnableString<DST>) const
+
365{
+
366 const auto& type = _any.type();
+
367
+
368 if(type == typeid(SafeAny::SimpleString))
+
369 {
+
370 return linb::any_cast<SafeAny::SimpleString>(_any).toStdString();
+
371 }
+
372 else if(type == typeid(int64_t))
+
373 {
+
374 return std::to_string(linb::any_cast<int64_t>(_any));
+
375 }
+
376 else if(type == typeid(uint64_t))
+
377 {
+
378 return std::to_string(linb::any_cast<uint64_t>(_any));
+
379 }
+
380 else if(type == typeid(double))
+
381 {
+
382 return std::to_string(linb::any_cast<double>(_any));
+
383 }
+
384
+
385 return nonstd::make_unexpected(errorMsg<DST>());
+
386}
+
387
+
388template <typename T>
+
389inline nonstd::expected<T, std::string> Any::stringToNumber() const
+
390{
+
391 static_assert(std::is_arithmetic_v<T> && !std::is_same_v<T, bool>, "Expecting a "
+
392 "numeric type");
+
393
+
394 const auto str = linb::any_cast<SafeAny::SimpleString>(_any);
+
395#if __cpp_lib_to_chars >= 201611L
+
396 T out;
+
397 auto [ptr, err] = std::from_chars(str.data(), str.data() + str.size(), out);
+
398 if(err == std::errc())
+
399 {
+
400 return out;
+
401 }
+
402 else
+
403 {
+
404 return nonstd::make_unexpected("Any failed string to number conversion");
+
405 }
+
406#else
+
407 try
+
408 {
+
409 if constexpr(std::is_same_v<T, uint16_t>)
+
410 {
+
411 return std::stoul(str.toStdString());
+
412 }
+
413 if constexpr(std::is_integral_v<T>)
+
414 {
+
415 const int64_t val = std::stol(str.toStdString());
+
416 Any temp_any(val);
+
417 return temp_any.convert<T>();
+
418 }
+
419 if constexpr(std::is_floating_point_v<T>)
+
420 {
+
421 return std::stod(str.toStdString());
+
422 }
+
423 }
+
424 catch(...)
+
425 {
+
426 return nonstd::make_unexpected("Any failed string to number conversion");
+
427 }
+
428#endif
+
429 return nonstd::make_unexpected("Any conversion from string failed");
+
430}
+
431
+
432template <typename DST>
+
433inline nonstd::expected<DST, std::string> Any::convert(EnableEnum<DST>) const
+
434{
+
435 using SafeAny::details::convertNumber;
+
436
+
437 const auto& type = _any.type();
+
438
+
439 if(type == typeid(int64_t))
+
440 {
+
441 auto out = linb::any_cast<int64_t>(_any);
+
442 return static_cast<DST>(out);
+
443 }
+
444 else if(type == typeid(uint64_t))
+
445 {
+
446 auto out = linb::any_cast<uint64_t>(_any);
+
447 return static_cast<DST>(out);
+
448 }
+
449
+
450 return nonstd::make_unexpected(errorMsg<DST>());
+
451}
+
452
+
453template <typename DST>
+
454inline nonstd::expected<DST, std::string> Any::convert(EnableArithmetic<DST>) const
+
455{
+
456 using SafeAny::details::convertNumber;
+
457 DST out;
+
458
+
459 const auto& type = _any.type();
+
460
+
461 if(type == typeid(int64_t))
+
462 {
+
463 convertNumber<int64_t, DST>(linb::any_cast<int64_t>(_any), out);
+
464 }
+
465 else if(type == typeid(uint64_t))
+
466 {
+
467 convertNumber<uint64_t, DST>(linb::any_cast<uint64_t>(_any), out);
+
468 }
+
469 else if(type == typeid(double))
+
470 {
+
471 convertNumber<double, DST>(linb::any_cast<double>(_any), out);
+
472 }
+
473 else
+
474 {
+
475 return nonstd::make_unexpected(errorMsg<DST>());
+
476 }
+
477 return out;
+
478}
+
479
+
480template <typename T>
+
481inline nonstd::expected<T, std::string> Any::tryCast() const
+
482{
+
483 static_assert(!std::is_reference<T>::value, "Any::cast uses value semantic, "
+
484 "can not cast to reference");
+
485
+
486 if(_any.empty())
+
487 {
+
488 throw std::runtime_error("Any::cast failed because it is empty");
+
489 }
+
490
+
491 if(castedType() == typeid(T))
+
492 {
+
493 return linb::any_cast<T>(_any);
+
494 }
+
495
+
496 // special case when the output is an enum.
+
497 // We will try first a int convertion
+
498 if constexpr(std::is_enum_v<T>)
+
499 {
+
500 if(isNumber())
+
501 {
+
502 return static_cast<T>(convert<int>().value());
+
503 }
+
504 if(isString())
+
505 {
+
506 if(auto out = stringToNumber<int64_t>())
+
507 {
+
508 return static_cast<T>(out.value());
+
509 }
+
510 }
+
511 return nonstd::make_unexpected("Any::cast failed to cast to enum type");
+
512 }
+
513
+
514 if(isString())
+
515 {
+
516 if constexpr(std::is_arithmetic_v<T> && !std::is_same_v<T, bool>)
+
517 {
+
518 if(auto out = stringToNumber<T>())
+
519 {
+
520 return out.value();
+
521 }
+
522 else
+
523 {
+
524 return out;
+
525 }
+
526 }
+
527 }
+
528
+
529 if(auto res = convert<T>())
+
530 {
+
531 return res.value();
+
532 }
+
533 else
+
534 {
+
535 return res;
+
536 }
+
537}
+
538
+
539} // end namespace BT
+
Definition: safe_any.hpp:37
+
Definition: simple_string.hpp:19
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d4/d56/class_b_t_1_1_delay_node.html b/d4/d56/class_b_t_1_1_delay_node.html new file mode 100644 index 000000000..e8d0380cc --- /dev/null +++ b/d4/d56/class_b_t_1_1_delay_node.html @@ -0,0 +1,389 @@ + + + + + + + +BehaviorTree: BT::DelayNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The delay node will introduce a delay and then tick the child returning the status of the child as it is upon completion The delay is in milliseconds and it is passed using the port "delay_msec". + More...

+ +

#include <delay_node.h>

+
+Inheritance diagram for BT::DelayNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::DelayNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DelayNode (const std::string &name, unsigned milliseconds)
 
DelayNode (const std::string &name, const NodeConfig &config)
 
void halt () override
 The method used to interrupt the execution of this node.
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The delay node will introduce a delay and then tick the child returning the status of the child as it is upon completion The delay is in milliseconds and it is passed using the port "delay_msec".

+

During the delay the node changes status to RUNNING

+

Example:

+

<Delay delay_msec="5000"> <KeepYourBreath> </Delay>

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::DelayNode::halt ()
+
+overridevirtual
+
+ +

The method used to interrupt the execution of this node.

+ +

Reimplemented from BT::DecoratorNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d4/d56/class_b_t_1_1_delay_node.js b/d4/d56/class_b_t_1_1_delay_node.js new file mode 100644 index 000000000..1ed007803 --- /dev/null +++ b/d4/d56/class_b_t_1_1_delay_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_delay_node = +[ + [ "halt", "d4/d56/class_b_t_1_1_delay_node.html#ac1442f8346a289ae98dd82be5e0c85a6", null ] +]; \ No newline at end of file diff --git a/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.map b/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.map new file mode 100644 index 000000000..ea6d63223 --- /dev/null +++ b/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.md5 b/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.md5 new file mode 100644 index 000000000..e961d9a3e --- /dev/null +++ b/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.md5 @@ -0,0 +1 @@ +34ac040fc26d1c1f3d59750b6f7ef381 \ No newline at end of file diff --git a/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.png b/d4/d58/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..55844c86dc7a77984157ef556bdc680c0a4f7178 GIT binary patch literal 5682 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 + + + + + diff --git a/d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.md5 b/d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.md5 new file mode 100644 index 000000000..95df5d8ac --- /dev/null +++ b/d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.md5 @@ -0,0 +1 @@ +22c6d5d72520bf209875d6fae36f9a33 \ No newline at end of file diff --git a/d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.png b/d4/d63/class_b_t_1_1_coro_action_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8c5927e87fb38934903c03623b528c219f9947a1 GIT binary patch literal 8382 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ForceSuccessNode Member List
+
+
+ +

This is the complete list of members for BT::ForceSuccessNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
ForceSuccessNode(const std::string &name) (defined in BT::ForceSuccessNode)BT::ForceSuccessNodeinline
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.map b/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.map new file mode 100644 index 000000000..9a451f166 --- /dev/null +++ b/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.md5 b/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.md5 new file mode 100644 index 000000000..1dd9129c1 --- /dev/null +++ b/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.md5 @@ -0,0 +1 @@ +c544bdffe1e2a5da1756c6dbb399e538 \ No newline at end of file diff --git a/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.png b/d4/d6b/class_b_t_1_1_simple_condition_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eaed9e197b2eb71f7f02dde7bca03cd6aa6d8c22 GIT binary patch literal 8614 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 + + + diff --git a/d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.md5 b/d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.md5 new file mode 100644 index 000000000..b93eed766 --- /dev/null +++ b/d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.md5 @@ -0,0 +1 @@ +4d63764b7c26ed40eb2af2e626275b5c \ No newline at end of file diff --git a/d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.png b/d4/d6b/struct_b_t_1_1has__static__method__metadata__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..36cd58f0b98aa51d9788003c6acd1275fde7b7f3 GIT binary patch literal 6722 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 T8Uy%H2uoH{QKC@X@ZEm^((0J{ literal 0 HcmV?d00001 diff --git a/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.map b/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.map new file mode 100644 index 000000000..231248f34 --- /dev/null +++ b/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.md5 b/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.md5 new file mode 100644 index 000000000..461314c41 --- /dev/null +++ b/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.md5 @@ -0,0 +1 @@ +6cca32f55a9e4641f7af4c9c268ee0bc \ No newline at end of file diff --git a/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.png b/d4/d78/class_b_t_1_1_reactive_sequence__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a14b6f595d85f0e1fdd8fd8774a2dfa3918d0458 GIT binary patch literal 13165 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::LogicError Member List
+
+
+ +

This is the complete list of members for BT::LogicError, including all inherited members.

+ + + + + + +
BehaviorTreeException(std::string_view message) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
BehaviorTreeException(const SV &... args) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
LogicError(std::string_view message) (defined in BT::LogicError)BT::LogicErrorinline
LogicError(const SV &... args) (defined in BT::LogicError)BT::LogicErrorinline
what() const noexcept (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
+
+ + + + diff --git a/d4/d8c/class_b_t_1_1_force_failure_node.html b/d4/d8c/class_b_t_1_1_force_failure_node.html new file mode 100644 index 000000000..6c9b8f72d --- /dev/null +++ b/d4/d8c/class_b_t_1_1_force_failure_node.html @@ -0,0 +1,343 @@ + + + + + + + +BehaviorTree: BT::ForceFailureNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ForceFailureNode Class Reference
+
+
+ +

The ForceFailureNode returns always FAILURE or RUNNING. + More...

+ +

#include <force_failure_node.h>

+
+Inheritance diagram for BT::ForceFailureNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ForceFailureNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ForceFailureNode (const std::string &name)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The ForceFailureNode returns always FAILURE or RUNNING.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d4/d98/class_b_t_1_1_locked_ptr.html b/d4/d98/class_b_t_1_1_locked_ptr.html new file mode 100644 index 000000000..53c649f0a --- /dev/null +++ b/d4/d98/class_b_t_1_1_locked_ptr.html @@ -0,0 +1,162 @@ + + + + + + + +BehaviorTree: BT::LockedPtr< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::LockedPtr< T > Class Template Reference
+
+
+ +

The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object. + More...

+ +

#include <locked_reference.hpp>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LockedPtr (T *obj, std::mutex *obj_mutex)
 
LockedPtr (LockedPtr const &)=delete
 
+LockedPtroperator= (LockedPtr const &)=delete
 
LockedPtr (LockedPtr &&other)
 
+LockedPtroperator= (LockedPtr &&other)
 
operator bool () const
 
+void lock ()
 
+void unlock ()
 
+const T * get () const
 
+const T * operator-> () const
 
+T * operator-> ()
 
+template<typename OtherT >
void assign (const OtherT &other)
 
+

Detailed Description

+
template<typename T>
+class BT::LockedPtr< T >

The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object.

+

As long as the object remains in scope, the mutex is locked, therefore you must destroy this instance as soon as the pointer was used.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.map b/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.map new file mode 100644 index 000000000..4526071cb --- /dev/null +++ b/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.md5 b/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.md5 new file mode 100644 index 000000000..451dcf168 --- /dev/null +++ b/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.md5 @@ -0,0 +1 @@ +568bbda06f1c81420e359ea4e1d7efb9 \ No newline at end of file diff --git a/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.png b/d4/d9d/class_b_t_1_1_repeat_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c80e21c15a692514662a424b649b27054322fb5 GIT binary patch literal 6208 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 KP$d82-G2elQcx`b literal 0 HcmV?d00001 diff --git a/d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html b/d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html new file mode 100644 index 000000000..124567124 --- /dev/null +++ b/d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: BT::Grammar::Integer::integer Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Integer::integer Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr auto rule = dsl::sign + dsl::integer<int64_t>
 
+static constexpr auto value = lexy::as_integer<int64_t>
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d4/dac/script__condition_8h_source.html b/d4/dac/script__condition_8h_source.html new file mode 100644 index 000000000..5d2af1c9a --- /dev/null +++ b/d4/dac/script__condition_8h_source.html @@ -0,0 +1,190 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/script_condition.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
script_condition.h
+
+
+
1/* Copyright (C) 2023 Davide Faconti - All Rights Reserved
+
2 *
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/condition_node.h"
+
17#include "behaviortree_cpp/scripting/script_parser.hpp"
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * @brief Execute a script, and if the result is true, return
+
23 * SUCCESS, FAILURE otherwise.
+
24 */
+
25class ScriptCondition : public ConditionNode
+
26{
+
27public:
+
28 ScriptCondition(const std::string& name, const NodeConfig& config)
+
29 : ConditionNode(name, config)
+
30 {
+
31 setRegistrationID("ScriptCondition");
+
32 loadExecutor();
+
33 }
+
34
+
35 static PortsList providedPorts()
+
36 {
+
37 return { InputPort("code", "Piece of code that can be parsed. Must return false or "
+
38 "true") };
+
39 }
+
40
+
41private:
+
42 virtual BT::NodeStatus tick() override
+
43 {
+
44 loadExecutor();
+
45
+
46 Ast::Environment env = { config().blackboard, config().enums };
+
47 auto result = _executor(env);
+
48 return (result.cast<bool>()) ? NodeStatus::SUCCESS : NodeStatus::FAILURE;
+
49 }
+
50
+
51 void loadExecutor()
+
52 {
+
53 std::string script;
+
54 if(!getInput("code", script))
+
55 {
+
56 throw RuntimeError("Missing port [code] in ScriptCondition");
+
57 }
+
58 if(script == _script)
+
59 {
+
60 return;
+
61 }
+
62 auto executor = ParseScript(script);
+
63 if(!executor)
+
64 {
+
65 throw RuntimeError(executor.error());
+
66 }
+
67 else
+
68 {
+
69 _executor = executor.value();
+
70 _script = script;
+
71 }
+
72 }
+
73
+
74 std::string _script;
+
75 ScriptFunction _executor;
+
76};
+
77
+
78} // namespace BT
+
Definition: condition_node.h:22
+
Execute a script, and if the result is true, return SUCCESS, FAILURE otherwise.
Definition: script_condition.h:26
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
The Environment class is used to encapsulate the information and states needed by the scripting langu...
Definition: script_parser.hpp:32
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.map b/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.map new file mode 100644 index 000000000..678557612 --- /dev/null +++ b/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.md5 b/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.md5 new file mode 100644 index 000000000..9002eb5f2 --- /dev/null +++ b/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.md5 @@ -0,0 +1 @@ +f07e29e6226b041a8d88179ab68f5422 \ No newline at end of file diff --git a/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.png b/d4/dc1/class_b_t_1_1_groot2_publisher__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5906ed3f711963d72a296a1754af3a3905dd0a36 GIT binary patch literal 5537 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 literal 0 HcmV?d00001 diff --git a/d4/dcb/class_b_t_1_1details_1_1_semaphore-members.html b/d4/dcb/class_b_t_1_1details_1_1_semaphore-members.html new file mode 100644 index 000000000..9c2133a90 --- /dev/null +++ b/d4/dcb/class_b_t_1_1details_1_1_semaphore-members.html @@ -0,0 +1,112 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::details::Semaphore Member List
+
+
+ +

This is the complete list of members for BT::details::Semaphore, including all inherited members.

+ + + + + +
manualUnlock() (defined in BT::details::Semaphore)BT::details::Semaphoreinline
notify() (defined in BT::details::Semaphore)BT::details::Semaphoreinline
Semaphore(unsigned int count=0) (defined in BT::details::Semaphore)BT::details::Semaphoreinline
waitUntil(const std::chrono::time_point< Clock, Duration > &point) (defined in BT::details::Semaphore)BT::details::Semaphoreinline
+
+ + + + diff --git a/d4/dd1/locked__reference_8hpp_source.html b/d4/dd1/locked__reference_8hpp_source.html new file mode 100644 index 000000000..75aa670fd --- /dev/null +++ b/d4/dd1/locked__reference_8hpp_source.html @@ -0,0 +1,219 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/locked_reference.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
locked_reference.hpp
+
+
+
1#pragma once
+
2
+
3#include <mutex>
+
4#include "behaviortree_cpp/utils/safe_any.hpp"
+
5
+
6namespace BT
+
7{
+
8/**
+
9 * @brief The LockedPtr class is used to share a pointer to an object
+
10 * and a mutex that protects the read/write access to that object.
+
11 *
+
12 * As long as the object remains in scope, the mutex is locked, therefore
+
13 * you must destroy this instance as soon as the pointer was used.
+
14 */
+
15template <typename T>
+
16class LockedPtr
+
17{
+
18public:
+
19 LockedPtr() = default;
+
20
+
21 LockedPtr(T* obj, std::mutex* obj_mutex) : ref_(obj), mutex_(obj_mutex)
+
22 {
+
23 mutex_->lock();
+
24 }
+
25
+
26 ~LockedPtr()
+
27 {
+
28 if(mutex_)
+
29 {
+
30 mutex_->unlock();
+
31 }
+
32 }
+
33
+
34 LockedPtr(LockedPtr const&) = delete;
+
35 LockedPtr& operator=(LockedPtr const&) = delete;
+
36
+
37 LockedPtr(LockedPtr&& other)
+
38 {
+
39 std::swap(ref_, other.ref_);
+
40 std::swap(mutex_, other.mutex_);
+
41 }
+
42
+
43 LockedPtr& operator=(LockedPtr&& other)
+
44 {
+
45 std::swap(ref_, other.ref_);
+
46 std::swap(mutex_, other.mutex_);
+
47 }
+
48
+
49 operator bool() const
+
50 {
+
51 return ref_ != nullptr;
+
52 }
+
53
+
54 void lock()
+
55 {
+
56 if(mutex_)
+
57 {
+
58 mutex_->lock();
+
59 }
+
60 }
+
61
+
62 void unlock()
+
63 {
+
64 if(mutex_)
+
65 {
+
66 mutex_->unlock();
+
67 }
+
68 }
+
69
+
70 const T* get() const
+
71 {
+
72 return ref_;
+
73 }
+
74
+
75 const T* operator->() const
+
76 {
+
77 return ref_;
+
78 }
+
79
+
80 T* operator->()
+
81 {
+
82 return ref_;
+
83 }
+
84
+
85 template <typename OtherT>
+
86 void assign(const OtherT& other)
+
87 {
+
88 if(ref_ == nullptr)
+
89 {
+
90 throw std::runtime_error("Empty LockedPtr reference");
+
91 }
+
92 else if constexpr(std::is_same_v<T, OtherT>)
+
93 {
+
94 *ref_ = other;
+
95 }
+
96 else if constexpr(std::is_same_v<BT::Any, OtherT>)
+
97 {
+
98 other->copyInto(*ref_);
+
99 }
+
100 else
+
101 {
+
102 *ref_ = T(other);
+
103 }
+
104 }
+
105
+
106private:
+
107 T* ref_ = nullptr;
+
108 std::mutex* mutex_ = nullptr;
+
109};
+
110
+
111} // namespace BT
+
The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write ...
Definition: locked_reference.hpp:17
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d4/dd2/struct_b_t_1_1_grammar_1_1_integer_1_1integer-members.html b/d4/dd2/struct_b_t_1_1_grammar_1_1_integer_1_1integer-members.html new file mode 100644 index 000000000..4393315c0 --- /dev/null +++ b/d4/dd2/struct_b_t_1_1_grammar_1_1_integer_1_1integer-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Integer::integer Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Integer::integer, including all inherited members.

+ + + +
rule (defined in BT::Grammar::Integer::integer)BT::Grammar::Integer::integerstatic
value (defined in BT::Grammar::Integer::integer)BT::Grammar::Integer::integerstatic
+
+ + + + diff --git a/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.map b/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.map new file mode 100644 index 000000000..c0582d69e --- /dev/null +++ b/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.md5 b/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.md5 new file mode 100644 index 000000000..8452fd4cd --- /dev/null +++ b/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.md5 @@ -0,0 +1 @@ +33244ce64d9bd2128f55f706843435bb \ No newline at end of file diff --git a/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.png b/d4/dd5/struct_b_t_1_1_ast_1_1_expr_base__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..568ae254f42b0f1161d41757fa36a286b4514c60 GIT binary patch literal 29771 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 UQRg^@(?O|pGz~TK)a?HGAAhu3FaQ7m literal 0 HcmV?d00001 diff --git a/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.map b/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.map new file mode 100644 index 000000000..6dcacf7d9 --- /dev/null +++ b/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.md5 b/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.md5 new file mode 100644 index 000000000..e501ce698 --- /dev/null +++ b/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.md5 @@ -0,0 +1 @@ +3606e11068fb9439b66e5a50adc40da7 \ No newline at end of file diff --git a/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.png b/d4/de6/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..664c8e281f458aa0082a94ff401113be29edea27 GIT binary patch literal 11728 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 gpGj!Tjtgw6ph@=Ac2+|e(Z-Mvl@-Z + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SequenceNode Member List
+
+
+ +

This is the complete list of members for BT::SequenceNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::SequenceNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
SequenceNode(const std::string &name, bool make_async=false) (defined in BT::SequenceNode)BT::SequenceNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~SequenceNode() override=default (defined in BT::SequenceNode)BT::SequenceNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d4/dea/struct_b_t_1_1_grammar_1_1_any_value-members.html b/d4/dea/struct_b_t_1_1_grammar_1_1_any_value-members.html new file mode 100644 index 000000000..4ef1e5bde --- /dev/null +++ b/d4/dea/struct_b_t_1_1_grammar_1_1_any_value-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::AnyValue Member List
+
+
+ +

This is the complete list of members for BT::Grammar::AnyValue, including all inherited members.

+ + + +
rule (defined in BT::Grammar::AnyValue)BT::Grammar::AnyValuestatic
value (defined in BT::Grammar::AnyValue)BT::Grammar::AnyValuestatic
+
+ + + + diff --git a/d4/df1/struct_b_t_1_1_any_type_allowed.html b/d4/df1/struct_b_t_1_1_any_type_allowed.html new file mode 100644 index 000000000..1d7cf6b5a --- /dev/null +++ b/d4/df1/struct_b_t_1_1_any_type_allowed.html @@ -0,0 +1,109 @@ + + + + + + + +BehaviorTree: BT::AnyTypeAllowed Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::AnyTypeAllowed Struct Reference
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d4/df7/class_b_t_1_1_decorator_node-members.html b/d4/df7/class_b_t_1_1_decorator_node-members.html new file mode 100644 index 000000000..40bfd8491 --- /dev/null +++ b/d4/df7/class_b_t_1_1_decorator_node-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::DecoratorNode Member List
+
+
+ +

This is the complete list of members for BT::DecoratorNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d5/d03/class_b_t_1_1_switch_node-members.html b/d5/d03/class_b_t_1_1_switch_node-members.html new file mode 100644 index 000000000..fc58a3e43 --- /dev/null +++ b/d5/d03/class_b_t_1_1_switch_node-members.html @@ -0,0 +1,175 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SwitchNode< NUM_CASES > Member List
+
+
+ +

This is the complete list of members for BT::SwitchNode< NUM_CASES >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::SwitchNode< NUM_CASES >inlinevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::SwitchNode< NUM_CASES >)BT::SwitchNode< NUM_CASES >inlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SwitchNode(const std::string &name, const BT::NodeConfig &config) (defined in BT::SwitchNode< NUM_CASES >)BT::SwitchNode< NUM_CASES >inline
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~SwitchNode() override=default (defined in BT::SwitchNode< NUM_CASES >)BT::SwitchNode< NUM_CASES >virtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.map b/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.map new file mode 100644 index 000000000..e62bed5c5 --- /dev/null +++ b/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.md5 b/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.md5 new file mode 100644 index 000000000..f22891faa --- /dev/null +++ b/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.md5 @@ -0,0 +1 @@ +33f6c078611001b09e5616467d5e3ee5 \ No newline at end of file diff --git a/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.png b/d5/d14/class_b_t_1_1_while_do_else_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5e28efca0834610613fe22b96a73590517aad4e8 GIT binary patch literal 13084 zcmbuG1yq$=yYJ~PX%IwIx)G2Dkx)`XK)Sn|MJgeUNJ$HbAjkrwyF-wMg>*NI?!0q- zd!O%q=R4=#d&an95B47WUA*s_@0{~_=JWqOf5KlY%i-ft;~*g+;lFw*t%ihzEDL_< zurR`Cq|PFfT6(lRdI z+-s4sv7YYOZST&{y%ZVai~5Li+NkvO1Bs++?qkc+2bVr>Wez6tctTlJz@`NyA}5!H zK&he~Bn0J@36t-(m(A-lf&F;9GhI!HL`X<@eRD%4;V*h~ zb;cwjl7@_mL0bP~*vf3W%3h{w_SetV#AXhKWKITd?jZp&M#j+neJ9x%n$58jY(9dOtQO@dU%x)VAfV~_rj)iZ-z-s9R#xS02-#%V8vEY%w!N zDKSye-o~8_yS_{@pU?cZ`%7F?PhA?0&cbqs~b73CwqEcj*N^5IxQeE#)n&G z`6Ypo!b%JWL-FswR8h${Z1z`76TnwdQPGu%nPO7>+>**~`=`tllThsVb=-7OB_j_{ zT(NF-PJ+oo%R6al=|5AhuCCrk{m&*VZ7INTqG&}!F(4IPf$MP?7=9L!{3Vfp@NqVtuqGUKC1C|q1z-&C@c^OZ9`KXZKW)Z+I;cJ`=n5~iQd%d%b3 z_bqk1R7E7?8I?W@xiW%JC2jRr>hcv++H6Z2yB1o5ysrv~12(a;A%x~j?&gGL?H%cai9yuw_*Bu@Rp+?*V7mlGe^un0|Sl{}x5tSfyO>EeE=-bZWq=;#KY4vH>2O@ehEZSX!aF--nyI{~fAihUp^udGZkD0Zfo?VX@T zBjSNaN0&uBty^Vhou*l&$+0$=HJC2sN-5s3FBca}ClS+X^u_0Fx5^s4Y?qyY>rw|c z@6)FTr>Ec4^OdVk!JbR18+h-IMbGNYP2SLj^)V&o*G#Re0$G%2Tl;dg{@U_#kXpoK zx#cn(u5Z<(oFVMI*cL)O4OjZi{jM{TqTFgYM{3m1&yOdqf2PJc2y(K8>~ymAMmH@v znd0r+w`S(%ld$-tB+V`15TcMb;kHpo-@kw7vl{xMaRfDJtQ%SgzS$nJnSj#L3cDGB z1q%)hB?b}O?0+NZwf|6DT%2GUPKAd-&Y{!M7J^&rwyBnVQeijwsisD7x*`OZf|!!> zWnU5pHXh#Bx8)Y>1`U)*k)3V2j*V~r`o<|Ey=n(qV`F3R;E|u^3Ig_1(o#}V-;+4@ z79z!RhkNSWx6hX%xvXG6sKg-0UtYyCf>of-9o{HyWL{ic1X1U__M2*&4@8P)u})`i zBAYcBt^HKRVkB3S(Rkq-N<0ivF|oI`E)34j&Tcz@;=r#N3#2LN=M&{{CrcCvu(H|& ztJy@0di=gw74xvuH!;Z(jaAjKPCN}$1rr~EmP;h{C(eje3QL4IN(#$Z?mf7?^O75f zKA0A}3+GeD_7+Ys(JDi$_H%)Br1HFUT-%yk*DCexdr}FR)4rO*jEr6541%$(K{MS3 zmfM(ps?85rwJ4MV2(lLwuWAg=ETI?I9hG$wrl&nFF4vIymu?NXPk$t1xwcl7mWs|46FZFTk);(E>(5LJgPE0NOi!h<%7bp86jF_=& zl;yjZ6m^KCy>}`cQZuc08`o0E>{5RFk}VYZ?Icd~8J#NC>ZawZWQ_nq)7@&FA_#Ma z=j4mo5p5gF*OSyu&x`uyH;X0m(P+bD63GgyMn>N|+Z!ar1t<5EVQkXwjIA5K%N!r?Iyqz) z;;?ny+eJ2qp4E3{4TlCvhEI@IYRcm3WFM>ZeEX=t(9agkoQal8B4alaO)C2J$2+UM z7PjPU&yl^bJz)!5bE=$#fu-sp4*3}5O2#hINArD;I%q!{xjo8#cduG$j2WL~w_=Y{ zz2_}^XgIb0vAc0J#>ks!UG-fzeJKr3;wa^>{3NAxPgE)Sj>BiZqV87Q6`(%fmSnKv zp02hI8Ihm=-G6H1oWFf9r!L;e?bAkyn=9!oi%AwMx2e-WW2(UkR7qW)j*TXUwHwJc zq0>pty7C#lp!aiMr=OMwjac;Zk6JgLkmH&LE{W5_7o$e41H#LAe% z{QU(L>S*KyP001rSB+4Xgcx~j<<~^-N93*DA7<yv4k;j5dHhb9+qpdE znPm2;S@A~T8WZ{ij^cpK(aO*HqO4t)a4D=sNPLx*m~&*)O%o^#!o*duRGw@!UKJ&kDJa~6AZycuefm-^U)j+Dkz1m&vDM##d}EaVq@mV zo!#}NYCzm0J$zKDtK%lWk5)l#8kn6qmr|ssA5R2*)XIz#E>3iuEwg#W|J%cz1N`<( zA-w~MDb5Ai`S`dy)*`D*2QzDsXJEIUesF>K6H1wsV%jFyh8Jf(4$5w0-!|#^XS7`A z`08n2!^d#5qLuT9>OXK%Mlw24QT6qMod~dHRT;IED}Eu*sdJ0KKfvlq>b}mcZ>7#i za}RZl%V4d4G$J)8j{GT|CPf}^3sM}<+Be}%dc3#&M}uXXxD`MRItY#Yu@&EK_{E?1$R&(NAW;c#zt_Kcs+(vu6h#1ubqRU1=BzAkoT_?o_j_#wVF zjvHzfGVVK-($Lj<$$8$>3(k*;6YFBysKiFJ`?xU4=uYaK=y&iI?1eo^Spy|04a4!x zGSfb()3cXYytJ>dly9BwyZ0J;YrOm(-rq)25T{!pAL89RF?jeB?be3Q7!7f@`cD)B$7;=F6VKA4kcdPcQYNPf}MMe&mic zql}hjHU$KoXk5Dci=b2FTz*#$;>wF7N^cP6VK#@0oY55;w%PTU#@xax(+p;q3?tGc z(6$SlnjkHx9!C|ZQ!~%AFdjy=1+giW#kf(>bR2X;o@{+6;9Jo}Ve9$Ip<_!~>-$A# zdrN2Lxk=CMyltd0)yHBZ6Ak%&53PwO(#|UyIx}Rdzh<9#TaC*Ey=sSnEqpB@LYFYD z6|DQoh}5&c1NAwDsoMJwHhFTa#i8bq&x8yZDLX38Ax=Wrvd$BopQXgrYP&dbnkGtb zWaddrXzSl zXkbGxUeM@p$m7XRe)@A^6u8U~QuCBJs;w9d%Ed(Oy(!u8=)MTt_*Q_YhZMe5Cq2&C z%FG&4kg(9mOpDe~Vr(r{op1n!zS7Wlq024cGf|{}_AZ|!NYVCb$;9mX7DRfS0o;%Q zZn#_Dq6W9;kNj0SXb8Ee*VL#VVi3QP_jPi4J!&)>*YWYj7z&lqFd&Y~k>~OH9DosH z6>03_`;kRlT(CB&$d))U7A?0xE$0&?BUT^;4<;Y0!L4Uq8DL$VKm;-wD+Ndw42bz0 zk@tMFU-W#_k@$T)#Si#-Msm?Mabgg-`6n2ny>K>t#;S_C3#J7-aCLd7nS4pwjzcC6>HP<~&$UUCh=(k|(ug z8k~Oi?Drk(3jN~v&`TrxR&3%Z2TpPExp4+8RrAh{4pJd~Xc5q&wEsylhV&=0X<^~w zJ{A+39nTAs&naxO1WT&q;UOU6x%-5Psrx^!nrYOfhJ}Y4_k5(sqY)e$&r669856OE zv7f@r{nwK|e89ZDy^W%i$h^I|iqFXC4@5?d(1%&^{RFb^(e$p_`+U9ai4vwqkKWV22;FbRq)X5)fu#lqqsc~5w)Vt5 zep_ZDlil>_@#Bl*Q5B#XR|x~oQKzdNxyCZn(tuRZrF?3ErnHpJ9Zg%3kQLk}<3vyOJk2S25z_LdsAZ-4>BWn+OELpAU_ zd6UX#Ev2DBTJHguvenAqhFsGuCI>k4lBVu(b zCk#yY7g|Mc&zC#8y2yoZfcE^)Y98sOlG1AJdS?6leAeb@{%Dh*Pt(n*Zqx0hEm%H< z#@N5GK!W`h4U6?%;@1MWQw0}oB`TlwNN~ziOJ38iC==AqVR4V+Oco{D3tvCK6dqFy zunku0_nJ(PH-<$IdmeZ0CTG9+;IhzyjCd}fE0loG6zf!)?9SBENN^IW6p}L94?~v7 z^^b*gSfpiSqQhchV0nqDsfF8P-*X-38m!Yimb>t$2f=JXIwQ!cCe{ZsMlph((~0~3 z5kQa=>LCg)gE1iGfz)gC+%wRvzuCro;3atncMK?R+?{Kz_XoSS5~gEV>muU=f!M_V zGP6}tP#85ZFt}X#6@LkqW2(LV#okP9`H+X1nHlNZy^Evu%2p%hid#TYYyeowNJ{!v z39AF}2r^Y+9del_?pKF#43NtSND-0Keln1iIJt`E=4P}cr9i<@>Ob-2Hw1sR5?!|cQvBwb6W*KlANWPnN>hQK%>j5d~v0_M0aPWbusOp zsoY-5$e8L7Q1^S(z)VonQ^_5x{+Y1Pc+kuqS|>Jq1aOsPv7 z&w3vT3+u?q$jqMluuf1Gg>mZF?T@Le+#@BG2J+k+1RRxsop#w#z}?Lmi2muALL|uP z&ReU@f3gadbip_+L%&3cyNki=v*x?imUpPWw-@V3G-8m1^mLj`pWRw1Kh``!j~z<) zZJ3O$5_m9f`y7S^H7Q*>3ct-C9RD2^uCQ>QJTagj65?1JTd% zOe#P9Zy+P1qlgd)!obh5=uhq3O?waM!~cP#yp_8ud4gWuKHPMCaKKX5Xx^7pWnF1A zZgP8l0cP;SV*3Y*)cIlYf#1K`55$%W024t1!T8i`-^l;=!V)Bd(R`Kl*nn%(viuQr z{d$jRLABN4D-4A@C01unK)RO1%Io+A&Oz_+q z3y-AW`jnQY0D%bOQ}fjnJ6=Kl8{ncVP8i$fxH&ZRTI$6Mz)6Vd{Lkqf8xAm3RaHd~ zI!Hj8hye%?FLbGddDYPLck=%xJvj>=f>X&9oO;Y;(&p% zA|^!H2e23`4Izvq0*i?S^xloz>W{ZAl&}fUIKQ1Bxmc~BlV%8E7YcB zai2c5B^&yO=jStl(Cg^va9ZiPH+_GiyZZwmvwzkI|AX4t-B6SMjcp1BKVcXmA+q28 zV*A@FJE|hhViSlTC zTZ=>^rUupaXAegdPM zJQ(13$j@Kd^N=ed_eM)6<}@$Y!v`biolGQonbV>a2m}o)F$OpytbW4cN@Sy{D{LnQ z7X7`pzUO-_hEQxwRkF#&&=`ZmKrvl#crzP|IONn*j@Ato|BU! z3yQQJ)9&B`K^`6+t717uMn>{WvBby!itR&)+G75XOf0VZQ&Fum=k&Na*0YCMi5{+< zetX4E1bgg;Tl%hF=4(EXoY^zx!eq3P8T1rEZD?J5h6MGQ^Cf$8W?@R#97(%d z67M{CV^F>2!LKc9r@~RQ^HOLdu{@_eEQs(M|K%P-Fs zsx&)sbg0jvQNvG_Nd87Xie=?-#ie$JV9tOQ-}wnCR8(N zX>Ispu5ql&HXZp~|CIFV!&c_P^zT;?gMkpN1kS^oVpVeVXRje0VX?9+bMVXHt9T>Q zH=op|?$>;4wVSt)WGg-{0CcK^lUYdvh4=hXVM0fy&wbl+IZ++_pI@}7RZ-u`QXgg& zXW70B0X&RL|82gLBR~*^QRfRQi^APUx?i5^i17(AJVBu>3h>EVXMQQOsXg(Ag%uS@ zht1**NXs+&o@14~accam6|?aj8o=k6BoSf{m;G1$bDqAOV-oOS8Z8*xOjf#lr2L>= zsc*=LQo=~AG?V9DZ&PE^q$!Mp@Cb=Llxq0<>_AP~YoD5-OiY z5%P8lG-^6tO)c6+$0QRi4g9)mYqRgfWSTEo$da^0e;OLV*YIah9CuL>C^>jXD16^4 zb@xbAr#VXV3SS;m<{Mg8n2Wn{&J++g4(32R5p>x?@-*v6bZ!Q@FzY%y)vncDf(t-e zXtTd|jQtvlQ9f6+*sQbZz{Aoir>`GhkZHCrQxlC?w<@cXbFLHUNhD9mOJ$Cl!5_i@>?R@K<>MVSql#)u`JgUH1P;=Uttb~xoz|cuv~S{pe+SVQXKeWC zb4s)s-L`83NoMbPVr_JdO1Lww3oFNNDnkb0oar$)SK}orQ{Y?WEf1=PDofA?rte|NbN<>5U}m5Z$&`ivzM|g0YX&YabOOUME7>oyJn2ZC*jW z4wwp6yv=ttvlI#G!QbXih0@mu47B|DH?rs zJsd?eP2_J4&A2$N)S{Cux-Hc$3N72(nEXkmjiI%@4k?}r1&A;A!`wCx#c!dIWQXmu z!cP-4d`y322cVpbd_-nvF`t#1solC2?Fx2a$;N)ps37HZxMkjW#>Z?7!_bbkcu~R{pKc`pu*=j?x-#Z0@ONYplo}Fow(N7Vdxhh)*-)YNv&6lRhp~3^z zJ+;+e^$8%eYsaP^`30SvRp7%U*{pqN#+%T$@0sAhZW?j5wIU!zKoYCclggX6sWPMJ zwL)fpGwrSCY`7%F5qPcN{OV0x)9vs@Z}t%ubM(W-VUI5{dYD-K?NgFc`=!X+5A)Eg zaju~xrC-zPsZ*B7u7LwBPmBbdBw&wKFV?Iv~Xk&tRiNZcJkm_(BF7t$Y8@_U;!2Dp8jsD%NQ(XfLQu{7&;HgsDUXA51gJ$X}W%l{cK$ zd5qGIYkV4E-^O-B6MpUXF}Xr4#s+gcP=!$bnYIQ8XnwzbqcoLM85-AzSy%~$cBa4x z3~d!fhAlAU2h~63xJCy=iT^pN0eGb?1!RSUsl(kX-MkwkFT%X~+;IhQd*uf4rQCZi z!?(|rN)0fWd&z$UJ=!h!3DY+Q8SMpiaT0o-bc(At>N#>`wx^p-wFW^=9dETO!M3%% zx%%5}D7PY0&|4%V;!cDY0Hk~xc`Sj(FN*>E4bVh_aAkPXmKO^>E0>T7DZ#3RPp1!L z&6g~L*v1vt{sW~T3&Jhz=?l@YWm`ucjCn9; zH?vvZ(g}9Lbcrsb_NiZ=gYdhEE|W^LjmeGmut=jz!!#*ng!jlGE*(Zt#w;k;!pLq`?KR$i%=b>~W;`6blH>UVHC*v4> z=O8p}v?d-0i+nQrVNs!3F80v=6Uz#P*2JUWdc-A=K`%>+Y>C=tf5CGu8YjNT{li;bOO}OA(rxAIY76JyQoDs~`_kP=L$;n6e! zN8>CM`aG=gWenwC^-)@UT4hMh73+=$1k{VjI@{u8Ev!scI3Z-6r* zPZTD0JoKU+^a_YpRTqP}K)FrUh_h(XbhRtOX^>z!AJMA-HN^gRfHpgpz@q-A#@RHa zWF53h0rrW@%rsa;yf$ctsk5-KTwiXNkTqrQ?AUqi&H#Hr9?b=Lj#SOK9Ev3naZP?# zNc;QyEr2H+EO(Cry94lR0IP#!Ss!(@Y?b}=niK8j<|eygQ#xQlsX&2@0AA7+L#qH3 zRK`zyP*vhl@dm#`#T3qK_Pw~W*c{12!@wZdG5jZA3oaO#VWlLb6%NkIq61y2WX1L?QLDFDS*T#Yn&h7T~0Jd_yW=X9QaQz4*R%xDE;drxZSrj zp!)R~fw0t$4r$;AiBO9GZ%lmeo^jeUAZDHiVZ^1T%DcGm0*c55oD12&RM2pJ*a!Rq zQRukj`+#R5l+>K}IxT{ewbR{#x5wm8Q53z}DHjFn&H&A4CSg=G>QCk0`BN73;Q^$e z$D3w63jnk<$EIK4%dxPqjKD|LCuKm1BV->?r#F`;rT}etK_E%mX+&?rb%D(6=~)0E zu>#lxG>)=>+u-Zhua6Ax&X;3%<{Hx|47{>mGp`kCl{_$_J@$fEPEZ2K2b8rS!Yh-j z7Pzuv#;BAUTwVPPX#O=|0KlW>!wNKR4;`+sR>vTGplD~u9v2r^W&Y^Vqy57}lgr~x zx2>^Xi;#$sudhff2GV~4;x(j0ArzbI51btTM$Lu}kJkDDf}%puN#`YL0f!l{X;G;# zmnpCf!)Qf3Hhy~j&zKC*Lb(80=&o#Mhz{8{Hc%sNQg9X6BR`@8lG4p;RO%CyRR@nw4Gk z&sER+7kTddIf#p#e=n7gHk~1Vwly9JB%eu{wxHi7ADD{A;^LW>nciKCKl{_3<%2yV z(*%7}M2=)_ZGFA#+05p0vD_VN%1yZec$mG;-drOveWVLIzh77|3X}?>1H7u@WP5#G z%g!DE5{@HCgxbG5QfN=oQc}Xfa)QYESxG_TCJZ@d239Q5vl-Wr%Qx}}*sN1!_tp+H z#TgtZqR>ltP|PeWcs+M#)X+^|?Ka=}gUINH73+eyR){+~zq~XNNUL>T4uy|hf={Zd zd>QbMNhj7852m4)|IodVb!r6$P`lm4T(K48NkM3y^n6R z_B+MP%ZuA%N4uf1@!;%i{djXUI5>D8@G8{5eJg-bX@f-pa73G(T>Nq)_YtOD1TP>E zz?U@u2%!|%Oy27mo(^fCbhoK48`!$sP;$mIm?v<=8hTrA& zX^-Mx7~(S^;MmyMeD+fbAVhfq1B#M0{k}zDm-D5p`E?dDm z-!C?MTM(cJA5T!S1%_fH;h^MJZNxyKa#*SYz>GnDlDCUf@yjR0{@pP22e{|~E?Sgv zQ_I{Y^Z8_Z6Bn<33L#1iL(6^o7S)L+b-qbWlhW0bjaVun87;S*k}@~oel(}z@^_;ZI!~*;N7Erh4l?hDv2SZ$ z_~cUMFmqG;)u)ECKWMa-!KUv8tubu8YRa$tmGbGYOjR+uk_2Ok+BjZv3%`5L)4P~I zKqk9T7M`_L=b6h$FMaWg*#y(ZPUZR;zY_#b2e0xeqT`4a^nn(8~jS)cZ~LS{Q$ z_ZSOUF@u>!gc8aBThG$}80P#xx52-=q5l7$ta?fUQYu83J!xG}Rq;*E3(I4*?&ix( zLqY@Kvq(&7H9BV$7r(^^Z&*k{c!ft%K6#8|f&ijb5 z+F{nkohpaAj)U^3(qZ<}0Y=|p?|;6Ci7mTG>=OMiHZH`#)y;zrK=z;q&d9MNF7495 z*?LbcBbn7@s5_Y(e2O28s|I8;;8bm6DYWAjR-;0Z!&;>7jFC_7oOW#P_nh~`3~V)O znV3j6XoT=s4L$sA@e~v=93F3jT3bFbC`8!LSJ~f3^rHaPuCfL#Cs0!HD`tsj0A`B% zF+RQ>ufz$G4|~mXZEcKbu;s{ps;>2Vk-wtsd>S6CTyi-$3VJEBo>#7Agjw(-x>?exwseArVSkb3c}iYB4Eu+8Se-^S`pE=CcAV zG*L-k-v;|8V9~XK{rCl-vi!K?)hYZf$U(_mhTp&u{*QJ5u*SLoCamiP&JmPiengQ3 zV-!kg?g#GKzGSX)pECz?c5O*FH$H%s*<2+&Ux0Lb0m=vK`6e-p7nNehL^;yRxLv-0 z(}LlT0%Ylbv6`&LQEuKx?y)y#FT%=xUS~b}?fm@Q>3Bo+@)RBkQts7Wv*q>qf!*ZK zPFVMFt{eilf&^cx1iHL52xx9OklqSrL^W3yQ7E-QSZ6^-28~E9GbOO-Ccstt_1m{k zDJieg1neorAQc?xxQF}uU!0e_@Mwh-qN4D`ulHZndB8zs2AY-S7X8#Q55#aJL8VT` zV}b@c8Jx2OmF1uzgK+bnY)@FvH3)(B?^kf>=0R&!vcy51R0A41%K^ z*_Im|IpjJH;K)X_0ssvkF4E#k;xdeZ)oE<&m6@Oe_`d);mX@GZizsjz6p{q>n&e_1 ze9g;q2KH7YVq)T+-@jMD0cZwl9lb_KA~4}5yHg-JfltB2cYl2q@3kELj8fQ*`RZ(s zOT8bIA$Xuyqatxr@h2^xc0B#_=P=L*0Nu!Sm4HhU(A{9E@bx~+AlhxSZmqGO7698H zLDIEroajLj^$qx4^K?9b_c#PfKh?}h83oWfJvTQ|?(oZPSg{c39i^nCq>K5SR@u5B zHX(2xxAgTz0x*r}Rs+X(I|LX^dqG``XcvO^IA~Tq1x++ggNBWL<{D5VBY{4h)8+_6 z44uTlXC6~vqt5fcxs0Obk8o_hsd`O&aRpt-%8~VomVFF5=HT|_&COSUqJwv|O0fk^ zK@rf7S(v}OJ+t3-(l`Qj+{NwH9u?>=gRWK{*gA;0R-W{fs=>`SG#%4%y*M-nmA4o; zO)*0=+e4D_|}K^WJI1y#T%qlnpo>TGbBv(}Q3>k<2VD zMfB!@YXAw+Z*Z`!_r2f+HiJ%1AK+X@LfFbd2Z5UsFGQLCKEDl`HY$i}Oy(PYSqTXV zM4=Dj2GmLz;1-0EK|@1J_->I$3VKkM2TPq*es4=}KiLcn415DJB;?fIUu0&oiKI@#!Q2O&4;?98D2Hdp{nt!cUe4yq8)lmfe=u7I=G? zmX><;TtRSc{3&~UU%-x;uMw;m11ud_DS%|E@xQ6#pgEde95_X6pv?)&qgcwby?GT$ zNy+a?lRwRILG5BvR?2G&3rvA_L^RzB%FeGMw5bcujWM4QjC=^`}lvE0;ckkxb*2c7ReGKfe-41j(2 z5m=%pW61lKfb+oaPw6{c3eJydX&}eYGcjQnyQkP$phBFg7X}bcyzSV3U zKjI-1C5G#uiUobYrkN{cEYFpS$6X)+mVsDEP(!#cu6FBVL825Y@|mi390XIeIh^~! zK2fNl={(UT?fU0i+ZlgL5^QePVNY7_9Nh&o|4T2`AYwrA5*YMJ^Xnk=r=x2P_qT@ ze0|keA_0l(eN@oU*H8ZZS#V~&GHgp`cc1KkQZ^`;dCsf_tZ89s#i{gSX|V`UssPpS nZ2O;oLh{c)CQ&832{^IYlgYB{vH^eYg7iv8SsE&3^!|SV@u$CP literal 0 HcmV?d00001 diff --git a/d5/d41/class_b_t_1_1_parser__inherit__graph.map b/d5/d41/class_b_t_1_1_parser__inherit__graph.map new file mode 100644 index 000000000..168da0805 --- /dev/null +++ b/d5/d41/class_b_t_1_1_parser__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d5/d41/class_b_t_1_1_parser__inherit__graph.md5 b/d5/d41/class_b_t_1_1_parser__inherit__graph.md5 new file mode 100644 index 000000000..4d7f999da --- /dev/null +++ b/d5/d41/class_b_t_1_1_parser__inherit__graph.md5 @@ -0,0 +1 @@ +a6bb88df0ffe6aef8c154771e0d3d891 \ No newline at end of file diff --git a/d5/d41/class_b_t_1_1_parser__inherit__graph.png b/d5/d41/class_b_t_1_1_parser__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2e5f2bf4cd1bc899acef83d68460c82a23a8d6 GIT binary patch literal 3380 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 + + + diff --git a/d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.md5 b/d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.md5 new file mode 100644 index 000000000..9dca64cee --- /dev/null +++ b/d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.md5 @@ -0,0 +1 @@ +afef1b68f2c4476a3975a597355d24df \ No newline at end of file diff --git a/d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.png b/d5/d59/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..86a83a306ce973b8eed03f905e1b9716aba31ae4 GIT binary patch literal 5977 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 F@;|+9b)f(N literal 0 HcmV?d00001 diff --git a/d5/d6d/class_b_t_1_1_coro_action_node-members.html b/d5/d6d/class_b_t_1_1_coro_action_node-members.html new file mode 100644 index 000000000..ccd741a28 --- /dev/null +++ b/d5/d6d/class_b_t_1_1_coro_action_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::CoroActionNode Member List
+
+
+ +

This is the complete list of members for BT::CoroActionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_p (defined in BT::CoroActionNode)BT::CoroActionNodeprotected
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
CoroActionNode(const std::string &name, const NodeConfig &config) (defined in BT::CoroActionNode)BT::CoroActionNode
destroyCoroutine() (defined in BT::CoroActionNode)BT::CoroActionNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() override finalBT::CoroActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::CoroActionNodevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setStatusRunningAndYield()BT::CoroActionNode
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
tickImpl() (defined in BT::CoroActionNode)BT::CoroActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~CoroActionNode() override (defined in BT::CoroActionNode)BT::CoroActionNodevirtual
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d5/d71/blackboard_8h_source.html b/d5/d71/blackboard_8h_source.html new file mode 100644 index 000000000..48101a99f --- /dev/null +++ b/d5/d71/blackboard_8h_source.html @@ -0,0 +1,482 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/blackboard.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
blackboard.h
+
+
+
1#pragma once
+
2
+
3#include <string>
+
4#include <memory>
+
5#include <unordered_map>
+
6#include <mutex>
+
7
+
8#include "behaviortree_cpp/basic_types.h"
+
9#include "behaviortree_cpp/contrib/json.hpp"
+
10#include "behaviortree_cpp/utils/safe_any.hpp"
+
11#include "behaviortree_cpp/exceptions.h"
+
12#include "behaviortree_cpp/utils/locked_reference.hpp"
+
13
+
14namespace BT
+
15{
+
16
+
17/// This type contains a pointer to Any, protected
+
18/// with a locked mutex as long as the object is in scope
+
19using AnyPtrLocked = LockedPtr<Any>;
+
20
+
21template <typename T>
+
22struct StampedValue
+
23{
+
24 T value;
+
25 Timestamp stamp;
+
26};
+
27
+
28/**
+
29 * @brief The Blackboard is the mechanism used by BehaviorTrees to exchange
+
30 * typed data.
+
31 */
+
32class Blackboard
+
33{
+
34public:
+
35 using Ptr = std::shared_ptr<Blackboard>;
+
36
+
37protected:
+
38 // This is intentionally protected. Use Blackboard::create instead
+
39 Blackboard(Blackboard::Ptr parent) : parent_bb_(parent)
+
40 {}
+
41
+
42public:
+
43 struct Entry
+
44 {
+
45 Any value;
+
46 TypeInfo info;
+
47 StringConverter string_converter;
+
48 mutable std::mutex entry_mutex;
+
49
+
50 uint64_t sequence_id = 0;
+
51 // timestamp since epoch
+
52 std::chrono::nanoseconds stamp = std::chrono::nanoseconds{ 0 };
+
53
+
54 Entry(const TypeInfo& _info) : info(_info)
+
55 {}
+
56
+
57 Entry& operator=(const Entry& other);
+
58 };
+
59
+
60 /** Use this static method to create an instance of the BlackBoard
+
61 * to share among all your NodeTrees.
+
62 */
+
63 static Blackboard::Ptr create(Blackboard::Ptr parent = {})
+
64 {
+
65 return std::shared_ptr<Blackboard>(new Blackboard(parent));
+
66 }
+
67
+
68 virtual ~Blackboard() = default;
+
69
+
70 void enableAutoRemapping(bool remapping);
+
71
+
72 [[nodiscard]] const std::shared_ptr<Entry> getEntry(const std::string& key) const;
+
73
+
74 [[nodiscard]] std::shared_ptr<Blackboard::Entry> getEntry(const std::string& key);
+
75
+
76 [[nodiscard]] AnyPtrLocked getAnyLocked(const std::string& key);
+
77
+
78 [[nodiscard]] AnyPtrLocked getAnyLocked(const std::string& key) const;
+
79
+
80 [[deprecated("Use getAnyLocked instead")]] const Any*
+
81 getAny(const std::string& key) const;
+
82
+
83 [[deprecated("Use getAnyLocked instead")]] Any* getAny(const std::string& key);
+
84
+
85 /** Return true if the entry with the given key was found.
+
86 * Note that this method may throw an exception if the cast to T failed.
+
87 */
+
88 template <typename T>
+
89 [[nodiscard]] bool get(const std::string& key, T& value) const;
+
90
+
91 template <typename T>
+
92 [[nodiscard]] Expected<Timestamp> getStamped(const std::string& key, T& value) const;
+
93
+
94 /**
+
95 * Version of get() that throws if it fails.
+
96 */
+
97 template <typename T>
+
98 [[nodiscard]] T get(const std::string& key) const;
+
99
+
100 template <typename T>
+
101 [[nodiscard]] Expected<StampedValue<T>> getStamped(const std::string& key) const;
+
102
+
103 /// Update the entry with the given key
+
104 template <typename T>
+
105 void set(const std::string& key, const T& value);
+
106
+
107 void unset(const std::string& key);
+
108
+
109 [[nodiscard]] const TypeInfo* entryInfo(const std::string& key);
+
110
+
111 void addSubtreeRemapping(StringView internal, StringView external);
+
112
+
113 void debugMessage() const;
+
114
+
115 [[nodiscard]] std::vector<StringView> getKeys() const;
+
116
+
117 [[deprecated("This command is unsafe. Consider using Backup/Restore instead")]] void
+
118 clear();
+
119
+
120 [[deprecated("Use getAnyLocked to access safely an Entry")]] std::recursive_mutex&
+
121 entryMutex() const;
+
122
+
123 void createEntry(const std::string& key, const TypeInfo& info);
+
124
+
125 /**
+
126 * @brief cloneInto copies the values of the entries
+
127 * into another blackboard. Known limitations:
+
128 *
+
129 * - it doesn't update the remapping in dst
+
130 * - it doesn't change the parent blackboard os dst
+
131 *
+
132 * @param dst destination, i.e. blackboard to be updated
+
133 */
+
134 void cloneInto(Blackboard& dst) const;
+
135
+
136 Blackboard::Ptr parent();
+
137
+
138 // recursively look for parent Blackboard, until you find the root
+
139 Blackboard* rootBlackboard();
+
140
+
141 const Blackboard* rootBlackboard() const;
+
142
+
143private:
+
144 mutable std::mutex mutex_;
+
145 mutable std::recursive_mutex entry_mutex_;
+
146 std::unordered_map<std::string, std::shared_ptr<Entry>> storage_;
+
147 std::weak_ptr<Blackboard> parent_bb_;
+
148 std::unordered_map<std::string, std::string> internal_to_external_;
+
149
+
150 std::shared_ptr<Entry> createEntryImpl(const std::string& key, const TypeInfo& info);
+
151
+
152 bool autoremapping_ = false;
+
153};
+
154
+
155/**
+
156 * @brief ExportBlackboardToJSON will create a JSON
+
157 * that contains the current values of the blackboard.
+
158 * Complex types must be registered with JsonExporter::get()
+
159 */
+ +
161
+
162/**
+
163 * @brief ImportBlackboardFromJSON will append elements to the blackboard,
+
164 * using the values parsed from the JSON file created using ExportBlackboardToJSON.
+
165 * Complex types must be registered with JsonExporter::get()
+
166 */
+
167void ImportBlackboardFromJSON(const nlohmann::json& json, Blackboard& blackboard);
+
168
+
169//------------------------------------------------------
+
170
+
171template <typename T>
+
172inline T Blackboard::get(const std::string& key) const
+
173{
+
174 if(auto any_ref = getAnyLocked(key))
+
175 {
+
176 const auto& any = any_ref.get();
+
177 if(any->empty())
+
178 {
+
179 throw RuntimeError("Blackboard::get() error. Entry [", key,
+
180 "] hasn't been initialized, yet");
+
181 }
+
182 return any_ref.get()->cast<T>();
+
183 }
+
184 throw RuntimeError("Blackboard::get() error. Missing key [", key, "]");
+
185}
+
186
+
187inline void Blackboard::unset(const std::string& key)
+
188{
+
189 std::unique_lock lock(mutex_);
+
190
+
191 // check local storage
+
192 auto it = storage_.find(key);
+
193 if(it == storage_.end())
+
194 {
+
195 // No entry, nothing to do.
+
196 return;
+
197 }
+
198
+
199 storage_.erase(it);
+
200}
+
201
+
202template <typename T>
+
203inline void Blackboard::set(const std::string& key, const T& value)
+
204{
+
205 if(StartWith(key, '@'))
+
206 {
+
207 rootBlackboard()->set(key.substr(1, key.size() - 1), value);
+
208 return;
+
209 }
+
210 std::unique_lock lock(mutex_);
+
211
+
212 // check local storage
+
213 auto it = storage_.find(key);
+
214 if(it == storage_.end())
+
215 {
+
216 // create a new entry
+
217 Any new_value(value);
+
218 lock.unlock();
+
219 std::shared_ptr<Blackboard::Entry> entry;
+
220 // if a new generic port is created with a string, it's type should be AnyTypeAllowed
+
221 if constexpr(std::is_same_v<std::string, T>)
+
222 {
+
223 entry = createEntryImpl(key, PortInfo(PortDirection::INOUT));
+
224 }
+
225 else
+
226 {
+
227 PortInfo new_port(PortDirection::INOUT, new_value.type(),
+
228 GetAnyFromStringFunctor<T>());
+
229 entry = createEntryImpl(key, new_port);
+
230 }
+
231 lock.lock();
+
232
+
233 entry->value = new_value;
+
234 entry->sequence_id++;
+
235 entry->stamp = std::chrono::steady_clock::now().time_since_epoch();
+
236 }
+
237 else
+
238 {
+
239 // this is not the first time we set this entry, we need to check
+
240 // if the type is the same or not.
+
241 Entry& entry = *it->second;
+
242 std::scoped_lock scoped_lock(entry.entry_mutex);
+
243
+
244 Any& previous_any = entry.value;
+
245 Any new_value(value);
+
246
+
247 // special case: entry exists but it is not strongly typed... yet
+
248 if(!entry.info.isStronglyTyped())
+
249 {
+
250 // Use the new type to create a new entry that is strongly typed.
+
251 entry.info = TypeInfo::Create<T>();
+
252 entry.sequence_id++;
+
253 entry.stamp = std::chrono::steady_clock::now().time_since_epoch();
+
254 previous_any = std::move(new_value);
+
255 return;
+
256 }
+
257
+
258 std::type_index previous_type = entry.info.type();
+
259
+
260 // check type mismatch
+
261 if(previous_type != std::type_index(typeid(T)) && previous_type != new_value.type())
+
262 {
+
263 bool mismatching = true;
+
264 if(std::is_constructible<StringView, T>::value)
+
265 {
+
266 Any any_from_string = entry.info.parseString(value);
+
267 if(any_from_string.empty() == false)
+
268 {
+
269 mismatching = false;
+
270 new_value = std::move(any_from_string);
+
271 }
+
272 }
+
273 // check if we are doing a safe cast between numbers
+
274 // for instance, it is safe to use int(100) to set
+
275 // a uint8_t port, but not int(-42) or int(300)
+
276 if constexpr(std::is_arithmetic_v<T>)
+
277 {
+
278 if(mismatching && isCastingSafe(previous_type, value))
+
279 {
+
280 mismatching = false;
+
281 }
+
282 }
+
283
+
284 if(mismatching)
+
285 {
+
286 debugMessage();
+
287
+
288 auto msg = StrCat("Blackboard::set(", key,
+
289 "): once declared, "
+
290 "the type of a port shall not change. "
+
291 "Previously declared type [",
+
292 BT::demangle(previous_type), "], current type [",
+
293 BT::demangle(typeid(T)), "]");
+
294 throw LogicError(msg);
+
295 }
+
296 }
+
297 // if doing set<BT::Any>, skip type check
+
298 if constexpr(std::is_same_v<Any, T>)
+
299 {
+
300 previous_any = new_value;
+
301 }
+
302 else
+
303 {
+
304 // copy only if the type is compatible
+
305 new_value.copyInto(previous_any);
+
306 }
+
307 entry.sequence_id++;
+
308 entry.stamp = std::chrono::steady_clock::now().time_since_epoch();
+
309 }
+
310}
+
311
+
312template <typename T>
+
313inline bool Blackboard::get(const std::string& key, T& value) const
+
314{
+
315 if(auto any_ref = getAnyLocked(key))
+
316 {
+
317 if(any_ref.get()->empty())
+
318 {
+
319 return false;
+
320 }
+
321 value = any_ref.get()->cast<T>();
+
322 return true;
+
323 }
+
324 return false;
+
325}
+
326
+
327template <typename T>
+
328inline Expected<Timestamp> Blackboard::getStamped(const std::string& key, T& value) const
+
329{
+
330 if(auto entry = getEntry(key))
+
331 {
+
332 std::unique_lock lk(entry->entry_mutex);
+
333 if(entry->value.empty())
+
334 {
+
335 return nonstd::make_unexpected(StrCat("Blackboard::getStamped() error. Entry [",
+
336 key, "] hasn't been initialized, yet"));
+
337 }
+
338 value = entry->value.cast<T>();
+
339 return Timestamp{ entry->sequence_id, entry->stamp };
+
340 }
+
341 return nonstd::make_unexpected(
+
342 StrCat("Blackboard::getStamped() error. Missing key [", key, "]"));
+
343}
+
344
+
345template <typename T>
+
346inline Expected<StampedValue<T>> Blackboard::getStamped(const std::string& key) const
+
347{
+
348 StampedValue<T> out;
+
349 if(auto res = getStamped<T>(key, out.value))
+
350 {
+
351 out.stamp = *res;
+
352 return out;
+
353 }
+
354 else
+
355 {
+
356 return nonstd::make_unexpected(res.error());
+
357 }
+
358}
+
359
+
360} // namespace BT
+
Definition: safe_any.hpp:37
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
void set(const std::string &key, const T &value)
Update the entry with the given key.
Definition: blackboard.h:203
+
T get(const std::string &key) const
Definition: blackboard.h:172
+
bool get(const std::string &key, T &value) const
Definition: blackboard.h:313
+
static Blackboard::Ptr create(Blackboard::Ptr parent={})
Definition: blackboard.h:63
+
void cloneInto(Blackboard &dst) const
cloneInto copies the values of the entries into another blackboard. Known limitations:
+
The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write ...
Definition: locked_reference.hpp:17
+
Definition: basic_types.h:395
+
Definition: basic_types.h:348
+
Definition: action_node.h:25
+
void ImportBlackboardFromJSON(const nlohmann::json &json, Blackboard &blackboard)
ImportBlackboardFromJSON will append elements to the blackboard, using the values parsed from the JSO...
+
nlohmann::json ExportBlackboardToJSON(const Blackboard &blackboard)
ExportBlackboardToJSON will create a JSON that contains the current values of the blackboard....
+
Definition: blackboard.h:44
+
Definition: blackboard.h:23
+
Definition: basic_types.h:336
+
+
+ + + + diff --git a/d5/d77/class_b_t_1_1_always_failure_node-members.html b/d5/d77/class_b_t_1_1_always_failure_node-members.html new file mode 100644 index 000000000..168fd8c4a --- /dev/null +++ b/d5/d77/class_b_t_1_1_always_failure_node-members.html @@ -0,0 +1,168 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::AlwaysFailureNode Member List
+
+
+ +

This is the complete list of members for BT::AlwaysFailureNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
AlwaysFailureNode(const std::string &name) (defined in BT::AlwaysFailureNode)BT::AlwaysFailureNodeinline
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.map b/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.map new file mode 100644 index 000000000..450b6e1d9 --- /dev/null +++ b/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.md5 b/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.md5 new file mode 100644 index 000000000..170ee1b47 --- /dev/null +++ b/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.md5 @@ -0,0 +1 @@ +6484843ad0d0fd32bcf56a18a3d91859 \ No newline at end of file diff --git a/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.png b/d5/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..85d2f08ad33f7bad1d5aa85c1aa352630fa275e5 GIT binary patch literal 6745 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 Xcb~hwLpx8;gf literal 0 HcmV?d00001 diff --git a/d5/d7a/bt__flatbuffer__helper_8h_source.html b/d5/d7a/bt__flatbuffer__helper_8h_source.html new file mode 100644 index 000000000..f0549d2a6 --- /dev/null +++ b/d5/d7a/bt__flatbuffer__helper_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/flatbuffers/bt_flatbuffer_helper.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_flatbuffer_helper.h
+
+
+
1#pragma once
+
2
+
3#include "behaviortree_cpp/bt_factory.h"
+
4#include "behaviortree_cpp/flatbuffers/BT_logger_generated.h"
+
5
+
6namespace BT
+
7{
+
8
+
9using SerializedTransition = std::array<uint8_t, 12>;
+
10
+
11inline Serialization::NodeType convertToFlatbuffers(BT::NodeType type)
+
12{
+
13 switch(type)
+
14 {
+
15 case BT::NodeType::ACTION:
+
16 return Serialization::NodeType::ACTION;
+
17 case BT::NodeType::DECORATOR:
+
18 return Serialization::NodeType::DECORATOR;
+
19 case BT::NodeType::CONTROL:
+
20 return Serialization::NodeType::CONTROL;
+
21 case BT::NodeType::CONDITION:
+
22 return Serialization::NodeType::CONDITION;
+
23 case BT::NodeType::SUBTREE:
+
24 return Serialization::NodeType::SUBTREE;
+
25 case BT::NodeType::UNDEFINED:
+
26 return Serialization::NodeType::UNDEFINED;
+
27 }
+
28 return Serialization::NodeType::UNDEFINED;
+
29}
+
30
+
31inline Serialization::NodeStatus convertToFlatbuffers(BT::NodeStatus type)
+
32{
+
33 switch(type)
+
34 {
+
35 case BT::NodeStatus::SKIPPED:
+
36 case BT::NodeStatus::IDLE:
+
37 return Serialization::NodeStatus::IDLE;
+
38 case BT::NodeStatus::SUCCESS:
+
39 return Serialization::NodeStatus::SUCCESS;
+
40 case BT::NodeStatus::RUNNING:
+
41 return Serialization::NodeStatus::RUNNING;
+
42 case BT::NodeStatus::FAILURE:
+
43 return Serialization::NodeStatus::FAILURE;
+
44 }
+
45 return Serialization::NodeStatus::IDLE;
+
46}
+
47
+
48inline Serialization::PortDirection convertToFlatbuffers(BT::PortDirection direction)
+
49{
+
50 switch(direction)
+
51 {
+
52 case BT::PortDirection::INPUT:
+
53 return Serialization::PortDirection::INPUT;
+
54 case BT::PortDirection::OUTPUT:
+
55 return Serialization::PortDirection::OUTPUT;
+
56 case BT::PortDirection::INOUT:
+
57 return Serialization::PortDirection::INOUT;
+
58 }
+
59 return Serialization::PortDirection::INOUT;
+
60}
+
61
+
62inline void CreateFlatbuffersBehaviorTree(flatbuffers::FlatBufferBuilder& builder,
+
63 const BT::Tree& tree)
+
64{
+
65 std::vector<flatbuffers::Offset<Serialization::TreeNode>> fb_nodes;
+
66
+
67 applyRecursiveVisitor(tree.rootNode(), [&](BT::TreeNode* node) {
+
68 std::vector<uint16_t> children_uid;
+
69 if(auto control = dynamic_cast<BT::ControlNode*>(node))
+
70 {
+
71 children_uid.reserve(control->children().size());
+
72 for(const auto& child : control->children())
+
73 {
+
74 children_uid.push_back(child->UID());
+
75 }
+
76 }
+
77 else if(auto decorator = dynamic_cast<BT::DecoratorNode*>(node))
+
78 {
+
79 const auto& child = decorator->child();
+
80 children_uid.push_back(child->UID());
+
81 }
+
82
+
83 // Const cast to ensure public access to config() overload
+
84 const auto& node_config = const_cast<BT::TreeNode const&>(*node).config();
+
85 std::vector<flatbuffers::Offset<Serialization::PortConfig>> ports;
+
86 for(const auto& it : node_config.input_ports)
+
87 {
+
88 ports.push_back(Serialization::CreatePortConfigDirect(builder, it.first.c_str(),
+
89 it.second.c_str()));
+
90 }
+
91 for(const auto& it : node_config.output_ports)
+
92 {
+
93 ports.push_back(Serialization::CreatePortConfigDirect(builder, it.first.c_str(),
+
94 it.second.c_str()));
+
95 }
+
96
+
97 auto tn = Serialization::CreateTreeNode(
+
98 builder, node->UID(), builder.CreateVector(children_uid),
+
99 convertToFlatbuffers(node->status()), builder.CreateString(node->name().c_str()),
+
100 builder.CreateString(node->registrationName().c_str()),
+
101 builder.CreateVector(ports));
+
102
+
103 fb_nodes.push_back(tn);
+
104 });
+
105
+
106 std::vector<flatbuffers::Offset<Serialization::NodeModel>> node_models;
+
107
+
108 for(const auto& node_it : tree.manifests)
+
109 {
+
110 const auto& manifest = node_it.second;
+
111 std::vector<flatbuffers::Offset<Serialization::PortModel>> port_models;
+
112
+
113 for(const auto& port_it : manifest.ports)
+
114 {
+
115 const auto& port_name = port_it.first;
+
116 const auto& port = port_it.second;
+
117 auto port_model = Serialization::CreatePortModel(
+
118 builder, builder.CreateString(port_name.c_str()),
+
119 convertToFlatbuffers(port.direction()),
+
120 builder.CreateString(demangle(port.type()).c_str()),
+
121 builder.CreateString(port.description().c_str()));
+
122 port_models.push_back(port_model);
+
123 }
+
124
+
125 auto node_model = Serialization::CreateNodeModel(
+
126 builder, builder.CreateString(manifest.registration_ID.c_str()),
+
127 convertToFlatbuffers(manifest.type), builder.CreateVector(port_models));
+
128
+
129 node_models.push_back(node_model);
+
130 }
+
131
+
132 auto behavior_tree = Serialization::CreateBehaviorTree(
+
133 builder, tree.rootNode()->UID(), builder.CreateVector(fb_nodes),
+
134 builder.CreateVector(node_models));
+
135
+
136 builder.Finish(behavior_tree);
+
137}
+
138
+
139/** Serialize manually the informations about state transition
+
140 * No flatbuffer serialization here
+
141 */
+
142inline SerializedTransition SerializeTransition(uint16_t UID, Duration timestamp,
+
143 NodeStatus prev_status, NodeStatus status)
+
144{
+
145 using namespace std::chrono;
+
146 SerializedTransition buffer;
+
147 int64_t usec = duration_cast<microseconds>(timestamp).count();
+
148 int64_t t_sec = usec / 1000000;
+
149 int64_t t_usec = usec % 1000000;
+
150
+
151 flatbuffers::WriteScalar(&buffer[0], t_sec);
+
152 flatbuffers::WriteScalar(&buffer[4], t_usec);
+
153 flatbuffers::WriteScalar(&buffer[8], UID);
+
154
+
155 flatbuffers::WriteScalar(&buffer[10],
+
156 static_cast<int8_t>(convertToFlatbuffers(prev_status)));
+
157 flatbuffers::WriteScalar(&buffer[11],
+
158 static_cast<int8_t>(convertToFlatbuffers(status)));
+
159
+
160 return buffer;
+
161}
+
162
+
163} // namespace BT
+
Definition: control_node.h:22
+
Definition: decorator_node.h:9
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
const NodeConfig & config() const
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
SerializedTransition SerializeTransition(uint16_t UID, Duration timestamp, NodeStatus prev_status, NodeStatus status)
Definition: bt_flatbuffer_helper.h:142
+
+
+ + + + diff --git a/d5/d7f/class_b_t_1_1_test_node.html b/d5/d7f/class_b_t_1_1_test_node.html new file mode 100644 index 000000000..6e45ac577 --- /dev/null +++ b/d5/d7f/class_b_t_1_1_test_node.html @@ -0,0 +1,492 @@ + + + + + + + +BehaviorTree: BT::TestNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The TestNode is a Node that can be configure to: + More...

+ +

#include <test_node.h>

+
+Inheritance diagram for BT::TestNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::TestNode:
+
+
Collaboration graph
+ + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TestNode (const std::string &name, const NodeConfig &config, TestNodeConfig test_config)
 
TestNode (const std::string &name, const NodeConfig &config, std::shared_ptr< TestNodeConfig > test_config)
 
- Public Member Functions inherited from BT::StatefulActionNode
StatefulActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus onStart ()=0
 
virtual NodeStatus onRunning ()=0
 method invoked when the action is already in the RUNNING state.
 
virtual void onHalted ()=0
 
+bool isHaltRequested () const
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual NodeStatus onStart () override
 
virtual NodeStatus onRunning () override
 method invoked when the action is already in the RUNNING state.
 
virtual void onHalted () override
 
+NodeStatus onCompleted ()
 
- Protected Member Functions inherited from BT::StatefulActionNode
NodeStatus tick () override final
 Method to be implemented by the user.
 
void halt () override final
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + + + + + + + + + + + +

+Protected Attributes

+std::shared_ptr< TestNodeConfig_config
 
+ScriptFunction _success_executor
 
+ScriptFunction _failure_executor
 
+ScriptFunction _post_executor
 
+TimerQueue _timer
 
+std::atomic_bool _completed = false
 
+ + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The TestNode is a Node that can be configure to:

+
    +
  1. Return a specific status (SUCCESS / FAILURE)
  2. +
  3. Execute a post condition script (unless halted)
  4. +
  5. Either complete immediately (synchronous action), or after a given period of time (asynchronous action)
  6. +
+

This behavior is changed by the parameters pased with TestNodeConfig.

+

This particular node is created by the factory when TestNodeConfig is added as a substitution rule:

+

auto test_config = std::make_shared<TestNodeConfig>(); // change fields of test_config factory.addSubstitutionRule(pattern, test_config);

+

See tutorial 15 for more details.

+

Member Function Documentation

+ +

◆ onHalted()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::TestNode::onHalted ()
+
+overrideprotectedvirtual
+
+

when the method halt() is called and the action is RUNNING, this method is invoked. This is a convenient place todo a cleanup, if needed.

+ +

Implements BT::StatefulActionNode.

+ +
+
+ +

◆ onRunning()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::TestNode::onRunning ()
+
+overrideprotectedvirtual
+
+ +

method invoked when the action is already in the RUNNING state.

+ +

Implements BT::StatefulActionNode.

+ +
+
+ +

◆ onStart()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::TestNode::onStart ()
+
+overrideprotectedvirtual
+
+

Method called once, when transitioning from the state IDLE. If it returns RUNNING, this becomes an asynchronous node.

+ +

Implements BT::StatefulActionNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d5/d7f/class_b_t_1_1_test_node.js b/d5/d7f/class_b_t_1_1_test_node.js new file mode 100644 index 000000000..fa442bf92 --- /dev/null +++ b/d5/d7f/class_b_t_1_1_test_node.js @@ -0,0 +1,6 @@ +var class_b_t_1_1_test_node = +[ + [ "onHalted", "d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26", null ], + [ "onRunning", "d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d", null ], + [ "onStart", "d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887", null ] +]; \ No newline at end of file diff --git a/d5/d82/class_b_t_1_1_type_info-members.html b/d5/d82/class_b_t_1_1_type_info-members.html new file mode 100644 index 000000000..fc097eebd --- /dev/null +++ b/d5/d82/class_b_t_1_1_type_info-members.html @@ -0,0 +1,118 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TypeInfo Member List
+
+
+ +

This is the complete list of members for BT::TypeInfo, including all inherited members.

+ + + + + + + + + + + +
converter() const (defined in BT::TypeInfo)BT::TypeInfoinline
Create() (defined in BT::TypeInfo)BT::TypeInfoinlinestatic
isStronglyTyped() const (defined in BT::TypeInfo)BT::TypeInfoinline
parseString(const char *str) const (defined in BT::TypeInfo)BT::TypeInfo
parseString(const std::string &str) const (defined in BT::TypeInfo)BT::TypeInfo
parseString(const T &) const (defined in BT::TypeInfo)BT::TypeInfoinline
type() const (defined in BT::TypeInfo)BT::TypeInfo
TypeInfo() (defined in BT::TypeInfo)BT::TypeInfoinline
TypeInfo(std::type_index type_info, StringConverter conv) (defined in BT::TypeInfo)BT::TypeInfoinline
typeName() const (defined in BT::TypeInfo)BT::TypeInfo
+
+ + + + diff --git a/d5/d89/class_b_t_1_1_port_info-members.html b/d5/d89/class_b_t_1_1_port_info-members.html new file mode 100644 index 000000000..edc40aaab --- /dev/null +++ b/d5/d89/class_b_t_1_1_port_info-members.html @@ -0,0 +1,126 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::PortInfo Member List
+
+
+ +

This is the complete list of members for BT::PortInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
converter() const (defined in BT::TypeInfo)BT::TypeInfoinline
Create() (defined in BT::TypeInfo)BT::TypeInfoinlinestatic
defaultValue() const (defined in BT::PortInfo)BT::PortInfo
defaultValueString() const (defined in BT::PortInfo)BT::PortInfo
description() const (defined in BT::PortInfo)BT::PortInfo
direction() const (defined in BT::PortInfo)BT::PortInfo
isStronglyTyped() const (defined in BT::TypeInfo)BT::TypeInfoinline
parseString(const char *str) const (defined in BT::TypeInfo)BT::TypeInfo
parseString(const std::string &str) const (defined in BT::TypeInfo)BT::TypeInfo
parseString(const T &) const (defined in BT::TypeInfo)BT::TypeInfoinline
PortInfo(PortDirection direction=PortDirection::INOUT) (defined in BT::PortInfo)BT::PortInfoinline
PortInfo(PortDirection direction, std::type_index type_info, StringConverter conv) (defined in BT::PortInfo)BT::PortInfoinline
setDefaultValue(const T &default_value) (defined in BT::PortInfo)BT::PortInfoinline
setDescription(StringView description) (defined in BT::PortInfo)BT::PortInfo
type() const (defined in BT::TypeInfo)BT::TypeInfo
TypeInfo() (defined in BT::TypeInfo)BT::TypeInfoinline
TypeInfo(std::type_index type_info, StringConverter conv) (defined in BT::TypeInfo)BT::TypeInfoinline
typeName() const (defined in BT::TypeInfo)BT::TypeInfo
+
+ + + + diff --git a/d5/d89/class_b_t_1_1_sync_action_node-members.html b/d5/d89/class_b_t_1_1_sync_action_node-members.html new file mode 100644 index 000000000..3eee39177 --- /dev/null +++ b/d5/d89/class_b_t_1_1_sync_action_node-members.html @@ -0,0 +1,168 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SyncActionNode Member List
+
+
+ +

This is the complete list of members for BT::SyncActionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d5/da2/struct_b_t_1_1_node_config-members.html b/d5/da2/struct_b_t_1_1_node_config-members.html new file mode 100644 index 000000000..8cfa48406 --- /dev/null +++ b/d5/da2/struct_b_t_1_1_node_config-members.html @@ -0,0 +1,119 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::NodeConfig Member List
+
+
+ +

This is the complete list of members for BT::NodeConfig, including all inherited members.

+ + + + + + + + + + + + +
blackboard (defined in BT::NodeConfig)BT::NodeConfig
enums (defined in BT::NodeConfig)BT::NodeConfig
input_ports (defined in BT::NodeConfig)BT::NodeConfig
manifest (defined in BT::NodeConfig)BT::NodeConfig
NodeConfig() (defined in BT::NodeConfig)BT::NodeConfiginline
other_attributes (defined in BT::NodeConfig)BT::NodeConfig
output_ports (defined in BT::NodeConfig)BT::NodeConfig
path (defined in BT::NodeConfig)BT::NodeConfig
post_conditions (defined in BT::NodeConfig)BT::NodeConfig
pre_conditions (defined in BT::NodeConfig)BT::NodeConfig
uid (defined in BT::NodeConfig)BT::NodeConfig
+
+ + + + diff --git a/d5/db4/struct_b_t_1_1_tree_node_manifest-members.html b/d5/db4/struct_b_t_1_1_tree_node_manifest-members.html new file mode 100644 index 000000000..fee29defa --- /dev/null +++ b/d5/db4/struct_b_t_1_1_tree_node_manifest-members.html @@ -0,0 +1,112 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TreeNodeManifest Member List
+
+
+ +

This is the complete list of members for BT::TreeNodeManifest, including all inherited members.

+ + + + + +
metadata (defined in BT::TreeNodeManifest)BT::TreeNodeManifest
ports (defined in BT::TreeNodeManifest)BT::TreeNodeManifest
registration_ID (defined in BT::TreeNodeManifest)BT::TreeNodeManifest
type (defined in BT::TreeNodeManifest)BT::TreeNodeManifest
+
+ + + + diff --git a/d5/dc9/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic-members.html b/d5/dc9/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic-members.html new file mode 100644 index 000000000..2a2350365 --- /dev/null +++ b/d5/dc9/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic-members.html @@ -0,0 +1,118 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprUnaryArithmetic Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprUnaryArithmetic, including all inherited members.

+ + + + + + + + + + + +
complement enum value (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
evaluate(Environment &env) const override (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmeticinlinevirtual
ExprUnaryArithmetic(op_t op, expr_ptr e) (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmeticinlineexplicit
logical_not enum value (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
negate enum value (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
op (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
op_t enum name (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
rhs (defined in BT::Ast::ExprUnaryArithmetic)BT::Ast::ExprUnaryArithmetic
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.map b/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.map new file mode 100644 index 000000000..e2f372cfb --- /dev/null +++ b/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.md5 b/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.md5 new file mode 100644 index 000000000..c759470a0 --- /dev/null +++ b/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.md5 @@ -0,0 +1 @@ +03b5e4f4e65aefda2598dafd5a74e573 \ No newline at end of file diff --git a/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.png b/d5/dcb/class_b_t_1_1_behavior_tree_exception__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d6364110d0d6c2e30a954b8f21dbb31ab860cd29 GIT binary patch literal 4953 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 K)k_~(zyCKmGU;~! literal 0 HcmV?d00001 diff --git a/d5/dce/struct_b_t_1_1_tree_observer_1_1_node_statistics-members.html b/d5/dce/struct_b_t_1_1_tree_observer_1_1_node_statistics-members.html new file mode 100644 index 000000000..db1bd0363 --- /dev/null +++ b/d5/dce/struct_b_t_1_1_tree_observer_1_1_node_statistics-members.html @@ -0,0 +1,115 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TreeObserver::NodeStatistics Member List
+
+ +
+ + + + diff --git a/d5/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1conditional-members.html b/d5/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1conditional-members.html new file mode 100644 index 000000000..0ca7079d0 --- /dev/null +++ b/d5/dd2/struct_b_t_1_1_grammar_1_1_expression_1_1conditional-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::conditional Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::conditional, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::conditional)BT::Grammar::Expression::conditionalstatic
operand typedef (defined in BT::Grammar::Expression::conditional)BT::Grammar::Expression::conditional
+
+ + + + diff --git a/d5/dd6/shared__library_8h_source.html b/d5/dd6/shared__library_8h_source.html new file mode 100644 index 000000000..83e7034f2 --- /dev/null +++ b/d5/dd6/shared__library_8h_source.html @@ -0,0 +1,266 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/shared_library.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
shared_library.h
+
+
+
1//
+
2// SharedLibrary.h
+
3//
+
4// $Id: //poco/1.3/Foundation/include/Poco/SharedLibrary.h#1 $
+
5//
+
6// Library: Foundation
+
7// Package: SharedLibrary
+
8// Module: SharedLibrary
+
9//
+
10// Definition of the SharedLibrary class.
+
11//
+
12// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
+
13// and Contributors.
+
14//
+
15// Permission is hereby granted, free of charge, to any person or organization
+
16// obtaining a copy of the software and accompanying documentation covered by
+
17// this license (the "Software") to use, reproduce, display, distribute,
+
18// execute, and transmit the Software, and to prepare derivative works of the
+
19// Software, and to permit third-parties to whom the Software is furnished to
+
20// do so, all subject to the following:
+
21//
+
22// The copyright notices in the Software and this entire statement, including
+
23// the above license grant, this restriction and the following disclaimer,
+
24// must be included in all copies of the Software, in whole or in part, and
+
25// all derivative works of the Software, unless such copies or derivative
+
26// works are solely in the form of machine-executable object code generated by
+
27// a source language processor.
+
28//
+
29// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+
30// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
31// FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+
32// SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+
33// FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+
34// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+
35// DEALINGS IN THE SOFTWARE.
+
36//
+
37
+
38#ifndef Foundation_SharedLibrary_INCLUDED
+
39#define Foundation_SharedLibrary_INCLUDED
+
40
+
41#include "platform.hpp"
+
42#include <string>
+
43#include <mutex>
+
44
+
45namespace BT
+
46{
+
47class SharedLibrary
+
48/// The SharedLibrary class dynamically
+
49/// loads shared libraries at run-time.
+
50{
+
51public:
+
52 enum Flags
+
53 {
+
54 /// On platforms that use dlopen(), use RTLD_GLOBAL. This is the default
+
55 /// if no flags are given.
+
56 ///
+
57 /// This flag is ignored on platforms that do not use dlopen().
+
58 SHLIB_GLOBAL = 1,
+
59
+
60 /// On platforms that use dlopen(), use RTLD_LOCAL instead of RTLD_GLOBAL.
+
61 ///
+
62 /// Note that if this flag is specified, RTTI (including dynamic_cast and throw) will
+
63 /// not work for types defined in the shared library with GCC and possibly other
+
64 /// compilers as well. See http://gcc.gnu.org/faq.html#dso for more information.
+
65 ///
+
66 /// This flag is ignored on platforms that do not use dlopen().
+
67 SHLIB_LOCAL = 2
+
68 };
+
69
+
70 /// Creates a SharedLibrary object.
+ +
72
+
73 /// Creates a SharedLibrary object and loads a library
+
74 /// from the given path, using the given flags.
+
75 /// See the Flags enumeration for valid values.
+
76 SharedLibrary(const std::string& path, int flags = 0);
+
77
+
78 /// Destroys the SharedLibrary. The actual library
+
79 /// remains loaded.
+
80 virtual ~SharedLibrary() = default;
+
81
+
82 /// Loads a shared library from the given path,
+
83 /// using the given flags. See the Flags enumeration
+
84 /// for valid values.
+
85 /// Throws a LibraryAlreadyLoadedException if
+
86 /// a library has already been loaded.
+
87 /// Throws a LibraryLoadException if the library
+
88 /// cannot be loaded.
+
89 void load(const std::string& path, int flags = 0);
+
90
+
91 /// Unloads a shared library.
+
92 void unload();
+
93
+
94 /// Returns true iff a library has been loaded.
+
95 bool isLoaded() const;
+
96
+
97 /// Returns true iff the loaded library contains
+
98 /// a symbol with the given name.
+
99 bool hasSymbol(const std::string& name);
+
100
+
101 /// Returns the address of the symbol with
+
102 /// the given name. For functions, this
+
103 /// is the entry point of the function.
+
104 /// Throws a NotFoundException if the symbol
+
105 /// does not exist.
+
106 void* getSymbol(const std::string& name);
+
107
+
108 /// Returns the path of the library, as
+
109 /// specified in a call to load() or the
+
110 /// constructor.
+
111 const std::string& getPath() const;
+
112
+
113 /// Returns the platform-specific filename prefix
+
114 /// for shared libraries.
+
115 /// Most platforms would return "lib" as prefix, while
+
116 /// on Cygwin, the "cyg" prefix will be returned.
+
117 static std::string prefix();
+
118
+
119 /// Returns the platform-specific filename suffix
+
120 /// for shared libraries (including the period).
+
121 /// In debug mode, the suffix also includes a
+
122 /// "d" to specify the debug version of a library.
+
123 static std::string suffix();
+
124
+
125 /// Returns the platform-specific filename
+
126 /// for shared libraries by prefixing and suffixing name
+
127 /// with prefix() and suffix()
+
128 static std::string getOSName(const std::string& name);
+
129
+
130private:
+
131 SharedLibrary(const SharedLibrary&);
+
132 SharedLibrary& operator=(const SharedLibrary&);
+
133
+
134 void* findSymbol(const std::string& name);
+
135
+
136 std::string _path;
+
137 void* _handle = nullptr;
+
138 std::mutex _mutex;
+
139};
+
140
+
141} // namespace BT
+
142
+
143#endif // Foundation_SharedLibrary_INCLUDED
+
Definition: shared_library.h:50
+
bool hasSymbol(const std::string &name)
+
SharedLibrary(const std::string &path, int flags=0)
+
void load(const std::string &path, int flags=0)
+
void * getSymbol(const std::string &name)
+
bool isLoaded() const
Returns true iff a library has been loaded.
+
static std::string suffix()
+
virtual ~SharedLibrary()=default
+
SharedLibrary()
Creates a SharedLibrary object.
+
static std::string prefix()
+
static std::string getOSName(const std::string &name)
+
const std::string & getPath() const
+
Flags
Definition: shared_library.h:53
+
@ SHLIB_GLOBAL
Definition: shared_library.h:58
+
@ SHLIB_LOCAL
Definition: shared_library.h:67
+
void unload()
Unloads a shared library.
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.map b/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.map new file mode 100644 index 000000000..d5ddd9e79 --- /dev/null +++ b/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.md5 b/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.md5 new file mode 100644 index 000000000..393ad4fdb --- /dev/null +++ b/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.md5 @@ -0,0 +1 @@ +efd8f7eeb242aebbbafc3ed3903a4e5c \ No newline at end of file diff --git a/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.png b/d5/dd8/class_b_t_1_1_pop_from_queue__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e55a7c19f5e0d09c84d892d14f5508b6ac0ae3e9 GIT binary patch literal 11810 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 Pz7f*ma$ + + + + diff --git a/d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.md5 b/d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.md5 new file mode 100644 index 000000000..3211411a5 --- /dev/null +++ b/d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.md5 @@ -0,0 +1 @@ +d82525d669662919c9f9cbcb02b6a275 \ No newline at end of file diff --git a/d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.png b/d5/de7/class_b_t_1_1_sequence_with_memory__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..472980c275f153e6c0aee1f6d40df15a207c25f5 GIT binary patch literal 6816 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 QJaQsXlv9<>l`(nwAAyx}5dZ)H literal 0 HcmV?d00001 diff --git a/d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html b/d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html new file mode 100644 index 000000000..d0239941e --- /dev/null +++ b/d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: BT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type > Struct Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type > Struct Template Reference
+
+
+
+Inheritance diagram for BT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >:
+
+
Collaboration graph
+ + + + +
[legend]
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.map b/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.map new file mode 100644 index 000000000..247c26cfc --- /dev/null +++ b/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.md5 b/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.md5 new file mode 100644 index 000000000..44057e0ab --- /dev/null +++ b/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.md5 @@ -0,0 +1 @@ +56b84347f1f14c3846a753fe8ed56273 \ No newline at end of file diff --git a/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.png b/d6/d15/struct_b_t_1_1_grammar_1_1nested__expr__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5f903ba37692e6b88c3c7ddd00e2a4260d9d4c GIT binary patch literal 5715 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 + + + + + + +BehaviorTree: BT::Ast::ExprComparison Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprComparison Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprComparison:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprComparison:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + +

+Public Types

enum  op_t {
+  equal +, not_equal +, less +, greater +,
+  less_equal +, greater_equal +
+ }
 
- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+ + + + + + + +

+Public Member Functions

+const char * opStr (op_t op) const
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + + + +

+Public Attributes

+std::vector< op_t > ops
 
+std::vector< expr_ptr > operands
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprComparison::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/d2e/updated__action_8h_source.html b/d6/d2e/updated__action_8h_source.html new file mode 100644 index 000000000..6b79201a6 --- /dev/null +++ b/d6/d2e/updated__action_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/updated_action.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
updated_action.h
+
+
+
1/* Copyright (C) 2024 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/action_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The EntryUpdatedAction checks the Timestamp in an entry
+
21 * to determine if the value was updated since the last time.
+
22 *
+
23 * SUCCESS if it was updated, since the last time it was checked,
+
24 * FAILURE if it doesn't exist or was not updated.
+
25 */
+ +
27{
+
28public:
+
29 EntryUpdatedAction(const std::string& name, const NodeConfig& config);
+
30
+
31 ~EntryUpdatedAction() override = default;
+
32
+
33 static PortsList providedPorts()
+
34 {
+
35 return { InputPort<BT::Any>("entry", "Entry to check") };
+
36 }
+
37
+
38private:
+
39 uint64_t sequence_id_ = 0;
+
40 std::string entry_key_;
+
41
+
42 NodeStatus tick() override;
+
43};
+
44
+
45} // namespace BT
+
Definition: safe_any.hpp:37
+
The EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since t...
Definition: updated_action.h:27
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.map b/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.map new file mode 100644 index 000000000..5ef76c905 --- /dev/null +++ b/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.md5 b/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.md5 new file mode 100644 index 000000000..32f0dc7ea --- /dev/null +++ b/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.md5 @@ -0,0 +1 @@ +3e1d8d7e2c41338a3fc8117a4b416a77 \ No newline at end of file diff --git a/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.png b/d6/d48/class_b_t_1_1_simple_action_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac51c391e374ee08bb8336b2336d173fec11242 GIT binary patch literal 12031 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�n`BRKQtz$4fg)HFY!XrxN|5^+X(n3dd|nlNW#vJ zt1n$H9W>DuzMh^Q@b7j2bfWburZ?p}`DdU(qW2%9Gf+&xAcu(+LLwqD_!#sOY9#Us zw0p=7Rb642d+`qnYV7U3g~UJrG$}TpP@hN#i}EXErl;ps$VEfwI(QERRCCba9N18y zQTK!9pgRi7HG}=#3+<6=W#;z@2na~D==FmKJXzHIiV6$+>3hNG4Gj%N3$Q^Zt1z0k zbzS$^7|>3o-Fh1c#AtKSY_#}q@YB&ya@6cLDd}#o``J~9a?R-mKQNej;Kb!LQaO(P?g`#H(O5U|jUVZ1gXnBp+dz+DXuIx{peOu*c`bgGc);o~mMsfLEQB}jgA?%5 zpa+66K|y%nWj8@V7^$?)c2dre$dcrhRH@~WMCflx0E(9ddPoY#D! z67#9L`dvs^eIU6j8b#n3fI9p9ei4`j=HunMmdf{GdJuB*52Wn1mcJQjVWtrZZD@SF zSw16>0ssah5QdynID}xuE8Jh93rN108rI)WS}~Ae@X`T94OooD{o)L3vJ@Qc&B=H$ zkFVP2WdT|6f$(78Nc$# zg^Jy!-QH49_5Pp+7*(mt=b*Cd7#bR~G&8#2`^>9+BTKfq5vF98mnA{@mtR$}*Huwh z4HqB?KwfU&Rgx4$g4aDlsXkzM0u)Z|`R%n;by*C9p+cR?X?) zOK`A6dSA~EwIcP+s_blfw2%&9tYjtq`*$xedvZ0a(g>J2kZbcP7`A2x+}Jlwk=s)fSza>7zFIWVDc;rd_obh2@+cl-|tHIvpEX9yBry9 ztfdBSkfR2MhDr{!H6jB1$n%0$!b>?IR(J^tA;l@O8?x`@kAv%|%)T1^w{bMp-s&gJ zYqPVnD@6p7S@MS61y8AvgUdFpFz+p)R6EBkx%j + + + diff --git a/d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.md5 b/d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.md5 new file mode 100644 index 000000000..9d1ac8e87 --- /dev/null +++ b/d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.md5 @@ -0,0 +1 @@ +c15b2e08c8e402e13b9fe780c2e9a16a \ No newline at end of file diff --git a/d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.png b/d6/d56/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..45de70f6273e1241d452a2e961dcf697f1ad2a09 GIT binary patch literal 5875 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 E56T2miU0rr literal 0 HcmV?d00001 diff --git a/d6/d58/struct_b_t_1_1_test_node_config.html b/d6/d58/struct_b_t_1_1_test_node_config.html new file mode 100644 index 000000000..cd0a1614c --- /dev/null +++ b/d6/d58/struct_b_t_1_1_test_node_config.html @@ -0,0 +1,164 @@ + + + + + + + +BehaviorTree: BT::TestNodeConfig Struct Reference + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TestNodeConfig Struct Reference
+
+
+
+Collaboration diagram for BT::TestNodeConfig:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

+NodeStatus return_status = NodeStatus::SUCCESS
 status to return when the action is completed.
 
+std::string success_script
 script to execute when complete_func() returns SUCCESS
 
+std::string failure_script
 script to execute when complete_func() returns FAILURE
 
+std::string post_script
 script to execute when actions is completed
 
+std::chrono::milliseconds async_delay = std::chrono::milliseconds(0)
 if async_delay > 0, this action become asynchronous and wait this amount of time
 
std::function< NodeStatus(void)> complete_func
 
+

Member Data Documentation

+ +

◆ complete_func

+ +
+
+ + + + +
std::function<NodeStatus(void)> BT::TestNodeConfig::complete_func
+
+

Function invoked when the action is completed. If not specified, the node will return [return_status]

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/d58/struct_b_t_1_1_test_node_config.js b/d6/d58/struct_b_t_1_1_test_node_config.js new file mode 100644 index 000000000..9ba934288 --- /dev/null +++ b/d6/d58/struct_b_t_1_1_test_node_config.js @@ -0,0 +1,9 @@ +var struct_b_t_1_1_test_node_config = +[ + [ "async_delay", "d6/d58/struct_b_t_1_1_test_node_config.html#a24e48bd8764c98aeb4ea762333e19d39", null ], + [ "complete_func", "d6/d58/struct_b_t_1_1_test_node_config.html#a98806d4cf69c3d88a72d4e5c6230b60d", null ], + [ "failure_script", "d6/d58/struct_b_t_1_1_test_node_config.html#a18fd03863da6bdc40a2453bb9d2b96fc", null ], + [ "post_script", "d6/d58/struct_b_t_1_1_test_node_config.html#abb7ef3fd05d82f075a08f8326a0d79d3", null ], + [ "return_status", "d6/d58/struct_b_t_1_1_test_node_config.html#a87934348c6c5ba67e18e31ad5014961a", null ], + [ "success_script", "d6/d58/struct_b_t_1_1_test_node_config.html#a0dc6a6937186ebddc37a52b06d8e3fbd", null ] +]; \ No newline at end of file diff --git a/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.map b/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.map new file mode 100644 index 000000000..485524cca --- /dev/null +++ b/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.md5 b/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.md5 new file mode 100644 index 000000000..7041aa4f5 --- /dev/null +++ b/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.md5 @@ -0,0 +1 @@ +07beb6149d717be09d08dcefe7e17741 \ No newline at end of file diff --git a/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.png b/d6/d5d/class_b_t_1_1_always_success_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..141f0935dcc7f142c69e14aba57e88a199c1c20b GIT binary patch literal 12349 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 literal 0 HcmV?d00001 diff --git a/d6/d6c/class_b_t_1_1_script_node-members.html b/d6/d6c/class_b_t_1_1_script_node-members.html new file mode 100644 index 000000000..b2551a97e --- /dev/null +++ b/d6/d6c/class_b_t_1_1_script_node-members.html @@ -0,0 +1,169 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ScriptNode Member List
+
+
+ +

This is the complete list of members for BT::ScriptNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ScriptNode)BT::ScriptNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
ScriptNode(const std::string &name, const NodeConfig &config) (defined in BT::ScriptNode)BT::ScriptNodeinline
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d6/d78/class_b_t_1_1_repeat_node.html b/d6/d78/class_b_t_1_1_repeat_node.html new file mode 100644 index 000000000..ef0921e99 --- /dev/null +++ b/d6/d78/class_b_t_1_1_repeat_node.html @@ -0,0 +1,357 @@ + + + + + + + +BehaviorTree: BT::RepeatNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The RepeatNode is used to execute a child several times, as long as it succeed. + More...

+ +

#include <repeat_node.h>

+
+Inheritance diagram for BT::RepeatNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::RepeatNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RepeatNode (const std::string &name, int NTries)
 
RepeatNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The RepeatNode is used to execute a child several times, as long as it succeed.

+

To succeed, the child must return SUCCESS N times (port "num_cycles").

+

If the child returns FAILURE, the loop is stopped and this node returns FAILURE.

+

Example:

+

<Repeat num_cycles="3"> <ClapYourHandsOnce> </Repeat>

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d6/d7e/class_b_t_1_1_port_info__inherit__graph.map b/d6/d7e/class_b_t_1_1_port_info__inherit__graph.map new file mode 100644 index 000000000..e5f8013c9 --- /dev/null +++ b/d6/d7e/class_b_t_1_1_port_info__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d6/d7e/class_b_t_1_1_port_info__inherit__graph.md5 b/d6/d7e/class_b_t_1_1_port_info__inherit__graph.md5 new file mode 100644 index 000000000..4c0b1ea19 --- /dev/null +++ b/d6/d7e/class_b_t_1_1_port_info__inherit__graph.md5 @@ -0,0 +1 @@ +2d93bc6c47ccdf7654a9fe2b2835eba3 \ No newline at end of file diff --git a/d6/d7e/class_b_t_1_1_port_info__inherit__graph.png b/d6/d7e/class_b_t_1_1_port_info__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2a88ff5497b3bb34aaedda711b9e45374a93239f GIT binary patch literal 3327 zcmcha_fr#X*T+}j#(<#+NR3p580konZU{vPMHILxN>Mb@oAee+08y%-G-*QUEsB7Y z0D+)E15$&Cp$G`lMQO^j&b;%^^A|k3vwMEHW_M5dUgvW*$->N#ja85p006eDMkq_r z`hb@wgc-btRD5Lz4YP}hAqqJDdlq%zGXVhl@+#`ejo|#Xf(UfxgfO{_%J>AKhZq`< z;ZiOePlba!1uzuEmMT9OPs`Nz!8bK= zd3XI*VP$3IKs3?H?F`G<(ooUe~3ja&#W9 zYvj2`mDODwc>g}$vJz!xmU4aT%$YMrXf&zW^V4+seMMP?%?||{5H>b_Gc)%7{(cK9 ztN4Y5I}UFG+1y?U3O>fAYDFHYJr7wFXx|;T2LN1SsLZUnZ)c}c-74$)bZcyS`f2?9 zV*?2WM#j$-1A%E^M3~b5njtp=_c<9G?f6e5*My(>Z>5YlsVAGWorF9)c@d01f@fl%Wz zu8qz^Sy{(UC=wzlB$S?>j;*PY=0sXpSVV7c`^iIN!Em3}rFzjwM_XhOjF(scTwij* zLsfogMO9T(UUR&088R|bd;Lonb*bR8KeIvUY48Am0<(m{LG<3KMND&$n;i#3CajUoS{+E2;GNJ2 z{Q)oZ^7fVj1~$5m%^+e6V>XWGPjUz^P~Nn)K`2eU5f|j-q&ho0Np}=&cfAoW?PMxJ zUzKTcpbp$8>i&vKEk)17ob|f$$%4;`{pzP$-mBKmbpD*Pk|h&0hJIuwSy`5)z)x0^Hoa zI_xYgCxB;Y$>jSXG3Diw4bsVD)iygJtK+r3lau_Bzjtj&{r&3SOC_e8m>Gz4y68;Q zaReTke<4rRyC2lz78uejn3dqIK0dK@BWV}3WTus!c)BPY4uSU43xZ~_|4KI}hOD

f zMXk?txIg#}cA1YuL%NX%-=y9g^BGQlBDIio%`L614Hy_05{EG_5qa`MLOzGGqul2t zB}=NRSjj18{X;u;RhT^KyQ>p;>H6yGyz}Ru$95K+^QpixBnZO)8gez8$13C0p=NDQ z$K>busY6&vT8maQ6R^qQ*pZOc!f}yN0N1MDuX92gqlR-{&+RqGIuEcea}eS<&D{^G z<)Qu*1eF_kH@40yq^TrhASidNZbDChD+py~02#V9@RS8o%3esvd?Fl-cqW zGT@6&nwUT*ABl~5-09b>q?`@@3h@xa2}b3fY0{F}gK#M}XnDNc3og zF=P7SgaCy3ke`9@m@9>I@^}cZyH#}|U_)8ae6U0)dM(vjiC;NcRD+PNK$GSZy`{|1 zr#+ced4M7wuuFLUu9@m|8)09zD zOso5Uc^D4elhTrbLZS5eR2`hrxt3MgYim1slg6!Ied< zC1_*j$!=*$Nq%Q%SC`I$U+dUbbJ7Gy1HoQTPKygVH%Ak9*ND*hk^UC_{EF3)QC;`iGQ>EV*WV=JQ7+T zAWGHisHr7>_+aMoshKS)DM@Ku)7Sd64iNH0#@ELI+ASg(~v$@)Lp9f?g zB`6$&fq;l=@ttSB6+HV-^1bD6BY1^-A7FRx-rWw-($Wh4v3xpewqt z^YF|?(WjIX0E}E*?S6D`2#l%k8lJnHvCkzBe^1A@ zoTTUb%82JR(BD_XD{*_GBYwSR5eI2=~OYjE6sd zj7dx5Y>+;c`8E#3{v}may+1CEY#fMe9~il?eXWMqhVI9>8>$5oA8CAhc4q6k)cb)sGmk>x^ba$R0oK?Vh>W@KdSO@gxv=9L{-WpIrF7_YTgEqzP{ zJrm_h0swIC`pZDHBsUU?tZ^wAn`51BW9C9yI5<2yItpJ{Tx?r7;5O%sii(o9ZDIoF zJ#Z4>=jR7NurCf4X#DxK#I0ciKp>EYwsNJt!^53asc}UDZQR_y_r6RWvDRI*SKb1V zRZ&~}01?@i_e?6C@>Mjh2$Xv=pB%HimkOon`Z{MscsPB=NuM`wWz!SW)$V-h8Vo7)VaSXlKeHWnSn1|QBf)Z7IzbG zGTLT)&a18ad3$eotQ1d1yV6w5-HSjBvwpolAEi5*Mj^s9=fOW3;HthEst)NC^B?0m BP(c6y literal 0 HcmV?d00001 diff --git a/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.map b/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.map new file mode 100644 index 000000000..247c26cfc --- /dev/null +++ b/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.md5 b/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.md5 new file mode 100644 index 000000000..44057e0ab --- /dev/null +++ b/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.md5 @@ -0,0 +1 @@ +56b84347f1f14c3846a753fe8ed56273 \ No newline at end of file diff --git a/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.png b/d6/d87/struct_b_t_1_1_grammar_1_1nested__expr__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5f903ba37692e6b88c3c7ddd00e2a4260d9d4c GIT binary patch literal 5715 zcmcgw=RaI+v>lQc87-oh(OW|FAi5ADN)WH!NAx~=PeeC}(W2Lo2!bGb^awGCK6;7K zdyR4*w|%&Oz%@T-+Bwghy`Qz$UTa5bYA6#!>7Wn@gjnU7qBeNOfPW_fJaFW`OTi7E z@GMo86(QF*kKE>B6a+#=prRI#4Ngoudw$8N?y+ObUg3VJLCZe(@h zN=1$NKH4H4FVzafJtZ(+pJtYMi&AVoHyyXAq8Z9WPQIOC_IscoV_sV-4tAar-nF9n zM`>A1_~7iS&ApYVz5kyD+;iW{N9e%qgK6|Z|7E|_iMujRHw`>i5FFT&Kd**wZf?3M ziXg<_SZoFf`X6rwA5B}&Aa0TUO6s-pFT4{~`8Q?7YU3U`xp3h-0WaBM`wP{k7H6>TibQ{$GbLcw6xs%`ubgR@=#2j3#m7EB2AK2qt71e zr_xgV0-j@tor_D4_gr8^TwEN>T5w_DooVmBAIr;D0e`pZI$+(Ah*q?!%aT#E-=h!e z8KP=rGg~dHwQt_w+KQwvkia|Z=T?jA_P{s9v$L}u6hkxNypzXUm#+}yd zmM=Ob<>lR|7cx=cGK;zXezni~mAH7JI3U6{RsLqHVLcNQm^C^ZxxeqeIaNd0m-3K& zy&-kZcNLbDl47~kjf{+nl7Idj8Zz+W+bw(&=7$f7-Q3*7J=ZC&_ETG#IXUsFZO}^E z+V?baWSrdlM@#jV=G#JjRu z%*Bt4==A5vGF7ykKX9ID;24Q{?1lFE_3LAi&);-v1TQkLjwXtLmX`L}vuEEEIaCvp zlV1%Nx0!$cyVDwfcCgCE!SRn?xv}6!vnHR)USGF^KkA*Gow=2jS`)P{b298492N`h zVH3^%b(4EX#!80K=wW{utVWhZaza*?`lTSen`o-Rvs6< z10PUaFNPzSf}Uw;Xe4E1@Ep=pQ7LV2ZzpAEYbeJtBdIYKJl-1&KPdj|(L)_b0t*?WfRFA;mkkNE%S z(6`JYhNZFUGuPl!xi)@Oet%-dU}30`5yd0qvLBGCoPBP z+QSIfj>gTXf3~%?9q#ook&|ip`qn3;H7A46xp{c{3R}N?5%60{*6WXBdH4{Sn3$+G zb#YV?O!+f8Ik`PbOJDyPyeF>c&mZf&mdeVZ!Yu?^nkxx2HT467$?)2leRw`GvqULe z{AY2?!L+|pBs^PiY-A+Cm`}`?Un5&eWo&G$@b}uYf+6rxaZb>=O37S}Ln_v)w5*K7 z!NK8tyKzTt(b3+19T6~tR#n~eMD|WIL|gDpo(C8^3a(FH1)4MMOoP6bwz*w2!{w=_>H0 z!p{%a+G|TnxUolm#w`J~4CeO;wjtdEaT%0b&|LE%zet+7-6wJWK z$9H4dt_N3Kc)pc*wq$_ z@3uYtSSt|cJ0QI;79DsLl$0#O!sPT~&Ydr0FK_ek@IbO$G`%IVNCpN5^5bWuO)C-h ze5MG`z%>V=<}U2!CQ-9#e0R4Jck*+HTwq|crVSh(IyR>JwYC-t$4<7^)I2)$Yu0qO zx4&oF*wD~!E-(*h)78^+>*SQTi>o%rUl1$y>`iE>pxrS0^6KhRWe=l*ni`SyukxP>o)f6-3JZ~ps(`b2B6?AT`mwvqRZ^0*$^ zX`Y^**6^mFONsT3jY_XA!_KZQ79pYG<@V{s7;65-)4e54Zi>jrNI7?RA)N=wy}hX9 zWR4^R0^xRb;VZS*Nq$SBHtlhZVt>=&$T-b;^bi_Nnjz*wRa;bC%*M`sJ18iK;Le>k zu+H9)G7}CYR*CIDD=Q)=hiM@5FIdgXA7y_+(|xMs9)* zlYb!!GP^m`NPQC$Sci<3_6|Qke^PRC+s~iSSFc{_*Sm87RwV&M*>thrclygEC=|4s zv_n)<((M{UyY6h@&I#@bBM(zWd8K zFwAgfG>f&V-#XZ7EpCcaPzGP%JtVjB@!13f?%v!vwOIg8y)jAHlh-gwFY|*xztW_9 zg)S~H)myqCH?1f5`tKYWBjXKNZEFlsk5AW2D_qYH?P8f^8RMn)2~zk>proXvT1(Xw zb6;qF5GR7h+2FR+ZGz!>@Bn*pb}%wH$n4nYz5-oYS$V%XJ~${hIXT(h#YgsT$d(-x z{W)My_2U|k(6^B#pFTx{GUu7r6c4_VvJ**fTzvUa2hhB#L{=OS0qV|jhmLRo8qg*% z%O9S-dc^_OobkkgfgX?(eD!#y9udK3{7nw*T|+V4dmNJ)jjUU3N`u=G1$Ir$&T4dZ zb?InpKY_tu-lJk-VlU<8aYjc*G>wet0r|f4_ixm!_`Sw0E1Tmy+oV!fR+f~N*8s6Nvp`CF!=< z=^Eks0(7qk$=lTc5D6$0+$-muO!yGC#a}eB@?A6vDH!EiCCEwkU+PH|8W;@!#%6wN zXm#e9s(0zcZV8)m=62d!D$m)O>&!>=L)*_q->aplDyoLF(O4S<^>nTvML4%tNpk8q z4fISHw|&xlE*8Y23ya=e_)$2A?DEild4*w^%n6s|IxUE!j|jOi z-10R((2yz&XIN~)?!HzPtUOKs+O-OKPl+u>o&*&vkp_vNdi;k-PwjKC_@vV7Rnm9T zy?069yexG@%+(nAo4kbZA$WZ(jg z?{gX|dWc3XSsXzhbM>iyRx+cHVPeQch+7rXyfh9)8e(vFkBEmXoAx}C#y{lqdCI-) zzbT!Ujc*+l7hL{F!-`MRpa{6=;rAA-;A*Uyj+M~e#kC21z|S8M6GNEve8n|F zXr0KeD)91X9Mt}s;$ki$yjvo4#7)i3d&8>y@_Cx`gLw+=En?2oA;x?Wsj1W<1IrXB z$Llk6uJ=oDj$-rrm5 zaa;aD_SvuoYGGmVM6ygbW^vInZ~Dm2(Z(iXecc}1Kz?2xj=H*fLa!BQieVWU87k8z zPL57ac|*4Io144=aQhm=uQfGo7z{noO(!ECK7D$w!!QHi!D0m@`DZY;B6Ohlf&^w9 zsw$S0l|5BeB?JVJtI4gl4#bq(>Hy5g-@gOI2+=e#L4wu{t^jgpVsf%=d|Xc_7!Vrp zE#V-k=cN@b8R_Yo|Na{W`pb`%EImcdJPoExuw!iSP zI2(8Hy$BH63Lr0=TU&X**LJ57XciF>3Z(+jc4;+BM|Teo6`h&OD|#CbFIvW?|H#R~A*R{?(Ea4VUVQV~qDy+t0ia36XB-K%S`+$=7-&qGSul}r)#&)RLYZ!d zxj=4H69XkBrO)|V@zWY0VIKKf7WvnI`UC~Nq@5n>Vd~=`LYFrkNNZ?h6!Z0~$O8M0 zOdd!xP)ULSk8jEEL8dU6O6M5~ZVG6oxEpSx_fB^;S|$dIwWUESeKu=l^!4@i*{tlr zo3;i{jcN%?>#v}okaI8`$TvJZYz~AQKYn?FRA72(*UR|64cmiA1 z38Y&kP>CZWBlD{{!QDVKn%mgm0|f|@2Kf#)TT@5Jsw$S9wffS)z<`B^hp@7;GELH( zFOmSfr<(PRT*q{GSkLZZmI^1pt)*$9w3p|#?M20A-CyDxQhJu7{wdu{kk z%wU^jWMrBLb~I`Cts4D~9?;R#hZV_bY9?UmY2Lki7a1G7Su;I5O9G)0wvN>_1JEr{ zj?b^Jrv>bC3JUXWLrFY^&7p)dWB$+{DJ}t7Z*|p0TEGW2dOMk@^cP$BbU`~&4j~rWaKWG zgRrr&-KuE4I+s4ecsdn~+J}wj<>e6&6NiCXN_l9ccD&P~fgb{FK6G^;D-@IjD4C(b zLDz8^6E2=X-$Ve9g{fSJj3L{mVo}RQtN~Sl11(feyrs=t4i0Ct5~9_}6t}2qt*GD! z%9eqF0Z7>BrY5PIk;P380XV=-`b)lVnYbW%TR840^q#1trKP>9^BzL%nX!op+1mB?G2tAcNrN;@bU5W4GdmKDxP=)`nxfUz!C9 znqO$NvbD8!&Ppt+%@UJK<8ygulwN2GmTnT>5tgI}sd(4idrKJk~{*r(Q#vCTw z+Hk6^f4v#9RkX9aKVts~)G8ST#aoaesKW`Ed7b|K+tJZ+OKw%$WwA4gn~zTkoColA z7X~8^Z40^o^26cOhm92Pla18$bUJYfiS%jrofjFeJ8xV_Eeq?7c?P+R$jX8N!?>`p zfRp?@Y0 z%<^Z_ee1usZhkPgxf%BK=~G(=2ZewDsjr4*y+=-F{YNH-hS932d={gh{smSMPzw=Y zjf9Mh7(j=fZy7o!B*6de8 zd2Wm?^m65h_@iu?!HCjzYpN#ia*rDxT2xR_fZh-*(!MXH?$J7L1@HJ!RMfTnu6djD zMKcYn%?<>oc_N@p#Q53*G`BNvq^h}j+uuy zjxL?qBqo>L&pZo;zSV)6o5Q#G&*|&Ufxh>Ow2PN9Hyb_X3#P;nm8Tkt + + + diff --git a/d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.md5 b/d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.md5 new file mode 100644 index 000000000..423da46b4 --- /dev/null +++ b/d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.md5 @@ -0,0 +1 @@ +535644c4418651a3b2bd5a5d53bbca3d \ No newline at end of file diff --git a/d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.png b/d6/d9c/struct_b_t_1_1_grammar_1_1_expression__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b3af2b76124201d74a579e612016eefe247103b5 GIT binary patch literal 5332 zcmcgwS5y-~l#Mh6siF5O0#XE#ZXz87X(A$01Ja};ML-bgT|@+=Nl}!Jv_ODpB!JR; zZ$WA((p!KXclT${?)RRwb25|3%zO9Uckjd)=xI_>uu(uD5GrjgH6!pj3SO>P$iTal z=-y}WL59%LRD)dndwgszN`XKaVzkwijs3GWrUMO(mya+1-Lh16^Lk86(od>x{F_ZI zc6f~Q#yLlsRgwJ%BkyljyY>v4as?Ut z2x?IyGUtXAHQGdV?w6lQvthAhU_+oZ?*?h)=!8%^Djm0)zQjke| zlu;pDJT^M`PmCQ)plSDq+xY2n{2z-)wEal}&|kcVg{@=!KVNwI^f}k&+hfKG=1^NL zKZi>m1;%SnXI-_OWj8mEj|q>9lT4=6@_hRA>HJR`I7hTZ`Jlwp?5$m(_CA(%~V&d<(L+%emRkRo3hm2*=6S?T8c6QbSh1xlKwgzS> zUoqJEkuAz6%(W>XJJumbHXSAumS9=YUgI>lK0;Nu4c+*inwAz-loLSVg46+{nx%0SyzvHtn~2`cGA!_iY8!R_T3*Mp47X|&;1B9twKc5 z;u{G(uEdAE!CUAHSe@H+?9h<0%R~+N@bEC^fR&ZCqqn!c&ULcV`Ug?a$!ZbxB*`lb zMy1rUnQeEuw|%7SiJ_I%mQg9*m731x;{43?n;rRkaf{fgDRWe?gPq-67!B;Zjzn`f zShmyx#Z>P;>w5(AnW?Wh^L?MxZU6IGMROz=vwQk9ue7vFJSQi|?a(Eg_O{cD8zmzPPivygZ1Bxazb% zRy8y+A<`Q5`n8avVy0e>lD1&VFPlt_g5;o}pq0fmtIxLWiTyV!np8T|B>dR$PUfR! zPc*Bls`d^h-3Mnc&i!H&6F)EKhRlfjrQTCV`EKOXzzJ^#1_rbW`jLBF2Su|zJHI+Q zK6);+_2;QZtt80Kd^9Z3po0__7xVGucXVhec;dn<&$1Q$u0S%n?fLjlrniDM>FDV8 zPVf~EEG@ajp47#|j^>CPy%s63SZx1QiKe>>*@=4r&6DjVVZZG7vh_6Ggv%!;%#4H> zRH9;{*Vfjwz8ViCu*-(~0Br3I=AOSBa=yJWjT+tb*H_vmIXkFFGrn(6wqt!B^uuT=i&B6Z+oXx0;%pli$4IX)V&rUXzZZ{`Bb+51(!>Y}&0kDJeQcX{f+IMp*Mkh^NSujOD z-iL{W90v`(8^ zvxvpEHjQ~7509HJGVFi_qvq!3+!_?{MT%{m8JBYVSQLFl+mg7G^7Hu!NA2)PlM-w^ z>n#tkZAwlB28hR>4!S>o{>-iP7mQWeUIug`@|*)XJMV)ZnIC>+g+1LuCv|n{@-8{5 z*z!z}y#ib_ANCiFe0gCoOC%rsOUuEeA#8hln?({qaf-agYDxRID=QnHO@wz|@JnVN&v zvK@=HAslUwHTsm?95*&Iiv>r39O^sQ*48#3U^y3t9f&3K49(2$X=`gUu(E=8Z3ZY* z1%19>@youtzdKV_SWYgTnj0qSf_CiZGpn=?otEsjzjb_c)Q9w3SRYZ$?DOxdyUj)g zl5VJ`MsojybW9{At4iR(dQ}{Hf8>d;yu5Suw{LHkx-&JClat?NW$9kJbP1zcTVSfc zZ~_=-AexR}NL)M-071LVWN^INA+Wowp&GHzq(k4U*uIg^cwm2)J`7&rm~Y}3*?B(nOHZl zwA71;h`0k2J!Aq5Iyo`1va{IveDOEqH&an+@9J?Eu<*K|ZouGdu;TBi=r3Qt#_R>$ z$ zR<~{5?ab8QuEYmLdh%0C zhU@i3+cbWx^yJLUwtVwAgs#AUsR=x<*XMyj*2N8r~-4^u)-w_nOm$?tD!L-$Hn-pPrxuyz6LomBh=V?kZNsUva&#FeW`x#s3OQ ze}+VoH8}LVRUuLmPQH6Q`;bYiYN|k6GR?!2%F8(Hf|$0?DOE+qbZ1KQ&*Imt|C)c` zTl$K@_d-qVQcJf{*S@h{*KKq2u(4a39Z>>W#LE5G?D)w|_K@`K(qQ!}UwI~?mDK}% zY7B;v+wd-pq>L6=96?e_(l_%!m#8C3>&@EIJ5z4(r4c^Kh_+BG8FDAMNS(wv&E^wo z7g4@|V=EM;C@g4R#t=cYcv5O?4;uA_x)PkKU~^z7x{?T51lLb_9IEc79lg)WJj%1T z=gCHGO=fjcOfH>mQe_eR^R;I%!O`=VN-{!!Q-PTC@RSsUii@|YVX)YAEkG&% zD@XsYlUi3V%*Rr?y1EX5D8+^9MatilrjSNZ2&B;jDx_?2@|gw9eGm0JZOm;#Q=J?i z^GZwCpi$N5j!HCNhI4vwfs24D&SvUovDeZ%={Pv1wjx;rS(LOqw{QJV7!0&cudms4buugo8nkpOs;ct~3%hf_ z;H?TtfeyB9@u6x1748TnjB_nww&kU1wLKLPG4Y-3M4c%UbD)6LO-)${1VZ1)NMvj* z1!!uVo$tj|A3kJEQ6P#zWl-AK*kBkLUrochySoAXDEs@% zfhOKRGXpq>0(7D9s3>?J?E6KzRL{;z7OLOzxtzEK*m7~Ph_s9hV(5z@rg5v~lv+$o zEIKi9bA+aPJU%-53ixG|JkU8~E;8x5f_W0zS2LomrP*w%$7$*4E@kL0No%MfgU=L( zoNN1F9v6kqQWy zuTWC97C$U$6q`kQ5~oR6ZJL-uXqlO>H@P`E{m8i!c++Ri7^s!-@NnztMjtufbrw;k ztEDD@CPh9DJ8xI#o^`o#CuoEL+o2+on%~mGRboS<|dA#qruPew7NrJ`U{AIr{B;FDXhgVvs9C3yTEM zAo*dinNPh_VP4NXADWn8+S@NP#gVG3s{?^1?k6oJHL$5W^J3ik=65i{ubIez6HFlo zVuBb#$tu;lSqG*8A@xKq^L*_Q8j1kQuA`@?%{J){nNN|GDkZxN<>SYXA+JWQLO6jz zQ<2QL0K%Tu# zNs)9KD0Evu+qP3{2|zg%eJL9n8pc{)1}4c5kBs1e;c30qs}x2~F9?Cmygal3LAv-} z-3zKRI<^2Eh^<>IF^*O9Lt7hvJ`>>1v-0qrqQByQ0d zzP9H4#aIM2saIw)x$)wsi_E{Lb1k2e5{InYROP8bZ@Q$af0;>1|G)sB`88mmXjxdI zK{=psYrQZ~Bp*-(o~wP5o1DfXsUA0u#%z=3PxkTt$BSt|i13;VD`wsatm|7^AFoc% z%}oLjBrw?n-X#mjoT^|EA7gU3kO#85s!t!SEOiqKsKakeeKJ>R-E8dOK z$uqc{XYdiEw>=BgZQt0KqpULN6uhCPwiaktE`TQB_JxFmUUl261_USozsu3q=5jLLQr{yJlg66n0`dfI!rW!BIXO=p31}0e zMM^+80lKdWJan5EX#|ALRaAi;npMiWzbEI79})YrxX63!7X4)!E;ZnA>nAZG7pJqB zZIK%{KpBQF=alpD^Up6XMo_WKj4?Xv=v)QI>>C((4OoGq{;xtdwLAJu23#|&-5hxc zNRonrVqNbG5RKDVuDz~;jTwk&yXGN6Nz0Df-MjS*vGW0zK|OHMMQZqTz?xN((~loTYj&r#Yyh(XS8Gt1yhBErH+nvFx=izMU> zZzbuyqzh;}OX&p^T%?p!A=!~-$hLUauz>-ickkb;2&UMq^yQg?%N{5_J<3%vV9#-0 zv7EYxYYOOpaOV;!fhIr$nz;Z%0Iz7>zt89v1Na+|;(E^)a&q#2cP;ns-Ge~r1$Dm@ zj&~!rA_69^%gM0-U*LQEb$IRaL=pT2QcC<^a|DKofsv7ym-iCT*km5)n?^=P9&1Cw zqLu_SeDoA65gZBzFfKCu^75>}L^Ur7Bx_aL{3HtkZBR&9ICR(<3qq6p;R6LE9UcOU zjf?XWHKUPftw5j*N_i r_C!@FYl@`KY(J;|?<>Hz^)t8~a^=!7?b26pO$pIf*HbH3v3~s@BCdQm literal 0 HcmV?d00001 diff --git a/d6/da4/class_b_t_1_1_loop_node__inherit__graph.map b/d6/da4/class_b_t_1_1_loop_node__inherit__graph.map new file mode 100644 index 000000000..dc909dc39 --- /dev/null +++ b/d6/da4/class_b_t_1_1_loop_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d6/da4/class_b_t_1_1_loop_node__inherit__graph.md5 b/d6/da4/class_b_t_1_1_loop_node__inherit__graph.md5 new file mode 100644 index 000000000..e0650ed52 --- /dev/null +++ b/d6/da4/class_b_t_1_1_loop_node__inherit__graph.md5 @@ -0,0 +1 @@ +f5ec5dfd5a3a15a2d855a04f9fa1b5fe \ No newline at end of file diff --git a/d6/da4/class_b_t_1_1_loop_node__inherit__graph.png b/d6/da4/class_b_t_1_1_loop_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa81012c7814a854b2ab113de78386e49e9903c GIT binary patch literal 6133 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 + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/run_once_node.h Source File + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
run_once_node.h
+
+
+
1/* Copyright (C) 2023 Davide Faconti - All Rights Reserved
+
2* Copyright (C) 2022 Gaël Écorchard, Czech Institute of Informatics, Robotics, and Cybernetics (ciirc) <gael.ecorchard@cvut.cz>
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20
+
21/**
+
22 * @brief The RunOnceNode is used when you want to execute the child
+
23 * only once.
+
24 * If the child is asynchronous, we will tick until either SUCCESS or FAILURE is
+
25 * returned.
+
26 *
+
27 * After that first execution, you can set value of the port "then_skip" to:
+
28 *
+
29 * - if TRUE (default), the node will be skipped in the future.
+
30 * - if FALSE, return synchronously the same status returned by the child, forever.
+
31 */
+
32class RunOnceNode : public DecoratorNode
+
33{
+
34public:
+
35 RunOnceNode(const std::string& name, const NodeConfig& config)
+
36 : DecoratorNode(name, config)
+
37 {
+
38 setRegistrationID("RunOnce");
+
39 }
+
40
+
41 static PortsList providedPorts()
+
42 {
+
43 return { InputPort<bool>("then_skip", true,
+
44 "If true, skip after the first execution, "
+
45 "otherwise return the same NodeStatus returned once bu the "
+
46 "child.") };
+
47 }
+
48
+
49private:
+
50 virtual BT::NodeStatus tick() override;
+
51
+
52 bool already_ticked_ = false;
+
53 NodeStatus returned_status_ = NodeStatus::IDLE;
+
54};
+
55
+
56//------------ implementation ----------------------------
+
57
+
58inline NodeStatus RunOnceNode::tick()
+
59{
+
60 bool skip = true;
+
61 if(auto const res = getInput<bool>("then_skip"))
+
62 {
+
63 skip = res.value();
+
64 }
+
65
+
66 if(already_ticked_)
+
67 {
+
68 return skip ? NodeStatus::SKIPPED : returned_status_;
+
69 }
+
70
+
71 setStatus(NodeStatus::RUNNING);
+
72 const NodeStatus status = child_node_->executeTick();
+
73
+
74 if(isStatusCompleted(status))
+
75 {
+
76 already_ticked_ = true;
+
77 returned_status_ = status;
+
78 resetChild();
+
79 }
+
80 return status;
+
81}
+
82
+
83} // namespace BT
+
Definition: decorator_node.h:9
+ +
The RunOnceNode is used when you want to execute the child only once. If the child is asynchronous,...
Definition: run_once_node.h:33
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d6/db1/struct_b_t_1_1_grammar_1_1stmt.html b/d6/db1/struct_b_t_1_1_grammar_1_1stmt.html new file mode 100644 index 000000000..ae4a8564c --- /dev/null +++ b/d6/db1/struct_b_t_1_1_grammar_1_1stmt.html @@ -0,0 +1,153 @@ + + + + + + + +BehaviorTree: BT::Grammar::stmt Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::stmt Struct Reference
+
+
+ + + + + + + + +

+Static Public Attributes

+static constexpr auto whitespace = dsl::ascii::blank | escaped_newline | dsl::newline
 
static constexpr auto rule
 
+static constexpr auto value = lexy::as_list<std::vector<Ast::expr_ptr>>
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::stmt::rule
+
+staticconstexpr
+
+Initial value:
= [] {
+
+
+
auto at_eol = dsl::peek(dsl::eol);
+
return dsl::terminator(at_eol).opt_list(dsl::p<Expression>, dsl::sep(dsl::semicolon));
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/db4/class_b_t_1_1_fallback_node__coll__graph.map b/d6/db4/class_b_t_1_1_fallback_node__coll__graph.map new file mode 100644 index 000000000..5e1562ebf --- /dev/null +++ b/d6/db4/class_b_t_1_1_fallback_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d6/db4/class_b_t_1_1_fallback_node__coll__graph.md5 b/d6/db4/class_b_t_1_1_fallback_node__coll__graph.md5 new file mode 100644 index 000000000..4df50a2ae --- /dev/null +++ b/d6/db4/class_b_t_1_1_fallback_node__coll__graph.md5 @@ -0,0 +1 @@ +219b7437aa13db145954da93ddce495b \ No newline at end of file diff --git a/d6/db4/class_b_t_1_1_fallback_node__coll__graph.png b/d6/db4/class_b_t_1_1_fallback_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fed02b164fb9711ae7b0dc64ddc2d7d23ff7c99c GIT binary patch literal 12661 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 literal 0 HcmV?d00001 diff --git a/d6/db6/class_b_t_1_1_repeat_node-members.html b/d6/db6/class_b_t_1_1_repeat_node-members.html new file mode 100644 index 000000000..4bd47f563 --- /dev/null +++ b/d6/db6/class_b_t_1_1_repeat_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::RepeatNode Member List
+
+
+ +

This is the complete list of members for BT::RepeatNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::RepeatNode)BT::RepeatNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
RepeatNode(const std::string &name, int NTries) (defined in BT::RepeatNode)BT::RepeatNode
RepeatNode(const std::string &name, const NodeConfig &config) (defined in BT::RepeatNode)BT::RepeatNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~RepeatNode() override=default (defined in BT::RepeatNode)BT::RepeatNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d6/dbf/class_b_t_1_1_inverter_node-members.html b/d6/dbf/class_b_t_1_1_inverter_node-members.html new file mode 100644 index 000000000..4403fcd82 --- /dev/null +++ b/d6/dbf/class_b_t_1_1_inverter_node-members.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::InverterNode Member List
+
+
+ +

This is the complete list of members for BT::InverterNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
InverterNode(const std::string &name) (defined in BT::InverterNode)BT::InverterNode
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~InverterNode() override=default (defined in BT::InverterNode)BT::InverterNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d6/dc8/script__precondition_8h_source.html b/d6/dc8/script__precondition_8h_source.html new file mode 100644 index 000000000..84a0b6d69 --- /dev/null +++ b/d6/dc8/script__precondition_8h_source.html @@ -0,0 +1,212 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/script_precondition.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
script_precondition.h
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16#include "behaviortree_cpp/scripting/script_parser.hpp"
+
17#include <type_traits>
+
18
+
19namespace BT
+
20{
+ +
22{
+
23public:
+
24 PreconditionNode(const std::string& name, const NodeConfig& config)
+
25 : DecoratorNode(name, config)
+
26 {
+
27 loadExecutor();
+
28 }
+
29
+
30 virtual ~PreconditionNode() override = default;
+
31
+
32 static PortsList providedPorts()
+
33 {
+
34 return { InputPort<std::string>("if"),
+
35 InputPort<NodeStatus>("else", NodeStatus::FAILURE,
+
36 "Return status if condition is "
+
37 "false") };
+
38 }
+
39
+
40private:
+
41 virtual BT::NodeStatus tick() override
+
42 {
+
43 loadExecutor();
+
44
+
45 BT::NodeStatus else_return;
+
46 if(!getInput("else", else_return))
+
47 {
+
48 throw RuntimeError("Missing parameter [else] in Precondition");
+
49 }
+
50
+
51 // Only check the 'if' script if we haven't started ticking the children yet.
+
52 Ast::Environment env = { config().blackboard, config().enums };
+
53 bool tick_children =
+
54 _children_running || (_children_running = _executor(env).cast<bool>());
+
55
+
56 if(!tick_children)
+
57 {
+
58 return else_return;
+
59 }
+
60
+
61 auto const child_status = child_node_->executeTick();
+
62 if(isStatusCompleted(child_status))
+
63 {
+
64 resetChild();
+
65 _children_running = false;
+
66 }
+
67 return child_status;
+
68 }
+
69
+
70 void loadExecutor()
+
71 {
+
72 std::string script;
+
73 if(!getInput("if", script))
+
74 {
+
75 throw RuntimeError("Missing parameter [if] in Precondition");
+
76 }
+
77 if(script == _script)
+
78 {
+
79 return;
+
80 }
+
81 auto executor = ParseScript(script);
+
82 if(!executor)
+
83 {
+
84 throw RuntimeError(executor.error());
+
85 }
+
86 else
+
87 {
+
88 _executor = executor.value();
+
89 _script = script;
+
90 }
+
91 }
+
92
+
93 std::string _script;
+
94 ScriptFunction _executor;
+
95 bool _children_running = false;
+
96};
+
97
+
98} // namespace BT
+
Definition: decorator_node.h:9
+ +
Definition: script_precondition.h:22
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
The Environment class is used to encapsulate the information and states needed by the scripting langu...
Definition: script_parser.hpp:32
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.map b/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.map new file mode 100644 index 000000000..ab52e5584 --- /dev/null +++ b/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.md5 b/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.md5 new file mode 100644 index 000000000..f1246e806 --- /dev/null +++ b/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.md5 @@ -0,0 +1 @@ +bb2aefef68e1ea9338a10c94824379e2 \ No newline at end of file diff --git a/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.png b/d6/dc9/class_b_t_1_1_threaded_action__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6f1fdf8776b703936b591db94a51eb8315cc0b GIT binary patch literal 8351 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::assignment Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::assignment, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::assignment)BT::Grammar::Expression::assignmentstatic
operand typedef (defined in BT::Grammar::Expression::assignment)BT::Grammar::Expression::assignment
+
+ + + + diff --git a/d6/dcc/test__node_8h_source.html b/d6/dcc/test__node_8h_source.html new file mode 100644 index 000000000..c65c1df74 --- /dev/null +++ b/d6/dcc/test__node_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/test_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
test_node.h
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2 *
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/action_node.h"
+
17#include "behaviortree_cpp/utils/timer_queue.h"
+
18#include "behaviortree_cpp/scripting/script_parser.hpp"
+
19
+
20namespace BT
+
21{
+
22
+
23struct TestNodeConfig
+
24{
+
25 /// status to return when the action is completed.
+ +
27
+
28 /// script to execute when complete_func() returns SUCCESS
+
29 std::string success_script;
+
30
+
31 /// script to execute when complete_func() returns FAILURE
+
32 std::string failure_script;
+
33
+
34 /// script to execute when actions is completed
+
35 std::string post_script;
+
36
+
37 /// if async_delay > 0, this action become asynchronous and wait this amount of time
+
38 std::chrono::milliseconds async_delay = std::chrono::milliseconds(0);
+
39
+
40 /// Function invoked when the action is completed.
+
41 /// If not specified, the node will return [return_status]
+
42 std::function<NodeStatus(void)> complete_func;
+
43};
+
44
+
45/**
+
46 * @brief The TestNode is a Node that can be configure to:
+
47 *
+
48 * 1. Return a specific status (SUCCESS / FAILURE)
+
49 * 2. Execute a post condition script (unless halted)
+
50 * 3. Either complete immediately (synchronous action), or after a
+
51 * given period of time (asynchronous action)
+
52 *
+
53 * This behavior is changed by the parameters pased with TestNodeConfig.
+
54 *
+
55 * This particular node is created by the factory when TestNodeConfig is
+
56 * added as a substitution rule:
+
57 *
+
58 * auto test_config = std::make_shared<TestNodeConfig>();
+
59 * // change fields of test_config
+
60 * factory.addSubstitutionRule(pattern, test_config);
+
61 *
+
62 * See tutorial 15 for more details.
+
63 */
+
64class TestNode : public BT::StatefulActionNode
+
65{
+
66public:
+
67 // This constructor is deprecated, because it may cause problems if TestNodeConfig::complete_func is capturing
+
68 // a reference to the TestNode, i.e. [this]. Use the constructor with std::shared_ptr<TestNodeConfig> instead.
+
69 // For more details, see https://github.com/BehaviorTree/BehaviorTree.CPP/pull/967
+
70 [[deprecated("prefer the constructor with std::shared_ptr<TestNodeConfig>")]] TestNode(
+
71 const std::string& name, const NodeConfig& config, TestNodeConfig test_config);
+
72
+
73 TestNode(const std::string& name, const NodeConfig& config,
+
74 std::shared_ptr<TestNodeConfig> test_config);
+
75
+
76 static PortsList providedPorts()
+
77 {
+
78 return {};
+
79 }
+
80
+
81protected:
+
82 virtual NodeStatus onStart() override;
+
83
+
84 virtual NodeStatus onRunning() override;
+
85
+
86 virtual void onHalted() override;
+
87
+
88 NodeStatus onCompleted();
+
89
+
90 std::shared_ptr<TestNodeConfig> _config;
+
91 ScriptFunction _success_executor;
+
92 ScriptFunction _failure_executor;
+
93 ScriptFunction _post_executor;
+
94 TimerQueue<> _timer;
+
95 std::atomic_bool _completed = false;
+
96};
+
97
+
98} // namespace BT
+
The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier ...
Definition: action_node.h:160
+
The TestNode is a Node that can be configure to:
Definition: test_node.h:65
+
virtual void onHalted() override
+
virtual NodeStatus onRunning() override
method invoked when the action is already in the RUNNING state.
+
virtual NodeStatus onStart() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
Definition: test_node.h:24
+
std::string success_script
script to execute when complete_func() returns SUCCESS
Definition: test_node.h:29
+
std::string failure_script
script to execute when complete_func() returns FAILURE
Definition: test_node.h:32
+
std::chrono::milliseconds async_delay
if async_delay > 0, this action become asynchronous and wait this amount of time
Definition: test_node.h:38
+
NodeStatus return_status
status to return when the action is completed.
Definition: test_node.h:26
+
std::function< NodeStatus(void)> complete_func
Definition: test_node.h:42
+
std::string post_script
script to execute when actions is completed
Definition: test_node.h:35
+
+
+ + + + diff --git a/d6/dcd/class_b_t_1_1_behavior_tree_factory.html b/d6/dcd/class_b_t_1_1_behavior_tree_factory.html new file mode 100644 index 000000000..3b975429e --- /dev/null +++ b/d6/dcd/class_b_t_1_1_behavior_tree_factory.html @@ -0,0 +1,874 @@ + + + + + + + +BehaviorTree: BT::BehaviorTreeFactory Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::BehaviorTreeFactory Class Reference
+
+
+ +

The BehaviorTreeFactory is used to create instances of a TreeNode at run-time. + More...

+ +

#include <bt_factory.h>

+ + + + +

+Public Types

+using SubstitutionRule = std::variant< std::string, TestNodeConfig, std::shared_ptr< TestNodeConfig > >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BehaviorTreeFactory (const BehaviorTreeFactory &other)=delete
 
+BehaviorTreeFactoryoperator= (const BehaviorTreeFactory &other)=delete
 
BehaviorTreeFactory (BehaviorTreeFactory &&other) noexcept=default
 
+BehaviorTreeFactoryoperator= (BehaviorTreeFactory &&other) noexcept=default
 
+bool unregisterBuilder (const std::string &ID)
 Remove a registered ID.
 
void registerBuilder (const TreeNodeManifest &manifest, const NodeBuilder &builder)
 
+template<typename T >
void registerBuilder (const std::string &ID, const NodeBuilder &builder)
 
void registerSimpleAction (const std::string &ID, const SimpleActionNode::TickFunctor &tick_functor, PortsList ports={})
 registerSimpleAction help you register nodes of type SimpleActionNode.
 
void registerSimpleCondition (const std::string &ID, const SimpleConditionNode::TickFunctor &tick_functor, PortsList ports={})
 registerSimpleCondition help you register nodes of type SimpleConditionNode.
 
void registerSimpleDecorator (const std::string &ID, const SimpleDecoratorNode::TickFunctor &tick_functor, PortsList ports={})
 registerSimpleDecorator help you register nodes of type SimpleDecoratorNode.
 
void registerFromPlugin (const std::string &file_path)
 registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro).
 
void registerFromROSPlugins ()
 registerFromROSPlugins finds all shared libraries that export ROS plugins for behaviortree_cpp, and calls registerFromPlugin for each library.
 
void registerBehaviorTreeFromFile (const std::filesystem::path &filename)
 registerBehaviorTreeFromFile. Load the definition of an entire behavior tree, but don't instantiate it. You can instantiate it later with:
 
void registerBehaviorTreeFromText (const std::string &xml_text)
 
std::vector< std::string > registeredBehaviorTrees () const
 
+void clearRegisteredBehaviorTrees ()
 Clear previously-registered behavior trees.
 
std::unique_ptr< TreeNodeinstantiateTreeNode (const std::string &name, const std::string &ID, const NodeConfig &config) const
 instantiateTreeNode creates an instance of a previously registered TreeNode.
 
template<typename T , typename... ExtraArgs>
void registerNodeType (const std::string &ID, const PortsList &ports, ExtraArgs... args)
 
template<typename T , typename... ExtraArgs>
void registerNodeType (const std::string &ID, ExtraArgs... args)
 
+const std::unordered_map< std::string, NodeBuilder > & builders () const
 All the builders. Made available mostly for debug purposes.
 
+const std::unordered_map< std::string, TreeNodeManifest > & manifests () const
 Manifests of all the registered TreeNodes.
 
+const std::set< std::string > & builtinNodes () const
 List of builtin IDs.
 
Tree createTreeFromText (const std::string &text, Blackboard::Ptr blackboard=Blackboard::create())
 createTreeFromText will parse the XML directly from string. The XML needs to contain either a single <BehaviorTree> or specify the attribute [main_tree_to_execute].
 
Tree createTreeFromFile (const std::filesystem::path &file_path, Blackboard::Ptr blackboard=Blackboard::create())
 createTreeFromFile will parse the XML from a given file. The XML needs to contain either a single <BehaviorTree> or specify the attribute [main_tree_to_execute].
 
+Tree createTree (const std::string &tree_name, Blackboard::Ptr blackboard=Blackboard::create())
 
void addMetadataToManifest (const std::string &node_id, const KeyValueVector &metadata)
 
void registerScriptingEnum (StringView name, int value)
 Add an Enum to the scripting language. For instance if you do:
 
template<typename EnumType >
void registerScriptingEnums ()
 registerScriptingEnums is syntactic sugar to automatically register multiple enums. We use https://github.com/Neargye/magic_enum.
 
+void clearSubstitutionRules ()
 
void addSubstitutionRule (StringView filter, SubstitutionRule rule)
 addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a diferent node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.
 
void loadSubstitutionRuleFromJSON (const std::string &json_text)
 loadSubstitutionRuleFromJSON will parse a JSON file to create a set of substitution rules. See Tutorial 11 for an example of the syntax.
 
+const std::unordered_map< std::string, SubstitutionRule > & substitutionRules () const
 substitutionRules return the current substitution rules.
 
+

Detailed Description

+

The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.

+

Some node types are "builtin", whilst other are used defined and need to be registered using a unique ID.

+

Member Function Documentation

+ +

◆ addMetadataToManifest()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::addMetadataToManifest (const std::string & node_id,
const KeyValueVector & metadata 
)
+
+

Add metadata to a specific manifest. This metadata will be added to <TreeNodesModel> with the function writeTreeNodesModelXML()

+ +
+
+ +

◆ addSubstitutionRule()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::addSubstitutionRule (StringView filter,
SubstitutionRule rule 
)
+
+ +

addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a diferent node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.

+
Parameters
+ + + +
filterfilter used to select the node to sobstitute. The node path is used. You may use wildcard matching.
rulepass either a string or a TestNodeConfig
+
+
+ +
+
+ +

◆ createTreeFromFile()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Tree BT::BehaviorTreeFactory::createTreeFromFile (const std::filesystem::path & file_path,
Blackboard::Ptr blackboard = Blackboard::create() 
)
+
+ +

createTreeFromFile will parse the XML from a given file. The XML needs to contain either a single <BehaviorTree> or specify the attribute [main_tree_to_execute].

+

Consider using instead registerBehaviorTreeFromFile() and createTree().

+
Parameters
+ + + +
file_pathlocation of the file to load
blackboardblackboard of the root tree
+
+
+
Returns
the newly created tree
+ +
+
+ +

◆ createTreeFromText()

+ +
+
+ + + + + + + + + + + + + + + + + + +
Tree BT::BehaviorTreeFactory::createTreeFromText (const std::string & text,
Blackboard::Ptr blackboard = Blackboard::create() 
)
+
+ +

createTreeFromText will parse the XML directly from string. The XML needs to contain either a single <BehaviorTree> or specify the attribute [main_tree_to_execute].

+

Consider using instead registerBehaviorTreeFromText() and createTree().

+
Parameters
+ + + +
textstring containing the XML
blackboardblackboard of the root tree
+
+
+
Returns
the newly created tree
+ +
+
+ +

◆ instantiateTreeNode()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
std::unique_ptr< TreeNode > BT::BehaviorTreeFactory::instantiateTreeNode (const std::string & name,
const std::string & ID,
const NodeConfigconfig 
) const
+
+ +

instantiateTreeNode creates an instance of a previously registered TreeNode.

+
Parameters
+ + + + +
namename of this particular instance
IDID used when it was registered
configconfiguration that is passed to the constructor of the TreeNode.
+
+
+
Returns
new node.
+ +
+
+ +

◆ loadSubstitutionRuleFromJSON()

+ +
+
+ + + + + + + + +
void BT::BehaviorTreeFactory::loadSubstitutionRuleFromJSON (const std::string & json_text)
+
+ +

loadSubstitutionRuleFromJSON will parse a JSON file to create a set of substitution rules. See Tutorial 11 for an example of the syntax.

+
Parameters
+ + +
json_textthe JSON file as text (BOT the path of the file)
+
+
+ +
+
+ +

◆ registerBehaviorTreeFromFile()

+ +
+
+ + + + + + + + +
void BT::BehaviorTreeFactory::registerBehaviorTreeFromFile (const std::filesystem::path & filename)
+
+ +

registerBehaviorTreeFromFile. Load the definition of an entire behavior tree, but don't instantiate it. You can instantiate it later with:

+

BehaviorTreeFactory::createTree(tree_id)

+

where "tree_id" come from the XML attribute <BehaviorTree ID="tree_id">

+ +
+
+ +

◆ registerBehaviorTreeFromText()

+ +
+
+ + + + + + + + +
void BT::BehaviorTreeFactory::registerBehaviorTreeFromText (const std::string & xml_text)
+
+

Same of registerBehaviorTreeFromFile, but passing the XML text, instead of the filename.

+ +
+
+ +

◆ registerBuilder()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerBuilder (const TreeNodeManifestmanifest,
const NodeBuilderbuilder 
)
+
+

The most generic way to register a NodeBuilder.

+

Throws if you try to register twice a builder with the same registration_ID.

+ +
+
+ +

◆ registeredBehaviorTrees()

+ +
+
+ + + + + + + +
std::vector< std::string > BT::BehaviorTreeFactory::registeredBehaviorTrees () const
+
+

Returns the ID of the trees registered either with registerBehaviorTreeFromFile or registerBehaviorTreeFromText.

+ +
+
+ +

◆ registerFromPlugin()

+ +
+
+ + + + + + + + +
void BT::BehaviorTreeFactory::registerFromPlugin (const std::string & file_path)
+
+ +

registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro).

+
Parameters
+ + +
file_pathpath of the file
+
+
+ +
+
+ +

◆ registerFromROSPlugins()

+ +
+
+ + + + + + + +
void BT::BehaviorTreeFactory::registerFromROSPlugins ()
+
+ +

registerFromROSPlugins finds all shared libraries that export ROS plugins for behaviortree_cpp, and calls registerFromPlugin for each library.

+
Exceptions
+ + +
Ifnot compiled with ROS support or if the library cannot load for any reason
+
+
+ +
+
+ +

◆ registerNodeType() [1/2]

+ +
+
+
+template<typename T , typename... ExtraArgs>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerNodeType (const std::string & ID,
const PortsList & ports,
ExtraArgs... args 
)
+
+inline
+
+

registerNodeType where you explicitly pass the list of ports. Doesn't require the implementation of static method providedPorts()

+ +
+
+ +

◆ registerNodeType() [2/2]

+ +
+
+
+template<typename T , typename... ExtraArgs>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerNodeType (const std::string & ID,
ExtraArgs... args 
)
+
+inline
+
+

registerNodeType is the method to use to register your custom TreeNode.

+

It accepts only classed derived from either ActionNodeBase, DecoratorNode, ControlNode or ConditionNode.

+ +
+
+ +

◆ registerScriptingEnum()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerScriptingEnum (StringView name,
int value 
)
+
+ +

Add an Enum to the scripting language. For instance if you do:

+

registerScriptingEnum("THE_ANSWER", 42),

+

You may type this in your scripts:

+

<Script code="myport:=THE_ANSWER" >

+
Parameters
+ + + +
namestring representation of the enum
valueits value.
+
+
+ +
+
+ +

◆ registerScriptingEnums()

+ +
+
+
+template<typename EnumType >
+ + + + + +
+ + + + + + + +
void BT::BehaviorTreeFactory::registerScriptingEnums ()
+
+inline
+
+ +

registerScriptingEnums is syntactic sugar to automatically register multiple enums. We use https://github.com/Neargye/magic_enum.

+

Please refer to https://github.com/Neargye/magic_enum/blob/master/doc/limitations.md for limitations.

+ +
+
+ +

◆ registerSimpleAction()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerSimpleAction (const std::string & ID,
const SimpleActionNode::TickFunctor & tick_functor,
PortsList ports = {} 
)
+
+ +

registerSimpleAction help you register nodes of type SimpleActionNode.

+
Parameters
+ + + + +
IDregistration ID
tick_functorthe callback to be invoked in the tick() method.
portsif your SimpleNode requires ports, provide the list here.
+
+
+ +
+
+ +

◆ registerSimpleCondition()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerSimpleCondition (const std::string & ID,
const SimpleConditionNode::TickFunctor & tick_functor,
PortsList ports = {} 
)
+
+ +

registerSimpleCondition help you register nodes of type SimpleConditionNode.

+
Parameters
+ + + + +
IDregistration ID
tick_functorthe callback to be invoked in the tick() method.
portsif your SimpleNode requires ports, provide the list here.
+
+
+ +
+
+ +

◆ registerSimpleDecorator()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void BT::BehaviorTreeFactory::registerSimpleDecorator (const std::string & ID,
const SimpleDecoratorNode::TickFunctor & tick_functor,
PortsList ports = {} 
)
+
+ +

registerSimpleDecorator help you register nodes of type SimpleDecoratorNode.

+
Parameters
+ + + + +
IDregistration ID
tick_functorthe callback to be invoked in the tick() method.
portsif your SimpleNode requires ports, provide the list here.
+
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d6/dcd/class_b_t_1_1_behavior_tree_factory.js b/d6/dcd/class_b_t_1_1_behavior_tree_factory.js new file mode 100644 index 000000000..8ed50b315 --- /dev/null +++ b/d6/dcd/class_b_t_1_1_behavior_tree_factory.js @@ -0,0 +1,28 @@ +var class_b_t_1_1_behavior_tree_factory = +[ + [ "addMetadataToManifest", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aad83e88bb1ceb49194702d0be3849f70", null ], + [ "addSubstitutionRule", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9", null ], + [ "builders", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a92cac717f302a0a4b6edb006896d9aee", null ], + [ "builtinNodes", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a976ea06ba865588977ec9ab312f25bd0", null ], + [ "clearRegisteredBehaviorTrees", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a2b08c778188748bc26a2d44618b0125e", null ], + [ "createTreeFromFile", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ad1f21dc9192e84ed014f871575575705", null ], + [ "createTreeFromText", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61", null ], + [ "instantiateTreeNode", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622", null ], + [ "loadSubstitutionRuleFromJSON", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a16d9ccac815fb2dd9c479829bab6d9e3", null ], + [ "manifests", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ab7ac27ba005c61dc52735bb7e2918bdd", null ], + [ "registerBehaviorTreeFromFile", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a8e3f4defda25caf72a368bb0868716df", null ], + [ "registerBehaviorTreeFromText", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6628bf3b28a82fe2b3562de6b01a42eb", null ], + [ "registerBuilder", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a12912a657b84952fb4df8ebd720c7ad2", null ], + [ "registeredBehaviorTrees", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a615a01e5e1651049e28340f2ed42381e", null ], + [ "registerFromPlugin", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18", null ], + [ "registerFromROSPlugins", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afd433de9fff5bd77eac748e3a657ca5c", null ], + [ "registerNodeType", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#acfccfb4a4fe2d97133cb009d52692455", null ], + [ "registerNodeType", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a24353332279b7df6a8fcb910ded5ffcb", null ], + [ "registerScriptingEnum", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6e7f7d722188a67a0950f5ff66295fc5", null ], + [ "registerScriptingEnums", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a803d02a0e90360ffd020808c937fcf4d", null ], + [ "registerSimpleAction", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a751eb467f8f960eb75a5cf85bdfe4455", null ], + [ "registerSimpleCondition", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd", null ], + [ "registerSimpleDecorator", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412", null ], + [ "substitutionRules", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6ca87931a32b5b3cbd319ce49980e28f", null ], + [ "unregisterBuilder", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#af2c7e0e5cdad5a1816a7862a321767e3", null ] +]; \ No newline at end of file diff --git a/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.map b/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.map new file mode 100644 index 000000000..de5611b17 --- /dev/null +++ b/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.md5 b/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.md5 new file mode 100644 index 000000000..b737255b8 --- /dev/null +++ b/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.md5 @@ -0,0 +1 @@ +2a87fea5c07fe9d566e2e1c53bde1119 \ No newline at end of file diff --git a/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.png b/d6/dd5/class_b_t_1_1_simple_decorator_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..14267e085dded37e78d83037f2b9e0c4b2502bab GIT binary patch literal 6817 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 + + + + + + +BehaviorTree: BT::ControlNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ControlNode Class Reference
+
+
+
+Inheritance diagram for BT::ControlNode:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for BT::ControlNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + +

+Protected Attributes

+std::vector< TreeNode * > children_nodes_
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ControlNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Implements BT::TreeNode.

+ +

Reimplemented in BT::FallbackNode, BT::IfThenElseNode, BT::ManualSelectorNode, BT::ParallelAllNode, BT::ParallelNode, BT::SequenceNode, BT::SequenceWithMemory, BT::SwitchNode< NUM_CASES >, and BT::WhileDoElseNode.

+ +
+
+ +

◆ resetChildren()

+ +
+
+ + + + + + + +
void BT::ControlNode::resetChildren ()
+
+

Set the status of all children to IDLE. also send a halt() signal to all RUNNING children

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeType BT::ControlNode::type () const
+
+inlinefinaloverridevirtual
+
+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d6/ddb/class_b_t_1_1_control_node.js b/d6/ddb/class_b_t_1_1_control_node.js new file mode 100644 index 000000000..85ba43147 --- /dev/null +++ b/d6/ddb/class_b_t_1_1_control_node.js @@ -0,0 +1,7 @@ +var class_b_t_1_1_control_node = +[ + [ "addChild", "d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f", null ], + [ "halt", "d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3", null ], + [ "haltChildren", "d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c", null ], + [ "resetChildren", "d6/ddb/class_b_t_1_1_control_node.html#a18ffb6a67c9a2bd663486b7b2b75edf3", null ] +]; \ No newline at end of file diff --git a/d6/de7/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false-members.html b/d6/de7/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false-members.html new file mode 100644 index 000000000..7592b4877 --- /dev/null +++ b/d6/de7/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::BooleanLiteral::False Member List
+
+
+ +

This is the complete list of members for BT::Grammar::BooleanLiteral::False, including all inherited members.

+ + + +
rule (defined in BT::Grammar::BooleanLiteral::False)BT::Grammar::BooleanLiteral::Falsestatic
value (defined in BT::Grammar::BooleanLiteral::False)BT::Grammar::BooleanLiteral::Falsestatic
+
+ + + + diff --git a/d6/dee/struct_b_t_1_1_protected_queue.html b/d6/dee/struct_b_t_1_1_protected_queue.html new file mode 100644 index 000000000..63a1efcc0 --- /dev/null +++ b/d6/dee/struct_b_t_1_1_protected_queue.html @@ -0,0 +1,131 @@ + + + + + + + +BehaviorTree: BT::ProtectedQueue< T > Struct Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ProtectedQueue< T > Struct Template Reference
+
+
+
+Collaboration diagram for BT::ProtectedQueue< T >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Attributes

+std::list< T > items
 
+std::mutex mtx
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/dfa/struct_b_t_1_1_stamped_value.html b/d6/dfa/struct_b_t_1_1_stamped_value.html new file mode 100644 index 000000000..b8c7c660d --- /dev/null +++ b/d6/dfa/struct_b_t_1_1_stamped_value.html @@ -0,0 +1,131 @@ + + + + + + + +BehaviorTree: BT::StampedValue< T > Struct Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::StampedValue< T > Struct Template Reference
+
+
+
+Collaboration diagram for BT::StampedValue< T >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Public Attributes

+T value
 
+Timestamp stamp
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.map b/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.map new file mode 100644 index 000000000..1adb2135f --- /dev/null +++ b/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.md5 b/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.md5 new file mode 100644 index 000000000..04dab68b2 --- /dev/null +++ b/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.md5 @@ -0,0 +1 @@ +d18523b01916e8bd90074560915f4601 \ No newline at end of file diff --git a/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.png b/d6/dfe/class_b_t_1_1_file_logger2__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a13ab210578c1191b556db23727f86af445808b8 GIT binary patch literal 4823 zcmc&&g;x|&xL-n8%3XR1fkmXdF&35-6(R0M1R|?+hga$1V0U zZg3*AysM!KIluU2H{{1dAas$Ms%Sm$^gkKCn0F63JDUc|-%K;bGQyeAP=j_VpRa5@ z&?g-c_6sy^I&ONbLX;A^0_o3%#TM_ykMc0-8R~WqwmWijhXj${$yG{2GA9&ML4~_S z(+^+^J_hDu-0LmJ=>ybK=_}6zR{XM7jy5LU`%%J>P-Ps3pMf$|`6w{#mp_+?NFNq1 zISaSse~07d;+i|2={#(J!IhV#sCO~~cy#z*sMHXp+dx ztihF>(VoY=^sC6nV7;9+?S~h zIaRt#P3q>>*CVgo@In~AHbpS(Ff%Zi_a;kB;H}8t-MLn3))am1ZsOd@(ayy(78VvJ zYBw8?MTLch;q>$*5c6bIR>j`@&m=Q-8=GsEmX_u=Hlge5PKSqwb7Lh&keBuKH+$3M zHnGw$9u4~E8`EfWbFPl)D{mqqpz;a|xZGUQp`oFO=;)5uj6!53pK$N9vmt-}{0U36 zkS{gqHK*5_xZZ7nUYZu8JBtgL8oU%g6!3|XIPNIN__iVLM;ejCLm_jY&J zL-w(W_U+ry?!G>owb79gxT2yWVPr%VisZR*Bh6{LCXV#dr8xiNeLO1^*)~3&L`p{X zHaa>QwK8oo(9`p#t+O-!^!OltZqB^ibM4WCM~^zjhI3Qk%3yh2_Z3fbWzBGySe5Y0 zabN}=3yWrXMFlo1i__lD&U}rBk1w8vO*S^k^aYk(;aSM%>go#o*@l%|Mn=Zc;r62S zXwgIKz2BoeNF@4NX~|~(C=)F$I^bkm{d=x-bW?T&T8I<`M76^HFF@gzBSMJ`u3sD05X1{U;?|1a9 zt-al%Cs73Qa&QoHG2WbMNS1YGO%yQ-`}k2fO2NRupy1Od+hgyOLkYt0FiuZU$HXM+ zudj@m1geb6j@Nf ze=kK+jqk_(HYJS!y#BqDlaq*;7#J;9)%r)RXKqPJ$^9Q^>SyKUl5aCIN~-*h{@O_T z{I#~Uut59y`E^aXG?hp$^rb7r^YHRIj3AhqHDsN?=SpY@GsVAq$53Ugql1RT{`>dh zZC2KO0Eh@T$Rr1RGoY+qZPe5&zrn?G11s@i zVPqx#urOIMF|o?cJE?=xe_`L!IU&pa8E*iBvnwj-^YZd0ngSK0ITfSFO?|Z-ODig* z(latf6G=!&+}6fKrkesekB*KG|MrMUfW0pL{Q0%DHD^{f?|}g7bXWIw-UDelxtyXR z%FCB8lb{sAi&WLsEjuDvwzjvwzPdyOr=uf=h)YS4K%}Lmo7>yftZvZrX2p>hk?&x@Vd6T8>>DUhT_n!ociHe3PTAkpPJ@=|1Nq|p(l7L zrc>A6Wv1Q-)MSnO%H^eJUpgAk&yF|IL;LF$14X0qaI(G=ZEbDA0g}q9DsEZXM|?YL zul0q)^o7+i7`U;qacp{e76O4TNz5!PDJiML9aG&ru2%8E zPe@4Ub7kfH_F^YO#)08wDYM#ue5?3GgRk7Zd-wF7RcawWmXrWE3{6k>YR}i^hmVbo z!J(vv#~jqoerMT}jLq0dgei&!0c-TwFT4D`O-^}c2B)>alKD=^k_gjKcF-zFdh9-x-C_lfsh7Lyzxsj34 zy<~CRY;_?J>fnJD74EpQ&Tl=0>I>Q97Zp|4&>%N9F|lxVE+K3LlfzsO zHcXOJQ!gM0sa<}%x3{;oyQ}KxD8zBoySZcJr?jlBvS32X=qRHy4h~3qYj4kH;OE)t zaZTVkYI=HF{7G*zY9$}gHHiM$*dsvK#r4NOmzOQ4Yuw7JtH}pth@V(noA;+Hh|9=~ z78xX+fLRQTjA#%(AkRcZM0WP}I+LMA1qDi;o-#ai6d}qMO$T_snVA`JIk|9U+)DuC zR&kKIRrkQky;JG$FS6=NJroJ`uJbJ@Q%;5*-7xZ$loVHY_u!nIs~1-0Ngpe4E$O#> z$L9Rm?xgYVz&0pfSz?4mMDXTciS-Q(=4TpwT|GQhpFR6qwmKF2eFWWi9@zHTe%N)T zKf_|O8d+Hwj2hLP7alob=vVH$|33p4rE*S$AyKtX-IV*@?}xX(&2dO_tA@4Emk`$c z6`gRap{QkB#Il@n7pqFdJe|U8inTPXy(_N8?GxYm+17WGC8)=s1jNlP-*+6W#H_=O*7!~3$^S$DgZhjT}1;LS%7auC< zE#}ZeI|!m)BOgS)%fS0pQkf=>$roYCv}8SKu2sh0T+}W9wBA#*fZ4h6F-eeJxrX`R zxxBKSw(=~5O+@zc_*GJUSawAdf@DjJMR-k2orM+nOVuRP)PCMWYabgggP==Tlo7K6@EBJSX-s<6CV_fK$OJ9BLspHUeK!ImdDA{ z#Ar1jjf3+Bg34u2R~dEq$*gzO%C9eQ|2m-36ZjVt{eScDzX|#O8W^7IMl?>;dJ0va z=>#XxchyXqKfT6gh&4rq@MOrlStj5-A&}WY;un^-w&d>a?kYWloFZ~Wj~}ZP53&I= zwsUZh{7ju_VG{suPE1SyyKWN!I9cv9DdTE-R*ONwkwAKA>VFQ%m4NjW6cUrYSz1mIt{0J&l5hQwLMf z^JW9)*3!~)b#+CQ?SJ^dTT@d*%|8o=D`SAqijKZKF*%9mf+GwGx>A;XS@H3~J1YaN z?d_LB;9b^|kY>R4^T5dW_TKaIcxq>-31bbiHTt&BYIV$5TK7}z(IX|G=3;fXJ==AF)`bohN(?W5Esxxjm0$q z-j+eI&Dhf%5#XNdM7I&KzhbhoC zj;{iK5w2|R==kRMZwKI*q-A7~f`XLXaZt!sk605I5=jI^3_OwbX{6oGL5KwcbQMTN zMYH^WFpiteLpd65TXX10j$5_&4d_`|SnTZVnwR_1j-#r9q!)i`RCaTda0EREm#}HQ zesQTr33OKUg`|MbW8-V`ZvrSUq@5p@nuPg8?>NKQ$?RaG%Lj(z+Z z$s+Z+qtd?a#h&1uyLX2O1Y&x6dT(D}tD*O5f~qf^-BN64jON7?`$Bc4+Uj+RiW$E+v?Lx|*5MsxX%qL%qqY{K3bAyU{ z_JzH_zyHG1xip=I#m2&K?(|Cee|~OdYa0%#Fa5eFCFtzoSXI#6w}VQPu=&OSX;=TuEyiP z0$=I2+{*$np?ZW>C00~yLR|&*Uipn9@VUPhl_?t=Tjd*FfNL+oAu}IBu4V)li&j@B zBM=DYR#w3>j$>sxZZ3a*kdl%%Pff8cFE0aAhz3Xj+MgMC<|BS@Jj=8* zCs>I~$<xQ0@ahfc6G>~^jlc=aDAo?m^URB?=`7-D(%Y}_{R@Bti5;RgP zv-JcmtgYJ`5e^OxTm3gS=bD2^!2S&v!M+5pgwPO0#3>fqfbh_e!XMX$%cZ_RX ziA+sRKjJIf1%EoBmlNFIB6e;loi-Q2dfLD-nme}4zU eVQRhx5)pXzUC9X1lHf}fL{m*$wN%;s)qem8-9=ac literal 0 HcmV?d00001 diff --git a/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.map b/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.map new file mode 100644 index 000000000..494f75db7 --- /dev/null +++ b/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.md5 b/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.md5 new file mode 100644 index 000000000..4de7b2ea7 --- /dev/null +++ b/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.md5 @@ -0,0 +1 @@ +9aab0c2ef2405564029f64958aeab5a3 \ No newline at end of file diff --git a/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.png b/d7/d04/class_b_t_1_1_status_change_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..28e6ffe06a45ed218fec4e601c8b980459435e5a GIT binary patch literal 23083 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 + + + + + + +BehaviorTree: include/behaviortree_cpp/control_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
control_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include <vector>
+
17#include "behaviortree_cpp/tree_node.h"
+
18
+
19namespace BT
+
20{
+
21class ControlNode : public TreeNode
+
22{
+
23protected:
+
24 std::vector<TreeNode*> children_nodes_;
+
25
+
26public:
+
27 ControlNode(const std::string& name, const NodeConfig& config);
+
28
+
29 virtual ~ControlNode() override = default;
+
30
+
31 /// The method used to add nodes to the children vector
+
32 void addChild(TreeNode* child);
+
33
+
34 size_t childrenCount() const;
+
35
+
36 const std::vector<TreeNode*>& children() const;
+
37
+
38 const TreeNode* child(size_t index) const
+
39 {
+
40 return children().at(index);
+
41 }
+
42
+
43 virtual void halt() override;
+
44
+
45 /// same as resetChildren()
+
46 void haltChildren();
+
47
+
48 [[deprecated("deprecated: please use explicitly haltChildren() or haltChild(i)")]] void
+
49 haltChildren(size_t first);
+
50
+
51 void haltChild(size_t i);
+
52
+
53 virtual NodeType type() const override final
+
54 {
+
55 return NodeType::CONTROL;
+
56 }
+
57
+
58 /// Set the status of all children to IDLE.
+
59 /// also send a halt() signal to all RUNNING children
+
60 void resetChildren();
+
61};
+
62} // namespace BT
+
Definition: control_node.h:22
+
void resetChildren()
+
void addChild(TreeNode *child)
The method used to add nodes to the children vector.
+
virtual void halt() override
+
void haltChildren()
same as resetChildren()
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.map b/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.map new file mode 100644 index 000000000..e87888705 --- /dev/null +++ b/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.md5 b/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.md5 new file mode 100644 index 000000000..5fb412e42 --- /dev/null +++ b/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.md5 @@ -0,0 +1 @@ +f3a5beeb069ecc79dc3a8eab4e33d8fb \ No newline at end of file diff --git a/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.png b/d7/d12/class_b_t_1_1_entry_updated_action__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..11efb2ea8b2fa697675a839399e196b6a5e2fe6c GIT binary patch literal 11996 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 Z5KSgOS=~M{fpK+&jHJSoVsTxc{{`&MDO3Oe literal 0 HcmV?d00001 diff --git a/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.map b/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.map new file mode 100644 index 000000000..339288f8b --- /dev/null +++ b/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.md5 b/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.md5 new file mode 100644 index 000000000..8ece7a0eb --- /dev/null +++ b/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.md5 @@ -0,0 +1 @@ +3b527740e0d14527e21baf8da6d49c2b \ No newline at end of file diff --git a/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.png b/d7/d21/class_b_t_1_1_inverter_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..335f8dcfc5477b75bf947af4daf03b12b076460b GIT binary patch literal 6043 zcmcJTWmJ@Jn8rsCL_mQ*Dh;B9inMeJ3>^|8NOug~B_Le`(#lYRfW%NkNr!+)Ne#`= z-60M8uzPmT?%CaMyN6-s%X{AUdGES@_Z9v|S>_%-B|ZcKxhE$pr3QWx;J+FV7kuLo zy=(zLxW)=HQjqJLzs!cbcnE~-jhxhL4Ug2VX>X0UW>=ki$D-7;{sI27`fr*E^c@IG zO&#UFYdFOkhf1qnC@IS;<|?n5E}7-WS3B8I6TlODH5NXLIlAatk@38yA;GDC^F)6= zPxcE|#1nV^{vDzP1_%E@2VTQ|80)CLQiBsBzEM(C-Cu3~h<$N&++@GOm7)}a#IE(d6tuFkvelDD zXRZrLn0#ZAufV6*tmp-e>cZHyuF<-P8^r}GcbmjxwcT0+t&MdTh=x2rj96z zz_c`)@bK`lu`$S-_wRp?m6^!N${Nl#e?$rzc#m$kx~=}9f5iG;N>&yxCnv{dygazM zS-iZwd==9qrjX3WV@E|n(N(04A{X&`1?lVSyB9qf*U0Mm5;ySU@r-xO59bxEH+p)# zErEBQzj$GNbUIPzM#k&^RWkISM~`ruR|m4os;ilKcoKj8l3nnEz+f<3B3fP8^u_7H z8X8Ge(s*XwuoQAO^TRnbFT*#b8sm%TMexO^rS+nbI*twwk3~h(pUOlV+S)2!NNjid*`!&GgEgmyTwF>RZUIJXPMirgG=r7z87bF9o}x;D{qp+i+$yX#l%Qwk142)B99>|$4Z zPnuBjOv8>ZzNH-vQ9a1g&tr_A!K+Xt61ls#NAmUS*C&r3i}UmIhgHHxQ>Ln5qs8+X z*B2H@*F2SsN8{t;_t+5Y-UrJ{x5Cnd+$ksBcV<|prlzFixHP-eZ3L zny$vSkb5wfADoSijU5@>+}zLE*)2d6I$X`n%oZ0HK_O0<)}^JTIW}Zu&)c>7; z`CROERxbDS^_h>A8jVd(QjOx^;+ES@3!2oGl$7k@;EIcjLu8_e;`xljT3ZR+>Ps;9K2gadAN|=<-Z3t*^*U9kjX1>({T5u7SAs=BM2;(2~)G zm6g!sWHL85x1#rzzsDNQdnu*ili zvO>YEoa#|}Wj8z?xK2`bVX|XPoP{i0d-IZ#7cPAe-C`(Pu}E#rO&FOjpJ%r~c$u#C zU3bi{47p*YBoX#NA=-W*rjYiPLNb1DqPVZr?kB7bUXh&oK{Ssm!+t7~!U>x^e3l+^ zOWm(dNvqOTi6)#-hnw86oLJ+cesz6STuTQ%H1MnR%UZCD5mLM&>y2}l4I^c4g_SBz z6d~e^)U7%H1(Cv{hb=$HGYBTD3i7jKjkx1m#0e>1?C3FPs^^E~O%&utONaClvimS? z2Dje6?aIDh@(7>PR!!p$Lz_8nV3KU}@SIxYW3FZAIm;}i0!eT!RxTEx!dgLy&h9(HD;b*D`Nq8s?CbABC0#AtKCN zWw~sWhy%zIn8eVif`GrrN^DzEggQ^tF)UtK^q==A%83=Le4v9RzYh!|!iSm?MjuTR zo%Z~jxmh<`ri}ve|>@a4%I^G#s=O1*E2a83n zP8N>JM`kajLkTI2$E^iRA43+eIG6rzO)f4kr`W(aZ0zjzyGwG=jQ!*P`QU$9{tl^# zeSL<1dU{&WGdfEUwEU~5XR!lL<$h<_dTpeT40Hj6oDlaujo`4M0aO+5-aQ_e4^;Kf zn#l$0+50t16V7vSB!OA;I$oK;`18x#^kdHtidHe!3ajw(6B zV?Nv*PDf7utk!*pZEAYDU1+ENDIu;T%KGgP=&p9LtG$>!cqJ?% zqFrS}asGE}0RV@_yLZl47oNTc2uvw#lugie{U@l!)4fi*(|*4zNpLsG5JDrMP{%w( z%|UlbLGaC&ekT^`H%u&wT3K(lg%V|tZrspGdwY9OP|)x?X7~!`dhAUOkBImOPnP- zETrP$Q3FE%RaQyqA<%~T!5oE-J=pzhCAgldDm@5Vd&EPQAYus+ut*U11*3}mON-); z``I9!Db59*wBCw`YeO#*F8CB0tn&&3T|@_$9bt}YJtJ`>ch@+tvC>`(nS!S2g@VxF~eh^DiRVC9hZA3e0+Q$);Mmvvn}xLCiEX` zqwd~bMgai|`rFCu2FqL37$z>R!J@|HdhzcRO#pXxny%AhM9;!l-W8X+@958NqgntP zl8gBYAFT9uPEV(CTlDQ7H(jR<<*6*p&$kwqG|IcUyaGASwdhZ`nXH1Zu3Ca&-Wf%~ z9TpyLG+u6|@%C+*<-n8Wo-Zc*Ux>FwS;i(N_OH%&NFO}-8BWR^78BDsIXPJaude13 za^L>h)`m?+Ms{&|i4ci-PC&-?&F}hZs@63U+;?_6m=q452Dk?XO~*I6c&&2Ny8vll z8Z=Jvo2#GqcXV`Yo>8jp%&hc_9H)Xg*mQJw_{#fJPmdy-ZjHE;6Bpp1I??x)N}cZMU=CYl$0S1)(r+Zzu%QG z2-r&HsJ^7?wtiA#db%>;+RL*e?B=_vA+ zwV}MzO;mr4&nXuP2}y5y-tyitsEZSHxN=^$_wn}P%E|$FI+x4p8x*ail+^79} zb6`*8vxqMzZL^mAd=LHO zjbIZGC`E&?9zUR_rYZYFW-QEaI!4LKD!2N;BP4|AE94m#G`2(@VH(>M=J!S`(S-eW z|EM-iSSt%2(@dS(vxM(jDTlD#i)7>ZL-t@#%;3|JCq&u*Q*Qpu z1=iM=I#or;?oUSX!zOzOyZXaH1&z1U4aizB(|dd2pkrt~7fJe31=`MzHmEj*EdM;# z_gqS3>WqQI+eb&M-)``}^YjGMzQ+hizsuG{CDfz=+{Ci-eGyE_=Fva+%qc6{#Jx=czbQsUzNlxCF* znwpw7jn@@VS6@e(?0uF*s6MZ_nHA@LV$@OQ!>iuoeGYCO-w@4 z5=|rI0k&?cDKP;70Wb*T;^QU30($rU{pI|;bcyUA-kOJ(#~74Z_aiVXRsoS?-??8j z(o{C_Qf|b#3hezrbpxccTZV>)j1N+UJ>#@d=4D<-)?kkYM$;V#kXHaPJ>dA-cL)5j*IhvUfOIf9tkAr473PBxl~2+64qMD(@DM9R_;(TMhbt z1`7a2vHqYeRIsqIPl4jt?w36zBSQge0GE)w8IW=~9KQ7Dt0Wl3n6azvx}E*i?3jJD zjy+Sor!j_x%cD6~G@?*SqQ?k0c)F|^_W3X_8P^AK&XLWWa#vhmpBD4smS3^2* z3Pz|fBO{e9r#gatCwmJwE&)Ibrp_u9%4Dj>acq2iZf#A@!-N0&a>oz8rB~}hFDy)* zrW^|N4j4VX#l8P%h*%UB7c((4hn}2x*x1^FR8;-);b9(y@bdBk7KCIDSmFVbg^>|Q zOiWBoO%1F7pEysz2Bll)1_wr%mq}7$B88uuqt&Kv;3Wc5Lw*k!)v zByiUpU0tE7zCS`*L8kyF8n$kFS8X@lQ>>IX#B(%*v(3$9f&BoE)-C}RPo#{L&VYsP#p`qz8DN215Ft~urDzQuq z`YLsDeEbV2(jelFA0-A&c7(+sSZix*m1jV#5PAs4e6K!DU?1ivB;P3G_V%{`> zNQTe8Twr(a(H}{oxw*L(<_sSRZEXr)U*8U10|NtjdHJzQ7#UcIaw{qlZcG>OR($;F zaQHpJwCL1S>Yx4YA@v!K>*ZBd=B+_@K`+*!&r-^cH^(Ibx&Z*32eiU<)p>Mulv7&z z32a7cnwlNK1Y}?rup2P3VJ#3w*-q7v)OeFSJ2@Hu3?l&w{++W@4rKqvmjPN?F=62L zQ8~|Krrs0OdLSRhCmulj+3`+4SScuJ*k8Pe0LEZKP|)og6IQ>Zsl;&|9}jPKqoirM zFHNY!HBHcUeks|2iIX!HJb&~7Z-uCDQBj0J#POmhvw^nDe`D$1{jcUtoOQ}&uHD + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/updated_decorator.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
updated_decorator.h
+
+
+
1/* Copyright (C) 2024 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The EntryUpdatedDecorator checks the Timestamp in an entry
+
21 * to determine if the value was updated since the last time (true,
+
22 * the first time).
+
23 *
+
24 * If it is, the child will be executed, otherwise [if_not_updated] value is returned.
+
25 */
+ +
27{
+
28public:
+
29 EntryUpdatedDecorator(const std::string& name, const NodeConfig& config,
+
30 NodeStatus if_not_updated);
+
31
+
32 ~EntryUpdatedDecorator() override = default;
+
33
+
34 static PortsList providedPorts()
+
35 {
+
36 return { InputPort<BT::Any>("entry", "Entry to check") };
+
37 }
+
38
+
39private:
+
40 uint64_t sequence_id_ = 0;
+
41 std::string entry_key_;
+
42 bool still_executing_child_ = false;
+
43 NodeStatus if_not_updated_;
+
44
+
45 NodeStatus tick() override;
+
46
+
47 void halt() override;
+
48};
+
49
+
50} // namespace BT
+
Definition: safe_any.hpp:37
+
Definition: decorator_node.h:9
+
The EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated sinc...
Definition: updated_decorator.h:27
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d7/d28/class_b_t_1_1_condition_node__coll__graph.map b/d7/d28/class_b_t_1_1_condition_node__coll__graph.map new file mode 100644 index 000000000..f0e52f46d --- /dev/null +++ b/d7/d28/class_b_t_1_1_condition_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d7/d28/class_b_t_1_1_condition_node__coll__graph.md5 b/d7/d28/class_b_t_1_1_condition_node__coll__graph.md5 new file mode 100644 index 000000000..d226edd6b --- /dev/null +++ b/d7/d28/class_b_t_1_1_condition_node__coll__graph.md5 @@ -0,0 +1 @@ +b6f1e98bbfa6be1e12f6c1ccd7d63fe0 \ No newline at end of file diff --git a/d7/d28/class_b_t_1_1_condition_node__coll__graph.png b/d7/d28/class_b_t_1_1_condition_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b20725a3aac5f5017a62e0fa9763c1fcea8a77b2 GIT binary patch literal 5596 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 DbPH4P literal 0 HcmV?d00001 diff --git a/d7/d33/class_b_t_1_1_tree__coll__graph.map b/d7/d33/class_b_t_1_1_tree__coll__graph.map new file mode 100644 index 000000000..71517e0df --- /dev/null +++ b/d7/d33/class_b_t_1_1_tree__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/d7/d33/class_b_t_1_1_tree__coll__graph.md5 b/d7/d33/class_b_t_1_1_tree__coll__graph.md5 new file mode 100644 index 000000000..e033a74ef --- /dev/null +++ b/d7/d33/class_b_t_1_1_tree__coll__graph.md5 @@ -0,0 +1 @@ +bd278bbe77b9b4b2904479e05b223615 \ No newline at end of file diff --git a/d7/d33/class_b_t_1_1_tree__coll__graph.png b/d7/d33/class_b_t_1_1_tree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..95e610e98bc194f1389fc29cdfe6ffb31d1b2706 GIT binary patch literal 53269 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 + + + + + + +BehaviorTree: BT::PopFromQueue< T > Class Template Reference + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::PopFromQueue< T > Class Template Reference
+
+
+
+Inheritance diagram for BT::PopFromQueue< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::PopFromQueue< T >:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PopFromQueue (const std::string &name, const NodeConfig &config)
 
NodeStatus tick () override
 Method to be implemented by the user.
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Member Function Documentation

+ +

◆ tick()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
NodeStatus BT::PopFromQueue< T >::tick ()
+
+inlineoverridevirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/d3a/class_b_t_1_1_pop_from_queue.js b/d7/d3a/class_b_t_1_1_pop_from_queue.js new file mode 100644 index 000000000..0efb1167e --- /dev/null +++ b/d7/d3a/class_b_t_1_1_pop_from_queue.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_pop_from_queue = +[ + [ "tick", "d7/d3a/class_b_t_1_1_pop_from_queue.html#aceea54c073e940b1f2956783f86802b7", null ] +]; \ No newline at end of file diff --git a/d7/d3f/strcat_8hpp_source.html b/d7/d3f/strcat_8hpp_source.html new file mode 100644 index 000000000..ba24937d7 --- /dev/null +++ b/d7/d3f/strcat_8hpp_source.html @@ -0,0 +1,215 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/strcat.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
strcat.hpp
+
+
+
1#ifndef STRCAT_HPP
+
2#define STRCAT_HPP
+
3
+
4#include <string_view>
+
5#include <string>
+
6
+
7namespace BT
+
8{
+
9
+
10// -----------------------------------------------------------------------------
+
11// StrCat()
+
12// -----------------------------------------------------------------------------
+
13//
+
14// Merges given strings, using no delimiter(s).
+
15//
+
16// `StrCat()` is designed to be the fastest possible way to construct a string
+
17// out of a mix of raw C strings, string_views, strings.
+
18
+
19namespace strings_internal
+
20{
+
21
+
22inline void AppendPieces(std::string* dest,
+
23 std::initializer_list<std::string_view> pieces)
+
24{
+
25 size_t size = 0;
+
26 for(const auto& piece : pieces)
+
27 {
+
28 size += piece.size();
+
29 }
+
30 dest->reserve(dest->size() + size);
+
31 for(const auto& piece : pieces)
+
32 {
+
33 dest->append(piece.data(), piece.size());
+
34 }
+
35}
+
36
+
37inline std::string CatPieces(std::initializer_list<std::string_view> pieces)
+
38{
+
39 std::string out;
+
40 AppendPieces(&out, std::move(pieces));
+
41 return out;
+
42}
+
43
+
44} // namespace strings_internal
+
45
+
46inline std::string StrCat()
+
47{
+
48 return std::string();
+
49}
+
50
+
51inline std::string StrCat(const std::string_view& a)
+
52{
+
53 return std::string(a.data(), a.size());
+
54}
+
55
+
56inline std::string StrCat(const std::string_view& a, const std::string_view& b)
+
57{
+
58 return strings_internal::CatPieces({ a, b });
+
59}
+
60
+
61inline std::string StrCat(const std::string_view& a, const std::string_view& b,
+
62 const std::string_view& c)
+
63{
+
64 return strings_internal::CatPieces({ a, b, c });
+
65}
+
66
+
67// Support 4 or more arguments
+
68template <typename... AV>
+
69inline std::string StrCat(const std::string_view& a, const std::string_view& b,
+
70 const std::string_view& c, const std::string_view& d,
+
71 const AV&... args)
+
72{
+
73 return strings_internal::CatPieces(
+
74 { a, b, c, d, static_cast<const std::string_view&>(args)... });
+
75}
+
76
+
77//-----------------------------------------------
+
78
+
79inline void StrAppend(std::string* destination, const std::string_view& a)
+
80{
+
81 destination->append(a.data(), a.size());
+
82}
+
83
+
84inline void StrAppend(std::string* destination, const std::string_view& a,
+
85 const std::string_view& b)
+
86{
+
87 strings_internal::AppendPieces(destination, { a, b });
+
88}
+
89
+
90inline void StrAppend(std::string* destination, const std::string_view& a,
+
91 const std::string_view& b, const std::string_view& c)
+
92{
+
93 strings_internal::AppendPieces(destination, { a, b, c });
+
94}
+
95
+
96// Support 4 or more arguments
+
97template <typename... AV>
+
98inline void StrAppend(std::string* destination, const std::string_view& a,
+
99 const std::string_view& b, const std::string_view& c,
+
100 const std::string_view& d, const AV&... args)
+
101{
+
102 strings_internal::AppendPieces(
+
103 destination, { a, b, c, d, static_cast<const std::string_view&>(args)... });
+
104}
+
105
+
106} // namespace BT
+
107
+
108#endif // STRCAT_HPP
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d7/d4f/class_b_t_1_1_set_blackboard_node.html b/d7/d4f/class_b_t_1_1_set_blackboard_node.html new file mode 100644 index 000000000..eacd51b97 --- /dev/null +++ b/d7/d4f/class_b_t_1_1_set_blackboard_node.html @@ -0,0 +1,349 @@ + + + + + + + +BehaviorTree: BT::SetBlackboardNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SetBlackboardNode Class Reference
+
+
+ +

The SetBlackboard is action used to store a string into an entry of the Blackboard specified in "output_key". + More...

+ +

#include <set_blackboard_node.h>

+
+Inheritance diagram for BT::SetBlackboardNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::SetBlackboardNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SetBlackboardNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

The SetBlackboard is action used to store a string into an entry of the Blackboard specified in "output_key".

+

Example usage:

+

<SetBlackboard value="42" output_key="the_answer" >

+

Will store the string "42" in the entry with key "the_answer".

+

Alternatively, you can use it to copy one port inside another port:

+

<SetBlackboard value="{src_port}" output_key="dst_port" >

+

This will copy the type and content of {src_port} into {dst_port}

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/d54/class_b_t_1_1_while_do_else_node.html b/d7/d54/class_b_t_1_1_while_do_else_node.html new file mode 100644 index 000000000..da4f9ed43 --- /dev/null +++ b/d7/d54/class_b_t_1_1_while_do_else_node.html @@ -0,0 +1,385 @@ + + + + + + + +BehaviorTree: BT::WhileDoElseNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::WhileDoElseNode Class Reference
+
+
+ +

WhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode. + More...

+ +

#include <while_do_else_node.h>

+
+Inheritance diagram for BT::WhileDoElseNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::WhileDoElseNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

WhileDoElseNode (const std::string &name)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

WhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode.

+

The first child is the "statement" that is executed at each tick

+

If result is SUCCESS, the second child is executed.

+

If result is FAILURE, the third child is executed.

+

If the 2nd or 3d child is RUNNING and the statement changes, the RUNNING child will be stopped before starting the sibling.

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::WhileDoElseNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/d54/class_b_t_1_1_while_do_else_node.js b/d7/d54/class_b_t_1_1_while_do_else_node.js new file mode 100644 index 000000000..0b70f7fad --- /dev/null +++ b/d7/d54/class_b_t_1_1_while_do_else_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_while_do_else_node = +[ + [ "halt", "d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21", null ] +]; \ No newline at end of file diff --git a/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.map b/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.map new file mode 100644 index 000000000..85bfbd4a3 --- /dev/null +++ b/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.md5 b/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.md5 new file mode 100644 index 000000000..7fe2f213c --- /dev/null +++ b/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.md5 @@ -0,0 +1 @@ +469b9fb307bc82aa25664051e03d1809 \ No newline at end of file diff --git a/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.png b/d7/d62/struct_b_t_1_1_ast_1_1_expr_name__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f05a884bed966ff9e04968fcbce143cbd676981 GIT binary patch literal 4936 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 literal 0 HcmV?d00001 diff --git a/d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html b/d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html new file mode 100644 index 000000000..81d770a80 --- /dev/null +++ b/d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html @@ -0,0 +1,164 @@ + + + + + + + +BehaviorTree: BT::Grammar::AnyValue Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::AnyValue Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::AnyValue:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::AnyValue:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Static Public Attributes

static constexpr auto rule
 
+static constexpr auto value = lexy::construct<BT::Any>
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::AnyValue::rule
+
+staticconstexpr
+
+Initial value:
=
+
dsl::p<BooleanLiteral> | dsl::p<StringLiteral> | dsl::p<Real> | dsl::p<Integer>
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d7/d68/action__node_8h_source.html b/d7/d68/action__node_8h_source.html new file mode 100644 index 000000000..77dae7f99 --- /dev/null +++ b/d7/d68/action__node_8h_source.html @@ -0,0 +1,365 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/action_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
action_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#ifndef BEHAVIORTREECORE_ACTIONNODE_H
+
15#define BEHAVIORTREECORE_ACTIONNODE_H
+
16
+
17#include <atomic>
+
18#include <thread>
+
19#include <future>
+
20#include <mutex>
+
21
+
22#include "leaf_node.h"
+
23
+
24namespace BT
+
25{
+
26// IMPORTANT: Actions which returned SUCCESS or FAILURE will not be ticked
+
27// again unless resetStatus() is called first.
+
28// Keep this in mind when writing your custom Control and Decorator nodes.
+
29
+
30/**
+
31 * @brief The ActionNodeBase is the base class to use to create any kind of action.
+
32 * A particular derived class is free to override executeTick() as needed.
+
33 *
+
34 */
+
35class ActionNodeBase : public LeafNode
+
36{
+
37public:
+
38 ActionNodeBase(const std::string& name, const NodeConfig& config);
+
39 ~ActionNodeBase() override = default;
+
40
+
41 virtual NodeType type() const override final
+
42 {
+
43 return NodeType::ACTION;
+
44 }
+
45};
+
46
+
47/**
+
48 * @brief The SyncActionNode is an ActionNode that
+
49 * explicitly prevents the status RUNNING and doesn't require
+
50 * an implementation of halt().
+
51 */
+
52class SyncActionNode : public ActionNodeBase
+
53{
+
54public:
+
55 SyncActionNode(const std::string& name, const NodeConfig& config);
+
56 ~SyncActionNode() override = default;
+
57
+
58 /// throws if the derived class return RUNNING.
+
59 virtual NodeStatus executeTick() override;
+
60
+
61 /// You don't need to override this
+
62 virtual void halt() override final
+
63 {
+ +
65 }
+
66};
+
67
+
68/**
+
69 * @brief The SimpleActionNode provides an easy to use SyncActionNode.
+
70 * The user should simply provide a callback with this signature
+
71 *
+
72 * BT::NodeStatus functionName(TreeNode&)
+
73 *
+
74 * This avoids the hassle of inheriting from a ActionNode.
+
75 *
+
76 * Using lambdas or std::bind it is easy to pass a pointer to a method.
+
77 * SimpleActionNode is executed synchronously and does not support halting.
+
78 */
+ +
80{
+
81public:
+
82 using TickFunctor = std::function<NodeStatus(TreeNode&)>;
+
83
+
84 // You must provide the function to call when tick() is invoked
+
85 SimpleActionNode(const std::string& name, TickFunctor tick_functor,
+
86 const NodeConfig& config);
+
87
+
88 ~SimpleActionNode() override = default;
+
89
+
90protected:
+
91 virtual NodeStatus tick() override final;
+
92
+
93 TickFunctor tick_functor_;
+
94};
+
95
+
96/**
+
97 * @brief The ThreadedAction executes the tick in a different thread.
+
98 *
+
99 * IMPORTANT: this action is quite hard to implement correctly.
+
100 * Please make sure that you know what you are doing.
+
101 *
+
102 * - In your overriden tick() method, you must check periodically
+
103 * the result of the method isHaltRequested() and stop your execution accordingly.
+
104 *
+
105 * - in the overriden halt() method, you can do some cleanup, but do not forget to
+
106 * invoke the base class method ThreadedAction::halt();
+
107 *
+
108 * - remember, with few exceptions, a halted ThreadedAction must return NodeStatus::IDLE.
+
109 *
+
110 * For a complete example, look at __AsyncActionTest__ in action_test_node.h in the folder test.
+
111 *
+
112 * NOTE: when the thread is completed, i.e. the tick() returns its status,
+
113 * a TreeNode::emitWakeUpSignal() will be called.
+
114 */
+
115
+
116class ThreadedAction : public ActionNodeBase
+
117{
+
118public:
+
119 ThreadedAction(const std::string& name, const NodeConfig& config)
+
120 : ActionNodeBase(name, config)
+
121 {}
+
122
+
123 bool isHaltRequested() const
+
124 {
+
125 return halt_requested_.load();
+
126 }
+
127
+
128 // This method spawn a new thread. Do NOT remove the "final" keyword.
+
129 virtual NodeStatus executeTick() override final;
+
130
+
131 virtual void halt() override;
+
132
+
133private:
+
134 std::exception_ptr exptr_;
+
135 std::atomic_bool halt_requested_ = false;
+
136 std::future<void> thread_handle_;
+
137 std::mutex mutex_;
+
138};
+
139
+
140#ifdef USE_BTCPP3_OLD_NAMES
+ +
142#endif
+
143
+
144/**
+
145 * @brief The StatefulActionNode is the preferred way to implement asynchronous Actions.
+
146 * It is actually easier to use correctly, when compared with ThreadedAction
+
147 *
+
148 * It is particularly useful when your code contains a request-reply pattern,
+
149 * i.e. when the actions sends an asynchronous request, then checks periodically
+
150 * if the reply has been received and, eventually, analyze the reply to determine
+
151 * if the result is SUCCESS or FAILURE.
+
152 *
+
153 * -) an action that was in IDLE state will call onStart()
+
154 *
+
155 * -) A RUNNING action will call onRunning()
+
156 *
+
157 * -) if halted, method onHalted() is invoked
+
158 */
+ +
160{
+
161public:
+
162 StatefulActionNode(const std::string& name, const NodeConfig& config)
+
163 : ActionNodeBase(name, config)
+
164 {}
+
165
+
166 /// Method called once, when transitioning from the state IDLE.
+
167 /// If it returns RUNNING, this becomes an asynchronous node.
+
168 virtual NodeStatus onStart() = 0;
+
169
+
170 /// method invoked when the action is already in the RUNNING state.
+
171 virtual NodeStatus onRunning() = 0;
+
172
+
173 /// when the method halt() is called and the action is RUNNING, this method is invoked.
+
174 /// This is a convenient place todo a cleanup, if needed.
+
175 virtual void onHalted() = 0;
+
176
+
177 bool isHaltRequested() const;
+
178
+
179protected:
+
180 // do not override this method
+
181 NodeStatus tick() override final;
+
182 // do not override this method
+
183 void halt() override final;
+
184
+
185private:
+
186 std::atomic_bool halt_requested_ = false;
+
187};
+
188
+
189/**
+
190 * @brief The CoroActionNode class is an a good candidate for asynchronous actions
+
191 * which need to communicate with an external service using an async request/reply interface.
+
192 *
+
193 * It is up to the user to decide when to suspend execution of the Action and resume
+
194 * the parent node, invoking the method setStatusRunningAndYield().
+
195 */
+
196class CoroActionNode : public ActionNodeBase
+
197{
+
198public:
+
199 CoroActionNode(const std::string& name, const NodeConfig& config);
+
200 virtual ~CoroActionNode() override;
+
201
+
202 /// Use this method to return RUNNING and temporary "pause" the Action.
+ +
204
+
205 // This method triggers the TickEngine. Do NOT remove the "final" keyword.
+
206 virtual NodeStatus executeTick() override final;
+
207
+
208 // Used internally, but it needs to be public
+
209 void tickImpl();
+
210
+
211 /** You may want to override this method. But still, remember to call this
+
212 * implementation too.
+
213 *
+
214 * Example:
+
215 *
+
216 * void MyAction::halt()
+
217 * {
+
218 * // do your stuff here
+
219 * CoroActionNode::halt();
+
220 * }
+
221 */
+
222 void halt() override;
+
223
+
224protected:
+
225 struct Pimpl; // The Pimpl idiom
+
226 std::unique_ptr<Pimpl> _p;
+
227
+
228 void destroyCoroutine();
+
229};
+
230
+
231} // namespace BT
+
232
+
233#endif
+
The ActionNodeBase is the base class to use to create any kind of action. A particular derived class ...
Definition: action_node.h:36
+
The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate wi...
Definition: action_node.h:197
+
void setStatusRunningAndYield()
Use this method to return RUNNING and temporary "pause" the Action.
+
void halt() override
+
virtual NodeStatus executeTick() override final
The method that should be used to invoke tick() and setStatus();.
+
Definition: leaf_node.h:22
+
The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callbac...
Definition: action_node.h:80
+
virtual NodeStatus tick() override final
Method to be implemented by the user.
+
The StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier ...
Definition: action_node.h:160
+
virtual NodeStatus onRunning()=0
method invoked when the action is already in the RUNNING state.
+
void halt() override final
+
virtual void onHalted()=0
+
NodeStatus tick() override final
Method to be implemented by the user.
+
virtual NodeStatus onStart()=0
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
virtual void halt() override final
You don't need to override this.
Definition: action_node.h:62
+
virtual NodeStatus executeTick() override
throws if the derived class return RUNNING.
+
The ThreadedAction executes the tick in a different thread.
Definition: action_node.h:117
+
virtual NodeStatus executeTick() override final
The method that should be used to invoke tick() and setStatus();.
+
virtual void halt() override
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
void resetStatus()
Set the status to IDLE.
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.map b/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.map new file mode 100644 index 000000000..ca56f81ec --- /dev/null +++ b/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.map @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.md5 b/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.md5 new file mode 100644 index 000000000..4b2b5a4cb --- /dev/null +++ b/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.md5 @@ -0,0 +1 @@ +00576565d2fafa581c4de688c2a7a439 \ No newline at end of file diff --git a/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.png b/d7/d6f/class_b_t_1_1_action_node_base__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c660473036cc7854845825f2d6e26c2ec6ca63b2 GIT binary patch literal 64434 zcmaI82Q-%bA3uKEvO;8JLgt5fK>~*~-e!j_grnRrV&EjD)iO z?@Q13{Ql?s&iVPC^L?JjxbN%wT%XVT{aWukOjTKqn1Gf5g+dX_-$kpVP*~Y06ebxy zE_~-b@ug_^2d)k?;(A&l}Hg5>DfD~ZMSE|g`Ry0wEkcJMvxjzNM+U$L8IUKiAwqzNqd$3ctvC; z&3~_~xtt>AODh+}FeoD1Fj8)P-tY9-y~x}qq+pXAdG&!S24!YA7r71bQK|}=K7V$W zzvo{#IzBeFwtg0UMQ-j>^cCT%^jnS$v^O8@_VW%E89Z}rJia(wVk{SgOU&bQ;Pkyv zkKeeYRr`Fg`@z;MwUASWNrWq=?V)?_qYWcN8Hc^nX7M zt9{=}Qa{^OUUtlZ$d!BjUKLFBKispo8?Pd!p`jUdsH?3tJ>1)fAJsRJoxhm*$g({a)=`t#T{s* zIf8{<7EO9ngljyu&8md8i}Zu1K6<}-G~YojXh-dLv@Pel+>c>ZPJ==&{^0Pi72ZVD zd#?>1gwx^|n>8vmKmwmw>Tg1)RTPm=EI?iG558h>!a^2!{6rSTG#ph-L+krs4W)~61p49cFzJf+7;W(Ul_Mk~($(?e()CWb9BbjUloYPV zj~~Cc>Y+_`9^+(Zzl({5b@=djv+H8LZ^GH_?YuQ>e~y3d90tm;(T_gecaLVu=hwYL z*s{Y_y}iBK)xS=B$6H&mczJp6%F9biNnvJXWz8%s1eY}YC4d9X9=F5N^w)d3bZ>KNy~}W3=n}jyr}n>svh$;)FAh`Uqu1}P zqhEbjn3ynLT)NepzzZ)iP-SmWVLyJ6ircU$hE?%BMYaNm(Cypi{TY(lIE-6z0}12X zcyW@L)Ph63UZ0hdr-tp^gbnJV5lW?goy*kAoHUOQF z6UxECVRUb}+R+%<+&4b%lGoSQBP&-?Auv(r-j_3v+M16NXNG$~IsIPM;xecrnwpv# zjoklPx5+Ff#xO82pnd4;;#C6%kZNf$X69p%!FfF-~)mrU; zMRtdUmv=y2=%&L2b?dY9ot=#ScHat(90=)OT{pORqw$FE!Eo^lco-Q9uQ;6^Jwl4u z`wd4p$WD(R%f8~&>d%rPtbqe~a`Y!pw=C;k=M!;<>5cK~8}KC6>K@xy*o~4udGcg5 zQm5EZSSg7Q=h=D2sxf%tc5kz@GxaMUc+3V<@z{;qX>+jvxwEw`;F7&3}9!>LxnmbzgFk!G^ z;-UyS8E=x3^Ue?X(U0EMhBZ#j?~d~|a(_TI(Chf{c;of@Xt^A>aYKrId`e^#4ZkcA zZV=QrV{&qG77h-M?%zMB8>b%_%gTn>jlP$G?-uSQ_gKj*D8w8bc+|RY8pRXIzELA# zxWf+h#7r>Ra{uR~^Y7I`xet*O6gk0>aYGnqN9C@!|3%)d-QDjZ&)JYeGV#%yYIb&3 zU+yzib8|CkG={0EX+dRg%%!OY#j_@fem%QdclK}X6Q$ITw25pk*7>+3482*0g z+@Na#v8XK9z;h2A(E_x8Y%j$;XZ^2-%6wmDFKf(|cE{P3#{EE`iW`{PKkIw@LWA*$ zR;rhigR1Jwc(r_Lb2SCz>NMj**-vdMaCum?GSe|rWJ>R0#I})4%Rbhos*Jq5tMgwY zdX75nQP)c%3$QsNB)ExUVK)iUdsd(jJzV(%^8~@#G8sC-bP;*&aBRrmS0c1^`Y~Ejv-+fdV7NS*a_;1;ED@fH&c&W1j zl2Bc!#B_%ayzaVpx9u^NRz=_+GXPEf{f{f&RgVCc<&#MJ{BN zEdOmV&89%XyS5tV>IqHmP&Aa)MMV?(4&H>{uzkY+52oRK@{g_H3caf?QO4~64zj7l zc5At?lcsU^Gfa|px$&O*q_QbifHT1|>CZQQLn0RjzCEq}htNcsPLkigQZ~JXiq*@+ zAym&Q{NH+DJV|ad;Aq1bF?Wm-46oOE50{fB``?o9B%QLYm}(zrpBvJtl-vBXF?hd- zAGsFTS-d7AEXPCxW<(<_>C#UL!_P`FnOgH!R5W*p&1W8Tx3#`C6DQX}!X;#3vwTcO zxQbp~9^%raSs}(U{v%~^NlfExv+pJz&A-L{qI)B-$KBz|OB{~q4Wa*jLLF$<-fq#N zjPur#z2g3A(NEjdusoiDhx7r+@z3MoPa?%=`t8Ria{afZq{43Ae|NQ@*2Ly19WaII zabsJHs-ibG9ci-H5ZD}KcZK<3YfH;t+te#J{`c!oPTBIW5tLJqlFz=GtLXjp78@7$ z0sRx_ZDX=ls7gS1SB zV<(%zUZF*BoyzN-QqeC`N-G~$B4phLu52Ajaz3BAlD%bHQ_VS{p@~+(_}^e4L-biR5vDLJ{B@c!0pDm|C9VH<(Dwy+Dpb{=nxY4aDLUZ$l*0`fq*_-Iw%b@xY2 z*8jMIvuS8_6>2PehQ6qrf=yXjIZv-Vr>9S~Shox_2=9FFquW=3Sha`WXb9cg7;l}P zW&~6%ZD+@YYO>(VR7n>@EVE?AKz?T?K^}*kj0&kBpCFp{9KI?|&~cpaRI< z0Mf8tZnu=FJ<2ri7yx-YGV&%w%y4fi}lL~{_{JS^^AB_%Z646nzQNn(!`fLXKU z{!EXxqH3ofpUB{CB{?ize$GApug6G3UG748p$^p7xPqJEjbR4{?oazO8vFfWg|)M; z4DD|vq7}gJPPozc==SZaDrsmy&iYk$VfN!yrhw#}+}vdJ^=Scg;KMorJ22UvYZvlA zxwF2pVb2|7P+{{VP1Ji1s9vx0`oZ?RkndjsHsutX(OZw^&~&0+6!P-&LXX#}0W3W$ zGw;Mixr(GNSQ|J~UG>R1qu$F*aWu^+b%o^Z7ejgkL5*S>oXq(6_!6*u@cWTh`KExe zX2i817_suSoyz#>fDO9VdBJI>2?If*S7alalK8E+h725=r>CcLPQ-!yd@nI(^xj)9 z8%vLg!Te}+{_54M-3``ho*m9y*RKA2NzE-)Q^>UamZMwuxai)JxLxL(6y#M!Qb~R-^&t$M>u__j?%CID#rdC;bxtlW zt#9Q)Il(*6fQE|U$I8Wxg%L968ctskyBwwuf=jP|Pzbf9q zKt29Baqgp06o67DQBnGpl@%eM10GsIJA9OOu)RZV_=W%Kj4;nhDp?tDe8JHcfWfuj!C)NcvB?$n{P6u12 zXj$1gPzI!ZeD1KRq!B@#si~_oKmPmM<7e#>7k`S|>i6cqzt_}?^l!rD5552U)A(N6 z9h%AqgDt=>c%TTOB!USj5k&zur1@BdEf4LBL_SLbgtXVx)HJoXBM}fUtQCYg`ZwOME2G9@0z*id+T1*wS<5H`>&|`u zgR2GX?uQKdvl>zhegtR0VVfUdjN<6*d(<1|dabuZo&@?PCMN#b-{1B3s}{XcU8ty8dh4mU2A!P3Mg(bvX3p{?B)hd$y?a zQB8^*K1FU9v$7)ps}j@HPmEA}d;#~6S6Kb;6^>u%_2WtGsyn*D<3Y>N|A$E%x5k-^ z32aKR*D8CnXvnfBjPf$vh&UN`YtyC9FuKq3w}JZB0cYG;i5n(tmX^%wD<9;@A&-rqDZRpxcK57+_R&&`{~Y|JEU}Ug>c_yX(9d^ zi!sXtPkiNrH!FH$7>NedF9!A!EOQe~Sv8lFri74`F((!UT#pu8m3?e~no{;trztw0 z+U#H1*}Ynx5ryezG*eXkAeFTQAYTYyiw?#ljtw48D*j`P16_``;6rw0->(|M|DG0E zz<`=rI)ST3U_Rgtieqg>`Kwe%8s~g4T!YC5v1*aQL3)PBL_DA!<(Kz?@K8!BPH#RDE%;wu zjIvwkdX*^VD?&mq^42ZxNC3adKjGjVp+4Sc<$hcad(JR_ss8g4H&B-7(hE(`Pz_;Q zYGGq+EM5Nzuqt7@yRLDZS_DXI0Z>#CsZn^~e^r^(RfE9MHg%yy)-KMPZ+A{_{N$qCsb{1%Z`sAkDL|b7loB|Qpv>r2KA=Qh77-b9=BiWa zjHI`xonI?yL}~(Z=%Li(0%U7`ee>aEW|f_5e0l!IA0yg{qEk=sMpCas@MHoJ7-m$XdVCE+RmUfEbHtL+k4iAX=Nim4QHj3W$rNV9(xy z)|>&NCA;2x7SK43`UTG;;>yX%iO2q=dzsAuGxZDEf_dboHm5#rPq_3oPfniccqm;f zY0*1(pvOZ81;|K}O+kL)bl)c9dM(J#iUJS5<3~nD+Kg9SS56nRe`VSg#{o2_3DAM_ zQKU=V5J1x`Xw--_lq_hEbh(1PT$Oa$5~Gi*4L+Wl#fCJnzOoM*uCc6If+d@P$Dz5mIdC0^HM)d)s$F_q~) zz>>JU-$pb*ds>KP9JOT|O){hyh>hkFRH2jw#oL}WyZ_kgQ&Ida?);HBloY|^^# zX~!PA9nv8$EL{=7i|!WVoegC_AS~6#yTds9h8DDeBx5&?1VU!Qv&NNqfttF;syPs6 zhaDgxPQZdj7W!P$ZFh&NrTA+)%E*RynTAcP4)^*j?E)DY6I5pqudW}0I(`-K1{qm& z@-0UK)M$fmU5`B)4Pp{2Tx6x4oQ#b8Qg7<@@o=ge@qn_Q57>N(S%HR+DG?JB!*%%e z>sRc6lsld~(axQnod%I52GzHn?*=U`62|ymfZZ~lykez_*?%nw0--py!=?X)V5f&yD zufhOo+eOCf(HOij4?^P&P6o(n;N(e3J-r~KS@`JpeJHb>q-(<^an$T)@J{)}aYQggxUiIIxF*X4K3i0FJ z*g;_h4uJE`plE}OBZ<&SYwLvEhvhfj0e^9cCqPNHwYAmz>jl7#2e5X;rCTK9RrcO* zAN8h-N5S#bt;`2fwXpQ|ElY~fBj)kVQ&>7DXXp0|&NpY*pNgTYYwW zWLsMsS6?P(fO5iNiD}hh)nLt|d8duBn_PPDe?)fxPbPrpTR3*~yLJ$sXC@RC?djH_ zzHf#vF;Ns#s8ZgnWRc|bNnEu2s{os%*&h)W>|A(GSOgo)KAIo#8E+=wa15NDwY@CN zSMV6X6G5P)&DXbK_v{&}`qg?~-`wuKy?L3P9UpYj8mC!Ihv|kFAnBXVG(8b=|4HYy zw;l$Ya_)G4x)X43DQK@>QiLzy1~GN=x;!j*nw9eK_O?!UG`tD$&1MU} z*%!B_nijef9<6+3jiA4M5%g!tm9N>eP%(}Dk8gGk5B*@>Z$y^M$SmGk;a80Jx14)(i;GsjCp$Yj^s9QT$_4Dl zzON>Io#=pr33Z`ShM2~t@U?~dHx8=viT`EeTz&7q6$nej zjt5@BL%83)u5V(5vcW2#!k{fAbah8ouZn6*M7WYRM-kXu0{O7_p}1t3`k+mR5Gy{W z6HZfZc8@MkNkP}A#tO8|B`OgFXl2bU-$#irR$eB4PDvF@rlG`EpBX^NOr3orij`1Q z%SvpCg>&a0$W|+xYn1m2&$#aD@kebuQU%kq!`3J1g?XvRxCs;U3 ziSN zgy_s5{1$%f`LiZ^nNzLoKjY_l{STt2D32+-4n2W;9o!GG^1Of9XeVNB< z-UOUW#yAN0PVOzWM=s5mU z8{6|U_SrmhrhS1>7ZktUe2S5WF(c~k?L+?6h=!1Bc^c#r_w4W2?j;Kja$-i`gA(He ze%hUC>wipSeRt&>h!+*a)|_{Py}nVGQ1#=ki+|C_Id# zEA@jhn33|D>u1{_%V)r`GS2yNa{-SzHg=k-5Y}a)rmrAws?B?7enDtWZ?7(HM#%Dj zkEh(4%yUe$Y%!$+L+sP1CSiI!X`6JcUvdAfBG<_yb!qDsCo<~GPMS@$_#MvH-^v5COeWFlEKLfq9#g5A{&^j^kjV+xwH1(;$I;qR-7WBGqc!9{nM z#stP@@#qKKa-0siO8E6?_`RhfsFM%r=fgO@47>l?v1HFiT0+qq-B~5Xv>D}MLA!n~ z>L=#)=qv13!q~MW?Kdm-01F+*L|YQta)|j|UE;u3G>2;? zuV(Jz=v(mh5MfC|qAH42Lu}^kWf$JT(%Xi{2mFW^B5C%*P-d5m#b;cgS$Pv*dYQE+ zEHA+34+ViE1~u42*MCLDM}|YrwK_50%wnf{D<&qUsvyaM10oKzE7R5Q z`Oxw1s;E@cb^m-bJT7K@)Az3{dv>XX{Hz|;YRPmD@PR0m;tdc>1n8Wf&7 zD`1y`0ckmIQ?c=?5b_1E$~@FWpjrC1=)^WM_}n@#2F|X&T$dWiZ9INQ9*Ih9MQ`pr zIul3P!(WmP&-}UnNLn31rNC z>7Z>xGyBHNZ}1-dcahwSyI!LD)ebKJ1kU$oN()y00dT7dE<0T{#$`4(TzFXRM}K}r z$HndTH#GiPyaX!g@Ox3WRZaG6u1#S`NZbO-#)b0;JW%k!m2-ohJ;TdUNhgUGXHYRN zHNgM`WHERO%_4Jn?a|)49;yi>aS{;xk^Bl`G4E|or?1@jZ+*8wGe5AVMyPua z$kEXu9^H7dD zvSh-Y=?pvN=K1_YFToNK9k98k+57UO=vK9p!zLO;OY3P<3 zJ(Xv{q`vj{m;swMkaZD&Qh&75{b$G#*xQuX+VwatJ@S&q6A{QCCC=BoTx@bin4gs!1FtYRH%aftM5-RFeSO?ie=qCq{W}R1P~q;%0qhyRkAK z2n|AUGz+weArH~iczW!J$gdDr>ICL`-JWsL)O<1F)2F*WTg`Zoz-R_39HArt(8&S3 zv_n2gwZuqt_vhp#tMbvW2=`|6*}}+CPJLeIUhew^YW5i60~d5G4{0_oQkJIv?d%j9(`KcEXy}c`Yf0A&5ogo)mAfq4e>9;{wt># z!lWO8!Ry>9F1twU_ws@MQkM#}`QxC#z#nRW-Uv|zeUNKm<>%+`t_8k98PvRW_t?0` zNpfOxa^d9okeS&T3Q)db?fbVmIr_b}16jdOgM;;|;Glw_BIPjoft8z^8w@_ClKP$J zp`jk0o}XchrOkUlKI;_*7Orj;Kt4B5SVc6NMO5^D*Q;w+r+t0_E`s2gKCsv;=gyrQ z-Fr3ZUJfkMu=D8f_mS^-PtQFwbMx!tz#}mw9H#0yn3?ar7KmQ?mTN8SH`{{KEf)Kk z1@=+=IskA!&m9Zi+iKbi1NSJ8e4nXg;`QBot;Cih;zj_s zu(iM6m(Xy9nfYZ(N(6*mq&R}D(|s>e-7sncM(1qzt;}4mt-ak8auqg%?Xe4!DbzRpLW+i94eFqfH=FnjGs*bd9ol7;0+?9=!D514i~or87YI<(DH9D0Dzb% zkmj}^oMC=+unjyNXqUJj&|AC4WW031*$X08etG(p@6K2eDj+#I*|M4S_U+pf4ZcWN zuIxc>TuX|u3lHR+kod-`F6=@mR6trBM)zm5*M9u4ND=pEuw|UM-6S#U^V(7x5f6 zr$h_xoKIWmQH;DAhA5b7ykOkwhfuenbPEF#l|<8`w$!d=#QhjcWM>S18rth08xb7( zckLuY_tCk~=nQe40nrS8^Ou-i5~Zz$s{AbmFYbRcraZQkXABCR`I5wsh%K)LY|S*1 zpIvv|HOU^sC8pJ_v<0;YJgd+kyz<7{EWms1T`gyGa)eI(-tU zj65*FL`9lKZ<=U0q`|~?k6>440p;KN^{W-WftUfnKC@sy16Tf3)dLq?27*xcIvWb& zHCV9T?I2r5Dkg9<2@BIW)^Fo}a9s%mzZ7vXY$iY41c4xU+W(Xu1g#G6D2{c7(aOWcQs3(d@y(A=DmN5)u&tzouC- z*)DL0niQ+oTx;T8R>f_q!Dp=hB2&%a0EThA0Wad^5m0iPv_Geennd~tTuO|kKR7o7 znbObbjL(~c-X&;1)&wNcL2{koER|MQ_w5~lS!UW6N~V2n4YLVWd}et$6vBjWfOUcqSMKG$ z4&QXz|9Kx0v==7p+&ckbFkb77&2knG1_1OtFyP*trS^e3h89NsrbCo4)5fcf{XDYK zrc(L87`mw7F)|SAm6v`4p5|88xH% z?*o|i6g@bg7wISzaoTNS`hMl(<5R75w)ELrv_6N5j~iB{9)H}r{#%dOScv~dP`gd=mz>Ti!pPBuf zN4ny`g7c|#Mvzn#zGJ22nv&)&HS|SWf;EbM-4l<|5Iu~N8Aq9XCjGA08~xvUA?=fA zG8iV6lc*-o!KEqT!v0i>=eKEjk>*hx_kG&p;^NSVhzk9gP=Z@$8&XCU@dLQR&NES8 zZyHk)mEEdU^CCaGCGVJBil$g+>OcMClt_=-Wa3rN`R*GkALWq6LlIEjOO#5}Z|NDL zq$-86vDNvj7vPPyH^Ht{p6bCGXSJs5nUKS2hH3tTk*!%rLDlG7NXTKHrM`7mmbGi# z$aHxt7psRf>WPJ3!P}=FXACsXRbXVqned;m3th@j8M>+VNt58PRqrJ^42ek_)^4 zn&f?R+9Auh77?6!uBxM-`6hxi+iU@4f09!|)3pEn{TFoHDI1NW_DE)cMY+_Ki*I*X zA|lDXPpOj%D2C2KAkI)HiL7a$n4(HLlh}^^E)FS5gdKbQZ?Oh5=h0apNb@dnc+Ad+ zo&y4c)K@05uO>ajS|9m7pYFJ#H!Qb|f zQ?t0zv5Z{-a!CwDlArl_bnLJnJ;eQO=)3Hfh_c8LOL9X02{`L1Okd%2)C!rtLutgd z?6dNj9=xynkYs%PEF@%6M@RGN!Z{4Z@WzhGLt-qJb1xgjxjgy0yRZ>!D_e>m-BsZQ!rRD9VHfI5B z>Gg;Mzs!=kU3N->f2)Qe9dRJFMHz5Sp`W=vT%lj&0-5c6pSUWqBJL4}W{^o8rY!YF z*-63P>NdmAD_>D(NF!JGZs>B1fhjF^ECyFY3D1N4s1Lbr+{~Q1NI;XDzCqy`3cns> zg486;h{-3jS|rC!EUU8_x!`4vn_x7@y6Iv*IUi8X?Bh{atPMfir*3OQvk)F?M_7!g zKloD1Lq(Us3D-ugq&eJjn2>;c_tvEQbaQ*V%$iVelqc13fpz3Z7Pv>7 z6CJN_9&5cG`V+c?_3tuOo7il*2-e~Pv6Qw5Hs3wAP0g^biR_iXzJvEfckjQ@PlEXY05e!fCLhUUK>DU1KqRDW8Nnv%Eh_>K5F+)R z&-T)xHN!PPv%*SBO0pS!&l+-`(ILs6kc31Qyn@;Jd2^S=`ieg*x#|7Ddyt65qM-1f z#bie$=6tjye%jo9qtVW#ZrvFV8#_ZiTOlfS57(0CYsX7n7ONcwoU?25Ojs z1DaHMixAl^t`i2q=J*O})tNmjn058c)*aBunto8`^0Isf$D{D>zfCkMU{11iJW|C9xB3js}-0{%sU z)4&b;Ke#=l6LG~ykuowyfw>~84!2e7cPx^UlERRGPZ@v)4p}oWmy^3PwvTInd9w*Z z(i<80U{gvA*lawVdH^!_!=*LdxL5ua0%`=YGW{xe>$k8@{#tL}G+sEf{c+565VOZmqlAlesJRhvbi!^p8F+D)Bu9ijw>YqkJaSjQuwBfWL&RxRKj$g+F_9lzX11)PHmkds*%EJ!HSEt|`% zm5ZQefzJqg2F?Ek>tdv?oc_yQ*g%Tv6m-;Fr5X$*x$ypyeT#;fR!qXJ<>T3wwS zwxZ>?Kj5Raf|OrA`PkVR1_my`uuMeGy=1A9(|MhX*4EajCRm$5xZyWCB}QA@+hyyF zpklz2Gv!Nq327W;BnS>Ea5Sw*d-%f;R>gP|ps?)VX^S22YOGJzQGs~Vk|7y{!~{Vp zLfjAdZ7kIKMD2xJj#CvDec%?s2o=O4UFxSG)dC(e0pu&&Kqw%ip$UUn(zvq^sAquC znn0vM5LBVjM_TZHg%?i_T?!ychz9aA<$vl6uaBhqkzgW-4;Uy|wO03O-)GzNo#rsP z0ts&ECc8+r2bB`K0oD*3qgTI=wc z?{xd;Qg+*na%p_*5(y{LKnyam2QMJ#3}1PP=O$RDLTu!>qvGjX&EE!E3GWDLtS&CH zA=?uS6Gc$TehlguzuMj1@{@)c}e#6v-x6~OWKH_L}%3+PqY z3`p}s+UOI^$~fD(%y$rTsAWBc@TtKb41e4O?7aZGG&A!Km@A4-PNiCnFsuQL$nj?RHD+h1Yjh>Q zOU%KKk#QBdAHS&ru8@KPh!+C3U(rZZw0j#N*F7d)-rn7yeJy~_2F45Aw>T`UA4WuS7Mj1{B#|m7F_(k8rOvPDsOYRYJStLR>7Ho|A?T$;eRbY8?Lh9i4 z{GRyf9~Gp6Apc z)i(LB_@g;&R}p$6uNBtr2B@6PHUi8bLxFpUg(|>_06hl}g(zL+ePR!9F2Zx-1vv&R zsmKa`nUD1c=;`ofMiml$gO5hb}jbshgnBw z!v=W)!FFW6&bVTf&1(u^;K0+uwhxEKQEJqx&y zZnXnF%y-2t41I-Y%N*nB0Ul^)fip8EP;iiGr%n)4t}h*Zd=VZ_7^j{nU`tL1`K8F? z%F@5LVRN_@`~;TD;6)5ZOQNs~8x-A#qtz};%1=W=kdL5-z(T9c1Ny3TZ1vN#EHrL{F3<%+JUS1y-4wdBP%PRWT z_V16-n6=%~+Ty@|h5Axn-MM=fpm!k?z3zH8%gL#XM1o@YNr_Do@&ATU%>@eFhQj=* zDzB>-L=PU1tr@%OlKXWbFgAA?rt6%KAj5C~PAwAXo{7R-0wx$g586`=Oi1M@C1FC~ zSHN+K4z`Q7`N_w7&?*KpB(b1w;31q85*LtS41(Zr&(3Pnx`&6y4D`Y(yJx|{3m!jV zyE(x;4uyz@0`*lgismt6%R z=>qn&q^Y=)4e9I~wzA8t?>o-$W&pN~e9xiRI!e`;qau7gYv^I>%A=zDbr+3{jBJLB z>5*s}00fv^9s4d=9UO^VDq^BTOvD3t;Q$mJB<~CPRm`oy+>Efoy+XHk3nd((b>eH}?x+kr;>^XE^Ssd`~>TtoS-dm+5e-MJ1Yu)W^%7Z|iR zG5|`{c>R75xfBBX27VCV{+a;-#KF0_SHUGm245k!IR}OK2579?bKy74z;9t9Ag9(W^ZFC zuRKX3^!?6S#DA>yf3lXz<18#Jx>lQT@VgRjL?Iz*jt11sztFyRbxGR4`271jE(iPe zC`k1*SpGHuTcN-}4P$1mJsc9=QV?O_x;DT71qd1+8rJ${e0&I8uYQqw^8HIQQAtBk zf->MZX>YQMdhW2GS-M>cAv@Xv6>Mg976a@Cq-*{gI_Ly!p$0HU^PT27@BI^TIH>6^ z$ES~uwi~KOKglXbYkcA06po{l9$8dX?;+StkbzK``g>oy?df$k!>7DW97H$TE6hWBFKMmr>yq>( z|B=(CxrlMSZOg>&WmvUHtUBk?Q@GEB@O@$rn%S~t(qCbNNpW4973^9H9NEryN62es z_;j%~c|s1&1HXiDsldAs9>>c++We+OE`7sCHQTtHgzKTQjA%Dih$B~0)SM>q+I8}X`Rp^QMw~w~z$&IB(=do~! zN=2l8a;Q;m|L$Br{JhG-$+(<;`GsAJYepe2Q3MH}MzPMcSEI?RX&G7B_omW&)}=OT z@8A*N&*sS$pweY;!Tq{?=gLS*smQlM^5{Vc_X3w6xV7`Mb$JstRsNsYN$YIp&!SY9jC6tBp@k;J|H?6+mMU0Wm>El zOezK$eV4(ccu?5+c`H*@TZgLz^*I44-Qd~gWjTeVE<*_|o~O67mCZQ$pR8i4bmCqJ z<27^R&L$AKuJB4-A^)0%%FAAS7oIN#x}hhL+H9?>N~;mD31c6HriE=`N?m^<#5-~8 z=15_sNOITsy7IXTt!Og8-Nzd43f{k-!6x{i_TSxN)M>PkvR(2J|3Kfjq7_#^n=iC| zuWVq_Ei{2x6L+y@(lvE#%B~D~8L37J|M_lF< zm%@!Ql1^9(MA(C!?i(C%W?5c5jh zoT==InP@RHn0Wcuhe1yV*W>xO6$!KQymyE_!c93ts?En&Has*1L#e$nRj?ef3feo4 z|NJiJhtErBI6d)30cYVbZny*U?3p0@!?^DNfF#AVwS|RtnAIpB?1S#!3y`P}ba!P) z{=2YvJKTmEtfr<`s9*UU(#kN^ESBamcdok_*Qmf{^Ecq&e651`rET!^5HkJ2y|3}% zpzYb-vSbo4O5@)uZu*pH@+$`}*J4jbU9aA=7vB_c1~7Ce zuItCacmjq=#OKH2Fcl+%PK4}K1BXJL>q<+5?;-L@0U+DY*KIbufherqRQ>3xjgBR} zG%%>wv#rm{O`0+L=D|SC06ut;t?sd40Tw&#WX~i~$q?FBp(obnm6t1(&?(p?BeCh%WpwGnU z#dGNePCD${!EAasw0!4-tt11X&5^Po=r+;OkF0!aU=l7Ge)1I_z~BANJ^{e3^dv8joxyvZ7obhsCCB<^ zXf~quZea3$`zUap;m%z!A?1~o_wMXLl(`>Xfx+*SS7vpWBZWK`&R2>4d61t z)@D7M&${w_hU0Vtc;Lvu`28JGQZfLWQqaYhr#{{W@Y7Q@4B_JMxO9w=IQQbg$gGaLKO2AazNWqCxj()osg=?v4`KWfLM5?^jt~N~K9W z*|Ea5Zep+eM^gE)Z*^n)?I`3Lxt9LvSXHWJVr2~$KRt>acc{B=&g^i8vanb<(Y$U_+((NLc)X^@~ofSR-Yi$wY(Ld6>f6hYc z#Tq~Yq{Vr=^h?6HJ2KNm13Mi!hRlz-wRK`zflx?+ ze}%^)@_0S8b#}{;9?xSg>}u$X7Yk*b3~!*2rP(bRayLTH&Mv-Er(sljyWQTsYo;(t zTll(w(d%Fl%ULjXJ5_UcH$-&mp=0l)`*pYV{fx`E7FRTe|m)v zpRWNy$!@?fH=wq>0zX@!FHIC-=u~uvpRPoOPCE4MjzGQn0SB?}2WTztAyTXjHZBlx zkTqig_B^VaOfv^ugcO{#4fsZqxPJqbDS1ff`~c@VVQb5YjLZ{ei!1@wCisYvJd=hE zzc~tZ^O+@x8)+MmRO|vJ3_e=}0&MCPHfqAaJ9FxnAU}%+{p5;F_{CR1rMqB!k{w*l zo%I{W4fV)bOWSB`Lu32^ssabhbbD_v9?+UaS3*pT^QbQzAs8@X94$2sTH1yhBcCZ1 zYyr~?2|X!;zs|v}!y#7yu^{e-u@MAqxS5$@{a=DJDu+gs&4P4VY3tK(p=LnE)3RaC5ezLthgAGdPd~*@{$s=1_VTp!7HVU{(NpZ3+qt zn7=W=c(&mI_JgoE;cyG4A+2E(rkO*orx(gUf^mURu1`0n!^ZdAI}aNV(gfQe%KU=K z$M@d*4t-m5z*_iVKn{AF3KU+*i{QYRXx`EU9)m{!41|kH@rR^%9Yfngb^KI~VY{4Z1XZQL1MNc&S*CCCl zmjK9NZ$ULp+OwZ-pil1U5Z#}c_bi04w1tHQGRootAJKDkbW}4RdHc@crJE0a{5b^m zjXSv!)+NDrvN--9T=QI4_QavKz04&tqSUj4?bbs_QpPHn6C~fnq^e>FEe6Gw2#I~7BA|JGwAK%5M6>va3p#(%BfIJPDAq<#I1XvkcdXXL|+Ja z-rX0okt+oy0H!12;ist)5k!b&2qtOG{**VyU1jAQV5hJw&!EAo!ghu{$_z~dp*2Bw zvSULM?4K0)K%YQ3R_gU0kNQsF$nSJqaxAs|#s)(e@DVLUPyzXkj82IPflJ;25i=L^ zJYX&)L70o*tPLL^0YC8uaF^|)kH9i(47ouJQVt_$JDnz2Bc#} zO9ai`mc6~dp76UUUR6qLf|H!Q0yD4S(48gWKwIbS)G~Fohg0Q(D-A)O*HAmXcTz7s zNS!=_DihZwlexWkcs4Ev0$O^7l4iAz{)AL!}&FO4uX<^~v*$OnjA?V`{IfSnTIwj!_r_g|q`2vKJcq7-|*QWy3`c-Bsl4((&gVGT@!F-6ea2YokqR|ZgM~}`C5yim-v}fcve8>;{ zRM>U-WoQb`yD{k0woqGgPLL7JTKM3n_RdZ@B$IZA5MILUW8WV1Ih>bJXg@<2v4oL% zh|A86HhTWDLUeZ;eyh+>q+Kp#Cm8LlBhx3Mt?vAMd~cy$^V#%Y{`~3F)(;Ts?c)!T zf&@iAib?_qw2J!rW0w5J4(Xr7TiyHgKDg!sy3yp+DPE^(NRE$Z(|V^FeG2|c z+C0)$5ab094D_^EX!+fczC)wi7M$h5j=Iz8Ufz{{Uq{5}R$pYk4pQQCRder{6U`Id zp}b_rW{{eD`BH__^RZOEx4OKKsY5Y`#tbJIF4>9PBNi0bO;uSi{y5Lll-A^9La}A2 z^m4`J3RmcFFu^>vzZHSz2C6NH%&Z1WMh=;8AlL?Wo~n`4@xKm(D(q^WJA4yPZ9`#e++2Kwtw}&zKt3x8hTK5|_fmz#1=qgs-l(~k@Q`^hv5iDjil|6ZmZ>V#ex%_F z$qkS)3+=gUz8;}$Rr3E)_1@uF_wWC>ib513go;AQUJ)vxLI@cN*^!hP5s{>nl)cGH zWM@Q(kjzpcGka!cM0_8w?)T^T9lt;BqvLK|uIqX|$9X>1`K?oX!%98q_{{}QKY6?A zB&~amKQdcB84!0ZvzgqJ$B!GAr0_iwDQP5Fy9nw!4>5?~k;7X&SBDw@?dX~w5Mn_7 z7aI9wyxalnfi&>LA~A0L4xvmf4%y<#tWw;X2f$KXPAy5m4SYySDiS$VTdn*ivWzR@ zaAZ3yG)Y?7T*IHitsa8%n>aT&{!9u^v~OCq`ufu_F@4lhm#qQF>wYQ>Flipnap2O* zxLQP}Ra8{W@K3QqUuma5w;mI$#0n>#FIF+^=<%qYh~lYb@|Ink9fU%t&YHC&4DAjO za!jC_1Z0LtFRSAVDNDGHD7?HjRTrc;H`ZmRE3iL) zOd)(jANyjW=f?Is@Hw~E zZ}cgWJ~;8(aDlqa^xk>Tsun6~hz4jU8xFj;CiiPqPMAgb%s$$iEG6jlP`jpv=8ytO z-QD&!s$jWY5N>ZsPc{yHv+y95r?6({AYIx{VR)m zf~p3Fg@r#b{ro*fBl=@PhU}bPSvRL&qIv616GlH;0b`D|HzH}Tn^P$Rvm8@`yhwt* z%m1}sh2J8zn~4;RBU-7dsqA&H`act3!dL3LxP!5Z5tLN^+MM;HlA1$kBk zJYvW6cTe&&a^rnJ7bveW+d9XsH~yqCFg26zA7MyH^yaK>731y5EX1QIMw71;aWAK{ zPAPo-ZNf86UeW))Aeuk?&yQc1XRQ)3u>NzLwf4Gm>iXD}O!@wYvvl&#!XHcq<04!v z-(icrx4iXZ-Krl%XT_ny%rivgG+yF8awNz-35cF?f(Y`Tw9fF^c2*(JRgZJL#RXG662 zNA1nzt2BDpYfsm2Wp=Pis8W|ISAuayp-9p_6VItUZQz6C=US%((OEt8GkCv~CY5)$ zlyrG#pKwrNOP*qjFzhqgW!v1d5%S6Bzjv7Fe_!*Hh1o;l7#jA&OYDwS6RN95-k;F1=WuiX6e` zpK5DQ+qr&ZxS()2j-qH50Gl=UdxQEfK+4^<0ca_Jp08W@d9p`~Bl7fh^J- zPF1Z6{q(aZwv-kz8c!VA5qjVs#`NlBF1OIGvFm%J70IHhbw=wm{@YPE+dh+LL7WR8rDPQ!YU5(YO zq*vg~u;f2@jaLXI=@wU=1Y>RgbJ%1?gE#&8bA{PxHnw#)M4B$XkGPWGI$=9e>#}6E z%zwpJHHX>6Ij-!;QKMf~t%eDuEL*A915I{Sc_nq_s#R!cu15a1qh=2Fyhly%HMwRS8s;>i z&{Xubs~p@~w9Wm4&;iK>(|h_U_h0fJaY{Ud&9G|ZT1Hwzy;Jyc0ELL4ek^zPSnxqf z2D+-dquzOytb*0iT0V^u0ZBaf%_3d7Q|TyVEUE4!-D^z4O5ORV?wqw*QjvF^cd7Rs zr4`k(6|q$Qj5jnF$)5dt;G;OZWr%V#pc)ZJtLt7E3?x{K8F_tm+qi%9Lqq#|NRN*!Ko)(h+}kth6R#JR6dW z`9klLzfrtOd`Wt-^}LC5nr+)<_h^mp(B3Y=RIPQNQrKXI{gvI}+bKA8wacBBZ2FZe z>xNa@tY0?@XNc;j7?*Wh=FeqPSM^j;M9*IEJ1}@-s9jvnm9{Io4KG~8|+a0cZ6D4yLD~;;I zJO81xw#tU8D;()RC5~>{RoYV!{iBz)K)UUB|4skv%XbR4`!Pwf-Mw=%#9ox=?YmAh zdzqAZs(+{VFkd3YTi@ka)NR(dy!4_H*dhF1}uu} zMNhJ6HQnq@bAY7#{IX$yr!^}XSCnzR$y%7$nE9m%UoSA7;G zs=S1JYYIgJUN<|+9%D6Cu~psS`|RW)--{itLR=q@7Dz{H>Qkr$ZRa@V&Hr4fj+uSL z_gkbxTPOSP)7^f(O2?=b0wjZ-vtDY3r~SL%KQYQPs+^9_p^KnrGxsxy76173 zqS)+K4V8mxR7q*uBi~?^@E*r85Gj0gs}3jU+}TsHlQGu*0!}0wBwQ)XFHY^kE63m!?-!;UVL+NXw$MEh&D|soumotvd^mDqyWkfI|pT{|6isB3NPc7Qii+=*W$*eEL|8I{8K;)RgZ2dU) zbNv(`ea+R_|Mq%j&$96MlgDWZEg(R-7YLt!I(VyYsZvJ+m?>QSF(p1rhFtMb<)ce{;gU!)KuEEKOOrsl>2_> zNVmNC(=J$ig2ERYS?82t&bc1Fsktu~eLJ_mNa_+kQn5Fg`1)Dq$o&}aZr>hOoM>p9 zqmQC1#g6p9LoM#}akZ`MwwV$^Q8rhf-I$r_n+lxWinxq=nb^4(_Q@??vk>> z|COhQs!`tc1lI={E9bb3pZ~jNjJEyy#J9XH(BHpxQ~jmKd4;z~B4}#*HTU1a7T4;W z<+|D#K^;=r^zJ}Wi`T!e;QZEI-nX{~&_sRkix4L^12+gsb?>KSwRL_Gi8`YtrdAcl zlnHTD_O~(+}5VY!-*iNVOp<;Kg8U1&|@~Y47zTzWXus6}-AN3@o z`vO41(1DXr6__4sG*R1c{i$`YX*cn6(qdyzOK&!N6a8{kQ$8 z+a4L88Mt%<#_klb2Rd~c6OaDU7QDuJbqyp}5)8)nve=dvNvpe1U*b~K(#mD27NS+& z7XRb2)1!$ig&=U!yJ?~hvU4=jS3k&ozxwjvUtQq|zhieQ^YNtM&TDu~4k}}&)>hpfCRCzk zKjt2PbITjewW zTT>nHfsQ-A{u`65OE7%;RnGntC-1OyGq!zV&6jSe@vUhvG-XoW{*K1Qgz4uzr^6*a z#~(QE40k8aed%Btxa&(5v`cmoUPuC+z7+@br3xlAXv10<5iBPSSv+2^ytE0VC{%|)*{l3pT3KM ze)6Y72_d3Ntt+za^bz(WEGAJuTC!qp%P|I{>%`iGUy2t_p0}y0Dq%-|0>TA5AX4Wz zBKGezG`!`KwzwsZW{j4>)-zYSr2@^MD3u_&6Nv=2FwtDOtuQ*II7IdEEN@lopL|rl zc(Xu+S;y*a1RTg+Blou@W_WYju`JgXh)%x7=W2?RjRv{}gypn?FCe5XM05#(slujY zP-wg53P=vfJ{|x&b!+wlxm1E+iTrOHtAz3u_`66SGNwPku!79*9~Wgxy^wz5hd`a3 zSpwxm%AdQtsN+cEHJcNq4il@F8^M4W3DqOHqae_tvw&BFvyt;F; zX8!a{dst9pnN3f!f91J;_rmt5ga5;&DT9|sTX;f)rzjkD$g|F#*QAqW>zOw?wQuf? z_NR|ml7%~H3x80>zVK<()fvrG24139?jc3OQI+&mj?jDRmAMKZ@LWk8Ed~TC43BL~ zE(sFz0OG{}fg7BhQ~`a3M7w)dYkkw3U4VQ78-@wV7ZKHbpuo)@>PN;i& zU^%7_$;gDTv0<1)NGJ%ZrYC^nf4Y=HRbic4=mk_68mijsMLl8D?E{zN@O<+SN{-)i zd4KUtQCAbzEYIcQSu$PsJ$v@7BI#48Rs*3BaKQa4nea#-HOr5U6j`{q_y4p24685^ z<^ur7D=7gc&F>kNf*b(q&oHDkM(2#_Ru1mA7_(1fD%NpOvb5m3-K!P>|A_U=`?6!($plzv6)a5Js&A@9|=INSqBe*$%7av7YhL=1)&vOMQY|4j8kDV zNy1!R*_+>52_!|knNE0#l;hnOH)~~X$Fc6}K#PIch)-5`o5Ix8GagjA#PZ!=-!}G) zT##Lx@ieQ%uaeJxe|enC%Xg-fHPp6OZYdIEle4oxhv}piPg;^5BoskqMEZr~46Wo~ z-;EoZubaad@de}~=DuaN2Q1OTC%$a+$?m&%Nq$vqdbV8r>~$l)Z(|jZ@@a&sc#Gbj z29{SmUD&k(z5{Ug5cq~+5xD)s|NGlLMY`_6I?L22R@>Dbts_NdFehvtjO>>^yIb#)Jb028W!mJ)m~X<(7! zrge?n?&F}LJ8;0OeslqeRz%z@B5-&#lgWXJbAumCz}*Y2s!)U677(aacvbK0Y{Aoh zREcg2Bga^GLC;S@WRWA*(;OP@ZjXf~q{}}BhXJyARHeLjlttR<2y|}*vkevcNK3pr zI9g()LfTlx*R>A#HTXPtXZdCkT|e)c`^T-xeM>2GrDRS;#khN@^Ug4xJ|yWRRiXE; zcRPRZ3zsx13iAHl+b&ctb9@b?mWVZdbMT^M4gt2*J*cUyce?RIwc*gtAfm+2A$@q{ z@cORx9T7*g)sVHi>vAKR? zbR>N%1oq8Z9Rw%~!qUjeK6!yaKed9kLV)NG9VA%Ck@9R!C7btQjM zw>*LGJBkes4l;|F`=@mT`1=zfWo@g37!3*zOQ;{ zA!-0o*Z&9}7G5BzTU6Qgyay-=mxfm=M=DWa9iErDsf@@R+;~BQJ z0_TJ}ZLFSLcUf+P^qnSDM7(E8uFE_Q3XJ|@r^h@J!r1NimqTXTV)Q;+&m0cjnPU{Q z`NBftp(b~;nM|(>^ggt^v84CxOnO=Jtr*f`TMW*~{cQSQ8|Tkd8hpm^f$PqfN2&_s zC5+-&%{L0AFBvV)NW~)*=-}bQzObrjzEF6`dSkN>w0f#)7p&gq=9fKr=PMkMnID0( zRs@79WV#LDc~>SfyizF`ArV1r*yUC=2ZwpG>c^Y1@%gTE1H`NX+MfuHja*_e6TxH% z96h4uA8D}B&wv4gI(HPQt;wmWmTzx+1o{){X;@<|;2%WZz!3V`_V+5(5dEX0qs$Ui z{ey$mc%H69&(6@$;%rm`dn)L`o_|UKs>gZyg3*}Lf!odB%AQJ{`d8XZsf=w|xw#Z@ zowj!0u`M3-d(2af-PasahiwJq=nEC>*kip-UAGHWo*C~g3+DD5*Wulb!cpD6RnMfSQUtr$BhaK&_1s}L5Y6)nLj%dH6xjC|z7cP!u)IgCxKzeVp zE9%N8`Hb649m;dudhc#K<1(y!x7@okM*rCg!W33JDpm#pJQhEniDNH=R5k@70RNAQ z@lS>Qj{hn~NS_d79z$-I6^`MgDf|sv{vF$$4^ZiGapqP=(zG}VxQ89V3lm@WFv*s;|t#rlhdOh)G00F|aGS4<6f1 zr=6_$_jiLx%*Y|cO?U#Puxshd#ltER4L6G;j$5KKMD0WDaBO)Zus3{q0e^0WE1)r2 zQc&vz4o^a&1nm!zi$Ubn?!U8m;eYJ&D#TtlOMA-T>*~Dy1QLk)yIZyq%L77XOL(Xd z0viDT%hA5-?$m#{0;}0V>dv6Re#ec$t#afRA8LzS(!i=n+%UEu{Q^1TxE@+^T2Z2aQBByHlvE7i>X_k>-%M;%MkYKzGq108_q7MTDxj*)1={lzE>VQf7CTtmS*c?`y3U{Rr`|oT?XXbI-D= zlcKR)@nU4N&i zj~;zmdiU}7KfHvM76ocn=FTrp{l&$Rk<;!69!2y}cwD)sv1;{gg~~hJ+XX!zRrSu| z@v8(*cjPUbvBj&Q4Q&sdx5YzN>5+5i>C`tUrDJIfK4- zFQJ5pQRBvlCo7zLI&~M?{{xO4d>d*Hji~0j{;c5lVYx@G7xb&??v#MY5P%MQ;oR+i z&W?0NxNW;Wt)@>Qwj+k=*Ha1!KF5KQBNu}@2U8wYDr~EM;b=OS%SRt}kXpfYccPSE z3spe?#TUiL^oYX?<~JxrbGEKplvJV_zHeXVyug0|8Tq!Jn*N%KEcJb--=3uN%Yl-! zZ>q2zunFfMQ3lC(HJ2C5e~dHP7QZ~u*1PWdWG?hAyD#V2YqY8CWsGd5z3<|XihgAH z-8(l$5K^&Ctw(u3W|qe>YxgeAkloMvjvmx8na%m{e?3~%Z~R@d3HH&~7jG_2y!;qy z$aY_p%v#thH6U@v<${CvMFY6S3n_TonT*p}syg{XHp%3&i^CYRbSr3grkwTLeaO}? zkz<{+m0zO6!}HxAUFG3B|Mef1_siT!@2LzmR`88x1@6l^vm;tCJNb2%V-4TIyUbgA zwq!T#x4rq0@zAk+lINNebO6^{Igf5FS66;fQEk%Qp468^I{u5USD5DRtb-=qjFr1w ziROe~;=hCB8kb*I?Gx&IEIAK_8ipJ4+b%_#>3(VMbm#Ki>co}dLw|DieJl4-H6x;w zxNLYkg|ZM0^AC$d``JIYKW%PLI`a5z&?N!MJqlNMHae9s$-TbU8Q=96+I8;#8uMVH zsN)o)y+{2s=&r29hoc|=G9T4=VV_^Mv= zS><Rks9@k$nb$i%3PuH7;ubjZN`9P)YCoU6(&KX_N#WB>$&YZ& zaK}>@CR|GS_L=Q}ZCp{#;P#baWufJSl*5q!H{q-(;ndvh?3tu3Tej$&xzLGuYYH|t zuZTbBnzoyooLsy5j6*RqP_zGVp9kN4&p5Tj(*_wD9i^1_Z=Qnw{@WYMV zl>K#KQNHb+n^9i}nQr;*?%%dzT;N^hmoYBMZDDSX)SL{)#E?%Cc>nHOSM>Vj22+O% zt}GbX{f2aC@53sEZEtF3pA|jPCFn@Uj0zTSe~%?ZQ(=<6axF=B{5!IsOLu}U(gfnDkL6y zY^N=%5tmg39nkAQ`}64EAxlX3CQQkCtCq{Q=Ca1rC8I8dW6n!`*^a|j7g#jbr{c?I z(9&NDc_m|Z%WR{Cd^d&fhmkM*!G8oo=H=wd?$0vKo?!VJKq*o&q+~1^6~kmt`&Q3R zTmZr8mbK@%QBiL(?l1OsmM{rrlAu?X?DPD3e0Jb4`@K9^c;&Hq=S$819hcy=6~Htwx-z;7bA1?Ek(taPwRYEx@YUG=^9e_l`%IDK z>Mgr7a$j+fG3-tV+qv(cn7E(iN&e>UHn#&gTU>R0FWQ~>u71rz&0wEiy6wN78B{Du z4nQPf4@y-WuV#*U)8uI(j_Dlx~? z_S@F}B#7Yvj@WphU&j^5nJz@0~V>4(3!>@>ZHq_3b~=TnpJm zbG!x_LD(B|o7FyM2jE2DD#!!UV>`oea(sLo;_L`yiN%Uoe8O+>ILA``!84+=MxN-Av84RlSO!39isB(w-1; zNIrt;4UlqgArTZ5gg;9iPI6{(8+uqH=>;yYJRijX0KiZ7pYI?rr+mUO`+LdgfRi-j ztMf9wfE0jF~T8iXB&8U0rpvQyBp62DK6L{x?p; zMr|)0>+9=#dH$c06UJxr&JBb_jlt#^II^8EsUbu*l2Q}xIl@j?(S-6Cz7->ZU=+%p zd<+-FFo%disjP6~Y+d=nJZ4R$uCyZ(3QDJxIFI>rEt_V9X+bL$!Y?Ocs0!4Sf*2?; z_k8p_%1`8FNf`WH@7w%)05ePYh>Re-hsN(x>FMb*e;3<`+BMD*oe!$5#_y}0zlVa= z2LLWX#DMU#**j-jbg^e#*TI^E-aMd`&UGZNNBc+H1>uDKHarX*Z+n+j9<3?VKyjC zE8U+OB;0?IJo;N_)^{lUPXPl#t}8wI-~?nQA@eW1zrSBKJ{<811UgEn_jk5!45DR) zVcuxA7+SSm4-i_uQt6{DHAx%*I} zLbJ-PwPgj64Kb|+J(rW>^Z^;yAV52WFB4kG=*z3}Lzmp#+z9d8=X@)5701gH?_h+@ zOeqP;(>zHs=D%CM^mp3`}>E+x>x=F7%kM@j$9#JRk6Q`+;XMoZOtOf{5-1z#`Q1KX#0-#6*>(G6B^0mzGuUg3X`;uP)z>~?0=$)Vr zy*i_|;FP)@}Z8zwUm!`#2bZcMAt+qcR52+Z(M79SzM%l=+078H{M#S;$>a z18JooCr^Mn66xAncK?gJcY3kf2_tGP6TsB)*N#Lp1DIc+ zgnAbF60OPS_P`JD5z0)6?IV|n2MZ;(KcG4hsDY6JMj5l(O;Wb_MFsI3cOeoc76^%G6VtUiXsiGQ26AGC=Dgq`6Y zS>cmAnmx870jvqpBk-Od_4@l;H+5k*oAieV2RuKbglGY*2=r^0wKd}bZ`btY0jSk2 zA%`MRF+k>XcyYHS-2FmOTw)yQCkPK!;5kOV8#(~^^kuvIWF z%}_g&@7`@ipxIPrn?O~VWn6`D(EUEG9Q(k~<-Gii=6IkK!=1-~@1E+5_XlEd=l$J8g0mU*Hu4 zz=e00$DlB6!;bH7oJb`Go)P{I%z`4j0;q_9(}~NJ_%*!8Yc%%O?H|*aJdA-z#2*t= zzasy1<2-{0pdUVi#R5?z>HjKQP{X-W2Uv~(G2l-lLEvK|wBR^nYPI~$Ll@Rr^?8|@ zX!Z*3TJ>7`B_r@^;!gj{Xd{U{$FHc;7pctY*5|UWoL~@YS9RRYd{dI&pu)zaOOj8; zfNYCOQ}-tk#+&C<&hznCgpP#m>@Vm0B;gp}ci`g?`KOna331DlHIp@s??z*+{M?=6 zN=9WE<*8qK2eDJ`CMh|;Q{Q=}w`T)+`^Sk#inG)46{ggziyts<0vCYH%OS#FPrPFj zKrg_2q*#}O-h9VxodrNX5R*i4s6<(9BJyM(Xr-UnIcYd*cXgHjT{2J(J6ey$a6y^K z2{3Z~NhXJ3T3Aj}ggXE?{Rd2+B|)wj2{ufTS3-GQ$AUxmk!Q|jJlpqasPKp==Fzow z{dQejY*U}E!0b}Oh5+gIw02h-#QafD!Pnlx{d3)T&yOs_PAM@7$ zvt&QNym06j228;t^KXpEty^`NPol1_j*+scs2`qQZ+@I@EkMWnNRuhE;6uY$$Cclo z8Hzk3LkyB~E)KA?t4+VtsS6_=SN$$~M&(G&Y{V|r_DLp3N(1)LQ1hNW^ogOg~L1sm@eq&9y9xwQ~`73MA@8WsfIp$oA&# z(d3?T`8{VDbHX9YxUb@uOXnohbqN+QvmU5m==pRWqgv>7QYF|r)IPg5YmcNHLp}>} zreVc`zI`7TWRwjvjuz5TA5`2yJ}Yb3K9XH^cON`Blhvk!`NZVAc3Hw`C`DO5EUvb+ z)L_B5H~7sB`IiTzBoEgpHGqAmw!00O~t3+Lqe#gt(3dOvO$I3KuUJrTpXv- zz7N|+GduPb%JZ6;@m38U*~=uM)HwDska3-l_m5vT?M#8#J}bsUbnGXYwMjA)0%)x- zovL5vW8n&>K!6Fv4UXT&{a455cb^is`HCrs_V}hR^XUOiH*#DHg(5%^Qw!iUada)m z|LDEe0TDTUZVtowrn->*`w@vCNIZ&=749j8eUWeBQ5&=8aKh5uMcam#Wj!xHPYBS9 zdsE#M;9+1&B@OqCzE$BqKz^`asS8KV;LHpG=_0M@f;U$Rem>Eq?9$>BEV^kOw$c87 zT7aMO@M95*2B4#L*tz(c40WBy;MbyKU4HK74g6#(s6093+Yp4tK5k>)1ND{)1Y&&wcR0}yAPA$1pe=`NN zpd+TXJuoAju%NR>{7ex@CW|?ohgc+~1q>Um#SqLPyiN}!!m|y4avlX`V^QTxp;q&( zt8V}lkrirG;$nn3j0L9(Ou~ECeq2kTM+cq+N(vJ)@-QO=InHoOH99}dw!UA}q-6Ze zOLvs-6#Jrry+n0mf4ALV({nT@eD%CdkMwSn&o5F`dc;#A_0x2A*P}t@&+J@hUmuOp z)mj|Vd3;1Rb_dj~OwZ1(eAUQ2;T1@Idpa$ZA;v>pS&^6(By{W7Wi&BE+R?;KjUvh2 z^wzMM)kQG=m^Md)Sps6fTXTc?Eq!jjI)N zwf1Fv`vlvIBIbSkHCQD`2-L!I7*&etGBY`zGfD#=pIFsecjVc)PqluRJv1;ZM|<0p zLK` zuGoO6s|DpmoZ_&!RJFAQLxnMmA_gl*5w#vtuVB-ps}>>*PAK$}keIDju^%7+LFm*5 zvQ5rlIpJ%kg0jREHz26$Py4&@q>1_qWHLFfg5h9wxm?}DO?)m^p)M`` zCPnwUjBSi-Jj*EbG_*ON3Mzy=9L{|&smm~L3FGf#RlRjl35@MH$%vB>+iO@m8a?M- zqANwn80*va*9OE$NQcAWh^SSKmUx0otF74HjPNfb9LE)uAuTPO&!;prXkejoy?y(6 zM8sLNXb$H!K|(fyS%DFbXLH$Wvkvw3xwB`9C}zpU{YVIEdu<>I&iba|pctrMgf|mi z$l8xFe2toU=I7RyP>6>S|KaAsl$BP}CbMwE&!SlF zY`KTi8Ux-H@m0^x&Q=Oht3)k|8Ox;&U18aTIe(@4oIb$Zpa4RYUAz>zBJ< zCA#}!zHes@W!9%M@E!zd5pJbA3#O!P`(`h z8o@LKrwq^5EV7Bd;Q7IUYYlx6fw=^|+3p5R2+x3tmi^eVm8fOacTwmGg-}GX>ORB6 zeJ|P~Q;idW2!cb|J{oBimwUq)kCl+=pti;!GolBb#|9+PZxhI7SbOsEx2x9T4&~rF zMvkJWDd)#r!4I*fh~f(z<>%;$Hk&tjU_vjq^8pFk36t;U#_|cIT~`r53X29+`-kf4 zd#F~Sl-PC>em^3m3+6)f$83)( zaTS6nBrr6z>;RUICgM!qbxj#D_snQtiK#_Isi>0?3N(1=rOM6M6^i+mO$3om{60q& zbTbd)kf$Ol@V*WV~0a8%h6DKtqRloxc2Xm8tw! zTZItiD_k1Y<+a8%!9vw^g2vlUd&h@FDhW@AI&x0#Jk_!~a3SyTavf4I0tUvF%Xm!4gQa#XXf(TaTNf{YlrtWyN&Ilb8 z4zInK9QV%3uFJid@hKfAxz3~Vlai#j=(k2tEB#xa2{?1akBvW5wR8d%oo}1p|+^?cPj-q+5mNzuD>AoaVXujtvyLQs+ zq{4-iQ4e9ku@qZ32`($(u@X$$Lz==I^adfOsdWF|oy)b>bK`6S!G*kJD_d7g`+0e; zi6qUONM(o^Yo6c`VvM-Cfxnwc)<5`_xKnN&l)bLV zr&`hzc(UymeIj3SR((PVMbtL$t;_ybG=r3M?1lE+y*quG@`2&LOdazGRjR|wTOGFN zXfgZNIcZ1VZf4wlV0YL~*CdB`%27?{ec#G)y6$&r?Xk zG?|Z>^tZg{OG*A#dzvfpTZ*Xye~zXf-y_;c`bkrtuX4I&d(XGc$EzuepKlZ6Kj2@_ z#-q!qQdX9bz|g8mrMyj|UYScE{?Yi&1+A20BU4`$rmI3}OFeS+sGC=uD2alw$xWZ5k9TPvr~JimY+um98d+b8%KY%=ZEc~!*5@f{ zYYyUPnCD+m@n(7ytGuEg$&^jcl2N>%Yi=;Se&@T``O=iJWbHPw^KEv|6T6S;r;9sm zZX>y2I2YOFF+O^UZYP(>w2ql_TEMCAA$FD9BWkXs(D{9E(ys4Z(;r9?++KY+oTpUT zBsBA0D|PWp`e-3NEZ`bj`XApEReYS3{5d8!Zs^MHChexNdBmYiaiZ%{?s$ITgsMqR zx^>j#`2YRrbD1H>S7b*e1uMVL#TI!#GdE;zT3b5nvqc*{7dnt=`h_a=L%jkrLXpdf-`Dc5_V0Z>vHG zz#UO7>pn=7!o=yGZ|vP-DE88|-u}|OV0lDRq>T59$QR+RFT$N)E-0mDR6BgSzjJf1 z_~wfw=^d*3%9Z5Q)a!hNjChoX3zyU@GktfP-TTHJYw`GuOe30??BE`_oOUXMb?*J_95M5V%M6d&YbV=k|mCBK8(puY_J|7MZXJF7H7?ZPCqbf?M-iGUkU3 zmzUcLe2C#TX>zBH#Cc-n?%Xclo@`wrh2ekDQQUH7`oYG5elH}%W6d^;fhOIMI_WdX z)PYMiB-f;QMHxi2*cY}Y$G7~E9po@ieUTaNS(N%hfc1f+Vp7m_iuuinyQB~2XsQ_2 z&m^$w3ks}hl|+W#hpx=>I)JiO@thK+bS<@fMic623H0EAf;_JUUf94f~ zT546j*s*6e1LnLjXYZRa_G?RDE?bNZzVbq~=fTwr20hQtSr@MTYM7JtP3`&ezq@Ur zTkwpgG?KDbE7yIc`@dw8-CUxY}tsmMs1_okb!|IDVT$T^7C`Ho$GV(7CuQpQ7 zc~rIiU;<6IMnp)fB$vXS@#n4CraD1yNmQu~4_&Yu*CVan!f-#+z^ubJd2)OvzmS)@ z!+o4vw>s>sbp}i5b&dMuS%&wz3G*p^T|A1^m5&)bJU(J`Q}ok>)9G-s%6DX_PKnb$ z82sVLP$w`(88bkK;m z=Uom=(o_BZTG&C&{bI3{OuX~-+)$^Z$HlAOMrkVbLv^yF4U2S~ObPUR?(TausiGV^ zXU*-r?-;dh!}YcPrhz#77+$+aHss=@uM%H!$%_ZSczyCBeTw2q3O%~B>_&8)zn!*c z7&pw^d~-bH0W+_=)n5|Z@8{A}d!9LIzOu#{axRzM#(7NBt;5z-{E_C6VZDSFvqwQf z_@^U}SL|w2n9SUp!&^L*TSX-l82*@!sN;AV zpITBmK>`wZQ9fNFD?pi#mk4hIesRom{TQlUN9SWvsXbNmWj8`n@oq~rRfB${HHw{C zVfpxuKAS`9y|AR@kL4Iaqmo}q)Bzl+tcwe(S7b57KD&Iy2t$)XG@&nAc>6db(XL;13_7SMdno zU;C?m_UuRDB_f#R#$d6pe_m!#n91Dy1--Jz_Rh!drzf;zG^`0;ctMI>?|yuQBS92pcLH~xnfb5PNVP)TwY{+aE$3FX$gM-F+mj^^+ z2nZdpAua8iI!f{!y`xKYIvL_E7v}2LkmqAg^_`C?k>0|PP1l6)*;Ndwl@e-0faq| zSuZ$&Kjr>adg=|dMg&=UNGj566@2gg-^w$n^)cd2`oZ;w(&I>KW`VXh`>dSuIo0FN zViJ1iUll%--a0L8PhP{?MM1|uHy>t^{`KbXYsGCPfK@Tr54>wF`Uo`51Ux~s5r0-d z%|PULg7Ap|1%TR_0+VH1@ENwix3dorOT}p~WEs~sH9Y~qLDGt53~}_8hn~v#fb&Ho zW(G;<(%%+TLU<{p#O%c?viumtPRwm8mqpkcGzYVY7|TIO8*BEY%`}LCCbR;?bT(xk zBHHcX=wc7SXF-gLacw8@dT#Ue+@PQPe(1T?>?U9nXdJ=8)L!fxEvuFCSP?=iS_LZr z!G(O&4ZNQPn+Fr9O9Byt7Q<=cYyHOl(FZ90-f|i#84L`oUs&Jmx-W4)rRkQ_@7L>c z*;zx7Py=*1=Cx5Kt8YJ2yiTy905y?LOl0%|sd}H@u@8^{_(gIms$}F9L2KKdK1Zkw ziGg`oKkyY08O4?ux}^R35)nft;yQbUs+#1a0uxlUP$NK%r3vxwr!f8oBxVz%^;`#^ zND||_Nr)a9tie()(Ax{j_9KnV2WQMSExU~E01grS8LVXYkU@q#6L~ldVs0D9((c`> zgmg03soXlkI|G@gO=9Tm9!!DgXn{k2eK|LCiyq-LL$8Z^3EL1A>#-p8;0K>OOL>AqT?g!k zdCnpDtDg(3wLm5hw)TNfee&SJj{jh-AMAb^Z{m;N62Q-}z$`I;azeBGTO8AN1M;m} z@-XlM(fCAWAmmUtJ4P?fo&J6?m|#A^J_W(CaC(p+4FKTeS+(p(uUN|37D%L1Lyio% zogdp8lepsXe_g?MS%hzfhES^qy$^HkG|$gH;L12#TF^P@cf7o5XxVL;$||q{C(s-u zwa;Q=8sQB&MVNs+*Ne6O*45O^fqQbm;~|0*zq(@3lqo`aS)t4(PGxlb`N;3tSQ*@n z_uB}*+Gz_UAbkn;V z9LAaV3-a;Lnd%K#6mc3EF|Egr()8z~ z2YN@tCMQlvN$Deai=CJP4j9!MSt~?H(b6;?RuCAE0ROX>E=A!i{BGh7tjZhNE11Ph@GOLeYS^N?JVxPVIUtI9Bzd-;FW=}qWY(lmzP(h z+?}`n{=~_%^&@gKr@A)R7u2^5K@#LvEBO5P##0taHLB_$paJ!OBd5$N7MhQ%J;BP@ z|1UNV6P0vc)15?om;lJutslWXPIq0Gh{l2Y5y?-_Ca<+LL8i`o@62N~hRjzVh7X4g zo4)xF@QqGTLZ$4ZxaXIn6b=o&CznCH&Ab7dmDZOwRl!H*YD7jxR*#cRQDF$~#`&*W z>gQn3z#NuCY6rpv-z`2r9S=S_TR~CLP<#W*`_8U%gcL2gGza3hXF7|r_4AcNG?CI} z>V;q<&v^h?kNiKPBOnV(PENjT?1dw97|0Vn?K3b+A0fA%?#g?*48G*J^HiVh8h5;h zCJ6;Kbto)rqx)_c*$pv$bXi}qAMY;7ClRshE}pbm19n)CvwZK6^Dg?=3|ZLyQ7&wz z_r7I*JZo?By(Pu{o&d>SU;gmh%EIKXy(7&EDn3W|vP%o-NiDxAcIi<9&jPqzi0U3} zXrf37BYZ!lLK=2BYN}w`BsD)D8jF`Fq-=P%u=fxbQ55zk{uN=H1PJ^O(|StDz}w-q zJpYNeKL!?mU}_k+`W1v?d#;(8**Rt9s_N>w7d-%8G0c?EWwhJIhyTZty~IfLza>*V zVR(FyrH@C=8LRQs03C-y%oMjrySN(2a)Lf%8l7(k$s>1g@`im1-tcIId~EarbB=Tk zV^`A5i+;zG8ZTv7Ecf_b8n7s9TVrH5Hm^+DADvxlcq&ep1cnC-5R6bmu|nnWk3H4N z{J8tXdjD7Z@yW@_)_B;!a34zzv=F&g(-p_v_lF1?_m=kn`X-_`v3QTmgx@hTpK+h< zKZU%h2_a%GcHjIFK}q+i<87XRwh2HHz^P`E5;dXtsqp+ujImLc@_KZ6H?TtBd#hLm zdIeW$0j8V707@KPWFm3@yVEb3C%^qw;%(1v!#z7ND?Wc)Y5N^TrqnAboJO9ykF59a zZ!B?os>UB5smcXvfDlqZz<;@Xc?MS)tgEgw@0L5@n?d{-g2_m*x#ZTSM1goKpqu~> z{jL0!em)oM9E26F?)LF&A&9R`aLM3rS8fo4@?2Mk!?EPvS-O9`eIhI6|D&xAd|96A zH0yJDhu``ityP+3|NmpL-g(68qp%c;R3-d!c@{S^do?I_Uo~7OahI@F+|OD-=SoV$ z8KE%zZb*zy;C@9#MRg$%VmjJf-EB+r^9~Rh&YP+?v#v>YVgAJ<0*xmATSsWap(mX8ya)mUgqGB(5po9I@i%0nwL z8n(ED=c(_#uUs1+FJmdZTuy3PbN}VgP9uuNR{}+#_m9EL@ zF7M_hPuYq|jvF`(iT~iX+{h@L`I^25R+NFKCpIc=-i$y30wNNt$jmsy=FKIyiS#sb z3JUuPUNt*dHhcjAS2G+2C4?mizJ zAo^LYW+c%zf=-fFRxT4T!6$MjO`7cmr%cGYgSxZh9u35ITnQZ&d;ek#=cR7D4bC$_T{o-biq zByKx`wEM{WLJT$*6jV)cpt!+-IraCLBXJNmKmsak{pIk+THoe8)HI^kz8}Sq;?dU8 zCdA5eii?M${&|FDKBN-g+Yp)S92%O#mTN$TUH1@0Loj*>NjS;87T}`b)=)o3T zuYetseaU3e1~V(0@P5=mA(fYx6CwKO)(Lv-?Afz{e`RH42wUD%(Swpp?so}&AJFW< z;bDvHa`zN?O@9LYhti!0*N32>Bz-&*m#zu+@2*glSY|8GD!3*zAQ-?BAtv&${b+&1 z16TGQIy$^z1||>$m=2=GovizaS|@G5=UZb04Z};SSBGTMe5a(cm?giCUr$YF=CeBH zcp1ZCB0yVUZnQ=D%D_&r=@UXV5*2l&Mkt_7aW|vP^+pk`0Xrt4fPIma#FlkTJxUDo z57abLlo^OOf!yDbR&}Ggji$nuC-vqpz^f9?+G<$PR>Il`uULV`9?gEP^5>rk(5~z9 z(l@P?u^kZ?JZ`0B%VNszSV~BguJ%lwn>dun#Cpd5E4K4JCs zR70|Nz3KtlIBk7n4vUwW3kwywr)=a+YNL$_L8Xy$x*LwUtX-Ua1P2F2ZWy+4sWg2W z+X>GYEX{b>5$F0gH`>4b?B4r7bcJ9J3P;~8wdwvtdZ&5wvg1;jwRIkSCU>UKqzVYH za31b8c;G(^T^AmdB09y(Y=JJpmQLDTX7|4O7GJs8qal;ouhp*|M=j338_$y)Dm-}G zx_%a_UwYqm?LP#0x3QD*%YoEg#ka|j4Dk8eHm z!ZNl2H$4gR*0i5`x-o0t=|~O!GT0v(>Vl`B%>qH@eT)y;sh56wPPW2g{iX zY4GS=qU$(U)+j_ZfcMti!)C-suiLv%vGngz5CfI8x^;I>twG;s3M%yH1tf z9~&?IS0ij2c>8KW_!O_Sgu)vU?*p^cvt{)P&pA(xJgE79OnnD9mu>sMO{t{JtWpXs zqhV`M5*ZcAjwm5}Z%sssq=;lxc4a-b3fYnvVlWzuRxRT0P;@SQ*Cz|%AwNWMJie!VXEow9KZA}^_R zYVhA{-%~TAea3iT$6Br;%~4h^HL7~^m6xwoRBvF8tNl8+_1D4h!7u82Q!Dc>I6Be* z@Cf+#CaDx}UTJ$%@1Bm@z5e*U*z1)3Vdv6DXewTRIiJmGrh*Tk#{+`>-pfH7vDGIM z4SpT-?`7|4Rg{RPYxayS{M4*r@!;FaCAgRh@QyOA8THH85ywu8HmV)GLTR#d;swwB zi*;M}{r6I;=ZkuJHMS6a9zU%s+&QfMezno3Uf){Po_itpu9>*KL4fV&Z^!=YxmH?y zJf*gZf|7bYm7oBNnsj;R6LG z9UR}^r=BnSaz0_5nbxGKhNw{q>we ziEpmEDwH0Gr8hb>5zWwOdobmQkS&&h(`kNTnMc|R6Jm4oI!$yQx>oCDH*XFP4Ozs! zIk$9g_-oefKF>16%%Sk{Ri!tJhqc(GtAl&^0KUtJ#f}y0t{vPHt3GGnd`hS@({22R zxz*{jUQaj9qM_3qF`AdpRJ@4JMMy<(?Auz&eWs!!uigjX1 z;-N63{0~RBj$aqtx6xAcHJhiqfNFl$GN&Qxzdtblr^F`ZMs1=0ZWvL0VJ?zzek2fK zefY^mML&Uq3oLH})hTU?ORdFx=HINQ-ku8noK96khQ@{BI&Jp-D?87f3#|2bjLAA} z{$oV(!UL_?e^A`ToD8(n)k!qb3Zm)<*WSK)PDmvA0e$u5t8LX6a*9hQG~fB0_rbAz z^6ExcFJ9J!8-Xh{d$g@Nzz%h+=2Z_!G*!KPSyd}kgezlx>mjYujGw3X|HwB8e11{! z?$Xn^kMyuVGa3)CqKmsg8MUrwyOEZj2$zHJmfCQ-ElLyTM6|E0r4bJ(w%rz{5=SXt z;*mP7JfWyUPuJ(jeLeMdmGZE*rf%E?AwPB--X12FAq`6rOUw67oqJO+GypioitD(x z<9Gs{nH#lniEN3N(W9b2&%P}ia!lr$kFp1$>cTmXV48`EH+TEFWqY_*HuU{u_QVtk9u{tP^+FDK^AL!NI=yLBRez0SRA8zwG8ug}M#={Uf)ioe&{ zuCu~~t+b>@nj?zsEzMou2tk#V!I5ImSUYs|3mPZr)5Gp)aWO?+(YhA*%C&xw+Yg*sMNPcxt22VI$EpzsdfaEvz1UwFe~)WeScrRM)=g96b0vsX9mJ-aG31 zI>G81zM&TrKJ`a`xaW6ca|9yMeKzQ6DI62}xZU`0xavY`py0*Nx0;sjQxBc@wy&1f zQ->P4F09Z~I1^`7`e|}U%Zle(AFgbxv}FE8c|&C1E`>sEj$Si%jYAi1HYi74uzPmn zz2p`7mw|$j;;kGVI?;kb_xFrAEj?dN!{jwnMjdF}gh9)z96qyp2f|w20@AfkDZHs> zq${BHx%tyfv3OuwI8(%=K{0I4PVXh2@|E7z^g98qE;S-9dO}n_4lKu+i$ovlZ0InE zc61E-99_F^_j=!m-Lfjo9L($~X8(yL>IDd9QB>I|G7H>2rw{16zv|51)Tc|!@S^L6 zS1MHxSwbEUP|{HOWoWSkieyTp`AhYESqrpZz#x(03G*tJm5NjP`;M?DB;Q%176zVSv(< zKVImqHA@J4^Y%~z{GZ)$D?Cmp;2wjOPk;|=>)Z2+VTtsaJPB{Im@l0zegE(JU);aL z;g-t-@e3ghs|QwvZ5xt%dR%>ntnIspqP%CqKfJ2G3byK`6g|r+iaS0#58Nmz$u-*B^|nVp=MtO7y6L!93QOj{ zI*b=!I&7@oJaFn=eq~<<5c6BPMpiw3>9@u-^>N$tD+2dtcO_C64_>@^)@!ByuD!JZ z`aWFa$;Voa1j}!XTN-!lOWb%hEmSknfwv&#hUW3uJvNla$@g3RGTtr;iEMKpeB1Ny z@p_=u{i5Y@z`<<^12m`T*4)77J}s(t&l?bauGEQKdl<3Uhpe3QEW{UjC1(S%{3)^Ju6Q6-$Rwi`n*y}RA7HUCG+P^ z4o4af3B6ytk70)>i(x&3=CQQkllhK_d3)u@z~Wb`q+u$2|C)&0K83}W<_XsL?SX#)zlspK1t6sc2@9wdB!8{i{{SNk@51XT=F_vN}Dd_ zJYA5Ix9`i@AD;<`8{glO-<9Y7Qn#wW}?;#A^qf=@9uRf2>mpry#Bo7*YZ+nT+hmSI)nPk{_U;5v-pj{ zS|e**)^I-RlMc@+!(FH%!u^!5iAZi$x~lsnAx!Yx>)x*iR5H#+r2GG;1Z0y#%(PN< z`n{OpxkhVwT3auJcc)?t|9&xix4<`7o~F|lF_-GEDl1#JWy`)B5iA~?GX$}t{wH-r zwQ1=?;5aH5V_o!px$=#vNMVF4Mp9gwv7UX^Uj)u)Sb9D*Vx>vmJ?@jOZFc(?SiKJ$>vfrRo838G}a z!)qq_+mVrjcc$w&kh=jJ^UjRl`U00lw@R$OXW>Uxh|3Ee$v_CR*RrrE z0D}QAi0_5*vd18{)MGRBTHI+(yR=iMs*^Ar3@Hl6WRr7QXXo&Kn7w3%DKo?=fncKf zqV$3vD-pgUGt+KQA()W%`SSGj3a*Rp`7Q{@U}i>|l>d;jGNSVi;qLG}x`a;N>$rbgdTcO=c59wgo!>Oz5itNW1mFVT2xUJBgtF`^ zLWBHWB1(wVQ}d0kLr&lQsYyX;h_rgNtJmI{A`UL2q!+_B%rGAtcGd=9N!P9RLsbmT?MPcr z5*QKZH^ts$A4u$YOjLBMd1cO|9mNP^u!f&|@~~>5t5pg1be|g7#1{CrCl6ye4#5iM z-dxdQv7MiwQ|PDfp@~<9kMlgnvebolUBP#rcL5J6T+j}>f&>F^$O=kEYY(B6g# zwQVL(>rdUQuKyg9LB1)HDLc?Fh7s_|Wdy`h7N(afV;++!m=1n^F*tk3WEvo)$M6oT zxb~?iC?L&aDhm@{XpBf%t|!d?#(mJoLE%J@G_rS+1m;o z-llslp~vN?xq7Z`s|>v7axCyh#Qe(5!GH*vGmU^twfyvA->#(sjL6hGDl$?CV>5~9 zv#%8k<%JmVr0c|@CFzPaWbcWI$3h_gLIJLKJigUz5e|zcqRfEP_w|{=2e~%6*`muF zmx_55xwgVi~>21fGks(8K$lFw|U`z;UwL;?_uqxI&c*MH++2ESB=QXDxq`$_L-pVFs@eykp4gYkIawA_DQyr2lH=`~$Nz%txjen?nFu$j)1H ztU3!K0gPblD+P-Row*5Aurl+*F9GeZV`D1^+dJ4*TwJJ%7bN~OL-=q?6B^}`rnflOo02|f)*ijO9ngg_hU-Onl>`1g+S5+kFUFc!zHOc zv-p>oU&;Io*Z?-e&<9qNg7{moQYplg=#}X?!u8kj>o;)qLI1_Yzru!26Wqn%a97VD=Hg zsG-g6Z78?gHwl{QC9<6Gb}D$rk>W_r|L2<&>?Y^2TTt9!fP8s}LBW0aA<2w-h}f&) zUZAl4&l8(yuFC}frH?7LH<~Ic=qX-{kTDiYs;aaZ_1`LgPfSg1`77)W>pw#QgdL_X zJQPQP_24?wsmV;xTwlZU1tWtJvD!}*&eRd4{g{f%7L1j{rrt9)76MZ-i5P^dv@*w* zoCK;(df$(vhiTzSqN1XT$4oO#pmRX|Lol4`YwP};#>) z-WVf4Y}1?x>*^Y9JGE#j0W5cn7h#*X2g}He$*3ffC@o!7OiUAy-xhv;q%1MteYXX) z0Os_-NIz`yt=ZdPL{ULgQ?n0u?cUvOYT&MrFGj}6oa4B5;|Bb6I4R^!Q<1 zwbkcSz)5>DYP-4&{|%$UWo5nlu5Vl}{cM&pezp%7>xshjI>DOl2^9BO-#4w>4ZFo= zhrACpUUD7@?U1E@7kArw4RAb)g!?xx;l4!6-yK9%X z40$@ho~L=jLU@#74z^uW2w13;%*+x!=aHopk4wPM{{pK3q82~B0++@jPn;zLcV`ZL zXuX>siUbxir5i(7G@wWMifFOBVPP!H%m{X5J%Gs?(Y=o3VZ|BHhr{kfNHbIqWaJ{* zIa_4!ZhZJsTRA=K!2@BCbP))f)W#Uy^YHw%G#81~sTC&vm2bW}G)ay|*fmzYHo~(* z7$#;P1l1!t_tPM(~xyCno-AH3|6? zBkeN2k&L3jf+I)v4F(u#94;QaSIr z)8d@;Q`&njl2_E-5N7m|2jo6?tvb3)q_x4;&A|J_UZpgF1QQjag<)J5Xmwk=!U{MJJ*AZVHCVi}&VtoR|2zhX1p{l6V1&vSr$7g-JJg3;?^@Y#|^Z z@K!EWR60}e^z*Q$MHa=XH!shL(EDrn@2}q8$n;!=;-qBfi|B6AOlBTVAjKop@gS~#d5?khH*J4e#q!DX^(^9BRCKRcI*hkca>nd zWM`Iwcs&rtty!1YQRSS2R}vmK6d%X2#Pe_{+P^B)AfEweA&CmZrz7JU$qo<0X!rPK zJ&m~KLre@7Aje<#7)jLyu3XzQsteo;G4Ra7w9df5un|cnSo$Q(C0J5%dBqopKdxD*N468?(z#63+ZX2urpI?uP<9E>eu zk)U^}KIZo#Cd5nq`~#I$R10@`&BBKGcgR3@1~1_2LHh}u#m*92cX_vC!k3?)AB1NZ zS=UuWhGn`ArRHD>zv<|R#-C26oDqfWhQ0*USfs3bw&x#=ssd|6_OiuR>km(v@$|o` ztsO~hOGm^l7_Ta0)$d@{d^7{_>-{dZ=o*+%qzZtM081)qS$!#`x&z;jc&dr41f`)L z9*;)EwS7#}ANt@v7KERhfc1PF`6Oig;J3QyR!!R1tU?e57iSL`ujraOw7? zM*?n+=VxQ5$HZzV>M=XcJ?0DFHF>%rAW6a~F3@_{u|P%eXsIN&eKF~Cpg3%E=CD+u z|L5md_WSNXtgWOUp`cY#9>S-FVNTcqo;_h?oEKu`DWEf$Pw{l>INsJ6Qhl<_mZ_+^r5S*zY!Oh8 z5R2aFeg30%7H8WTsF~15OmnVL>`2|;a)?w2dm@m-N@z9MYQBC~f7MokH-e-_3T@fd zU!V3&{rQwXIq>}X{9^Bz=jB5O%uK^v?;KmXawQv!`o@E$l;_umom+Q+TQ~X4@wvTT z%>gDn&-bp~N~;hmEPPvVAG2blpNiP_mp3-v7P-1*#>>l_B4@>lEeGx}_PC~oXW7+# zG9T-Yy7ci&?9B7+rLlSV(7$x)6TNz{tp`!X@uIe}xSA!qjmX z(a5Db1NYV~F7xyW6f5Q!Fi9FLk_P}z_6gWM-(KjM7Eq0o(P3EL=O4Q1uI*1sOnial z3^K9|TME_H_^vU+uace;=B`XE06p!r+Fu423{0Yv+vNh|)LFb^`p3leAmwKcJ+vn? z@Oa>f3`Mh7GgoZ4iS)e5yuWLgxL9W#_m0laV0zyc|A<#c`p|RESwC!(PE67r5KP97 zj$*@|NGRb7;}kKXK=QX$_PLQ4)w>u~A`1KN9Jgc9+q7wuWI#ts-OmL~u{^I^IYbju zad%{KCWSFLTA6$pd(W;J53L>F^ly-VqE;7&{GlG_3W@fx^thtCM#en2KL8gtj?^&* z9utb#FgS(tqQA}zj`9KzgB$jKF^AFrr45>M;!+Nnmj`H7NkQrs!1 znH6?fm=!oIwDjch@HyX|=jAXi|D(9Ab+uxIO5c~* z**jYLW(p>HMwz=WuQ|7Q{qWuzJ>&B%Lcyn&-tDJyMq`OhyeqeU zU0=H`^QbF#V;u)?c*z#ekY`H2p9!*(SED@lU#<$b5Qmq4SIpoX-qXeZp^t7=_<65B zy-Vs0qKW}LtO;aQ@mENiKe{IUA9kVxWOxc#lzUI|ZEY~e6vN+Or?#aJv)93w>(uh0bWmMV2=2?dQ@HTGu zVO=8^5|HD3&C4RZKFculi^B5j8dRL1;HH-uZ4cD+adyk&>E&*dKi%ac)IWZ+QXDe7`B`saKyKf9DFC-5O==6C$Uo$q}_C@#|_ zR7}}jXS7XW=yr{j6ybDn(!0`j=1lL+sF11nzfaZ{M*pyqF^*lys^;RfQ z71MuIsLj0TFP~F>RWhw|Zt2@8Ik~TXPwCO=7gOf`;yy<|AA3)ys%k=>_~_fl&LMNv zQw6Gd`#aNwhbI*Mp1fCWT-E}p{<}CzY;~DkrE(izQ)dNQv=4el?@qh^FzSIaqtV)i zcItOn!d*{Y@^zAbD%-NI8>aYs^ZQxlpGmBtI3H`1H1^F5PZo6|)k)m@WPf?;m?K*= zf@$2hzj-Zf@?Tz<%zw;zMgzzG-d`oQZ%WP;o!eK_3e$>Lr6+Ya*9jnz=~oG*;ZGI@~io$aqraABOcVvCfn=v&rEun z7VHdoWWv;iCFUQk(Pw$l09sNELS+lJxBSokic$Nu>sZP96-MS&r8SBbP4A3Ef;$fg zamSdbOqh+^8hhQkrF5`K`rop~+tJ8Kthpbvp|tMq_Wm7f?)b!)-gJuDA8id9RKa_N z*pqd`;@use1@5nJdV8L3Z?Y2a@;wWDO5@J{B4N6=Sno-W)G`w|(~BcJ1J^SpgoI#zI@r z!~n6BZ592YxO9h|B4<~WX0FH;bxS)PIP~3#R{BHa2KSe`Oba}-?hby<^#9F0j_`N( zlq=A%x1U7+E*0LOa+c+fjtQ z^Ls8sOP6lsa}NC>cW0|LPP_74mbRgHWhZvfeIGYAHELhmr*zd!MK?k;?fU$SQ1kve zBlEobix}|?j7FkW)bGghD&`%35IRWDSK+mRX|e1(jdVnmY;l(wB;x=!Ryc*}EzT7G z`3h0)YNw#s#zRN{u45f;@0bt$++LHt6}EdOTip}JXr$ZbOi>ohE_zWQcIOx=6&M9Z zP&&h$AN8XhRmpp3BxNc{xrQE}I6}~N_OyTU%s*ykwpCPA6p2Jvp~wC9sk47_0*z`D zN&vhRXRG|>PMKYKed{o>_TdvNDBO`-H>~qDzx99Lx@2f$(}D!I7w{v8!-^O80m4rL zd_h!Fz)v&mzA7V+YObaD_gesgXp>jGikA15gW!_P9-$z4+5qV1UMaj>+`Sn(X9+sr z^&2)QlPCt4sc#8?PbbAqVx5Uc-nJbj$NC5E`H4=NWFFSbzn{7UGB{|EzlE*m(Z=@zJR773(-BFkcnmK1J6`x&5njdxG}VnPVfMg zjMR4ohMbd}cDq1Iba>K3AD-QPTV76=HV0ViC4%AF0PWS(3`0vu*9tW=^(O$F zmvFnY(0J+s;Y>jy75o~-w86y_0NPYLA%=1RpH{|LbF5-5-ESzvgnsFy#&M0DxH z(@^wfRk(u=znJ>AfTMbWY4(iYz0b_W+v$=jaZBKOMxMwgTY{ggFYDMBWE!iM@iO`{ zYJ5dJoWR(LE2h}X(>iyPcOdJZQRiYt839?>dBnQKlj3ybb2z2}b?wm0T^m!+ejy*J z+5~w4%A(@QKHYUr6XCp3_HS6(Fh3U}_5pC_y~P{Iasq$n&HS zvHH9Rl6(#+hYPWukUh=~8UCrl+PJr~X$1sxy}#$j%t7pWV0HyD!(dF#4>ZSg!SV>w zBw9z}Wob^<#%g;|GDmVtNXH9~iHr_F;n@IygV$}~u}6nCIrW+IN>E}1J#~4=7H;(C zMnFzN#f$ExQrjK2Ok0b?s`83q6omc{9Xm@iH0PtRT*mn1Q0l>S@ zSPbV8Z}SolzAg}DOXS{|nN1^7O$X1bz3kYVlMRp}(oge9+HGmsmVif~=3}{}IY!%f zb`SQyQ``0$ixMbS2H+`7E`NkY@y$i^7q0RdeCLi)>uIar2dT zk0WJboWeRUls@rE84DwW3vj<4G&HC`!pLj;(R?5^WX=chF=`Q~;WJR0=Jj0TYRz}v z9bw=$c(Fbm)X^go#7Au!cSlqy#IY=h;;Nr4!0tgvn%}b(^54$5Tm;S_`KSgdAEFJH zm6esVZPn^B;R=}^?RaSQSkUKETHZBeqMbx^mdvF7g*~3ye;1_m?lm#~$7>|0#!qO^ zaE(X$4{S7-zKq2mfLlsBL60m$Y-G4D)sE78_p-hmW}36k?V z4!8Iq2;5%*7R66U#~_&@_%I3BVL;El2fF#6^H^QX@2PDyLBt&h`1DbuaF+LcTbI)D z<0QO^Y~3UqvwBzlDw0UO7L*V%j^cSR`q{BQ%ATO(lAVtcw5UsT_QBGlM$k2r(M)7O z4?*W_kjzLv$1mJj>`v97Cy2`s+X+=HD8GVV-;?3s^v7OJ5_QP@6I{zV^!1aTR_yC! zh5mLd@Axwsm`~XRm*~~y+RPXlMRvV@eK5$mGZ(8k5{@z)$mAqU!JPq3x|WkO@`)8T z3#u*+x3WPtDL_>0h_EpRGfEPB;cvYQ_<9n@HgZ+3RrDGIJ10S|M7oaLv2i#w)t_k! z96EGp06KgiF}_8zyiA}5R(gD`UICr-79h_gr__BkZ=3qY*O`jJ7#Us$QkZ8}_yM>d zxwa4ONW>b)WU24ci42l4ihyRg zdpwm7Zr?89ac(a~sCW&Gi%$&-rQnX}jPzDwXJB8h((gWXIZpGDLfhCwHto8*jLnYH z-#(({V;A;pYPVuEsPYTPiB*V)**W_{BY&$#z?+*hayeFQY%Yg%+80n_k;z)1{i0^} z#w;(ren%(EU%PJK`FX%%J8&*n+EZm+`m z--@PJ6sK3DEZo#uGvW5%TDfQK#uDg;kjG-z3#bOllCV}3p)C{Rn4aYhI-7{ zosOW#U4j!#jgMTDta9USn{=<6WtiC~(#U->?n|o1rt*fYhr-B6-OA%Jh`DtP0ssBT#?u0Y#_NjMwQWPoyG^4%d7ni~j0gTH>-%SxW;u@0`tt?kXV z(v><%zwPWhDkVY9l&Aktj(2680wO7~zqs073(R^d? zWkILkZe_}HKm-*(ZTwf$Q8QUfS1pv0JK)^-G_k!nHj!?nCKWb3FqVlcMIgJh*#}5>nLKvqq{8eye5W!q3FF{)5W+ z?V>pM`YzJRbFd7yWaH;13pn*|igpI&#I2hZ6YD(7dY&%SX!!$2Nl(W+&}XbU+7#z? z*42YK{-|#kSD01vpP5wYhGdQ6ICA$}%8he?*mDdX*PNjq6380+G7%pEgY=nHpBjZWl?3 zzs~oh|4hwzeag88yPGT`%a>fjV#6>8d(Si#muLCj(%?OSApxKmOqw;cmU7rHh{|4x ziCZ^3_&Db5SEK&*lG>Y=pG@9ogF!qLb!SY|1_IxM*wi1Indg&rE%p>+q0iO)dN<`= z?X48+`3g_oF~hi{GU6>GZFU(??F0G%7kaRBam`mnMlJ1zG`ZVKl}%2Ky9Bc)lD+%B?al+Oq47Tp>)ns}f0W<4}!1v;6lGM^AUR+;ys;P6&}mTYV@#&;VTw1U%bs7ZG@s=8XMS0_fZbnv~P$~=YJcs^bLbmyBveLLxQ73Yhw*# zm}Ug6YvN_sq;6JARyzyLtqa^4RV^(j!1JBn_270y+v(Q=}LF zmg<^ABVLV^(#dF@U`g8$kP9zHF1Kaxgs)fgwkE60(h~8J6sD3asxRZd>$~A=)%(24 z!_mG_>ClL82HA@`<_AtnaqD&o^!PU;X}v~sd)Gj;MAe3-&UM-oqqt!4<|NUj=&)Q7 zIfztshsWpd{mFv|&lOUbi8+tbV9g85m%UD-b0Pjwfj1z*8<{i}K1O{~C-L0~V@%3f ze2K3^QJ}?}U?SAZamG+RGz*n6e-_M9xGI8P8vK~bh2CW4D|t};Au>N0P}C)$AeFByw#l{*{KWjrx^^V#N7=i`@M2n3J%lp;k+i|!OE4%bL>;XertVc{ z7{4aL>cL*n&D6l>Uj^w@)W|IAr@YbshKNvsbmdS$FmcbLdLm>8x!%Af7J8VxE2pEQ zT+d%ZW096_42!$Ft9x>yxDX`o?epxRfj>3KxS{f1z zL0q*|6=Qk*yyQkgRnq$E;(COiY(jad%U8VcgApa*7tlJr$gm`ne|=5Jj5#tn4Y@^0 zptIW@np80yn9Bzj9L;ALirq6WOjm%i>P18I&Uv2?V(lhFycdWKy9u|5^bKfzNJ4vz z*RPAgLUk12H2e7e%+eDzCLE@D|GPT!e;Z99{>ByAvcjdm!`d?E*QHpTDo9X#tLtFg z4+XAL7s}|*kubmR-`G}l%LYKL28H%QvW&n zyWrt9_Y?R<8M>q2I&zWKAeJ6Q7<+U(uO+h z&t$BFP2B_@mkiH&Ckp&sP|FY*?wus#jd68)cJBmaQ1R#SUIrEwJc4We5?2*X#8d5b zgYMRwgSA)()#7a{;Qm~(fED6IXi8v7)bl68J0vS$Qm!HYLVWdtr+T}tL2p!bzqb0n zEu&I#Y_{sZ1T{%d_VGCv+6&B)CASnKhHG49co70!qVL@C7B>D<-HQl`qZA|npx$zu1lrIT4Jau{8ZdU> zG2I(pzXp>|nvJz)ZpP{*)2rKllZX9;mt1jK;u3r4cKW&cN}DxyX#w`_Zyt6i_s_0$ zi66KVEh%n7bm)k51&)OMuxY2mE0c;f_zrJ@fWE^OR62HS6I2jHaDq<&)BkJCFD=7U zLjs85!6urWc1Vg)p|kjq@s2ndPNq#gjHv-$Tsk&GrUWR52?9lAoF!jh!T=x}*{U#6 z4_MnKq>v$#=Lg1$(|(3-R|Mp1TJD#XKpO6(s{5Oag?S+|gBZjCXxzjNw}-5>2|#38 z@ozU?mu^bX*6*0$Bi=;2^&^wI12leHZHqd=RTLEG$#hHCTX$pX(=+~^m!W~32laDBFIN z2+yID`}Wv3uGk@JQjyC$datY!zJ%LFb$K&Lr(k^I9(rg!7uRu2X}u0#=ZO8*{=t8w zmEM$xobrKAHD%knRY$%Iu>Q<*6ue`@|2FDhO_Dd@DzVSArFWBTdN!y!ncFvF8n5!I z^zknf;BLQf_o^xD^QtL_h?{I_5OoXgIQ6ttVHef^=}YFxo;fY z0&G2D<=!YI(Pg6DO>Xo0l2wL~zp=b{mCyz_|~!! zhw=SE71uqiQyF*u|F2M#VWRkq=}=u?!CA)HoKpVcm{vKyGet2k0xJJRHS$IOZM1An z<;1vscK=aRraX5p%6oiAe*KU@o}T3IRR!wmkr0Y$s_WlmxrrkxrrCA*3$R<5{-Owx zp7iEZEBKTe6p&L)S-<93#^v&B`Ii~_o1mFwjN=NOe8lKPLC&dABd*_(r&XAY)9oF= zd>cmD(wprP_6_mfE`BKYM|9d~j-Q&4rp#dUUw%7p;I!_cmEAL3to6^S`&Z?%XWUlV zdM@$0JpWw$@+KiFTE`Th`*NqUFIc7B!S38sH&nVqse-m?ru?s_oTdz~O9-^>v3_K~ zP+NLjW5UUv5{>`I<+4j+TC)C=ypZgsUG2A=MA&9G3U{Un`Iz#*eX!I-nM{9{ROza% zIvIK0cdn%3aB+qdZDZ2^QS~LWtDowv)xULdNbLPW`-L2d{9xR2aPLz>_COBU8&xZCUOleK;Rd6dZkO*x(t0 zpNNj&@~J+3KfrWpInj(qm@;-dr*(r3&$YI`bx@*V$Ie@kq2j5Q#zC9y9xs0qmEkY% zqfCgN^cjIUHgI%QE{nK1CIaR9Ab3W3!S{RbUS(%4DL}qdbQ^)+glfc#N^trTZyy= z^%Qk@NIPV+ewI$<@87)K(cUT!RV^`4V^-;@-DiEpy}~uG+?8R{^~}0xqs0I_kN@jB z{p{&>%p4BgEyvPQn|kcn<7oejW(DkfE9CO_ms+qpt_h7>I+?cQr}MP04f0KzaXk8k zzuksDx~8$!B;{5>&bD73MxCT9UAfeiz7XkUj2-Q+Pqobu1ALLbXskEbeY$(l?(6J6 zND3IWctgvUmhzTBDFGdd_$#x6yfxfV6uio1*#Ex&$u0j={;nXMCK_liZK%=Xr>&)x z_W4Um&21I#l%qrcYR%|$4+Fl=*5!50rw?>|-ka+cd(}Ymu3^jXipihb`RJq{-l*vP zgsN-4BX5dXQ{7l0IX$SBf`V)PF@=MFH3tEV^oATV`yFmx4aOSwd+;`|OS->v=Jz;r z%A=dj7nve2dPdoM`b8e6DH)sbW{7I?4qW<%C+-aP*r&&M&&@RO&Psu%N5sBA&%rGZ z5x9p=qdt$X@Z{er%YN9$O5-1!5r!_I%zepTNo>Vd?(7a$lbt^lm{{607_Fh|1pMWF|6OM(4Yw9VbioX zG?c_MfRGjBUd1BwtQ~ML^vS$F0|OT@^IpS-{ge+>@}*pt3rc|t*Wv_?7@I_`Tn@GL z3B0?J;X%XxoAo33VKmMaD<2v`_D>@s0G+qrzt|Q@?_!f3k6C}aV`;QkHxb?SIUhMiq#&VG?EdUBg zOq0A^_){x*XpcBq3m8dgTZfac6bSvpkq6d!U)d0OSWYyv8c*m*M+{cicONLqFOcMu zVO*%0`rM*jZ}m>jk?QjuLbHgrl$!pV$4;qq_tRlhC;lm>E(VSCuu*pzEl9TN)O|#c zM;cQ^S5<4zV*&@pU6kqNpjJN)Two5y7p#p{uP~=luY2Zh*Nh$-P|#x}`i3l0LU^_# zk&xt3O@TqfkP-yhyv0g>8BK!03Ji7=qaUUSk(qTCLTgWxV zjj}JSBR84dz{QvRNAf|S;di0({PF9&Lp_nRVetIf`!|%Ku`#r1imsiBl|o3`uh%Dp#&w z*Tu7)3L+L)l0F~!%t%`P=!?JT!5CnjKunL$zKqM64Rygu>v|+WVm6sEhB{@Ut!YK; ze^EEvas~HgOlQBvBfT%91HCUOv)^p3_zKySBzmT#2xW2`9>y8Ve$!e<1OO&$Jh_I2 z;VxN@EiC=&wQFbX?CfF}VP8l^%;Yq-h{(uKP(GxhyCKXx{saksDyrabGxN1I!+^G4 zLMJ|tZR|xyARgh!NF88b*E*NL`V0xy#yT zq_eQCCfL&&i|`eGRR`bS3RJdlCWdys^|&>OuJe9HFKN%|g5e_CD{{hX^t4wY7~y@W zo(KDXb>$}hlLz%Zo_6+lktI8{36k8 z=kY>S=pW5*ivEN=W#Cmw#1k3!hTtglajt2eW*uN+6^UvF=vKH@7s=_0wm;`4a)8J~ z&}E`;scoFW1;K9H-FTF*HoHr*0*o24FM!-60)MP!X&Vn97-X~>nHq;t5=LeK)Hdnz zMd;ZbOKY)z0lf!Wlw44b)bnYD(`O->A;=4s4rOJwPb0=&tSlk#t$Mr&s$Cc8T{u9r zBcxgKi7g591yYmuC15)h=H*;+J~H$C=~6-S?yySGyGxH0@{D?|c1kQT z^-N;v#z#Z=m9U}WMX%-*ox4z|*b%fa$6EjQWXzxOh~fo-mh5f2W5Z%-!%yteoEhs< zL*$d)tL@mW>m+~wh$vQvt;w?D1dDlQW+rhA@4@A>8HUMYGg@EZB_u}-q_vQc5K{Go z>KC>pBi9%0IX4E@iG;ht;OA>HH`0FvtrW?-oB-b+(kD6363!3Ieai>tk( zp$0uB1IsBwb7B%jB3NR{&wDSvzXH+COOTJ)w-rFa4r24Ij@X^#G52GKZgvpF6eL9q ze?cveeaakw4Dm$kdCh&@bGb8$K)sW56lc)Xb|*VxbV)rPEw#uj5b7lD6N5`dGsa-P zNWvj%{&T9acVZmB{n!5o#MvXH30pcDyLl>Oyjfr3sw`Foa z+ZAX~-oyAodRa0G2YozzIf}tffRPBPTrW2tgw<0qrk=TK(NE8DUaYVO1v2*!sm!#k)*_NbHb(@iD_iSv4YD% zA_>VGVRl~cM3nv~$JeX(6PXIA={sY#TnBFmKeCx)u^2wF#a9g(5H0wPO4pQn z`fsRf!y8vj$HZ-zv}BVyTjY@^uyyO%bLZkbv6*MP{j{itGd*hr(iKa5vQN`rvl>D_ zWnR60Z?~Z})QwpvgU(Cei;A)&5TB7d@k?Q6p~*&4FGO0dpX!j(nhHhJroUUJJ9hUG zAaB_)?X|&Aaj`^*?~2 zjQ29aDm|m^$12Lp*{0R|Nr>(wY6&hyq@rCDk{u3F-CpksPn zJE7xHpc)crBhF|Ng;R<3NDlwOrB1Vt`&OXMOa5LfsAk3jrKeJ@a#b0Uv z-YA);+@z$XB5}pC<<-VX98;^m) zuu4%Y{UaITH);Hrn&^#C7cdynmG9?#yvijhd46YWq(Z6>Er z|2#|U1T;C8+QO)$xb?#)iYF4OL+pc8jv2R471gm1qbEML^kleN+Qgk6=l#07gwJ=c z1TQE1=r>yF2&IEd%USaZ$zy4eocYZeb0&@M_dU-|DXSj+k<(>(r?4_6((~`*sWWqx zW_!@zJM`8PkF>e%N8{kLQpT(6zv+c`|H3IUhjPs*^xS?F;-01h#EEiIWl|EO}d<{~Nkza-#hS_=I)qeiZ-M1(+6lwUw09X6&BB1k6`*Yf>`me@Nb)~$-~h}ZIM7B0Mx*$IqL<32W#}t5bs4KaB$pSZ zcyB2^Urlx~W(t!`eS}rB&+d&z#-yb}AdxZV(4t@DF?XomVH1f+U$J5Z5n;7s z9;xplVlf##()y*Bw#ht-cHqE}22Fr?BwAtY)K%yJNggvOy_E~(T*jXzGZsNAlf-b? z5;+Ej`bHMcqRqiK`-0KFM7qf%?bLVSC9LplyA5hkSKD)oi{rq414a(oHpXE?C`RF_ zH^M=Nx61^XCzC#Z3OeRv(5s@5H9-TAmn|wzbX^eCg1$`}9zqem8M0FXYPWeK8W=R; z2A6<`r*YY!w!{tF3svqTjqH?}{kYbM!C(a`xrh8ztDFwhp9taIw0G~%u$DX8*$YAT z&+EtZmNuPA+C-=&k-#9*H8!srEft=dD*<`*{UIkW#iN7;-V9jw5KcFpJUan3*`F+c z>Pz}38YeGAYV;U3B*+ICz9h(t{cbB`# z4|NVAmhGZaj|i=cJMSm09_e28LD1hbWSUHh23TlWlr6GV*twXQLGBPee5T)&3T zRk88#5Qp9wGO_Y|bMLdHNBrrX+Mi4x-ux7GhOcR)z? zp_n>pjoE=M7-D#f+Y?`{7F|47t2H_h$KlpSdMN{G})%zknLCB@fclsn|7LH%S|H}fe z|1eSqc3%iV%dRo;S)*7-HG=|67n9$+e?dR4e_UDl1xo8SfF&<~wxGjAzRgWI6k6b0 z`~B+@Sx2*BG=zIOj5S$(}uMC?qr{V_TBwE~@})!}QaBE5ce zU0G5G>QP`KVhMVH@%crp*{eV`&g-%aI1s(I4<+@9JkPD8m@G)TISMq^Qbh2EEr@W2 zKv+!CcM?Vp_Ub@iYI-Ut4(Q0Phe_+z+J>IA2T%wj=zxKw7vNgax^)2f`I;2tMYwQ1 z+qbM9C>tq=z?5uCBwY8W8zpjgbh7Qu0k;t%uiKv~7itB&DIP=*A-si>pgnl)z36sn z&B_5ryg}YS^M!f*51A{T0kJuFGMCSm+lY!G7GJ6)GbxK`zR_yZmY}0RQY(y?VcdBr z;wy+Q0w};ca%*_-Qymvy^2mA2z9MvO1m6;bxr@TN({&rn+rl=(9Yp{I35o=er9N*A zuhi#qd0lX!v<`ghmh&f6_R>-%7owoGgMZ_Nzx>86&i^q$-$w?a5eBwKoc zzEx&otb^AyT1?~?$Hvl7^^T&oz*-@V_j?0~{mhR195XtRX(`TDSYr)K|8{na_$fLOs@ zSK0hytuG6)r0h;P7pqkIjYd<6{q)*4qy79!ZD*d-uz$%reQDib;cC0$n2t#7D&BP| zziXl*L-^#sS(S(NkKu;&1AxHt-v51rTI!XFH1`mphO>oK8Cb7Iy!FHu;Eu) zU1jBs#H1we2geq|pFI=8Qa=lmam1A4NxqPZC)cjgH8(fEGkf_gIr;d*{g*NKOifMq zWg3+ClKXjtHXj<#~@XA_xxY;^Qm4Nu06(URFBQ*{uGN0Vy%E~W3Qy- zvtPg5WZkAJfA#-(`1tWA95O0*_DD-7n~FU{>stNQPUvB6)gD!=t|I+Adn6>D-np|* zGPL54dL)RZ6o*MW7gH>eM~n@#}@J(K8vpK{y-}nBIeRpgSrmg4x_@i z_V#g*N&dh)L`KNVtx2LxxLm+brhl!L; zw-4UZp|6rzk)K(=z(pfQ-djso_aSzXgzw)ifVBvjTTa?aa9dbdXbQ4u9zA+}>$Yu< z_|>T1hR>gclbW6}@yQ8tuQ`4P+eWB(_V@4KqefasrVDy=)_U)Jx(}Dmr|SiT7dgfp z*S~E&IJb(42_;KJz}s^hI5-;cIaqHhd}wSm-uZZOYq;{W#Ka>g8(vhEmzRgVGj)J0 z$u(U&^=v|U`H@1Gi9=Y6A7^KC4?Vt}W>6^na3tpBmfne6a0?d~`66r0_KJwastd*g zg{>NKN={E#TU=bkMGrXgGTu7=tp8I2umC(r-Cr7qpIYuB38MZivLfYHp5 z`1tw2PVwRdgNT6r!ksO^1RkR|9azgN?Z3YsxOCwa@ND!=x8G*v?>+`GY*seb>5=phqd zUmu?y6`{`eX4Xbrb#|989?;7fc{|^Rivkrf zF#K3Q5uDf=y4seAfCK_eRF;D1hDC~+tRRL6ucs!6UXbD8#Ry`!22c7g2x9y + + + + + + +BehaviorTree: BT::Grammar::Expression Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  assignment
 
struct  bit_and
 
struct  bit_or
 
struct  bit_prefix
 
struct  comparison
 
struct  conditional
 
struct  expected_operand
 
struct  logical
 
struct  math_prefix
 
struct  math_product
 
struct  math_sum
 
struct  string_concat
 
+ + + +

+Public Types

+using operation = assignment
 
+ + + + + +

+Static Public Attributes

static constexpr auto atom
 
static constexpr auto value
 
+

Member Data Documentation

+ +

◆ atom

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::atom
+
+staticconstexpr
+
+Initial value:
= [] {
+
auto paren_expr = dsl::parenthesized(dsl::p<nested_expr>);
+
auto boolean = dsl::p<BooleanLiteral>;
+
auto var = dsl::p<Name>;
+
auto literal = dsl::p<AnyValue>;
+
+
return paren_expr | boolean | var | literal | dsl::error<expected_operand>;
+
}()
+
+
+
+ +

◆ value

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::value
+
+staticconstexpr
+
+Initial value:
=
+
+
lexy::fold_inplace<std::unique_ptr<Ast::ExprComparison>>(
+
[] { return std::make_unique<Ast::ExprComparison>(); },
+
[](auto& node, Ast::expr_ptr opr) { node->operands.push_back(LEXY_MOV(opr)); },
+
[](auto& node, Ast::ExprComparison::op_t op) { node->ops.push_back(op); })
+
+
>> lexy::callback(
+
+
lexy::forward<Ast::expr_ptr>, lexy::new_<Ast::ExprLiteral, Ast::expr_ptr>,
+
lexy::new_<Ast::ExprName, Ast::expr_ptr>,
+
+
lexy::new_<Ast::ExprUnaryArithmetic, Ast::expr_ptr>,
+
lexy::new_<Ast::ExprBinaryArithmetic, Ast::expr_ptr>,
+
+
lexy::new_<Ast::ExprIf, Ast::expr_ptr>,
+
lexy::new_<Ast::ExprAssignment, Ast::expr_ptr>)
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d7/d86/struct_b_t_1_1_grammar_1_1_expression.js b/d7/d86/struct_b_t_1_1_grammar_1_1_expression.js new file mode 100644 index 000000000..d3af2d0c0 --- /dev/null +++ b/d7/d86/struct_b_t_1_1_grammar_1_1_expression.js @@ -0,0 +1,15 @@ +var struct_b_t_1_1_grammar_1_1_expression = +[ + [ "assignment", "d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html", null ], + [ "bit_and", "d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html", null ], + [ "bit_or", "da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html", null ], + [ "bit_prefix", "dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html", null ], + [ "comparison", "d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html", null ], + [ "conditional", "d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html", null ], + [ "expected_operand", "d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html", null ], + [ "logical", "de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html", null ], + [ "math_prefix", "d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html", null ], + [ "math_product", "df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html", null ], + [ "math_sum", "d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html", null ], + [ "string_concat", "de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html", null ] +]; \ No newline at end of file diff --git a/d7/d91/struct_b_t_1_1_grammar_1_1_name.html b/d7/d91/struct_b_t_1_1_grammar_1_1_name.html new file mode 100644 index 000000000..daac57b3e --- /dev/null +++ b/d7/d91/struct_b_t_1_1_grammar_1_1_name.html @@ -0,0 +1,146 @@ + + + + + + + +BehaviorTree: BT::Grammar::Name Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Name Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

static constexpr auto rule
 
+static constexpr auto value = lexy::as_string<std::string>
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Name::rule
+
+staticconstexpr
+
+Initial value:
=
+
dsl::identifier(xid_start_character, dsl::unicode::xid_continue)
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.map b/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.map new file mode 100644 index 000000000..02ba80e14 --- /dev/null +++ b/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.md5 b/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.md5 new file mode 100644 index 000000000..042718da7 --- /dev/null +++ b/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.md5 @@ -0,0 +1 @@ +14046343a631f1dd87d4aec21ec9e4a4 \ No newline at end of file diff --git a/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.png b/d7/d97/class_b_t_1_1_keep_running_until_failure_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f5da1d92f3e132623099228f42ea0fe542e63a0 GIT binary patch literal 7153 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 + + + + + + +BehaviorTree: BT::TreeObserver::NodeStatistics Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TreeObserver::NodeStatistics Struct Reference
+
+
+ + + + + + + + + + + + + + + + +

+Public Attributes

+NodeStatus last_result = NodeStatus::IDLE
 
+NodeStatus current_status = NodeStatus::IDLE
 
+unsigned transitions_count = 0
 
+unsigned success_count = 0
 
+unsigned failure_count = 0
 
+unsigned skip_count = 0
 
+Duration last_timestamp = {}
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.map b/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.map new file mode 100644 index 000000000..7cf84c661 --- /dev/null +++ b/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.md5 b/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.md5 new file mode 100644 index 000000000..936be55b2 --- /dev/null +++ b/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.md5 @@ -0,0 +1 @@ +7ea299aaef71752beccb9eb99486eb50 \ No newline at end of file diff --git a/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.png b/d7/d9e/struct_b_t_1_1_grammar_1_1_expression_1_1logical__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5e88b69b3faf35132295fc1e7ca0b79080b2c82b GIT binary patch literal 6213 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 literal 0 HcmV?d00001 diff --git a/d7/da7/class_b_t_1_1_simple_action_node.html b/d7/da7/class_b_t_1_1_simple_action_node.html new file mode 100644 index 000000000..f80cac494 --- /dev/null +++ b/d7/da7/class_b_t_1_1_simple_action_node.html @@ -0,0 +1,390 @@ + + + + + + + +BehaviorTree: BT::SimpleActionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callback with this signature. + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::SimpleActionNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::SimpleActionNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Types

+using TickFunctor = std::function< NodeStatus(TreeNode &)>
 
- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SimpleActionNode (const std::string &name, TickFunctor tick_functor, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual NodeStatus tick () override final
 Method to be implemented by the user.
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + +

+Protected Attributes

+TickFunctor tick_functor_
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callback with this signature.

+

BT::NodeStatus functionName(TreeNode&)

+

This avoids the hassle of inheriting from a ActionNode.

+

Using lambdas or std::bind it is easy to pass a pointer to a method. SimpleActionNode is executed synchronously and does not support halting.

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::SimpleActionNode::tick ()
+
+finaloverrideprotectedvirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/da7/class_b_t_1_1_simple_action_node.js b/d7/da7/class_b_t_1_1_simple_action_node.js new file mode 100644 index 000000000..f0619cef4 --- /dev/null +++ b/d7/da7/class_b_t_1_1_simple_action_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_simple_action_node = +[ + [ "tick", "d7/da7/class_b_t_1_1_simple_action_node.html#adde389e53daea5f861962918fdad825c", null ] +]; \ No newline at end of file diff --git a/d7/db8/class_b_t_1_1_force_success_node.html b/d7/db8/class_b_t_1_1_force_success_node.html new file mode 100644 index 000000000..dfa6fad9f --- /dev/null +++ b/d7/db8/class_b_t_1_1_force_success_node.html @@ -0,0 +1,343 @@ + + + + + + + +BehaviorTree: BT::ForceSuccessNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ForceSuccessNode Class Reference
+
+
+ +

The ForceSuccessNode returns always SUCCESS or RUNNING. + More...

+ +

#include <force_success_node.h>

+
+Inheritance diagram for BT::ForceSuccessNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ForceSuccessNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ForceSuccessNode (const std::string &name)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The ForceSuccessNode returns always SUCCESS or RUNNING.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.map b/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.map new file mode 100644 index 000000000..63fef68bf --- /dev/null +++ b/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.md5 b/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.md5 new file mode 100644 index 000000000..936778ca1 --- /dev/null +++ b/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.md5 @@ -0,0 +1 @@ +aaf895493d13e4c72f46ecb336b2ecee \ No newline at end of file diff --git a/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.png b/d7/dba/struct_b_t_1_1_grammar_1_1_expression_1_1math__product__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..89b2fbbc1bf103726872f785ccf80ab7555bfb63 GIT binary patch literal 6772 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::RetryNode Member List
+
+
+ +

This is the complete list of members for BT::RetryNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::RetryNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::RetryNode)BT::RetryNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
RetryNode(const std::string &name, int NTries) (defined in BT::RetryNode)BT::RetryNode
RetryNode(const std::string &name, const NodeConfig &config) (defined in BT::RetryNode)BT::RetryNode
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~RetryNode() override=default (defined in BT::RetryNode)BT::RetryNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d7/dd5/class_b_t_1_1_precondition_node.html b/d7/dd5/class_b_t_1_1_precondition_node.html new file mode 100644 index 000000000..7eeb528fb --- /dev/null +++ b/d7/dd5/class_b_t_1_1_precondition_node.html @@ -0,0 +1,343 @@ + + + + + + + +BehaviorTree: BT::PreconditionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::PreconditionNode Class Reference
+
+
+
+Inheritance diagram for BT::PreconditionNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::PreconditionNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PreconditionNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.map b/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.map new file mode 100644 index 000000000..505a3c551 --- /dev/null +++ b/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.md5 b/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.md5 new file mode 100644 index 000000000..6815448b5 --- /dev/null +++ b/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.md5 @@ -0,0 +1 @@ +d112ba063d93ef10b0cce66e2603a7f3 \ No newline at end of file diff --git a/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.png b/d7/dd6/class_b_t_1_1_while_do_else_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bb4118764ed650c13b7e9f43f972978bb50407a0 GIT binary patch literal 6368 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 OAgW55iskZFul@ruJgBY! literal 0 HcmV?d00001 diff --git a/d7/ded/class_b_t_1_1_entry_updated_decorator-members.html b/d7/ded/class_b_t_1_1_entry_updated_decorator-members.html new file mode 100644 index 000000000..92f78b53c --- /dev/null +++ b/d7/ded/class_b_t_1_1_entry_updated_decorator-members.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::EntryUpdatedDecorator Member List
+
+
+ +

This is the complete list of members for BT::EntryUpdatedDecorator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
EntryUpdatedDecorator(const std::string &name, const NodeConfig &config, NodeStatus if_not_updated) (defined in BT::EntryUpdatedDecorator)BT::EntryUpdatedDecorator
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::EntryUpdatedDecorator)BT::EntryUpdatedDecoratorinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~EntryUpdatedDecorator() override=default (defined in BT::EntryUpdatedDecorator)BT::EntryUpdatedDecorator
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d7/dee/class_b_t_1_1_test_node-members.html b/d7/dee/class_b_t_1_1_test_node-members.html new file mode 100644 index 000000000..ad47d61dd --- /dev/null +++ b/d7/dee/class_b_t_1_1_test_node-members.html @@ -0,0 +1,181 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TestNode Member List
+
+
+ +

This is the complete list of members for BT::TestNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_completed (defined in BT::TestNode)BT::TestNodeprotected
_config (defined in BT::TestNode)BT::TestNodeprotected
_failure_executor (defined in BT::TestNode)BT::TestNodeprotected
_post_executor (defined in BT::TestNode)BT::TestNodeprotected
_success_executor (defined in BT::TestNode)BT::TestNodeprotected
_timer (defined in BT::TestNode)BT::TestNodeprotected
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::StatefulActionNodeprotectedvirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
isHaltRequested() const (defined in BT::StatefulActionNode)BT::StatefulActionNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
onCompleted() (defined in BT::TestNode)BT::TestNodeprotected
onHalted() overrideBT::TestNodeprotectedvirtual
onRunning() overrideBT::TestNodeprotectedvirtual
onStart() overrideBT::TestNodeprotectedvirtual
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::TestNode)BT::TestNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
StatefulActionNode(const std::string &name, const NodeConfig &config) (defined in BT::StatefulActionNode)BT::StatefulActionNodeinline
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TestNode(const std::string &name, const NodeConfig &config, TestNodeConfig test_config) (defined in BT::TestNode)BT::TestNode
TestNode(const std::string &name, const NodeConfig &config, std::shared_ptr< TestNodeConfig > test_config) (defined in BT::TestNode)BT::TestNode
tick() override finalBT::StatefulActionNodeprotectedvirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d7/df1/delay__node_8h_source.html b/d7/df1/delay__node_8h_source.html new file mode 100644 index 000000000..1d91d42bd --- /dev/null +++ b/d7/df1/delay__node_8h_source.html @@ -0,0 +1,180 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/delay_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
delay_node.h
+
+
+
1/* Copyright (C) 2018-2023 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16#include "behaviortree_cpp/utils/timer_queue.h"
+
17#include <atomic>
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * @brief The delay node will introduce a delay and then tick the
+
23 * child returning the status of the child as it is upon completion
+
24 * The delay is in milliseconds and it is passed using the port "delay_msec".
+
25 *
+
26 * During the delay the node changes status to RUNNING
+
27 *
+
28 * Example:
+
29 *
+
30 * <Delay delay_msec="5000">
+
31 * <KeepYourBreath/>
+
32 * </Delay>
+
33 */
+
34class DelayNode : public DecoratorNode
+
35{
+
36public:
+
37 DelayNode(const std::string& name, unsigned milliseconds);
+
38
+
39 DelayNode(const std::string& name, const NodeConfig& config);
+
40
+
41 ~DelayNode() override
+
42 {
+
43 halt();
+
44 }
+
45
+
46 static PortsList providedPorts()
+
47 {
+
48 return { InputPort<unsigned>("delay_msec", "Tick the child after a few "
+
49 "milliseconds") };
+
50 }
+
51
+
52 void halt() override;
+
53
+
54private:
+
55 TimerQueue<> timer_;
+
56 uint64_t timer_id_;
+
57
+
58 virtual BT::NodeStatus tick() override;
+
59
+
60 bool delay_started_ = false;
+
61 std::atomic_bool delay_complete_ = false;
+
62 bool delay_aborted_ = false;
+
63 unsigned msec_;
+
64 bool read_parameter_from_ports_ = false;
+
65 std::mutex delay_mutex_;
+
66};
+
67
+
68} // namespace BT
+
Definition: decorator_node.h:9
+
The delay node will introduce a delay and then tick the child returning the status of the child as it...
Definition: delay_node.h:35
+
void halt() override
The method used to interrupt the execution of this node.
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d7/df4/class_b_t_1_1_any.html b/d7/df4/class_b_t_1_1_any.html new file mode 100644 index 000000000..7273fcac6 --- /dev/null +++ b/d7/df4/class_b_t_1_1_any.html @@ -0,0 +1,194 @@ + + + + + + + +BehaviorTree: BT::Any Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Any Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Any (const Any &other)
 
Any (Any &&other)
 
Any (const double &value)
 
Any (const uint64_t &value)
 
Any (const float &value)
 
Any (const std::string &str)
 
Any (const char *str)
 
Any (const SafeAny::SimpleString &str)
 
Any (const std::string_view &str)
 
+template<typename T >
 Any (const T &value, EnableIntegral< T >=0)
 
Any (const std::type_index &type)
 
+template<typename T >
 Any (const T &value, EnableNonIntegral< T >=0)
 
+Anyoperator= (const Any &other)
 
+bool isNumber () const
 
+bool isIntegral () const
 
+bool isString () const
 
+template<typename T >
bool isType () const
 
+void copyInto (Any &dst) const
 
+template<typename T >
nonstd::expected< T, std::string > tryCast () const
 
+template<typename T >
cast () const
 
+template<typename T >
T * castPtr ()
 
+const std::type_index & type () const noexcept
 
+const std::type_info & castedType () const noexcept
 
+bool empty () const noexcept
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html b/d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html new file mode 100644 index 000000000..6937cd63a --- /dev/null +++ b/d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html @@ -0,0 +1,119 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::expected_operand Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::expected_operand Struct Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr auto name = "expected operand"
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d8/d05/class_b_t_1_1_x_m_l_parser.html b/d8/d05/class_b_t_1_1_x_m_l_parser.html new file mode 100644 index 000000000..f242f006b --- /dev/null +++ b/d8/d05/class_b_t_1_1_x_m_l_parser.html @@ -0,0 +1,363 @@ + + + + + + + +BehaviorTree: BT::XMLParser Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::XMLParser Class Reference
+
+
+ +

The XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory. + More...

+ +

#include <xml_parsing.h>

+
+Inheritance diagram for BT::XMLParser:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::XMLParser:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

XMLParser (const BehaviorTreeFactory &factory)
 
XMLParser (const XMLParser &other)=delete
 
+XMLParseroperator= (const XMLParser &other)=delete
 
XMLParser (XMLParser &&other) noexcept
 
+XMLParseroperator= (XMLParser &&other) noexcept
 
void loadFromFile (const std::filesystem::path &filename, bool add_includes=true) override
 
void loadFromText (const std::string &xml_text, bool add_includes=true) override
 
std::vector< std::string > registeredBehaviorTrees () const override
 
Tree instantiateTree (const Blackboard::Ptr &root_blackboard, std::string main_tree_to_execute={}) override
 
void clearInternalState () override
 
- Public Member Functions inherited from BT::Parser
Parser (const Parser &other)=delete
 
+Parseroperator= (const Parser &other)=delete
 
Parser (Parser &&other)=default
 
+Parseroperator= (Parser &&other)=default
 
+virtual void loadFromFile (const std::filesystem::path &filename, bool add_includes=true)=0
 
+virtual void loadFromText (const std::string &xml_text, bool add_includes=true)=0
 
+virtual std::vector< std::string > registeredBehaviorTrees () const =0
 
+virtual Tree instantiateTree (const Blackboard::Ptr &root_blackboard, std::string tree_name={})=0
 
+virtual void clearInternalState ()
 
+

Detailed Description

+

The XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory.

+

Member Function Documentation

+ +

◆ clearInternalState()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::XMLParser::clearInternalState ()
+
+overridevirtual
+
+ +

Reimplemented from BT::Parser.

+ +
+
+ +

◆ instantiateTree()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Tree BT::XMLParser::instantiateTree (const Blackboard::Ptr & root_blackboard,
std::string main_tree_to_execute = {} 
)
+
+overridevirtual
+
+ +

Implements BT::Parser.

+ +
+
+ +

◆ loadFromFile()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BT::XMLParser::loadFromFile (const std::filesystem::path & filename,
bool add_includes = true 
)
+
+overridevirtual
+
+ +

Implements BT::Parser.

+ +
+
+ +

◆ loadFromText()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void BT::XMLParser::loadFromText (const std::string & xml_text,
bool add_includes = true 
)
+
+overridevirtual
+
+ +

Implements BT::Parser.

+ +
+
+ +

◆ registeredBehaviorTrees()

+ +
+
+ + + + + +
+ + + + + + + +
std::vector< std::string > BT::XMLParser::registeredBehaviorTrees () const
+
+overridevirtual
+
+ +

Implements BT::Parser.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d8/d08/class_b_t_1_1_if_then_else_node.html b/d8/d08/class_b_t_1_1_if_then_else_node.html new file mode 100644 index 000000000..72e92aae2 --- /dev/null +++ b/d8/d08/class_b_t_1_1_if_then_else_node.html @@ -0,0 +1,386 @@ + + + + + + + +BehaviorTree: BT::IfThenElseNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::IfThenElseNode Class Reference
+
+
+ +

IfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive. + More...

+ +

#include <if_then_else_node.h>

+
+Inheritance diagram for BT::IfThenElseNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::IfThenElseNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

IfThenElseNode (const std::string &name)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

IfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive.

+

The first child is the "statement" of the if.

+

If that return SUCCESS, then the second child is executed.

+

Instead, if it returned FAILURE, the third child is executed.

+

If you have only 2 children, this node will return FAILURE whenever the statement returns FAILURE.

+

This is equivalent to add AlwaysFailure as 3rd child.

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::IfThenElseNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d8/d08/class_b_t_1_1_if_then_else_node.js b/d8/d08/class_b_t_1_1_if_then_else_node.js new file mode 100644 index 000000000..a14022c5a --- /dev/null +++ b/d8/d08/class_b_t_1_1_if_then_else_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_if_then_else_node = +[ + [ "halt", "d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11", null ] +]; \ No newline at end of file diff --git a/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.map b/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.map new file mode 100644 index 000000000..5411b4435 --- /dev/null +++ b/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.md5 b/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.md5 new file mode 100644 index 000000000..2130523e2 --- /dev/null +++ b/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.md5 @@ -0,0 +1 @@ +a40f53aa1755d885de81c749412cb6fb \ No newline at end of file diff --git a/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.png b/d8/d0d/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4f2e5fbef6e8a1d9c1f0c12ce9b37a5a99d25f GIT binary patch literal 12472 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 literal 0 HcmV?d00001 diff --git a/d8/d1a/groot2__publisher_8h_source.html b/d8/d1a/groot2__publisher_8h_source.html new file mode 100644 index 000000000..fd0d73ffd --- /dev/null +++ b/d8/d1a/groot2__publisher_8h_source.html @@ -0,0 +1,191 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/groot2_publisher.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
groot2_publisher.h
+
+
+
1#pragma once
+
2
+
3#include <array>
+
4#include <future>
+
5#include "behaviortree_cpp/loggers/abstract_logger.h"
+
6#include "behaviortree_cpp/loggers/groot2_protocol.h"
+
7
+
8namespace BT
+
9{
+
10
+
11/**
+
12 * @brief The Groot2Publisher is used to create an interface between
+
13 * your BT.CPP executor and Groot2.
+
14 *
+
15 * An inter-process communication mechanism allows the two processes
+
16 * to communicate through a TCP port. The user should provide the
+
17 * port to be used in the constructor.
+
18 */
+ +
20{
+
21 static std::mutex used_ports_mutex;
+
22 static std::set<unsigned> used_ports;
+
23
+
24 using Position = Monitor::Hook::Position;
+
25
+
26public:
+
27 Groot2Publisher(const BT::Tree& tree, unsigned server_port = 1667);
+
28
+
29 ~Groot2Publisher() override;
+
30
+
31 Groot2Publisher(const Groot2Publisher& other) = delete;
+
32 Groot2Publisher& operator=(const Groot2Publisher& other) = delete;
+
33
+
34 Groot2Publisher(Groot2Publisher&& other) = default;
+
35 Groot2Publisher& operator=(Groot2Publisher&& other) = default;
+
36
+
37 /**
+
38 * @brief setMaxHeartbeatDelay is used to tell the publisher
+
39 * when a connection with Groot2 should be cancelled, if no
+
40 * heartbeat is received.
+
41 *
+
42 * Default is 5000 ms
+
43 */
+
44 void setMaxHeartbeatDelay(std::chrono::milliseconds delay);
+
45
+
46 std::chrono::milliseconds maxHeartbeatDelay() const;
+
47
+
48private:
+
49 void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
50 NodeStatus status) override;
+
51
+
52 void flush() override;
+
53
+
54 void serverLoop();
+
55
+
56 void heartbeatLoop();
+
57
+
58 void updateStatusBuffer();
+
59
+
60 std::vector<uint8_t> generateBlackboardsDump(const std::string& bb_list);
+
61
+
62 bool insertHook(Monitor::Hook::Ptr breakpoint);
+
63
+
64 bool unlockBreakpoint(Position pos, uint16_t node_uid, NodeStatus result, bool remove);
+
65
+
66 bool removeHook(Position pos, uint16_t node_uid);
+
67
+
68 void removeAllHooks();
+
69
+
70 Monitor::Hook::Ptr getHook(Position pos, uint16_t node_uid);
+
71
+
72 struct PImpl;
+
73 std::unique_ptr<PImpl> _p;
+
74
+
75 void enableAllHooks(bool enable);
+
76};
+
77} // namespace BT
+
The Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2.
Definition: groot2_publisher.h:20
+
void setMaxHeartbeatDelay(std::chrono::milliseconds delay)
setMaxHeartbeatDelay is used to tell the publisher when a connection with Groot2 should be cancelled,...
+
Definition: abstract_logger.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: groot2_protocol.h:206
+
+
+ + + + diff --git a/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.map b/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.map new file mode 100644 index 000000000..09c01d28d --- /dev/null +++ b/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.md5 b/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.md5 new file mode 100644 index 000000000..147123819 --- /dev/null +++ b/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.md5 @@ -0,0 +1 @@ +3bdded2c374f5afcaf1b4a4834525583 \ No newline at end of file diff --git a/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.png b/d8/d20/class_b_t_1_1_timeout_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e94078fad011ea0b1ed0b66732f049f3637817d6 GIT binary patch literal 6044 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 WrL~;u#x7{LLzETN<;&p~FaHfmk`UYg literal 0 HcmV?d00001 diff --git a/d8/d29/class_b_t_1_1_behavior_tree_factory-members.html b/d8/d29/class_b_t_1_1_behavior_tree_factory-members.html new file mode 100644 index 000000000..60e785b75 --- /dev/null +++ b/d8/d29/class_b_t_1_1_behavior_tree_factory-members.html @@ -0,0 +1,143 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::BehaviorTreeFactory Member List
+
+
+ +

This is the complete list of members for BT::BehaviorTreeFactory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addMetadataToManifest(const std::string &node_id, const KeyValueVector &metadata)BT::BehaviorTreeFactory
addSubstitutionRule(StringView filter, SubstitutionRule rule)BT::BehaviorTreeFactory
BehaviorTreeFactory() (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
BehaviorTreeFactory(const BehaviorTreeFactory &other)=delete (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
BehaviorTreeFactory(BehaviorTreeFactory &&other) noexcept=default (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
builders() constBT::BehaviorTreeFactory
builtinNodes() constBT::BehaviorTreeFactory
clearRegisteredBehaviorTrees()BT::BehaviorTreeFactory
clearSubstitutionRules() (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
createTree(const std::string &tree_name, Blackboard::Ptr blackboard=Blackboard::create()) (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
createTreeFromFile(const std::filesystem::path &file_path, Blackboard::Ptr blackboard=Blackboard::create())BT::BehaviorTreeFactory
createTreeFromText(const std::string &text, Blackboard::Ptr blackboard=Blackboard::create())BT::BehaviorTreeFactory
instantiateTreeNode(const std::string &name, const std::string &ID, const NodeConfig &config) constBT::BehaviorTreeFactory
loadSubstitutionRuleFromJSON(const std::string &json_text)BT::BehaviorTreeFactory
manifests() constBT::BehaviorTreeFactory
operator=(const BehaviorTreeFactory &other)=delete (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
operator=(BehaviorTreeFactory &&other) noexcept=default (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
registerBehaviorTreeFromFile(const std::filesystem::path &filename)BT::BehaviorTreeFactory
registerBehaviorTreeFromText(const std::string &xml_text)BT::BehaviorTreeFactory
registerBuilder(const TreeNodeManifest &manifest, const NodeBuilder &builder)BT::BehaviorTreeFactory
registerBuilder(const std::string &ID, const NodeBuilder &builder) (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactoryinline
registeredBehaviorTrees() constBT::BehaviorTreeFactory
registerFromPlugin(const std::string &file_path)BT::BehaviorTreeFactory
registerFromROSPlugins()BT::BehaviorTreeFactory
registerNodeType(const std::string &ID, const PortsList &ports, ExtraArgs... args)BT::BehaviorTreeFactoryinline
registerNodeType(const std::string &ID, ExtraArgs... args)BT::BehaviorTreeFactoryinline
registerScriptingEnum(StringView name, int value)BT::BehaviorTreeFactory
registerScriptingEnums()BT::BehaviorTreeFactoryinline
registerSimpleAction(const std::string &ID, const SimpleActionNode::TickFunctor &tick_functor, PortsList ports={})BT::BehaviorTreeFactory
registerSimpleCondition(const std::string &ID, const SimpleConditionNode::TickFunctor &tick_functor, PortsList ports={})BT::BehaviorTreeFactory
registerSimpleDecorator(const std::string &ID, const SimpleDecoratorNode::TickFunctor &tick_functor, PortsList ports={})BT::BehaviorTreeFactory
SubstitutionRule typedef (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
substitutionRules() constBT::BehaviorTreeFactory
unregisterBuilder(const std::string &ID)BT::BehaviorTreeFactory
~BehaviorTreeFactory() (defined in BT::BehaviorTreeFactory)BT::BehaviorTreeFactory
+
+ + + + diff --git a/d8/d29/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or-members.html b/d8/d29/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or-members.html new file mode 100644 index 000000000..d1fcd1c44 --- /dev/null +++ b/d8/d29/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::bit_or Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::bit_or, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::bit_or)BT::Grammar::Expression::bit_orstatic
operand typedef (defined in BT::Grammar::Expression::bit_or)BT::Grammar::Expression::bit_or
+
+ + + + diff --git a/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.map b/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.map new file mode 100644 index 000000000..18d366b26 --- /dev/null +++ b/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.md5 b/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.md5 new file mode 100644 index 000000000..384b2fd88 --- /dev/null +++ b/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.md5 @@ -0,0 +1 @@ +a7edb40b5020fa0fbd4ca96e55756d3f \ No newline at end of file diff --git a/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.png b/d8/d2d/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s42c8177728f1911e56c4bf0046fadf9d.png new file mode 100644 index 0000000000000000000000000000000000000000..678771233b6cd31ac7241e4af5722d0ee0d25b5a GIT binary patch literal 13729 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 N<$L$#D`d?={u|>pAIty% literal 0 HcmV?d00001 diff --git a/d8/d36/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix-members.html b/d8/d36/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix-members.html new file mode 100644 index 000000000..955ed705e --- /dev/null +++ b/d8/d36/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix-members.html @@ -0,0 +1,109 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Integer::invalid_suffix Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Integer::invalid_suffix, including all inherited members.

+ + +
name (defined in BT::Grammar::Integer::invalid_suffix)BT::Grammar::Integer::invalid_suffixstatic
+
+ + + + diff --git a/d8/d39/class_b_t_1_1_set_blackboard_node-members.html b/d8/d39/class_b_t_1_1_set_blackboard_node-members.html new file mode 100644 index 000000000..21b12089b --- /dev/null +++ b/d8/d39/class_b_t_1_1_set_blackboard_node-members.html @@ -0,0 +1,169 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SetBlackboardNode Member List
+
+
+ +

This is the complete list of members for BT::SetBlackboardNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::SetBlackboardNode)BT::SetBlackboardNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
SetBlackboardNode(const std::string &name, const NodeConfig &config) (defined in BT::SetBlackboardNode)BT::SetBlackboardNodeinline
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d8/d39/signal_8h_source.html b/d8/d39/signal_8h_source.html new file mode 100644 index 000000000..187e57c26 --- /dev/null +++ b/d8/d39/signal_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/signal.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
signal.h
+
+
+
1#ifndef SIMPLE_SIGNAL_H
+
2#define SIMPLE_SIGNAL_H
+
3
+
4#include <memory>
+
5#include <functional>
+
6#include <vector>
+
7
+
8namespace BT
+
9{
+
10/**
+
11 * Super simple Signal/Slop implementation, AKA "Observable pattern".
+
12 * The subscriber is active until it goes out of scope or Subscriber::reset() is called.
+
13 */
+
14template <typename... CallableArgs>
+
15class Signal
+
16{
+
17public:
+
18 using CallableFunction = std::function<void(CallableArgs...)>;
+
19 using Subscriber = std::shared_ptr<CallableFunction>;
+
20
+
21 void notify(CallableArgs... args)
+
22 {
+
23 for(size_t i = 0; i < subscribers_.size();)
+
24 {
+
25 if(auto sub = subscribers_[i].lock())
+
26 {
+
27 (*sub)(args...);
+
28 i++;
+
29 }
+
30 else
+
31 {
+
32 subscribers_.erase(subscribers_.begin() + i);
+
33 }
+
34 }
+
35 }
+
36
+
37 Subscriber subscribe(CallableFunction func)
+
38 {
+
39 Subscriber sub = std::make_shared<CallableFunction>(std::move(func));
+
40 subscribers_.emplace_back(sub);
+
41 return sub;
+
42 }
+
43
+
44private:
+
45 std::vector<std::weak_ptr<CallableFunction>> subscribers_;
+
46};
+
47} // namespace BT
+
48
+
49#endif // SIMPLE_SIGNAL_H
+
Definition: signal.h:16
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.map b/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.map new file mode 100644 index 000000000..2edd781a4 --- /dev/null +++ b/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.md5 b/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.md5 new file mode 100644 index 000000000..b74648c36 --- /dev/null +++ b/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.md5 @@ -0,0 +1 @@ +9da6efff5fb2d8c0f1366ce93ef7928a \ No newline at end of file diff --git a/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.png b/d8/d50/class_b_t_1_1_std_cout_logger__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c1187fadd90e181a1ce546f1b58edc4330d30fbb GIT binary patch literal 5386 zcmchbcRbW_{Krqp2$4vcnaR%HN@hkRD;e4As3>QIk~o}oWpA=a2;sPF;u4oVGvl0f z_8GsA-|zAGJ$}E(@BiQ3*o`C0GR>-~Jc;RgDeG?$q#Lm&_uZ7sFO;EDzhC9WjJXt= zRSR%g#YR$H780ym-VfW2qM|CjOx2@Yanlj@Yxz(ybAOC5?Uk{-_M8N+#ucZgHAQdn86_x%A?IAo$E%J;k$FENb|E6 zPiHFcFJFDgNy3 z^*?{<4Xa!BfNga!$@%U4D$9;`Y_n(+)$xxNg#H)*!E~=MK?`$z!kF}k7XRGuwD+KRi2&jM0Yq# ziraV74PvqI$Vgl*vrozj&26BZWi$*6DKb9CgpNPZ>n`}d^9-o)yF!&mu_GN++6 zei85AUtnfo@wd>}sPvp^HYe_HF!{7yd!)#j5p?QX4b|4xwjHZ-z#l2^{xRZ`kifc6 zba4a;4Gsv-($G zv~+bD<~tGB2+RFUa&mI69-49zj(v2#zP_&Lh=|K^NlE;!Zf>D;stZd?5r>53$UlFc zRQm0@8i&xS^6>D4gGCI0Aw4oZ_aou(tEtjZ`tz}j@^!CLF^MoRi99nPzRowN;1rjT z=m9Q9*>vOn{N3 zv~=-ZovtnEva&K;Fi+d1zGU0sQu8@*h+>gG#>BuH2S>+q+wFxO+l}d_ z>#u9Spis}&X3*AV+kP>9hd3NgF6dM-gp8)DILO82j%GA#<>=ndPCFKhoNDyJPEMBY zZEbH~u<4AtNlH#G0UejDs;YwRjX9BM>F96^3Pu{2nB28(r^pD{*1p1_Jn8c5Z(CSV zdAW((B+3_=md2WrntDf6)am$Oi~6SchnbUgpYM&0)%HE~5D_a>clLv@gEo%SU=8dk zZ&MlL>|&yIXGce9M!6bw*k%iPXjoWScuWkFXwy#o*iFxc?l@cUXX&neKY!Bq zD-v`I_;`J(_V)Jh zMC(9vsC9$4HYBI2YES@^zL@y=GbKWU`!W^P(82A@fSgVmvXB?v-V9yQY)11^Qc|rw zJ=zRROjMlm%7nzkL@I;^c0EZ}RyI5(B}K%|C#*IpDd|eZ!}Ni%WVFT7F(gL$=v>QR zYHB{m$I}m&TlRJ$SbW#(mmB(MXlQsPCBL=3dG$&hh;w0ku@}sj@HdQOdp3mj)!OJ? zE^cn&=%NwaA#vs`+Nz?Uyga(Zw1S?2!MmTxbnRMOJg-hT0>P`SoYBSZ4|MGanO#~U zyQil|^Zfbq^k@n9QL$YgYinz%esB}Ou$`~&@7!GLMOwwIPE7>!m(#$b9Tzb3gOiOQ zPw9*t{^K3&qYq(WK85BLBe?_4eVr^4j?@?o23W=Q+<{RSyoA#)@5ox~lT}kTR}@nN z<`~$9q(6IMcJ@0dw_!7fK(~Pv?|mV6ty3B7d$~hOWMAB3k#>h8bPz1KlR+*I(wSX2Q0- z_Y#E^wy6F38fTIbc;updvSal0=~HJYbP;6s2e|`T1J3egQ6X>NSM-Ugz&dxU7v7C;kXh0vTs;U&! z)TAEiB(&^`TF;)bmY0`Xy4LccfyQ!jxV+`rKzIY{$v8Ult8O$n4@eX$4a9+>l9Dic zm%>dcSBCZVbxA3y>=B$HLuhw*_nWS|lJWiAGJLZ|FJ3dH3&Aq-3pZsOs68|LJNto} zni?G|t1dvAYN!7Eq9V9x^Fhvt+kQgrufCZkK??1Pxy8i}yBMX90A~_KEV+PS*VfjQ z4I5=@UVo506Ai!0t?^=SZA{txKi>%`HnOeLBIvAL{~w^`A2%u3RQ98JWz(bo-9>VD z{o+Y3)4>|aQngHhkV6&zeIp~9%Nzmt&nAn(xs zokx>T70K-6^;Tyb`8@Jfa3lhI7=u@-4pV;7l!;#$ikf%v+UW(6AvO zO>Khu(U@ASTFT6Ip;6)Y??_8w2@ffjc2HdKJSOwa&q<#TKYu;AR7^i{tN)n3Q9Z@_ z|DFc#n@CA?yGPto;;8W8|L>P9PYYs+4u4xiw>iYjTK#Wv*-QTHS(`Q)ynR*GeFo)A z=*uYm`x_ZD!*}Zz#K*_S;?t3@;n~FxVf(ca%9;)iyfrm7N>*KbOW?DDptI9je%`}N z29}mkr2MO2|H<_Ky*RX{mG2^BG>6LcggDRsJH6{DpO6-ttm5K_P=7x^`WrXGHN0?d zfm=lM*sqGI@bHkDnvRIzo){Y&nwoY6lU#i9@}*&&sfh`I%U1AmT|3Cwm{G=K@<&$} zIR{6kKXV&>g7-~oGC-#w+u>^E_tY{a&VWyk)wnSMbEV)EyFm>RvO*>O{%vrDOY}1>c=?ivpE0}q@<(<78a3_kyJpnj-y|n`<$tMYl$z<)r{Fb*`KL)#H0|} zXV_P~mdH2v_ni*67afqoY zD<}6ChjYuX17!pai?kTXj~TEz%3T3tD=U3%ZMgXipmM-sl+@Ji0Hda?OiVuJ=5hxH z2CmkE<;`zwJo56YR<|7fZKxDHJZw^K)l|HW4W(iNXxM?pVvA+(L7~EAAtXUTL4XYZ z;K8m@aDo{Ypiry`jR!V1S;i?)^-RgLbpD9eAMY-LyjNFz1^@(xE2}d@2P!EmE91w> zLf+lA>ntQQW(WmW$cwplN|3-bb#$l{-mF1p50^8~LCa^_H*9?TDHvySb8~hHlj@3L zQ+PuM(r}(OvhN!y8Cfy;F*pYI@o#VdWpj8u25@nbgwvImFJD3e4i^&-j*i4%uRf7F z1E=8xke)xn*3i_++qfb>|0CEQ15?wm#zqAX4-Wts;{JQ?AdxgirRwsXZp8$>09-aS zTU1n}neGc@nhAuZocF^z&-RcKPQfKg>(o41g+AJqx~%KF^h zt;Nd9DpWf^KR*W0{PpYC)a;5$;o%ejp&;RK_}{){34A^ihyqX>5(afdvxi*ez#nh~ z9al1|_^hWTy9iglCBBhlrU^R2W&-$K2;&HxZQ7r<11Sn$&I4W18aeqh0TOa^bMq?W zCWwG@sBkGY-X(!2S4z^lfUmxhG(ql>X&*bajT1Cxqdn00YyvmTcTN$pH$FcueJP% z?8!n8lIQmA+#y$zgWZZCXswoqySrrLf{*lhFhOWlj>S%h`^!5kSQGrn)Sz*bQGxzl zk4f3x%QrYUJm2JIl^kr%cfq5g^78UXo2+75Z0;3clktzdy}dJ~ly?Rs&eFXCgC{4S zogRTqMD=jjvMudmo;^Mjx3{vjt@v;g51PL-OZlJt^?gFyM-qAzdurF#BC>Q86 zY*z?D0yzBRfb*K^>N$-uKX#l&KPph~EWa|g7{&6E9bgCH=@aRHT*!dx?DV(P>n zG3e4Xu?31Ov&q|Tb1f|`ppXU?UEVOG>hIA}=g*zZ_kfV_aw?PZ5*t&EiNV2;_wU~~ z^x<7wi0h3Tpa^LP2mcayFi`sj`YZ!f%p`T!i$KwSd@vs)tDqp^{m+0;KdrkKI$^+Y zNmNwy&Bk<@J~;%G26se6mTE?P82|`P z;EhbT3Nrj6^irkIEr*8Y3!wImW@0oblf+<~Hg2@9D{}BF7eGU$Z+mO2ay8`k_uUpf zb@fYrP3%op{eaPd8{QHYE}Oam96L#u59o6U%7=u50z=I84}V&E`b5qA++1NrML}U9 z1&Ab#+~=UrqjlRp^+{-!A zk#b9JIl1J{P7P2eo|iD{mSCce6+?IqaMOrp9dl`ljioz2KK}Fep}v0p*RQdoqh=Q_ zTxf_Q5{c(@zvHJ=pr4)t@KzhiSA^{Wy%yki>njM5P7yu!0*Zmh2Tnfe0ZgL{G3KDk zSmegMjRM5_?Wu6YtKJL1eo@;$1xqdJu2@^oh|DYXfGHN1m!CQu-;K=McrJEh6hyLJ zSM+(~N)&w@pOkcCXw + + + + + + diff --git a/d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.md5 b/d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.md5 new file mode 100644 index 000000000..32f0dc7ea --- /dev/null +++ b/d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.md5 @@ -0,0 +1 @@ +3e1d8d7e2c41338a3fc8117a4b416a77 \ No newline at end of file diff --git a/d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.png b/d8/d5d/class_b_t_1_1_simple_action_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9ac51c391e374ee08bb8336b2336d173fec11242 GIT binary patch literal 12031 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�n`BRKQtz$4fg)HFY!XrxN|5^+X(n3dd|nlNW#vJ zt1n$H9W>DuzMh^Q@b7j2bfWburZ?p}`DdU(qW2%9Gf+&xAcu(+LLwqD_!#sOY9#Us zw0p=7Rb642d+`qnYV7U3g~UJrG$}TpP@hN#i}EXErl;ps$VEfwI(QERRCCba9N18y zQTK!9pgRi7HG}=#3+<6=W#;z@2na~D==FmKJXzHIiV6$+>3hNG4Gj%N3$Q^Zt1z0k zbzS$^7|>3o-Fh1c#AtKSY_#}q@YB&ya@6cLDd}#o``J~9a?R-mKQNej;Kb!LQaO(P?g`#H(O5U|jUVZ1gXnBp+dz+DXuIx{peOu*c`bgGc);o~mMsfLEQB}jgA?%5 zpa+66K|y%nWj8@V7^$?)c2dre$dcrhRH@~WMCflx0E(9ddPoY#D! z67#9L`dvs^eIU6j8b#n3fI9p9ei4`j=HunMmdf{GdJuB*52Wn1mcJQjVWtrZZD@SF zSw16>0ssah5QdynID}xuE8Jh93rN108rI)WS}~Ae@X`T94OooD{o)L3vJ@Qc&B=H$ zkFVP2WdT|6f$(78Nc$# zg^Jy!-QH49_5Pp+7*(mt=b*Cd7#bR~G&8#2`^>9+BTKfq5vF98mnA{@mtR$}*Huwh z4HqB?KwfU&Rgx4$g4aDlsXkzM0u)Z|`R%n;by*C9p+cR?X?) zOK`A6dSA~EwIcP+s_blfw2%&9tYjtq`*$xedvZ0a(g>J2kZbcP7`A2x+}Jlwk=s)fSza>7zFIWVDc;rd_obh2@+cl-|tHIvpEX9yBry9 ztfdBSkfR2MhDr{!H6jB1$n%0$!b>?IR(J^tA;l@O8?x`@kAv%|%)T1^w{bMp-s&gJ zYqPVnD@6p7S@MS61y8AvgUdFpFz+p)R6EBkx%j + + + + + + +BehaviorTree: BT::PortInfo Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::PortInfo Class Reference
+
+
+
+Inheritance diagram for BT::PortInfo:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::PortInfo:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PortInfo (PortDirection direction=PortDirection::INOUT)
 
PortInfo (PortDirection direction, std::type_index type_info, StringConverter conv)
 
+PortDirection direction () const
 
+void setDescription (StringView description)
 
+template<typename T >
void setDefaultValue (const T &default_value)
 
+const std::string & description () const
 
+const AnydefaultValue () const
 
+const std::string & defaultValueString () const
 
- Public Member Functions inherited from BT::TypeInfo
TypeInfo (std::type_index type_info, StringConverter conv)
 
+const std::type_index & type () const
 
+const std::string & typeName () const
 
+Any parseString (const char *str) const
 
+Any parseString (const std::string &str) const
 
+template<typename T >
Any parseString (const T &) const
 
+bool isStronglyTyped () const
 
+const StringConverter & converter () const
 
+ + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from BT::TypeInfo
+template<typename T >
static TypeInfo Create ()
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d8/d5e/keep__running__until__failure__node_8h_source.html b/d8/d5e/keep__running__until__failure__node_8h_source.html new file mode 100644 index 000000000..76d7b29a1 --- /dev/null +++ b/d8/d5e/keep__running__until__failure__node_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/keep_running_until_failure_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
keep_running_until_failure_node.h
+
+
+
1/* Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
2* Copyright (C) 2020 Francisco Martin, Intelligent Robotics Lab (URJC) <fmrico@gmail.com>
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The KeepRunningUntilFailureNode returns always FAILURE or RUNNING.
+
22 */
+ +
24{
+
25public:
+
26 KeepRunningUntilFailureNode(const std::string& name) : DecoratorNode(name, {})
+
27 {
+
28 setRegistrationID("KeepRunningUntilFailure");
+
29 }
+
30
+
31private:
+
32 virtual BT::NodeStatus tick() override;
+
33};
+
34
+
35//------------ implementation ----------------------------
+
36
+ +
38{
+
39 setStatus(NodeStatus::RUNNING);
+
40
+
41 const NodeStatus child_state = child_node_->executeTick();
+
42
+
43 switch(child_state)
+
44 {
+
45 case NodeStatus::FAILURE: {
+
46 resetChild();
+
47 return NodeStatus::FAILURE;
+
48 }
+
49 case NodeStatus::SUCCESS: {
+
50 resetChild();
+
51 return NodeStatus::RUNNING;
+
52 }
+
53 case NodeStatus::RUNNING: {
+
54 return NodeStatus::RUNNING;
+
55 }
+
56
+
57 default: {
+
58 // TODO throw?
+
59 }
+
60 }
+
61 return status();
+
62}
+
63} // namespace BT
+
Definition: decorator_node.h:9
+ +
The KeepRunningUntilFailureNode returns always FAILURE or RUNNING.
Definition: keep_running_until_failure_node.h:24
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.map b/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.map new file mode 100644 index 000000000..a17c1735a --- /dev/null +++ b/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.md5 b/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.md5 new file mode 100644 index 000000000..27ca42419 --- /dev/null +++ b/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.md5 @@ -0,0 +1 @@ +340cc0911016a41812657e3e2bc3b31e \ No newline at end of file diff --git a/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.png b/d8/d67/struct_b_t_1_1_grammar_1_1__xid__start__character__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fffd158ee3f2bd65cfe0c508570eade5ab0cbf80 GIT binary patch literal 7231 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 + + + + + + + + + + + + + + + + + + + diff --git a/d8/d74/class_b_t_1_1_decorator_node__inherit__graph.md5 b/d8/d74/class_b_t_1_1_decorator_node__inherit__graph.md5 new file mode 100644 index 000000000..679f9c159 --- /dev/null +++ b/d8/d74/class_b_t_1_1_decorator_node__inherit__graph.md5 @@ -0,0 +1 @@ +2d7f8414d2547a24316421c973017ba8 \ No newline at end of file diff --git a/d8/d74/class_b_t_1_1_decorator_node__inherit__graph.png b/d8/d74/class_b_t_1_1_decorator_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9adbbacc7d6e5765f66be188ac6382a6f22273b7 GIT binary patch literal 80862 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 MPgg&ebxsLQ0MNQ(uK)l5 literal 0 HcmV?d00001 diff --git a/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.map b/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.map new file mode 100644 index 000000000..44aa3d249 --- /dev/null +++ b/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.md5 b/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.md5 new file mode 100644 index 000000000..081db8f27 --- /dev/null +++ b/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.md5 @@ -0,0 +1 @@ +e250a20b8281e248dec2dd45489f9827 \ No newline at end of file diff --git a/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.png b/d8/d7b/class_b_t_1_1_precondition_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e081ad04a51b610458ae099ff715342adbc633aa GIT binary patch literal 7284 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 literal 0 HcmV?d00001 diff --git a/d8/d7c/struct_b_t_1_1_blackboard_1_1_entry-members.html b/d8/d7c/struct_b_t_1_1_blackboard_1_1_entry-members.html new file mode 100644 index 000000000..d23591e6c --- /dev/null +++ b/d8/d7c/struct_b_t_1_1_blackboard_1_1_entry-members.html @@ -0,0 +1,116 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Blackboard::Entry Member List
+
+
+ +

This is the complete list of members for BT::Blackboard::Entry, including all inherited members.

+ + + + + + + + + +
Entry(const TypeInfo &_info) (defined in BT::Blackboard::Entry)BT::Blackboard::Entryinline
entry_mutex (defined in BT::Blackboard::Entry)BT::Blackboard::Entrymutable
info (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
operator=(const Entry &other) (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
sequence_id (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
stamp (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
string_converter (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
value (defined in BT::Blackboard::Entry)BT::Blackboard::Entry
+
+ + + + diff --git a/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html b/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html new file mode 100644 index 000000000..585a46192 --- /dev/null +++ b/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html @@ -0,0 +1,148 @@ + + + + + + + +BehaviorTree: BT::Grammar::BooleanLiteral Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::BooleanLiteral Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::BooleanLiteral:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::BooleanLiteral:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Classes

struct  False
 
struct  True
 
+ + + + + +

+Static Public Attributes

+static constexpr auto rule = dsl::p<True> | dsl::p<False>
 
+static constexpr auto value = lexy::construct<BT::Any>
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.js b/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.js new file mode 100644 index 000000000..b7fe212bf --- /dev/null +++ b/d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.js @@ -0,0 +1,5 @@ +var struct_b_t_1_1_grammar_1_1_boolean_literal = +[ + [ "False", "d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html", null ], + [ "True", "df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html", null ] +]; \ No newline at end of file diff --git a/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.map b/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.map new file mode 100644 index 000000000..6b9a4f221 --- /dev/null +++ b/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.md5 b/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.md5 new file mode 100644 index 000000000..568796d8e --- /dev/null +++ b/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.md5 @@ -0,0 +1 @@ +faaf72b19de56408778cd9220a6a3c6a \ No newline at end of file diff --git a/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.png b/d8/d98/struct_b_t_1_1_ast_1_1_expr_literal__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b08cee407d6dcb569a5e916d94e65f0e497ac537 GIT binary patch literal 7445 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 + + + diff --git a/d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.md5 b/d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.md5 new file mode 100644 index 000000000..8c37f71a5 --- /dev/null +++ b/d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.md5 @@ -0,0 +1 @@ +381fed27e32597b787a9cd6437789610 \ No newline at end of file diff --git a/d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.png b/d8/d98/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..347f275cb9d1588886930ada05b5570be088bddb GIT binary patch literal 5908 zcmc(jhc}#G)bB_15RpT2wzj{onYA{VmnRu6JdH?M|(vRoE^5@T?NA;`EheaXWQMBr0+)+wO z!@mfqPS!qG)8FSLgoz@To~oR0)MtJ`-t$<4ka%+hPW*z=jyWV%lJ3NpFJ(*W5J1pp z6po=qoeaBU~}fv1#9Z+y7!g`jS&df0~LMyip!rE4037;0oT;r+kDBP zUtVu$I$q~II5I!)d2n`mdRkLc(^trg*%Q^()v?LR$(TAmy*K(!+NSD`j>R^LiHV7$BO`X*ar}L^ z@)?=MtU9&0LWs)E5=u&VQLX>|r+aa^9oC<(7`U*xnLKF|e7&Qiqi3tEriON4U_dT# ziz6>DFD7H`=T9SB+Z5HS-4sapEiGhWeLVvbiTpM+6onA!1GYw#>SZl%OxK?b+FnKM z?fHVUt%Vr4xe2WdE!E zFDK{b=AJ?Y%c}aZ#@**n$0mw*gjZII+JqcFP&)i&>bPkG={)`&mg3ltENXA(xVpNU zs&}Em+t*Ov(7>pWPmMyMUbdC}Y>cf9a$039Gc4$9@|>k*WsN^M32HxG$rTV5URr-x zX+hj*k^Im$I4l%2ONTQbRHmGx4rc6Xh3MF{RHq@<)|A=j&;>y4^iE07q#Rd=^Bt35k6m2)eSLjT&YGHJu6_p}ZP@3^crFfBR#u7#3n%*f z`(L+YszN_oHDH25tC&+#QfP3~_?6FAhDJX(H#I$OX=!wRMxQ#9)NfVz_OvaB;dn1>z|~x72u+x*^!E;~BP_*v!oA zrjSsA?J9`66KpIO1OmJ+=fB1XqN$(5MP2}2r;3YWHdTU$Fhd-I0r zgPG8yCr`>T0lmGw6*V=f;wdttOjTjq80CP~VNO)Y%Ia$U+L~J*izB!v{c^Llaa(j~ zeq&Qp9f*ZDnVG$D=4f%eJVTuvD>9Bt26S79RZj!`Z{_enZ*NO$m^Tqx+0Y&F+(8 z4ULW1ukj2YsGare>g&5$EV*vn(4b+Z3;CgnQ~Kq0n7T|6eT^&ZVmD*{cq!_&Ljvn| z*8Y6p@BD@kL*|qXcy8)|I;dq3K4R``8H}bxjvtWWRD~tkJSxJ3eiL25XeXpPToGIm? zs*e4FK}`Q99Qiegrsw~GPbFNC1U?d)k;TUhm^<$q)aKue+m~tes>Q zYUrt6zjEfd`ERRF$h7ayys=3(txNo>To>!zi7?J>V$)u@fS`T?ti6yhDr;j%E(WL9 z+RdR)&sbC(_-|3;vN1E-PW*1RI1|HVrjld>mQgINzrkY6C(a^EyN#Z7t z5qsxL3%hyItA7-PN;{=f)3LuM9yXvPPtDCzgp)6%xy5<^TM2k6K_wHr#Ehs66+N4J z4hdiM6OlhGpGa_|F{B*#@-dQkHSY;XdV1oLYCQ{T1$QyU|By(=D6;=g7XQy1|11Bv zcg1Wfjyf>m>GyHDPdDV(x1vH?#Y5v-DeW&XM&Y<|vAfhidEJIzreSX=N9wjJ&z|aL zGo*zm)fA00SzBM<1r)?Rc%47mO03{lI2o)FWUqbJSY8Azfi8tQk$@l>U17;hc;^B< zSVTxzcyx4>074rNuc@z(1Qikz4vPss-b((0Dkvy0E+`)RXJl!a2-03oPOfueBH-mK z)kTuyb2}&$3J6J34NkKStjL!2g06heby+jw=NA;S`V#)>laQRE;=Rw~>Xqg_5jxe^-F?likqy+S3%ZY0Rn+tI^WOgc z(FhUfq|Ac{4>WsWaz_{phVEQrYCE#Axw-h$Ckho6725bStpOUS(p~Ukw1>B%o4Y%9 zVFBXqzE0;@S6fTqNCglO2ziuxQ8=7u^n3$Imr~FUq^hb4P^HADDgaJRO-(PfaIew` zAYZ7H|iRf~x@H>7iVn$_6Y_@(@+?riRQ3VV+F7^7&DiOK zGs^ia5-BJu+B-W(1M&Cx-N8vfKrr&pPg_r~2e=ixv5^EWr@{us1|S1kOZ}HiMFS4M z$-{FEVq{_xvDBY(PlPEFMgp0tbtHWkv`DTZU@kQe#&(6>H{X;@R2X zX2yb%iD_}9=pH_tZEd;s_V-WG#YGC-mF9^D2Y#R&+XFC!goEaQ<=?-5cnpz4E}h@z z<0A%gakAUbwR?5G?KoZMEFmSu9)Rw9TT>z+D5z#>$sXoQJnh?KMkgMr%H+e6M6W{mQU0E)A*u^og;I5;?@W@bjm#E<|e+zlgq_UsuX zyt-Qa?Cfmh=TAu|R|WHQ$uhenEPw%R`^dz`|F6Ixf(J*RIjh(uTi(&(nUs z)%IeY2FgHqiIxB`?i~;i6CF(~&GtRjpG1KPB8Q9w8P1OO*^^U z(Pr=j`%TxoEbaeLjYXqX!~RNZT3d61K;Au?_1d?M1L^ht<44zxWVYDYWXA>u+TwqJ zG{MOimzI3ak392K!=NBg+c65jQbe5-dH9vRwX-uHlbDs<#uXz4u^h6eFPR;?w)UU+ z_SRNRON%@pF?$!6*z9Z;$fef7<@xa~z>yBMQ+D|~{hhtN#7Quar@)hhe^q%B;P1Iz zX83!eeh8Ap7#4(G$wx#+CeH+v#LGZDrt65e+xMw4FV;ojaQI!ZtYXmF>X!O`wS5R2 z9@pz&g%0JcfBaqj`Ez-2BJAR#v3NKS2f)R~w zHySKN#cbN+K7JHH*&jINq?ULG25LQe#Hw<6VCv05%FfOX*V5W|p(g=>$nN|0DLD5? z*qbN6J3_wrERj%9QsVVDI5>DHUy&JQ3tSn}5DBE{1N0NZ8xp*)*$;im)92;Z6 zw=Zqk0&|)|nce;UTH-3$C;hcg_a%H-#>DZp75D>O*}>6~!}-zXMH3$E4GgHS5fYxF z)j+%PHa9mdJ)Q9O?b{wR4es% z#l^)zOe4+U!adEg!-y%rx-eYm#fmH%CWj4~yTQy{+|u&=+dWOcZ3a9jk4<^^+)~$p ziLtV>qEB)vc3r)^`msH+qtnym5N%!EpKSuVXT~N;k-DW3n#C|g7|0YxM#hT>x@7&& z<9mUev^@fX{KjxN5%BTpUb$)6&X}QUjs%Ybm2QF#uhMsfjSX^Q!kj@9o&*zo*ucdM zW<~-60t-J5DF^T3#^><)0c2))co@;~QvUH!Ho;w7SB_qmm|CUzQvDB=drzN=Sy@|a zg~TlU#$Czk>gs~?f-hPql-kzTwnGJ!K|_^OULhf&LX&cQmAxTszT@RE`p@r+?=r>K ze4FedN)yh-DX2N}>sQpzpC*yckdsOD6<#po;>dnYPA&m`|GU0USQzG%ts17Xv9UqR z!I1>;z+T*g0!SH;m>9LNc|~|zn<5gboPaOwHl-%qU}Mk*{!rSdf+_`t7i*>L9pZ;B zpvk9WVj>Y27cVI*OZlw&fl|RF>87+aBbY6~5F}^l4NyBF;hK!L z$C~x|VKp1-(oeIejE+TW)Lej3TSw;=7>T*LxuvG27RoxYihx@!c)3U3alWM(6cm&c zbfi;cWVbcfGSwC+Ze?W!98MG%7#K>g$_7S5c)7!!^sA=k<|cwR71crpOWJzP+2u-e zO7?pV`}gn11id>v>6(u^fZQ-*l~kD{E$B` qI@LB$oA;B1Kh^)8AgA^Z;s{}ogj3?3m&stv4bjmsfLE#8Mf@NARY}(X literal 0 HcmV?d00001 diff --git a/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.map b/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.map new file mode 100644 index 000000000..196828515 --- /dev/null +++ b/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.md5 b/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.md5 new file mode 100644 index 000000000..8ef12e62c --- /dev/null +++ b/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.md5 @@ -0,0 +1 @@ +af15112e6b22b5da272257ef46a04f38 \ No newline at end of file diff --git a/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.png b/d8/d9a/class_b_t_1_1_tree_observer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..316f879d8f8a6f617d493b0cf0895751e10bcdac GIT binary patch literal 4943 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 literal 0 HcmV?d00001 diff --git a/d8/d9e/loop__node_8h_source.html b/d8/d9e/loop__node_8h_source.html new file mode 100644 index 000000000..9a5068339 --- /dev/null +++ b/d8/d9e/loop__node_8h_source.html @@ -0,0 +1,290 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/loop_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
loop_node.h
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <deque>
+
16#include "behaviortree_cpp/decorator_node.h"
+
17
+
18namespace BT
+
19{
+
20
+
21// this object will allow us to modify the queue in place,
+
22// when popping, in a thread safe-way and without copying the entire queue.
+
23template <typename T>
+ +
25
+
26/**
+
27 * @brief The LoopNode class is used to pop_front elements from a std::deque.
+
28 * This element is copied into the port "value" and the child will be executed,
+
29 * as long as we have elements in the queue.
+
30 *
+
31 * See Example 4: ex04_waypoints
+
32 *
+
33 * NOTE: unless T is `Any`, `string` or `double`, you must register the loop manually into
+
34 * the factory.
+
35 */
+
36template <typename T = Any>
+
37class LoopNode : public DecoratorNode
+
38{
+
39 bool child_running_ = false;
+
40 SharedQueue<T> static_queue_;
+
41 SharedQueue<T> current_queue_;
+
42
+
43public:
+
44 LoopNode(const std::string& name, const NodeConfig& config)
+
45 : DecoratorNode(name, config)
+
46 {
+
47 auto raw_port = getRawPortValue("queue");
+
48 if(!isBlackboardPointer(raw_port))
+
49 {
+
50 static_queue_ = convertFromString<SharedQueue<T>>(raw_port);
+
51 }
+
52 }
+
53
+
54 NodeStatus tick() override
+
55 {
+
56 bool popped = false;
+
57 if(status() == NodeStatus::IDLE)
+
58 {
+
59 child_running_ = false;
+
60 // special case: the port contains a string that was converted to SharedQueue<T>
+
61 if(static_queue_)
+
62 {
+
63 current_queue_ = std::make_shared<std::deque<T>>();
+
64 *current_queue_ = *static_queue_;
+
65 }
+
66 }
+
67
+
68 // Pop value from queue, if the child is not RUNNING
+
69 if(!child_running_)
+
70 {
+
71 // if the port is static, any_ref is empty, otherwise it will keep access to
+
72 // port locked for thread-safety
+
73 AnyPtrLocked any_ref =
+
74 static_queue_ ? AnyPtrLocked() : getLockedPortContent("queue");
+
75 if(any_ref)
+
76 {
+
77 current_queue_ = any_ref.get()->cast<SharedQueue<T>>();
+
78 }
+
79
+
80 if(current_queue_ && !current_queue_->empty())
+
81 {
+
82 auto value = std::move(current_queue_->front());
+
83 current_queue_->pop_front();
+
84 popped = true;
+
85 setOutput("value", value);
+
86 }
+
87 }
+
88
+
89 if(!popped && !child_running_)
+
90 {
+
91 return getInput<NodeStatus>("if_empty").value();
+
92 }
+
93
+
94 if(status() == NodeStatus::IDLE)
+
95 {
+
96 setStatus(NodeStatus::RUNNING);
+
97 }
+
98
+
99 NodeStatus child_state = child_node_->executeTick();
+
100 child_running_ = (child_state == NodeStatus::RUNNING);
+
101
+
102 if(isStatusCompleted(child_state))
+
103 {
+ +
105 }
+
106
+
107 if(child_state == NodeStatus::FAILURE)
+
108 {
+
109 return NodeStatus::FAILURE;
+
110 }
+
111 return NodeStatus::RUNNING;
+
112 }
+
113
+
114 static PortsList providedPorts()
+
115 {
+
116 // we mark "queue" as BidirectionalPort, because the original element is modified
+
117 return { BidirectionalPort<SharedQueue<T>>("queue"),
+
118 InputPort<NodeStatus>("if_empty", NodeStatus::SUCCESS,
+
119 "Status to return if queue is empty: "
+
120 "SUCCESS, FAILURE, SKIPPED"),
+
121 OutputPort<T>("value") };
+
122 }
+
123};
+
124
+
125template <>
+
126inline SharedQueue<int> convertFromString<SharedQueue<int>>(StringView str)
+
127{
+
128 auto parts = splitString(str, ';');
+
129 SharedQueue<int> output = std::make_shared<std::deque<int>>();
+
130 for(const StringView& part : parts)
+
131 {
+ +
133 }
+
134 return output;
+
135}
+
136
+
137template <>
+ +
139{
+
140 auto parts = splitString(str, ';');
+
141 SharedQueue<bool> output = std::make_shared<std::deque<bool>>();
+
142 for(const StringView& part : parts)
+
143 {
+ +
145 }
+
146 return output;
+
147}
+
148
+
149template <>
+ +
151{
+
152 auto parts = splitString(str, ';');
+
153 SharedQueue<double> output = std::make_shared<std::deque<double>>();
+
154 for(const StringView& part : parts)
+
155 {
+ +
157 }
+
158 return output;
+
159}
+
160
+
161template <>
+
162inline SharedQueue<std::string>
+ +
164{
+
165 auto parts = splitString(str, ';');
+ +
167 for(const StringView& part : parts)
+
168 {
+ +
170 }
+
171 return output;
+
172}
+
173
+
174} // namespace BT
+
Definition: safe_any.hpp:37
+
Definition: decorator_node.h:9
+ +
The LoopNode class is used to pop_front elements from a std::deque. This element is copied into the p...
Definition: loop_node.h:38
+
NodeStatus tick() override
Method to be implemented by the user.
Definition: loop_node.h:54
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/d8/da8/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand-members.html b/d8/da8/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand-members.html new file mode 100644 index 000000000..c32e3eb0b --- /dev/null +++ b/d8/da8/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand-members.html @@ -0,0 +1,109 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::expected_operand Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::expected_operand, including all inherited members.

+ + +
name (defined in BT::Grammar::Expression::expected_operand)BT::Grammar::Expression::expected_operandstatic
+
+ + + + diff --git a/d8/db9/class_b_t_1_1_simple_condition_node-members.html b/d8/db9/class_b_t_1_1_simple_condition_node-members.html new file mode 100644 index 000000000..93250acaa --- /dev/null +++ b/d8/db9/class_b_t_1_1_simple_condition_node-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SimpleConditionNode Member List
+
+
+ +

This is the complete list of members for BT::SimpleConditionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionNode(const std::string &name, const NodeConfig &config) (defined in BT::ConditionNode)BT::ConditionNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::ConditionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
SimpleConditionNode(const std::string &name, TickFunctor tick_functor, const NodeConfig &config) (defined in BT::SimpleConditionNode)BT::SimpleConditionNode
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() overrideBT::SimpleConditionNodeprotectedvirtual
tick_functor_ (defined in BT::SimpleConditionNode)BT::SimpleConditionNodeprotected
TickFunctor typedef (defined in BT::SimpleConditionNode)BT::SimpleConditionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ConditionNode)BT::ConditionNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ConditionNode() override=default (defined in BT::ConditionNode)BT::ConditionNodevirtual
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SimpleConditionNode() override=default (defined in BT::SimpleConditionNode)BT::SimpleConditionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d8/dce/class_b_t_1_1_parser-members.html b/d8/dce/class_b_t_1_1_parser-members.html new file mode 100644 index 000000000..aacadaaeb --- /dev/null +++ b/d8/dce/class_b_t_1_1_parser-members.html @@ -0,0 +1,119 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Parser Member List
+
+
+ +

This is the complete list of members for BT::Parser, including all inherited members.

+ + + + + + + + + + + + +
clearInternalState() (defined in BT::Parser)BT::Parserinlinevirtual
instantiateTree(const Blackboard::Ptr &root_blackboard, std::string tree_name={})=0 (defined in BT::Parser)BT::Parserpure virtual
loadFromFile(const std::filesystem::path &filename, bool add_includes=true)=0 (defined in BT::Parser)BT::Parserpure virtual
loadFromText(const std::string &xml_text, bool add_includes=true)=0 (defined in BT::Parser)BT::Parserpure virtual
operator=(const Parser &other)=delete (defined in BT::Parser)BT::Parser
operator=(Parser &&other)=default (defined in BT::Parser)BT::Parser
Parser()=default (defined in BT::Parser)BT::Parser
Parser(const Parser &other)=delete (defined in BT::Parser)BT::Parser
Parser(Parser &&other)=default (defined in BT::Parser)BT::Parser
registeredBehaviorTrees() const =0 (defined in BT::Parser)BT::Parserpure virtual
~Parser()=default (defined in BT::Parser)BT::Parservirtual
+
+ + + + diff --git a/d8/dd4/class_b_t_1_1_coro_action_node.html b/d8/dd4/class_b_t_1_1_coro_action_node.html new file mode 100644 index 000000000..461a7a6b5 --- /dev/null +++ b/d8/dd4/class_b_t_1_1_coro_action_node.html @@ -0,0 +1,415 @@ + + + + + + + +BehaviorTree: BT::CoroActionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface. + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::CoroActionNode:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::CoroActionNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

CoroActionNode (const std::string &name, const NodeConfig &config)
 
+void setStatusRunningAndYield ()
 Use this method to return RUNNING and temporary "pause" the Action.
 
virtual NodeStatus executeTick () override final
 The method that should be used to invoke tick() and setStatus();.
 
+void tickImpl ()
 
void halt () override
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void destroyCoroutine ()
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + +

+Protected Attributes

+std::unique_ptr< Pimpl > _p
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The CoroActionNode class is an a good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface.

+

It is up to the user to decide when to suspend execution of the Action and resume the parent node, invoking the method setStatusRunningAndYield().

+

Member Function Documentation

+ +

◆ executeTick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::CoroActionNode::executeTick ()
+
+finaloverridevirtual
+
+ +

The method that should be used to invoke tick() and setStatus();.

+ +

Reimplemented from BT::TreeNode.

+ +
+
+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::CoroActionNode::halt ()
+
+overridevirtual
+
+

You may want to override this method. But still, remember to call this implementation too.

+

Example:

void MyAction::halt()
+{
+    // do your stuff here
+    CoroActionNode::halt();
+}
+
+

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d8/dd4/class_b_t_1_1_coro_action_node.js b/d8/dd4/class_b_t_1_1_coro_action_node.js new file mode 100644 index 000000000..3ac0162f7 --- /dev/null +++ b/d8/dd4/class_b_t_1_1_coro_action_node.js @@ -0,0 +1,6 @@ +var class_b_t_1_1_coro_action_node = +[ + [ "executeTick", "d8/dd4/class_b_t_1_1_coro_action_node.html#aaa803222d3da8331bec8d305d50235a3", null ], + [ "halt", "d8/dd4/class_b_t_1_1_coro_action_node.html#a498c45c27df7032e8fb5a6b4f782ae51", null ], + [ "setStatusRunningAndYield", "d8/dd4/class_b_t_1_1_coro_action_node.html#a3eb0ed03e4570009dcbae6fadd2c6886", null ] +]; \ No newline at end of file diff --git a/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.map b/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.map new file mode 100644 index 000000000..7cf84c661 --- /dev/null +++ b/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.md5 b/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.md5 new file mode 100644 index 000000000..936be55b2 --- /dev/null +++ b/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.md5 @@ -0,0 +1 @@ +7ea299aaef71752beccb9eb99486eb50 \ No newline at end of file diff --git a/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.png b/d8/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1logical__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5e88b69b3faf35132295fc1e7ca0b79080b2c82b GIT binary patch literal 6213 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 literal 0 HcmV?d00001 diff --git a/d8/de2/class_b_t_1_1_logic_error__coll__graph.map b/d8/de2/class_b_t_1_1_logic_error__coll__graph.map new file mode 100644 index 000000000..0d8a71ddc --- /dev/null +++ b/d8/de2/class_b_t_1_1_logic_error__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d8/de2/class_b_t_1_1_logic_error__coll__graph.md5 b/d8/de2/class_b_t_1_1_logic_error__coll__graph.md5 new file mode 100644 index 000000000..c8aebefc6 --- /dev/null +++ b/d8/de2/class_b_t_1_1_logic_error__coll__graph.md5 @@ -0,0 +1 @@ +9dc039bbe02371c5ac18417c5fb67d82 \ No newline at end of file diff --git a/d8/de2/class_b_t_1_1_logic_error__coll__graph.png b/d8/de2/class_b_t_1_1_logic_error__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..70b218a2166b8d529c2bc2a271c9f3a147697b07 GIT binary patch literal 6731 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 F{15zTDGmSt literal 0 HcmV?d00001 diff --git a/d8/de6/class_b_t_1_1_simple_decorator_node-members.html b/d8/de6/class_b_t_1_1_simple_decorator_node-members.html new file mode 100644 index 000000000..c909858ea --- /dev/null +++ b/d8/de6/class_b_t_1_1_simple_decorator_node-members.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SimpleDecoratorNode Member List
+
+
+ +

This is the complete list of members for BT::SimpleDecoratorNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
SimpleDecoratorNode(const std::string &name, TickFunctor tick_functor, const NodeConfig &config) (defined in BT::SimpleDecoratorNode)BT::SimpleDecoratorNode
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() overrideBT::SimpleDecoratorNodeprotectedvirtual
tick_functor_ (defined in BT::SimpleDecoratorNode)BT::SimpleDecoratorNodeprotected
TickFunctor typedef (defined in BT::SimpleDecoratorNode)BT::SimpleDecoratorNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~SimpleDecoratorNode() override=default (defined in BT::SimpleDecoratorNode)BT::SimpleDecoratorNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html b/d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html new file mode 100644 index 000000000..8d8595408 --- /dev/null +++ b/d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html @@ -0,0 +1,155 @@ + + + + + + + +BehaviorTree: BT::Blackboard::Entry Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Blackboard::Entry Struct Reference
+
+
+
+Collaboration diagram for BT::Blackboard::Entry:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + +

+Public Member Functions

Entry (const TypeInfo &_info)
 
+Entryoperator= (const Entry &other)
 
+ + + + + + + + + + + + + +

+Public Attributes

+Any value
 
+TypeInfo info
 
+StringConverter string_converter
 
+std::mutex entry_mutex
 
+uint64_t sequence_id = 0
 
+std::chrono::nanoseconds stamp = std::chrono::nanoseconds{ 0 }
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.map b/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.map new file mode 100644 index 000000000..64151f3c0 --- /dev/null +++ b/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.md5 b/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.md5 new file mode 100644 index 000000000..9dca64cee --- /dev/null +++ b/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.md5 @@ -0,0 +1 @@ +afef1b68f2c4476a3975a597355d24df \ No newline at end of file diff --git a/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.png b/d8/df5/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..86a83a306ce973b8eed03f905e1b9716aba31ae4 GIT binary patch literal 5977 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 F@;|+9b)f(N literal 0 HcmV?d00001 diff --git a/d8/dff/consume__queue_8h_source.html b/d8/dff/consume__queue_8h_source.html new file mode 100644 index 000000000..4774837ad --- /dev/null +++ b/d8/dff/consume__queue_8h_source.html @@ -0,0 +1,224 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/consume_queue.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
consume_queue.h
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <list>
+
16#include "behaviortree_cpp/decorator_node.h"
+
17#include "behaviortree_cpp/actions/pop_from_queue.hpp"
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * Execute the child node as long as the queue is not empty.
+
23 * At each iteration, an item of type T is popped from the "queue" and
+
24 * inserted in "popped_item".
+
25 *
+
26 * An empty queue will return SUCCESS
+
27 */
+
28
+
29template <typename T>
+
30class [[deprecated("You are encouraged to use the LoopNode instead")]] ConsumeQueue
+
31 : public DecoratorNode
+
32{
+
33public:
+
34 ConsumeQueue(const std::string& name, const NodeConfig& config)
+
35 : DecoratorNode(name, config)
+
36 {}
+
37
+
38 NodeStatus tick() override
+
39 {
+
40 // by default, return SUCCESS, even if queue is empty
+
41 NodeStatus status_to_be_returned = NodeStatus::SUCCESS;
+
42
+
43 if(running_child_)
+
44 {
+
45 NodeStatus child_state = child_node_->executeTick();
+
46 running_child_ = (child_state == NodeStatus::RUNNING);
+
47 if(running_child_)
+
48 {
+
49 return NodeStatus::RUNNING;
+
50 }
+
51 else
+
52 {
+ +
54 status_to_be_returned = child_state;
+
55 }
+
56 }
+
57
+
58 std::shared_ptr<ProtectedQueue<T>> queue;
+
59 if(getInput("queue", queue) && queue)
+
60 {
+
61 std::unique_lock<std::mutex> lk(queue->mtx);
+
62 auto& items = queue->items;
+
63
+
64 while(!items.empty())
+
65 {
+
66 setStatus(NodeStatus::RUNNING);
+
67
+
68 T val = items.front();
+
69 items.pop_front();
+
70 setOutput("popped_item", val);
+
71
+
72 lk.unlock();
+
73 NodeStatus child_state = child_node_->executeTick();
+
74 lk.lock();
+
75
+
76 running_child_ = (child_state == NodeStatus::RUNNING);
+
77 if(running_child_)
+
78 {
+
79 return NodeStatus::RUNNING;
+
80 }
+
81 else
+
82 {
+ +
84 if(child_state == NodeStatus::FAILURE)
+
85 {
+
86 return NodeStatus::FAILURE;
+
87 }
+
88 status_to_be_returned = child_state;
+
89 }
+
90 }
+
91 }
+
92
+
93 return status_to_be_returned;
+
94 }
+
95
+
96 static PortsList providedPorts()
+
97 {
+
98 return { InputPort<std::shared_ptr<ProtectedQueue<T>>>("queue"), OutputPort<T>("poppe"
+
99 "d_"
+
100 "ite"
+
101 "m") };
+
102 }
+
103
+
104private:
+
105 bool running_child_ = false;
+
106};
+
107
+
108} // namespace BT
+
Definition: consume_queue.h:32
+
NodeStatus tick() override
Method to be implemented by the user.
Definition: consume_queue.h:38
+
Definition: decorator_node.h:9
+
void haltChild()
Same as resetChild()
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
Definition: pop_from_queue.hpp:36
+
+
+ + + + diff --git a/d9/d04/any__types_8hpp_source.html b/d9/d04/any__types_8hpp_source.html new file mode 100644 index 000000000..b5a066347 --- /dev/null +++ b/d9/d04/any__types_8hpp_source.html @@ -0,0 +1,281 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/scripting/any_types.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
any_types.hpp
+
+
+
1/* Copyright (C) 2022-24 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "lexy/action/parse.hpp"
+
16#include "lexy/callback.hpp"
+
17#include "lexy/dsl.hpp"
+
18#include "lexy_ext/report_error.hpp"
+
19
+
20#include "behaviortree_cpp/utils/safe_any.hpp"
+
21
+
22namespace BT::Grammar
+
23{
+
24namespace dsl = lexy::dsl;
+
25
+ +
27{
+
28 static LEXY_CONSTEVAL auto char_class_name()
+
29 {
+
30 return "code-point.BT-start-character";
+
31 }
+
32
+
33 static LEXY_CONSTEVAL auto char_class_ascii()
+
34 {
+
35 lexy::_detail::ascii_set result;
+
36 result.insert('a', 'z');
+
37 result.insert('A', 'Z');
+
38 result.insert('_');
+
39 result.insert('@');
+
40 return result;
+
41 }
+
42
+
43 static LEXY_UNICODE_CONSTEXPR bool char_class_match_cp(char32_t cp)
+
44 {
+
45 // underscore handled as part of ASCII.
+
46 return lexy::_detail::code_point_has_properties<LEXY_UNICODE_PROPERTY(xid_start)>(cp);
+
47 }
+
48
+
49 template <typename Encoding>
+
50 static constexpr auto char_class_match_swar(lexy::_detail::swar_int c)
+
51 {
+
52 return lexyd::ascii::_alphau::template char_class_match_swar<Encoding>(c);
+
53 }
+
54};
+
55inline constexpr auto xid_start_character = _xid_start_character{};
+
56
+
57// A Unicode-aware identifier.
+
58struct Name
+
59{
+
60 static constexpr auto rule =
+ +
62
+
63 static constexpr auto value = lexy::as_string<std::string>;
+
64};
+
65
+
66//----------
+ +
68{
+
69 struct integer
+
70 {
+
71 static constexpr auto rule = dsl::sign + dsl::integer<int64_t>;
+
72 static constexpr auto value = lexy::as_integer<int64_t>;
+
73 };
+
74
+
75 struct invalid_suffix
+
76 {
+
77 static constexpr auto name = "invalid suffix on integer literal";
+
78 };
+
79
+
80 static constexpr auto rule = [] {
+
81 auto hex_integer =
+
82 (LEXY_LIT("0x") | LEXY_LIT("0X")) >> dsl::integer<int64_t, dsl::hex>;
+
83 auto regular_integer =
+
84 dsl::peek(dsl::lit_c<'-'> / dsl::lit_c<'+'> / dsl::digit<>) >> dsl::p<integer>;
+
85 auto suffix_error =
+ + + +
89 }();
+
90
+
91 static constexpr auto value = lexy::construct<int64_t>;
+
92};
+
93
+
94//----------
+ +
96{
+
97 struct invalid_suffix
+
98 {
+
99 static constexpr auto name = "invalid suffix on double literal";
+
100 };
+
101
+
102 static constexpr auto rule = [] {
+
103 auto integer_part = dsl::sign + dsl::digits<>;
+
104 auto fraction = dsl::period >> dsl::digits<>;
+
105 auto exponent = (dsl::lit_c<'e'> / dsl::lit_c<'E'>) >> (dsl::sign + dsl::digits<>);
+
106
+
107 auto suffix_error =
+ + +
110
+ + +
113 return dsl::capture(real_number);
+
114 }();
+
115
+
116 static constexpr auto value =
+ +
118 lexy::callback<BT::Any>([](std::string&& str) { return BT::Any(std::stod(str)); });
+
119};
+
120
+
121//----------
+
122//struct Variable : lexy::token_production
+
123//{
+
124// static constexpr auto rule = dsl::identifier(dsl::unicode::xid_start_underscore, dsl::unicode::xid_continue);
+
125// static constexpr auto value = lexy::as_string<std::string>;
+
126//};
+
127
+
128//----------
+ +
130{
+
131 static constexpr auto rule =
+ +
133 static constexpr auto value = lexy::as_string<std::string>;
+
134};
+
135
+
136//----------
+ +
138{
+
139 struct True
+
140 {
+
141 static constexpr auto rule = LEXY_LIT("true");
+
142 static constexpr auto value = lexy::constant(1);
+
143 };
+
144 struct False
+
145 {
+
146 static constexpr auto rule = LEXY_LIT("false");
+
147 static constexpr auto value = lexy::constant(0);
+
148 };
+
149
+
150 static constexpr auto rule = dsl::p<True> | dsl::p<False>;
+
151 static constexpr auto value = lexy::construct<BT::Any>;
+
152};
+
153
+
154//----------
+ +
156{
+
157 static constexpr auto rule =
+ +
159 static constexpr auto value = lexy::construct<BT::Any>;
+
160};
+
161
+
162} // namespace BT::Grammar
+
Definition: action_node.h:25
+
Definition: any_types.hpp:27
+
Definition: any_types.hpp:156
+
Definition: any_types.hpp:145
+
Definition: any_types.hpp:140
+
Definition: any_types.hpp:138
+
Definition: any_types.hpp:70
+
Definition: any_types.hpp:76
+
Definition: any_types.hpp:68
+
Definition: any_types.hpp:59
+
Definition: any_types.hpp:98
+
Definition: any_types.hpp:96
+
Definition: any_types.hpp:130
+
+
+ + + + diff --git a/d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html b/d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html new file mode 100644 index 000000000..91d98ab58 --- /dev/null +++ b/d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: BT::Grammar::BooleanLiteral::False Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::BooleanLiteral::False Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr auto rule = LEXY_LIT("false")
 
+static constexpr auto value = lexy::constant(0)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/d9/d0f/struct_b_t_1_1_grammar_1_1_name-members.html b/d9/d0f/struct_b_t_1_1_grammar_1_1_name-members.html new file mode 100644 index 000000000..847ffe4e2 --- /dev/null +++ b/d9/d0f/struct_b_t_1_1_grammar_1_1_name-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Name Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Name, including all inherited members.

+ + + +
rule (defined in BT::Grammar::Name)BT::Grammar::Namestatic
value (defined in BT::Grammar::Name)BT::Grammar::Namestatic
+
+ + + + diff --git a/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.map b/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.map new file mode 100644 index 000000000..2edd781a4 --- /dev/null +++ b/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.md5 b/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.md5 new file mode 100644 index 000000000..b74648c36 --- /dev/null +++ b/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.md5 @@ -0,0 +1 @@ +9da6efff5fb2d8c0f1366ce93ef7928a \ No newline at end of file diff --git a/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.png b/d9/d14/class_b_t_1_1_std_cout_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c1187fadd90e181a1ce546f1b58edc4330d30fbb GIT binary patch literal 5386 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 + + + + diff --git a/d9/d15/class_b_t_1_1_delay_node__inherit__graph.md5 b/d9/d15/class_b_t_1_1_delay_node__inherit__graph.md5 new file mode 100644 index 000000000..37d92c117 --- /dev/null +++ b/d9/d15/class_b_t_1_1_delay_node__inherit__graph.md5 @@ -0,0 +1 @@ +a431540ab2b27eb8b8c184b56719ffc0 \ No newline at end of file diff --git a/d9/d15/class_b_t_1_1_delay_node__inherit__graph.png b/d9/d15/class_b_t_1_1_delay_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..57f8a1f2ea1f5094a2f9f9d655f584dbb4868bce GIT binary patch literal 6197 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 literal 0 HcmV?d00001 diff --git a/d9/d1c/struct_b_t_1_1_ast_1_1_expr_assignment-members.html b/d9/d1c/struct_b_t_1_1_ast_1_1_expr_assignment-members.html new file mode 100644 index 000000000..35f1a15dd --- /dev/null +++ b/d9/d1c/struct_b_t_1_1_ast_1_1_expr_assignment-members.html @@ -0,0 +1,123 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprAssignment Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprAssignment, including all inherited members.

+ + + + + + + + + + + + + + + + +
assign_create enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
assign_div enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
assign_existing enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
assign_minus enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
assign_plus enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
assign_times enum value (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
evaluate(Environment &env) const override (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignmentinlinevirtual
ExprAssignment(expr_ptr _lhs, op_t op, expr_ptr _rhs) (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignmentinlineexplicit
lhs (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
op (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
op_t enum name (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
opStr() const (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignmentinline
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
rhs (defined in BT::Ast::ExprAssignment)BT::Ast::ExprAssignment
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.map b/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.map new file mode 100644 index 000000000..84d068ec2 --- /dev/null +++ b/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.md5 b/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.md5 new file mode 100644 index 000000000..e56598630 --- /dev/null +++ b/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.md5 @@ -0,0 +1 @@ +aaa1febcd8b3aab68c0a0fd7ed47fe97 \ No newline at end of file diff --git a/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.png b/d9/d1d/class_b_t_1_1_sqlite_logger__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8477434819870e4eea7ef26ace59ed50fdb876 GIT binary patch literal 5138 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 + + + + + + +BehaviorTree: BT::details::Semaphore Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::details::Semaphore Class Reference
+
+
+ + + + + + + + + + + +

+Public Member Functions

Semaphore (unsigned int count=0)
 
+void notify ()
 
+template<class Clock , class Duration >
bool waitUntil (const std::chrono::time_point< Clock, Duration > &point)
 
+void manualUnlock ()
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d9/d33/class_b_t_1_1_sleep_node.html b/d9/d33/class_b_t_1_1_sleep_node.html new file mode 100644 index 000000000..2893f39e6 --- /dev/null +++ b/d9/d33/class_b_t_1_1_sleep_node.html @@ -0,0 +1,447 @@ + + + + + + + +BehaviorTree: BT::SleepNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Sleep for a certain amount of time. Consider also using the decorator <Delay> + More...

+ +

#include <sleep_node.h>

+
+Inheritance diagram for BT::SleepNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::SleepNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SleepNode (const std::string &name, const NodeConfig &config)
 
NodeStatus onStart () override
 
NodeStatus onRunning () override
 method invoked when the action is already in the RUNNING state.
 
void onHalted () override
 
- Public Member Functions inherited from BT::StatefulActionNode
StatefulActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus onStart ()=0
 
virtual NodeStatus onRunning ()=0
 method invoked when the action is already in the RUNNING state.
 
virtual void onHalted ()=0
 
+bool isHaltRequested () const
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::StatefulActionNode
NodeStatus tick () override final
 Method to be implemented by the user.
 
void halt () override final
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

Sleep for a certain amount of time. Consider also using the decorator <Delay>

+

<Sleep msec="5000">

+

Member Function Documentation

+ +

◆ onHalted()

+ +
+
+ + + + + +
+ + + + + + + +
void BT::SleepNode::onHalted ()
+
+overridevirtual
+
+

when the method halt() is called and the action is RUNNING, this method is invoked. This is a convenient place todo a cleanup, if needed.

+ +

Implements BT::StatefulActionNode.

+ +
+
+ +

◆ onRunning()

+ +
+
+ + + + + +
+ + + + + + + +
NodeStatus BT::SleepNode::onRunning ()
+
+overridevirtual
+
+ +

method invoked when the action is already in the RUNNING state.

+ +

Implements BT::StatefulActionNode.

+ +
+
+ +

◆ onStart()

+ +
+
+ + + + + +
+ + + + + + + +
NodeStatus BT::SleepNode::onStart ()
+
+overridevirtual
+
+

Method called once, when transitioning from the state IDLE. If it returns RUNNING, this becomes an asynchronous node.

+ +

Implements BT::StatefulActionNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d9/d33/class_b_t_1_1_sleep_node.js b/d9/d33/class_b_t_1_1_sleep_node.js new file mode 100644 index 000000000..b779d823c --- /dev/null +++ b/d9/d33/class_b_t_1_1_sleep_node.js @@ -0,0 +1,6 @@ +var class_b_t_1_1_sleep_node = +[ + [ "onHalted", "d9/d33/class_b_t_1_1_sleep_node.html#af323f98260e2854ff5beb56963df0652", null ], + [ "onRunning", "d9/d33/class_b_t_1_1_sleep_node.html#afe9eb80f065e48cb68b9c571b090939b", null ], + [ "onStart", "d9/d33/class_b_t_1_1_sleep_node.html#abb3c35a140738ca2d43d1f5498972435", null ] +]; \ No newline at end of file diff --git a/d9/d3a/class_b_t_1_1scoped__demangled__name-members.html b/d9/d3a/class_b_t_1_1scoped__demangled__name-members.html new file mode 100644 index 000000000..9077749fa --- /dev/null +++ b/d9/d3a/class_b_t_1_1scoped__demangled__name-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::scoped_demangled_name Member List
+
+
+ +

This is the complete list of members for BT::scoped_demangled_name, including all inherited members.

+ + + + + + +
get() const noexcept (defined in BT::scoped_demangled_name)BT::scoped_demangled_nameinline
operator=(scoped_demangled_name const &)=delete (defined in BT::scoped_demangled_name)BT::scoped_demangled_name
scoped_demangled_name(char const *name) noexcept (defined in BT::scoped_demangled_name)BT::scoped_demangled_nameinlineexplicit
scoped_demangled_name(scoped_demangled_name const &)=delete (defined in BT::scoped_demangled_name)BT::scoped_demangled_name
~scoped_demangled_name() noexcept (defined in BT::scoped_demangled_name)BT::scoped_demangled_nameinline
+
+ + + + diff --git a/d9/d4c/class_b_t_1_1_script_condition__coll__graph.map b/d9/d4c/class_b_t_1_1_script_condition__coll__graph.map new file mode 100644 index 000000000..012c56947 --- /dev/null +++ b/d9/d4c/class_b_t_1_1_script_condition__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d9/d4c/class_b_t_1_1_script_condition__coll__graph.md5 b/d9/d4c/class_b_t_1_1_script_condition__coll__graph.md5 new file mode 100644 index 000000000..5d82928a4 --- /dev/null +++ b/d9/d4c/class_b_t_1_1_script_condition__coll__graph.md5 @@ -0,0 +1 @@ +facd1a39d07142252e92a1c3514f5105 \ No newline at end of file diff --git a/d9/d4c/class_b_t_1_1_script_condition__coll__graph.png b/d9/d4c/class_b_t_1_1_script_condition__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..05ec0cab6c5e57c0197bccca78e30c23a4e1d6e0 GIT binary patch literal 8164 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 literal 0 HcmV?d00001 diff --git a/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.map b/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.map new file mode 100644 index 000000000..2c246d334 --- /dev/null +++ b/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.md5 b/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.md5 new file mode 100644 index 000000000..fe58a4792 --- /dev/null +++ b/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.md5 @@ -0,0 +1 @@ +592872dbbdb296c80afb09191ab655ac \ No newline at end of file diff --git a/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.png b/d9/d4d/struct_b_t_1_1_ast_1_1_expr_comparison__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..514260c0ad8866d58aa50750d9e3173fad2497b0 GIT binary patch literal 5209 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 G1^y3Y=1q + + + diff --git a/d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.md5 b/d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.md5 new file mode 100644 index 000000000..136b83e0e --- /dev/null +++ b/d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.md5 @@ -0,0 +1 @@ +07085d9eb6256deffe667a3b90d6cc12 \ No newline at end of file diff --git a/d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.png b/d9/d4e/struct_b_t_1_1_grammar_1_1_real__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e3839ef4d194f79d99fa0496ba9c7e6295c2f446 GIT binary patch literal 4502 zcmc(j^wE7QBSRf>QWjDOg2?rBwM@Vr4Zfb& zh`{f)3xf%8BXTg%(Sk1jeDd2$-artwfu5GSX<#-!=c$pYPD@{&Upj%76El{KMu#Bo zjsa4z@9sam+KvobW!9t1Pi$&r-loRrm8H1ExbtTA@>>4QC?n?c>CU@S7pk6o8ak?i z7$ggK7?%>PU#fGc^@LJv%Mr>TAi}Vnoh0HGyiSyVjcDFIQ6Rp;1S5LcWiP=5(>7n8 zH4~(ZO+#+m6;t)t`(I61OSTL7F>x`8NUm4cIucJ}2mHDOquLQ)7)Z&;;w9heH9kG$kBy7FBU)hY;^EPoB5aNwA0HQ9 z>u`z7*sf?G_;g9f z<@NQ4Jh$*WvYL6SAuNYmpD{xj(lvfthAYBV)zws09lsUFaJb0n?QNH#JT*?1c%l-+ zobK-%gNVL=N=rM}KfQUKl@+&!Np#$sZ_=>(^1b*@*1>WYp~q4?dw6&_5{ZN$D(YkW zTr?JIG?c5t8co5zYkHn$7aDVwj3K|cxER+24GWLY)H>I=;`px+6FcsV74;7eN(<_& ztgOiUZNet2>=Kuk?JF$nNS&OV6!DUhlE_!DdXIK+ualDUpNN4qDLvWK^7fYC;o(V2 zNh!jqx=)Ja%%`QM@<>P+rMnLXGm2Rwlai>i<$d1a=Ia-Hw{cT%f)Q~M5fMg_8tOLi zi=W@n&o4t!Y|PAh@87@oKUh|ejfp{l_>+>8)6c41UikSU5PU@@dakanGWMNNv(Fk4 zHTA~U)*DlyBArBzo!&$al}sd3_1DooUq3(ES<5tODXIR2g`CNX2b!djFF+7ukS;SH zoYprtwU?e>s<12gMy&fPgdC0PbTg@{s`?*o8=I6*94!Xzzs}3!q-S7YkzwTIk%8+(WPE1Txe|q@s8!DWTcr1#XRgj-Q>d{cTItK^GI2Ox=o|~B&ovgIl z0U0v2wyt<027U2hXhJVO{JlJU0W;t5rZN7mdL5b51BrApr@tv zWwP?RfPlbktutkgYDnf{$cc?&(D7Gkzq#XDIo_#-VRLsn(yM&Dyb;IEC}ANXU7-|G zT7DiAp_GS@9~;ih%xEkC`TQ*?h_tr0cA0u_qqr6s5rN&ED3AOQ9Zig1Y|BC-L42+r zJ~2H$JS@o%T09j^wggZkGArjlj1Rn zoO09Hjg1X3_4YuDu%e>7ySvhm=<7XaFPHZ%SyhwDgV@ilKNf8EmO2uPi}``f^h-Kw!6`1t=e}(KW7?=ycQ7|2|wH%*45Y7u(i#tu1p%-0GEcx zoUav!YVft(Ey>68@~Fq%5hO@P9y28V=@=Ng2BsECM)O1g~;qC$XFpUI+= zGBQYbx_e`25xbQY6|h~fm!M?v5T*s}jT<+XmQ^z1Cl(Qmera|l&gDLU>Z3nFgs=}8WiR#ec< zT3R$bW^X^=Q)<2Zeg5<8OI4Roc9);)d9ICmnQ6Un!zAD9i>>Qpa*Td{ex;^D;8ORR z`^HB@GVWGq^uDr^-gfYzl#2`tC}ryWZ|ZRWc;!ZIHVd4NMUPTO0^J@QA8Wh03Gv^_ zi~tAj%9Sh2BRNXdH8liKw$c-d(a}-)=f9QfJ?El8jUb~X&J<|%n2`!To^k$D98yId z@SqU^f>$!1=L-o5`5!elHritn*fnfSP3e?XR3hmapzQ2y?~MU^UI78e(Ra77E;2;J zMI~&C{<;!2zP?gpV`CDC-Ej)XAHyGUI9eddkLGqES0Suh-E^IM+6WU+L1O?u(`d2d zdB?%*!UFr^;-W=IsEP~=dD!NCC0SYeo9FWZ_m>Vkx1(-IOZOzI{YHX9>bQ+X9h{s* z7ZhCg_4T!X^e8Gjn@z-`8X~6Th$t@?Hmk4*uW`gU{JuCg@sx!(qKoQ-U#^o*u4*9SEK{JBDFb` z@lyRI5h8u={jN00f&yJ}NeS+az}?viuxw*XOP2fQ=46Nm4<5WtPJTygZew$YG*Ux8 zn2Or9&eGS%2PNMAQ$xUP36+E_&Cd@@PEPix@QaU+_dnUQ8R+i^p1_~;6OEPu>7*H` ztE($C5-bH-#Wneln-`2GX`u3(o0|hpT?_^%QcCXTjSXkXl~q(!;A+S-$f%8NY}kuR zO78jiNXp8{{P}ZVpEk;-%+v%(4Ai}3{UV-74U}|(b^)rQLgZ{MQBAkf?8~c#8x8Cs z$2Ol3=HDkWZQBM$S$jWzG`{@(tE{zke%$0)JcFim^N3%|0323qm=pWUPXg>5 zhQCQbxq**lE3ntMed}YjXbHgknT^W@a+8Zj2`sU(v*(>!(TmQvhn$}xcQlcE4=A*k zqL?$eh0;;X?_T`(AdfIH@2}IlcPig`9SoJTof&S!dQNTdq)_04WKRda)sh^PLV`i@ zW`}N%#9x*PYaA}w9ak}v+MaR^^)Tn|7LQ;nrr1jq1e#PLEpq0B1nBt=bBemo{C;x*j`F$|9zUMO}w_WawbwUeP$udbCPHg%kOTWo)4&W_jOs<1Kr=bThdXDu}>9`a(`|P&7PEhHL%w z?_DJc%@d-C%TdmEYEh$z>C~S72)p7-9@*TRmky{6UM63AQh^b*+nzkrq@Es`60A`h zDVLWPL~D5;SLM&(K5W18)sjc=O_Tl)e|7yE#QuK=qidJR4xf_wP;8hSsVJrzjql$e zNKE`=ufDAZ(&hN~uk)az=oP*`nl)gT6(}uTy+bt-ozLt09hWx-O!hTl2Lr-Y_JAmt<$W&1XZR&$pr5Cw+%htBP`*i7 zwa=P1VCmIixuxD{&QQT#{6Y)kud^RLtxpdlnqy;0fzyyowa=xB+cZZ^Pg{ssqOSqM z(&$J|rkQUGG8f$1-0U71p-4?l6%-MPxXrJLK*+keyLb7pJ(OYwJ4E<59Mx1;-!wL+ z_VDzKOz9{ryh2V+4mS5fi)Y6;4{Z6RKYDTzK)0*y?52vG9OGQQ=gW?cju9SpEkSW{ z9pKpD=z}njPdd5XezZMlVQJ}r%~vliE0Yvd1(u-lcx zW!x^V-9?Kr($U=n;KB((rsn1arKP%p4Yu(EgM-w}%zra|!r|_@+$*1$ZVQs5p{14d zoRvYf*VIsF$$3SY3f&40RtCTp{`7DYzSY1Bky?Hngyxd9fibI8^tE&sZPJ`D{U)M|G8pIc~^sFq_ z!oj!cLs$T#AlTIHi}MQ$E{(*rpS5CFi)&tqEySt=-?cm*4py8kkcuy1x zjYeZaj&@wi+iF|U*yI!7NAJ*RI$-WMfp-wdcs>7qcqr-E2V1d!?BvAvwZSS>{%A*v zPrR2S6X^|*|La@>Wx09P-e{v}P&3fyN?lqSBgg;%ycnC7fSulk;B?V!<)<`LRd$%= zu9t8)JRF22Kynjk*gav5D@DKSu+=cftQ>F5sp*dvW!3o7YS$V_4Y+B#(dRlaMx%T8 z2ou(*I613uI$~*Lv#?PoeOsi848{jAtM1*qa)Rx(nyB0SFG1{9S67#Jc4mrjL3(;5 zAaB(4^nAfqy}i9$($ckG-s}=AOrZ9w=TlvA#VdXBtjM@HO~2fe3nV~tYu&}T$FO7BEGkRub=ElHpJYY2~Dww@78}_sBV+^@l)O2)LA~nKi zXDyHRmpHxJelQ$=op}kscV%y(rO|(f1|TC*y!K)DdWrPy4;o5JN}#nN-Wtgv#P~4D zdvk$CH7YDDETBd+3g-Ic#okw=Ych7j)75ao&~v=pe9IF`(A)$B1Te|E(RKIqL^gta zcY&t~QZh+E!shR_92|JSiR4Zjq-J0!_A4my%nSW>1_ubIcs6UhyX%&>w=KadJ~A?b z&y8hM3J`g`&>R_bvIn1U^hs9@QH-MGOaP4_I{@>pByP=vE@IA`Jg=Dw4aCy2j)+o6 zIS%&A<%F5~xK&gZ1Sx;kIx8^!n-~5A4*zG+?ILGpTS#om6q3flnz?m~v8+7CfCKEf q4L^bh=05juBmd8947;^UXgBkp>%+c}yTOYVNbi=R)_V>67yku|P_0J* literal 0 HcmV?d00001 diff --git a/d9/d7f/class_b_t_1_1_run_once_node-members.html b/d9/d7f/class_b_t_1_1_run_once_node-members.html new file mode 100644 index 000000000..5e90019a9 --- /dev/null +++ b/d9/d7f/class_b_t_1_1_run_once_node-members.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::RunOnceNode Member List
+
+
+ +

This is the complete list of members for BT::RunOnceNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::RunOnceNode)BT::RunOnceNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
RunOnceNode(const std::string &name, const NodeConfig &config) (defined in BT::RunOnceNode)BT::RunOnceNodeinline
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.map b/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.map new file mode 100644 index 000000000..196828515 --- /dev/null +++ b/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.md5 b/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.md5 new file mode 100644 index 000000000..8ef12e62c --- /dev/null +++ b/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.md5 @@ -0,0 +1 @@ +af15112e6b22b5da272257ef46a04f38 \ No newline at end of file diff --git a/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.png b/d9/d89/class_b_t_1_1_tree_observer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..316f879d8f8a6f617d493b0cf0895751e10bcdac GIT binary patch literal 4943 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 literal 0 HcmV?d00001 diff --git a/d9/d8c/class_b_t_1_1_queue_size.html b/d9/d8c/class_b_t_1_1_queue_size.html new file mode 100644 index 000000000..0bbe025a4 --- /dev/null +++ b/d9/d8c/class_b_t_1_1_queue_size.html @@ -0,0 +1,377 @@ + + + + + + + +BehaviorTree: BT::QueueSize< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::QueueSize< T > Class Template Reference
+
+
+ +

#include <pop_from_queue.hpp>

+
+Inheritance diagram for BT::QueueSize< T >:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::QueueSize< T >:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

QueueSize (const std::string &name, const NodeConfig &config)
 
NodeStatus tick () override
 Method to be implemented by the user.
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+
template<typename T>
+class BT::QueueSize< T >

Get the size of a queue. Usefull is you want to write something like:

+

<QueueSize queue="{waypoints}" size="{wp_size}" > <Repeat num_cycles="{wp_size}" > <Sequence> <PopFromQueue queue="{waypoints}" popped_item="{wp}" > <UseWaypoint waypoint="{wp}" > </Sequence> </Repeat>

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
NodeStatus BT::QueueSize< T >::tick ()
+
+inlineoverridevirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d9/d8c/class_b_t_1_1_queue_size.js b/d9/d8c/class_b_t_1_1_queue_size.js new file mode 100644 index 000000000..14afb15d4 --- /dev/null +++ b/d9/d8c/class_b_t_1_1_queue_size.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_queue_size = +[ + [ "tick", "d9/d8c/class_b_t_1_1_queue_size.html#a51bfd9e2052697530afe7433b21da0fc", null ] +]; \ No newline at end of file diff --git a/d9/d95/class_b_t_1_1_locked_ptr-members.html b/d9/d95/class_b_t_1_1_locked_ptr-members.html new file mode 100644 index 000000000..441c7bd0c --- /dev/null +++ b/d9/d95/class_b_t_1_1_locked_ptr-members.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::LockedPtr< T > Member List
+
+
+ +

This is the complete list of members for BT::LockedPtr< T >, including all inherited members.

+ + + + + + + + + + + + + + + +
assign(const OtherT &other) (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
get() const (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
lock() (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
LockedPtr()=default (defined in BT::LockedPtr< T >)BT::LockedPtr< T >
LockedPtr(T *obj, std::mutex *obj_mutex) (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
LockedPtr(LockedPtr const &)=delete (defined in BT::LockedPtr< T >)BT::LockedPtr< T >
LockedPtr(LockedPtr &&other) (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
operator bool() const (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
operator->() const (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
operator->() (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
operator=(LockedPtr const &)=delete (defined in BT::LockedPtr< T >)BT::LockedPtr< T >
operator=(LockedPtr &&other) (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
unlock() (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
~LockedPtr() (defined in BT::LockedPtr< T >)BT::LockedPtr< T >inline
+
+ + + + diff --git a/d9/d9a/class_b_t_1_1_while_do_else_node-members.html b/d9/d9a/class_b_t_1_1_while_do_else_node-members.html new file mode 100644 index 000000000..2d40d32d9 --- /dev/null +++ b/d9/d9a/class_b_t_1_1_while_do_else_node-members.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::WhileDoElseNode Member List
+
+
+ +

This is the complete list of members for BT::WhileDoElseNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::WhileDoElseNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
WhileDoElseNode(const std::string &name) (defined in BT::WhileDoElseNode)BT::WhileDoElseNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
~WhileDoElseNode() override=default (defined in BT::WhileDoElseNode)BT::WhileDoElseNodevirtual
+
+ + + + diff --git a/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.map b/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.map new file mode 100644 index 000000000..c98b1b889 --- /dev/null +++ b/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.md5 b/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.md5 new file mode 100644 index 000000000..29d672e83 --- /dev/null +++ b/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.md5 @@ -0,0 +1 @@ +c29c866a00b7b7c2120f0f38f0274f80 \ No newline at end of file diff --git a/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.png b/d9/da5/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c11d4d5c56b61f7dc8ac1d4e1957a670ea14eae7 GIT binary patch literal 6700 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 Jj|!II{{beTzcv5> literal 0 HcmV?d00001 diff --git a/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.map b/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.map new file mode 100644 index 000000000..bcc0f8f03 --- /dev/null +++ b/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.md5 b/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.md5 new file mode 100644 index 000000000..7b50e575f --- /dev/null +++ b/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.md5 @@ -0,0 +1 @@ +f2cb06735bbd15985aacbe0097b2ccde \ No newline at end of file diff --git a/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.png b/d9/da6/class_b_t_1_1_parallel_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f04a8e70f44633a164351b0800d0b605c34097e3 GIT binary patch literal 5657 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 literal 0 HcmV?d00001 diff --git a/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.map b/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.map new file mode 100644 index 000000000..3c61118f0 --- /dev/null +++ b/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.md5 b/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.md5 new file mode 100644 index 000000000..23b7992b5 --- /dev/null +++ b/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.md5 @@ -0,0 +1 @@ +583ece7610bf09e1ca592e6bd1f94988 \ No newline at end of file diff --git a/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.png b/d9/da7/struct_b_t_1_1_test_node_config__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe604f36b10dddfc2f1a8296a1436b1a756e4ed GIT binary patch literal 9485 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 J%cPAz{s#w7-%9`h literal 0 HcmV?d00001 diff --git a/d9/da8/class_b_t_1_1_json_exporter-members.html b/d9/da8/class_b_t_1_1_json_exporter-members.html new file mode 100644 index 000000000..7819a0dd4 --- /dev/null +++ b/d9/da8/class_b_t_1_1_json_exporter-members.html @@ -0,0 +1,118 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::JsonExporter Member List
+
+
+ +

This is the complete list of members for BT::JsonExporter, including all inherited members.

+ + + + + + + + + + + +
addConverter()BT::JsonExporterinline
addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)BT::JsonExporterinline
addConverter(std::function< void(const nlohmann::json &, T &)> from_json)BT::JsonExporterinline
Entry typedefBT::JsonExporter
ExpectedEntry typedef (defined in BT::JsonExporter)BT::JsonExporter
fromJson(const nlohmann::json &source) constBT::JsonExporter
fromJson(const nlohmann::json &source, std::type_index type) constBT::JsonExporter
fromJson(const nlohmann::json &source) const (defined in BT::JsonExporter)BT::JsonExporterinline
get() (defined in BT::JsonExporter)BT::JsonExporterstatic
toJson(const BT::Any &any, nlohmann::json &destination) constBT::JsonExporter
+
+ + + + diff --git a/d9/db3/struct_b_t_1_1_grammar_1_1_integer-members.html b/d9/db3/struct_b_t_1_1_grammar_1_1_integer-members.html new file mode 100644 index 000000000..874cf3511 --- /dev/null +++ b/d9/db3/struct_b_t_1_1_grammar_1_1_integer-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Integer Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Integer, including all inherited members.

+ + + +
rule (defined in BT::Grammar::Integer)BT::Grammar::Integerstatic
value (defined in BT::Grammar::Integer)BT::Grammar::Integerstatic
+
+ + + + diff --git a/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.map b/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.map new file mode 100644 index 000000000..8b6901f4b --- /dev/null +++ b/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.md5 b/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.md5 new file mode 100644 index 000000000..46447d831 --- /dev/null +++ b/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +70ca635bd5a5086f4254775378df4670 \ No newline at end of file diff --git a/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.png b/d9/db6/class_b_t_1_1_reactive_sequence__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6090d38d1acac0355ce850585ef3fb1ee71418 GIT binary patch literal 6446 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 literal 0 HcmV?d00001 diff --git a/d9/dbb/class_b_t_1_1_status_change_logger.html b/d9/dbb/class_b_t_1_1_status_change_logger.html new file mode 100644 index 000000000..0cfe4caf1 --- /dev/null +++ b/d9/dbb/class_b_t_1_1_status_change_logger.html @@ -0,0 +1,166 @@ + + + + + + + +BehaviorTree: BT::StatusChangeLogger Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::StatusChangeLogger Class Referenceabstract
+
+
+
+Inheritance diagram for BT::StatusChangeLogger:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.map b/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.map new file mode 100644 index 000000000..a6c878628 --- /dev/null +++ b/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.md5 b/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.md5 new file mode 100644 index 000000000..a88fb38a7 --- /dev/null +++ b/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.md5 @@ -0,0 +1 @@ +23e9457f053d9a7177206cbf11b61fbc \ No newline at end of file diff --git a/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.png b/d9/dc0/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..93e92fb1ac3b2987af1443d94b5ea7a3aeb3c66a GIT binary patch literal 6278 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 literal 0 HcmV?d00001 diff --git a/d9/ddd/class_b_t_1_1_sequence_node.html b/d9/ddd/class_b_t_1_1_sequence_node.html new file mode 100644 index 000000000..ba93e2cd3 --- /dev/null +++ b/d9/ddd/class_b_t_1_1_sequence_node.html @@ -0,0 +1,386 @@ + + + + + + + +BehaviorTree: BT::SequenceNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SequenceNode Class Reference
+
+
+ +

The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again. + More...

+ +

#include <sequence_node.h>

+
+Inheritance diagram for BT::SequenceNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::SequenceNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SequenceNode (const std::string &name, bool make_async=false)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again.

+
    +
  • If all the children return SUCCESS, this node returns SUCCESS.
  • +
  • If a child returns RUNNING, this node returns RUNNING. Loop is NOT restarted, the same running child will be ticked again.
  • +
  • If a child returns FAILURE, stop the loop and return FAILURE. Restart the loop only if (reset_on_failure == true)
  • +
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::SequenceNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/d9/ddd/class_b_t_1_1_sequence_node.js b/d9/ddd/class_b_t_1_1_sequence_node.js new file mode 100644 index 000000000..d82b3e169 --- /dev/null +++ b/d9/ddd/class_b_t_1_1_sequence_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_sequence_node = +[ + [ "halt", "d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716", null ] +]; \ No newline at end of file diff --git a/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.map b/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.map new file mode 100644 index 000000000..335cae0b7 --- /dev/null +++ b/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.md5 b/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.md5 new file mode 100644 index 000000000..f2fc9de36 --- /dev/null +++ b/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.md5 @@ -0,0 +1 @@ +ec08ba0a8e70db7da92f6c228e32f6e2 \ No newline at end of file diff --git a/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.png b/d9/de7/class_b_t_1_1_reactive_fallback__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0e84fa503f666ea33e461f0c13fdacae8caff574 GIT binary patch literal 6002 zcmc&&Wmr^O+un4S^w6N9peWrX2vU+N9cNIQAtfY6X{C-RIfNpiv;#=U5E3HY9Rt!0 zGBkXP^Ihlr^}WAexYq3J+Iwd0wVw4n_kBNil-@&iDsmV(1VL094^$1nH4lt$q{QIU zr{SRwxDfxPrLGEHT>fX(TvD?uEzGShF29sIZUT z@(Ps6K}OxZOR#rzW;4lRZH?@!*3KM}&X_+4+B!Hn>s;8Fd|{_XY#lA!$^u{SyAoYy z9}o}_ua?aUkFGG8q0@Kw_dkwlt1BLxx1@!{U|rXhX%kuCF2i>^pnyMB%;K6-c-E_f zpCjYqB!_pkbz4ta+oLN*;B~WZBJFekjMVs7ukZ^^(5<6SStuh0LQnq;=-#+_Q}{V6 zF}%EXAM-jg5~-Pk4^gs7P|{!5ZfK2R!>+7EmDHcZ$jHcK+K34WxvyQznZUe^-YAKT zB)!2v&Mxgis1iX<1l@SAse1pu%?u`Rdv{l4**|0`i)<-H)Gj_bIWj(;7Ca6(#72;k zliz##^qQQUT&c^1g!|0$vc2J{F!o!I}N+gY`Qr++yezzykadJ{a$%?@Ww{G3q9(rQMBO_xvNey{avnO2F=^syw zkB3M|NSw#M=4hFXjFQlBT4S5S9%yPdVShyEKYA3lzV2*nVuIzmI3#)f`Zae_2OT|q zNOCfZJ9UNW6kHK1w5sQneZJnXI#gg|XE(Aj?_zJSq^U_RWcfYvZ$9JeMAtS9=gCC@8r3_>90xbU6$p@|(uMYZwO|#my}&_Q&fB3n_(!gk&bB99&#l zRtEBRPWO7?Yr{px-+hH|-M&r7%1Q=}mf8@crlywq?LC{U_9VGe_vcDve%twT3T7cy zKR@Y8#7u1c*#=^&n1h`?x-VNDes;W{UtFwaWW?|ljoukF)KxBe%qJ$saCvrb?qDLd zl7wsqa&=fl7qPWX$HR>>Q86*{yPLIJ23E;wX$jxHNrr`m>04WKo0ypBYieqKI~kvt z7$D&a$f_tRFMs#t%NMW8S~fE)D_v+gL05t9B#uK?EjBiGaB%RdtE~GRVGM`t8O`XJ>}CYuB&$mpcqJpM%94 zYH7V01lI)();%xa&n0D_4Vf}7Z;zMZUtY27<^u@u==1EIdOJ&Ru*vN z@f|nr^z-M>UQ_g!FXZ5eN=r*=zY!4;Vbgu4=}ykTG;9J8DJ7+nFz7Ri> zlC|;-+Ut^hprO$xh$66ghFi1wT3H#MkdQE}V*LX!BZy0;CNS>Bn|lT&mK@AViFR(w{PnN zTz9@`Gch-(gbt6EGTpalmFw2nDZ#So>FGgT#LmuIS5;LtOir>RzVC!v!aIKb(zCEA zLKoff@$q3-2w*9AQquZKBVl%HE3Q3(9}e=)f8U3nhX=2sqQZ3I`a@Kt{0p4*&Rom( z!9hfAtte)#lvKT=ZC29OS)_mAy^SL0#X0i#k961WFSN)1=ef1>`h zw6%pqCUQu*&6WjccSrt?m&2-f;Ek<46>KeTi;v77Wm$tQ zY-kyxUD(=-Nw7?$*@Uy{e~6k2T8rBmw#D=CCP`IqkY+<~4einN&+M zgWD56WGf(rBKXv2ea%+SXHpHBV-QZ%`la2-O^SqjQ}io0o^D9*k>W!6-^llBH-CkK z+e+|oduS>h)1?$?>Gw*_YoP5MikmgsWZ=P|ha82@K_ekV%ED`ZcPpo-eMdO)seu&gOf~d9t$*N&&jZ1` zzCoUe&2CaBHX9lq__X-)3TaBAjByy=R{v6oxWwX)`JP{_R}?+}rG@{_Rb=@aF*6er zCthiDyeBo&fxVRDI6D@B3n|kQhVhz8_-szbQHp0a)*}L&BkA1S-G%>@hcw-S8WPls zo1_E;1*sJB8h<#rx>BpFpW{c(q^i?B#4OsrZNdIK-bDgXAbo`td{Qj8TLBlchbchf}dVizigqMuappG|@0|a)_3e z7WwYoJI*D9vvYHKM2ew?YWqhn@jBK z>PnDWfChA&KjdhR31BtM)$TJb`SeLuu)L5N0KB?@fI$A8&aSSNOAMdL$;lx^0?w;h zcS0a^xdOId4p;W~8vwBHA3HzW3f4{F*UkO)OVd5gv?w?Dd@u9Qe4OIz2~Ig*C1xS> zET@rThpv*x1)obx<5SbpRyL<eYk7~hsy=4bvIK{A;8Oe`}RuFPR*jr6Eicd%lQG%|N8Zd7lA+&1-;k2 z51`M;!a~Qz#bv6yFQKXFp1_S8#*UMOxCUCRvy02MYV(Kcahw}p5kA=H=;%-0Ys20X zfM_>yBx7SQ2}pka`t=%6#m~mZmy2C#>HyzVRgEtB%zo(0BQe)Wsok9&9zj7t8ShmF zI=b7Y<&lsc;6o6#K1|?AvoJ`Vt52RhA*Z0o9v>g)9O+~1E-btSxFC0O(wuiy0VUt1 zrCM&+!)b7X;rG^-Znk<{F5p3@u)XEJ?BC1F55QsYfb-qm-_HTm&KYN7cb%DcHeSEY_VI=P78DSiv!nP z5bxpPVIl0g%QWsBZP)X8Ttn4$rKP57Dl03Sp5458^Dilo6&5hXAUQ@R zrq{vL95SlpVfRiWa^gTeXV1{$HNt2R>44;k)qu zNvVC`M}?t_y&lCMt*vSW_3#sr%J~Ha12sE@NLJBjS)V^^thp%^|Gj2d6g~gP@88)qa}3sHgU{svlje^c z15MiSBgxlaq}My~wiz)9&H8j*t?r(`pWlb_at49-n(G(GYb7o9x+x+=iHV6)e!EvO zr@LA^J$9La&jzhwlS(Dhx*2jB;7`nJSx?4y+d3)m#9u{K^<6@O3VGP8$HnFv5j0%6 zAp81@Eoy&ubi8q$s<|)l{`L2|x|;$5uRT0GfXq$ zL?sp228d)s{lysqpkZYPrm?Yc&Iz>vx}DjDg&Z^o2S*G*%4iN*CZJ2Dyq0MJ_8`HJ zqdDbaAeb#JEdXg@{R0E~CMHqyZE<`uGO&gphQ7weECA(Nq&L>rX&D%D{6c3l$Zxt1}A0h zLFMJ;+@hlN19`g4BWFObU$zJ+6uYgh?Q9f(hSKB5i5SHu_10M~iRW%^#&a7REXs*AuEo=VhIlkkkDx(xJ6E#hezrtM}kMAID4~!A1CDp ztG=25ln^0afl~ZMzd=QcO_=_gFdch0o@tso29i-Qq-KoN-3V{MvUB4Z<0(x!piffe zQXQlHfgthZjwFN%pq+Q;9nbS^oAYol=iI0pYVO>nKpG}d(o9s+an0b(hDbu6 zR&ej8yRqYxok6JmWEi!bqKn{Fv{kX>g3NP$3jB;0DDjlbyB3H>Iq13kIxjQftzaA< z?6}HNM4Y|*`~`K5?g|85u@?V}a8WVWUz<7t&GneM|1O>{@jp*qa+3y(Oe5YNdW(g0 z#WNYxe%K2xqYE?!|CLeD@r}5x zt&PM%ELErV#xp%ns-SzKM-IVbJGZM_g`VD(ahq*Gr+@Q4>S~3>Jd5Tg)pB-r=G1+Z zI~R0K&zx*@TuAu&%@7SICqYmiy)K#ER<-g$r-$l~Y2h0{$asY(lt`!8x=Z~#NUFb0 z`%^4+rw@!xV*+IXv0uo&t>9Xigd)&0G7(7D3}wt!L2+?Lkd3z?rRxceps5kH>u&yd z|4r}s_-iUQiDh=dg!WROEz7#4q>cqQFE3SF+pG8l1XTJ#CDQ?WI-wB}@Zmy}xymB5 zZ!oWz*toKEz$E8?@)TLU(i@wtXJ&D=GiTJGEe%u4R@Tv>GB7j*-F3tm+71qkgSns+ z+(yW~4-J46drOWU2`~bgvOWD`%ce6~*v(`0*n27D(Fxp^hV^uf=&1;6YaAC1=x8Qu zytPV%{rvncOZWNuXrD`M_6L;+UeH%@1^%IPo&J6^91Yq;X=&-IfFqH2n*Z1jf3=X0 zPD~I$z-Q32w4_$1wFV0TMg=f2lxaCJ8pD&5(Ev|B0)*Dgxq^p>=ZhP&`#U8i3J4$` zK0X3gR#wpMw+$DW?F^eCctEqt!^3mq)-BLS(p{maZ;{!Wu6xtmtO~e_9*4u#4d-bg zyw~Od1wMHA5Ev_xv$L~EM#0CCCGdlTD!@xlMIQ`4$7f{30yu4MY4Kj!q6vvG%d6)O3G_452dZo!h`c z0UM7xJ2`;={`q&ZFq{~g1xRiWlqGn%jf+bRa22v@YG7q$WmUkyNE+~0fBEv|;o*Fo z``NK~G^;2vYTM zJNsnJbaqm%jg&-WXY)Z>7z}5UkVO+9;=c1rCv9y?OTPt1aK04X-Q9C?A}N&c*62o* zw5J~6_DhN`E~W+&V-youE42h9`F_wkkm1{Vdn%w?xa3;irlY+jIu4Ghyki-zA4yh0 zCUW6ZLq#P3?|uFK@gZJ5K6kK5pqfqAgmDK|lbArZ%%J0&AlAT<`Rt=}eD_eCpYB6t zCDT^@g@TBPNa?dKSV;FwZ!eNY@szeLmLmjYxUC55=5!qe=H|BS6NrA+)zlb5a>*$`WCF24W|;So2&!9MJ7kev z{p=bT!!G?*s}_U7j2!Jt3*EnepG6@+s_Dm%6QcwL${XwkwR3*5HQ&Y+9IBbqG*s}U3}8!nWhHP$LL#&DZdgBi7M_|4 z`@OXEW^Zh4tP!APN=iyq;E4n%VqmFuyvP8% zoBrR*0g}xE$#DntEbhC%H3mmUe)RMp8rq1Ua7xx!pl@hwZzltK)ZX5H*)y<)m(9XiiGnh1kM~{>2-JDC&hnU zWE#e&9?LB)&02yv765(Gi4okV237JG9G*n}YP$r9MB?do8zU|oTtmYUfC@hCy!C{>VE(rjl)|2 literal 0 HcmV?d00001 diff --git a/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.map b/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.map new file mode 100644 index 000000000..82b0ec5b8 --- /dev/null +++ b/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.md5 b/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.md5 new file mode 100644 index 000000000..54fc1d2ee --- /dev/null +++ b/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.md5 @@ -0,0 +1 @@ +be358413f0ed5d3168b9e13c5471144d \ No newline at end of file diff --git a/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.png b/d9/de9/class_b_t_1_1_behavior_tree_exception__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a975524a9509ab270e711d387129a7ff9610c91a GIT binary patch literal 9762 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 U;?IR}=?hOzT3HGqVfyNS0IGhG761SM literal 0 HcmV?d00001 diff --git a/d9/deb/struct_b_t_1_1_ast_1_1_expr_literal-members.html b/d9/deb/struct_b_t_1_1_ast_1_1_expr_literal-members.html new file mode 100644 index 000000000..57b0ea21e --- /dev/null +++ b/d9/deb/struct_b_t_1_1_ast_1_1_expr_literal-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprLiteral Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprLiteral, including all inherited members.

+ + + + + + +
evaluate(Environment &) const override (defined in BT::Ast::ExprLiteral)BT::Ast::ExprLiteralinlinevirtual
ExprLiteral(Any v) (defined in BT::Ast::ExprLiteral)BT::Ast::ExprLiteralinline
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
value (defined in BT::Ast::ExprLiteral)BT::Ast::ExprLiteral
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.map b/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.map new file mode 100644 index 000000000..0dbed3edb --- /dev/null +++ b/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.md5 b/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.md5 new file mode 100644 index 000000000..eaee1b497 --- /dev/null +++ b/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.md5 @@ -0,0 +1 @@ +0396c686b33f0bd68060ad679e90f6dc \ No newline at end of file diff --git a/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.png b/d9/df4/class_b_t_1_1_reactive_fallback__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdc74447787275fbf2b6af6ce09d924bf485bfb GIT binary patch literal 12715 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 ZrcoCpUq8B3@aqeRl(@WD={ti@{|nkpZJPi9 literal 0 HcmV?d00001 diff --git a/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.map b/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.map new file mode 100644 index 000000000..b0f2944bd --- /dev/null +++ b/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.md5 b/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.md5 new file mode 100644 index 000000000..83024630e --- /dev/null +++ b/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.md5 @@ -0,0 +1 @@ +316d04639e3c489b9c9e0053b519848c \ No newline at end of file diff --git a/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.png b/da/d05/struct_b_t_1_1_ast_1_1_expr_comparison__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e327ac15fb5b3a295a56340e5140ca21359582a7 GIT binary patch literal 20951 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%0A>AL}m;QVsvJzVsejz+ueDEs8nbf@X)>r)A z;&?;lnBs-E9SK5L{eLX;aFbQZmFG6p?imK1vMQJ#&~uPv)MKfbcfgsfo7))wU`rN( zY{^f6<9s(E*2f!1q-;VBxy2 z;A~j+g-Kl>db>tz?;w8hNZqSL*U3ZlSF0;V$s9SdzDXre)_9EGhK>`h;$1>< z_zG;zdS;m9du`+gM(gpOw-Tk_s*u686@)KFj8uMD;CBHWm_qv6zgKh5!U z&d`0u9CA+cas9XAbyWu3d=kJ!k4vUDU4(?fc*mafs0PU27(*|=5>Mto4xKz&QSs*O z+fyK8PtCsnXSkfwY9u;MXXJABLWbtvp5p&$~!YhU9t*H)f1oOVoY; zI``aj&$;&>e{h_`@B1*n^M1YFpXo)m<=WL(*+QSrC%0*gHx~mmZXP$hkQ5>!J*+$b zhUv{5iM%iF?~jc^_*16kAQn_G(=U1@r?p5Fq>^RDP`UXjf4`EqTE@dmO& zSoY%36$E;L^=2AwjIz)%H!tq%bLs2r+uroEQw0Sv+kuDx{99qYZ+?K@oZR<0Il2_eJ!Q3Xa zRO&V=m0HN*04lWQldLsNXdh<;?4Q>Jlt+d}Ha6BbG(^5jBYc2On>YWhqz8UFF|Oo0 zy`T+;?d>l&Hg0Ek*nou)B`@HBpAwQs8i_t3kQ{+A{wy!AdAee1Fm&j4=)}}i%<57o zL2)sT#U6?Z`?M~Lm(P0s$-uK`k`Da}e~ph2X+;)%I}~C1`@-li=XJj(tY=JpDJ(2h zQda)c-&0a3L{<+f)glsQ65#6J6ILn$GSLYMqF>KWB0>@z}j2i%(xIF3}qV) z%ao*M*`iElfAna(SX_c6JP#3TEnONYlA^|vUs`$u7C=Ko1D#G+Qd1l7Z?Ifn`V>W@ zlPDn~UXMjTq_4kUDv|hOm2+jeJIt&c95(5(vp|ZZ(C5oDKTG@`sXSC?hr~qlgps%+ zoy&XG<~XEK-he}BC>hqxD!z82wb2<2roSB5u@v*TMaHrQ;m#V6&T;G2f&nH`9FYBjL*z;U|&Z5@shz{?4Tt52rMKTC0Ff_ zn^nbd7#w70clSpK$a}qGfewkWKwkwm_~!JCk*hQ)N&9DJW*~rk=I1xcdvd*m5O$HvEaq!N!(K&tu09VM8{LGnvd%GuQV%y%Y*1x1xt8b01BA5pl0t zebAYYp8*e~udO9LDYuyOdi<%Xs@uY9`;@w7IJWrpNG41ShpPb9ij`|}7Y-R%3sPfu1+*mtO362Y+n>jRL5;Jj_pmacY*K2C@OicRE@b|iT zcnBCW+I;h}FJ<+$4m69D0W;VQH3=zkadGL*FC~&_zK4OWt?iZzGYbp9;K=u`RvcIb zix${!6@IB2j@<>sJ_#Wu7z&h^;nok0yTP^7^7xYn`D~>c8{C*Dg)jaM!Kwg3dK&eN zjBx z%5_r@n(OUB;@(Bu3zZB4d}2sc*_CbsFhM&8!;Hh>U^r41gttU%RvZ>T2fE54+zev) z7#?jGklG4BQpe-RuK*$lq(gJ# zc9&a-&qSirf$rf|E;kKkpPoAPpyYu(8XyI1b{jm0&p%E_$rvs2EOeP1$mL0k_5y)` z7;c3fM@VW=dG_)sIiY_Y1O+(*%i)5tU+!Qr)_Qe$A=Pm?lAnypM^`;~SiQ=igJ;Dp z-6i{syGBP-1>z{hZ{%wXt5PR9p2f}4BC5Fye_!>bOL8~jtnBRCw}yyz;l+XE_}?Gq zv2?D_EIt`B8AT_*I_HkJGmHQKVb4-(HG0hDcm&pY-%KpJj5mR4;@tr^#ZT4MG4UFB kQDEVl|MMmK!u!8e&iRT%*bNUcsZq|}_NYybm4Dj50D}q{@&Et; literal 0 HcmV?d00001 diff --git a/da/d18/struct_b_t_1_1_ast_1_1_expr_comparison-members.html b/da/d18/struct_b_t_1_1_ast_1_1_expr_comparison-members.html new file mode 100644 index 000000000..0b26d1709 --- /dev/null +++ b/da/d18/struct_b_t_1_1_ast_1_1_expr_comparison-members.html @@ -0,0 +1,121 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprComparison Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprComparison, including all inherited members.

+ + + + + + + + + + + + + + +
equal enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
evaluate(Environment &env) const override (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparisoninlinevirtual
greater enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
greater_equal enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
less enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
less_equal enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
not_equal enum value (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
op_t enum name (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
operands (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
ops (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparison
opStr(op_t op) const (defined in BT::Ast::ExprComparison)BT::Ast::ExprComparisoninline
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/da/d1e/basic__types_8h_source.html b/da/d1e/basic__types_8h_source.html new file mode 100644 index 000000000..b87557bba --- /dev/null +++ b/da/d1e/basic__types_8h_source.html @@ -0,0 +1,761 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/basic_types.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
basic_types.h
+
+
+
1#pragma once
+
2
+
3#include <chrono>
+
4#include <iostream>
+
5#include <functional>
+
6#include <string_view>
+
7#include <typeinfo>
+
8#include <unordered_map>
+
9#include <utility>
+
10#include <variant>
+
11#include <vector>
+
12
+
13#include "behaviortree_cpp/utils/safe_any.hpp"
+
14#include "behaviortree_cpp/exceptions.h"
+
15#include "behaviortree_cpp/contrib/expected.hpp"
+
16
+
17namespace BT
+
18{
+
19/// Enumerates the possible types of nodes
+
20enum class NodeType
+
21{
+
22 UNDEFINED = 0,
+
23 ACTION,
+
24 CONDITION,
+
25 CONTROL,
+
26 DECORATOR,
+
27 SUBTREE
+
28};
+
29
+
30/// Enumerates the states every node can be in after execution during a particular
+
31/// time step.
+
32/// IMPORTANT: Your custom nodes should NEVER return IDLE.
+
33enum class NodeStatus
+
34{
+
35 IDLE = 0,
+
36 RUNNING = 1,
+
37 SUCCESS = 2,
+
38 FAILURE = 3,
+
39 SKIPPED = 4,
+
40};
+
41
+
42inline bool isStatusActive(const NodeStatus& status)
+
43{
+
44 return status != NodeStatus::IDLE && status != NodeStatus::SKIPPED;
+
45}
+
46
+
47inline bool isStatusCompleted(const NodeStatus& status)
+
48{
+
49 return status == NodeStatus::SUCCESS || status == NodeStatus::FAILURE;
+
50}
+
51
+
52enum class PortDirection
+
53{
+
54 INPUT,
+
55 OUTPUT,
+
56 INOUT
+
57};
+
58
+ +
60
+
61bool StartWith(StringView str, StringView prefix);
+
62
+
63bool StartWith(StringView str, char prefix);
+
64
+
65// vector of key/value pairs
+ +
67
+
68/** Usage: given a function/method like this:
+
69 *
+
70 * Expected<double> getAnswer();
+
71 *
+
72 * User code can check result and error message like this:
+
73 *
+
74 * auto res = getAnswer();
+
75 * if( res )
+
76 * {
+
77 * std::cout << "answer was: " << res.value() << std::endl;
+
78 * }
+
79 * else{
+
80 * std::cerr << "failed to get the answer: " << res.error() << std::endl;
+
81 * }
+
82 *
+
83 * */
+
84template <typename T>
+
85using Expected = nonstd::expected<T, std::string>;
+
86
+
87struct AnyTypeAllowed
+
88{
+
89};
+
90
+
91/**
+
92 * @brief convertFromJSON will parse a json string and use JsonExporter
+
93 * to convert its content to a given type. It will work only if
+
94 * the type was previously registered. May throw if it fails.
+
95 *
+
96 * @param json_text a valid JSON string
+
97 * @param type you must specify the typeid()
+
98 * @return the object, wrapped in Any.
+
99 */
+
100[[nodiscard]] Any convertFromJSON(StringView json_text, std::type_index type);
+
101
+
102/// Same as the non template version, but with automatic casting
+
103template <typename T>
+
104[[nodiscard]] inline T convertFromJSON(StringView str)
+
105{
+
106 return convertFromJSON(str, typeid(T)).cast<T>();
+
107}
+
108
+
109/**
+
110 * convertFromString is used to convert a string into a custom type.
+
111 *
+
112 * This function is invoked under the hood by TreeNode::getInput(), but only when the
+
113 * input port contains a string.
+
114 *
+
115 * If you have a custom type, you need to implement the corresponding
+
116 * template specialization.
+
117 *
+
118 * If the string starts with the prefix "json:", it will
+
119 * fall back to convertFromJSON()
+
120 */
+
121template <typename T>
+
122[[nodiscard]] inline T convertFromString(StringView str)
+
123{
+
124 // if string starts with "json:{", try to parse it as json
+
125 if(StartWith(str, "json:"))
+
126 {
+
127 str.remove_prefix(5);
+
128 return convertFromJSON<T>(str);
+
129 }
+
130
+
131 auto type_name = BT::demangle(typeid(T));
+
132
+
133 std::cerr << "You (maybe indirectly) called BT::convertFromString() for type ["
+
134 << type_name << "], but I can't find the template specialization.\n"
+
135 << std::endl;
+
136
+
137 throw LogicError(std::string("You didn't implement the template specialization of "
+
138 "convertFromString for this type: ") +
+
139 type_name);
+
140}
+
141
+
142template <>
+
143[[nodiscard]] std::string convertFromString<std::string>(StringView str);
+
144
+
145template <>
+
146[[nodiscard]] const char* convertFromString<const char*>(StringView str);
+
147
+
148template <>
+
149[[nodiscard]] int8_t convertFromString<int8_t>(StringView str);
+
150
+
151template <>
+
152[[nodiscard]] int16_t convertFromString<int16_t>(StringView str);
+
153
+
154template <>
+
155[[nodiscard]] int32_t convertFromString<int32_t>(StringView str);
+
156
+
157template <>
+
158[[nodiscard]] int64_t convertFromString<int64_t>(StringView str);
+
159
+
160template <>
+
161[[nodiscard]] uint8_t convertFromString<uint8_t>(StringView str);
+
162
+
163template <>
+
164[[nodiscard]] uint16_t convertFromString<uint16_t>(StringView str);
+
165
+
166template <>
+
167[[nodiscard]] uint32_t convertFromString<uint32_t>(StringView str);
+
168
+
169template <>
+
170[[nodiscard]] uint64_t convertFromString<uint64_t>(StringView str);
+
171
+
172template <>
+
173[[nodiscard]] float convertFromString<float>(StringView str);
+
174
+
175template <>
+
176[[nodiscard]] double convertFromString<double>(StringView str);
+
177
+
178// Integer numbers separated by the character ";"
+
179template <>
+
180[[nodiscard]] std::vector<int> convertFromString<std::vector<int>>(StringView str);
+
181
+
182// Real numbers separated by the character ";"
+
183template <>
+
184[[nodiscard]] std::vector<double> convertFromString<std::vector<double>>(StringView str);
+
185
+
186// Strings separated by the character ";"
+
187template <>
+
188[[nodiscard]] std::vector<std::string>
+
189convertFromString<std::vector<std::string>>(StringView str);
+
190
+
191// This recognizes either 0/1, true/false, TRUE/FALSE
+
192template <>
+
193[[nodiscard]] bool convertFromString<bool>(StringView str);
+
194
+
195// Names with all capital letters
+
196template <>
+
197[[nodiscard]] NodeStatus convertFromString<NodeStatus>(StringView str);
+
198
+
199// Names with all capital letters
+
200template <>
+
201[[nodiscard]] NodeType convertFromString<NodeType>(StringView str);
+
202
+
203template <>
+
204[[nodiscard]] PortDirection convertFromString<PortDirection>(StringView str);
+
205
+ +
207
+ +
209
+
210// helper function
+
211template <typename T>
+
212[[nodiscard]] inline StringConverter GetAnyFromStringFunctor()
+
213{
+
214 if constexpr(std::is_constructible_v<StringView, T>)
+
215 {
+
216 return [](StringView str) { return Any(str); };
+
217 }
+
218 else if constexpr(std::is_same_v<BT::AnyTypeAllowed, T> || std::is_enum_v<T>)
+
219 {
+
220 return {};
+
221 }
+
222 else
+
223 {
+
224 return [](StringView str) { return Any(convertFromString<T>(str)); };
+
225 }
+
226}
+
227
+
228template <>
+
229[[nodiscard]] inline StringConverter GetAnyFromStringFunctor<void>()
+
230{
+
231 return {};
+
232}
+
233
+
234//------------------------------------------------------------------
+
235
+
236template <typename T>
+
237constexpr bool IsConvertibleToString()
+
238{
+
239 return std::is_convertible_v<T, std::string> ||
+
240 std::is_convertible_v<T, std::string_view>;
+
241}
+
242
+
243Expected<std::string> toJsonString(const Any& value);
+
244
+
245/**
+
246 * @brief toStr is the reverse operation of convertFromString.
+
247 *
+
248 * If T is a custom type and there is no template specialization,
+
249 * it will try to fall back to toJsonString()
+
250 */
+
251template <typename T>
+
252[[nodiscard]] std::string toStr(const T& value)
+
253{
+
254 if constexpr(IsConvertibleToString<T>())
+
255 {
+
256 return static_cast<std::string>(value);
+
257 }
+
258 else if constexpr(!std::is_arithmetic_v<T>)
+
259 {
+
260 if(auto str = toJsonString(Any(value)))
+
261 {
+
262 return *str;
+
263 }
+
264
+
265 throw LogicError(StrCat("Function BT::toStr<T>() not specialized for type [",
+
266 BT::demangle(typeid(T)), "]"));
+
267 }
+
268 else
+
269 {
+
270 return std::to_string(value);
+
271 }
+
272}
+
273
+
274template <>
+
275[[nodiscard]] std::string toStr<bool>(const bool& value);
+
276
+
277template <>
+
278[[nodiscard]] std::string toStr<std::string>(const std::string& value);
+
279
+
280template <>
+
281[[nodiscard]] std::string toStr<BT::NodeStatus>(const BT::NodeStatus& status);
+
282
+
283/**
+
284 * @brief toStr converts NodeStatus to string. Optionally colored.
+
285 */
+
286[[nodiscard]] std::string toStr(BT::NodeStatus status, bool colored);
+
287
+
288std::ostream& operator<<(std::ostream& os, const BT::NodeStatus& status);
+
289
+
290template <>
+
291[[nodiscard]] std::string toStr<BT::NodeType>(const BT::NodeType& type);
+
292
+
293std::ostream& operator<<(std::ostream& os, const BT::NodeType& type);
+
294
+
295template <>
+
296[[nodiscard]] std::string toStr<BT::PortDirection>(const BT::PortDirection& direction);
+
297
+
298std::ostream& operator<<(std::ostream& os, const BT::PortDirection& type);
+
299
+
300// Small utility, unless you want to use <boost/algorithm/string.hpp>
+
301[[nodiscard]] std::vector<StringView> splitString(const StringView& strToSplit,
+
302 char delimeter);
+
303
+
304template <typename Predicate>
+
305using enable_if = typename std::enable_if<Predicate::value>::type*;
+
306
+
307template <typename Predicate>
+
308using enable_if_not = typename std::enable_if<!Predicate::value>::type*;
+
309
+
310#ifdef USE_BTCPP3_OLD_NAMES
+
311// note: we also use the name Optional instead of expected because it is more intuitive
+
312// for users that are not up to date with "modern" C++
+
313template <typename T>
+
314using Optional = nonstd::expected<T, std::string>;
+
315#endif
+
316
+
317/** Usage: given a function/method like:
+
318 *
+
319 * Result DoSomething();
+
320 *
+
321 * User code can check result and error message like this:
+
322 *
+
323 * auto res = DoSomething();
+
324 * if( res )
+
325 * {
+
326 * std::cout << "DoSomething() done " << std::endl;
+
327 * }
+
328 * else{
+
329 * std::cerr << "DoSomething() failed with message: " << res.error() << std::endl;
+
330 * }
+
331 *
+
332 * */
+
333using Result = Expected<std::monostate>;
+
334
+
335struct Timestamp
+
336{
+
337 // Number being incremented every time a new value is written
+
338 uint64_t seq = 0;
+
339 // Last update time. Nanoseconds since epoch
+
340 std::chrono::nanoseconds time = std::chrono::nanoseconds(0);
+
341};
+
342
+
343[[nodiscard]] bool IsAllowedPortName(StringView str);
+
344
+
345[[nodiscard]] bool IsReservedAttribute(StringView str);
+
346
+
347class TypeInfo
+
348{
+
349public:
+
350 template <typename T>
+
351 static TypeInfo Create()
+
352 {
+
353 return TypeInfo{ typeid(T), GetAnyFromStringFunctor<T>() };
+
354 }
+
355
+
356 TypeInfo() : type_info_(typeid(AnyTypeAllowed)), type_str_("AnyTypeAllowed")
+
357 {}
+
358
+
359 TypeInfo(std::type_index type_info, StringConverter conv)
+
360 : type_info_(type_info), converter_(conv), type_str_(BT::demangle(type_info))
+
361 {}
+
362
+
363 [[nodiscard]] const std::type_index& type() const;
+
364
+
365 [[nodiscard]] const std::string& typeName() const;
+
366
+
367 [[nodiscard]] Any parseString(const char* str) const;
+
368
+
369 [[nodiscard]] Any parseString(const std::string& str) const;
+
370
+
371 template <typename T>
+
372 [[nodiscard]] Any parseString(const T&) const
+
373 {
+
374 // avoid compilation errors
+
375 return {};
+
376 }
+
377
+
378 [[nodiscard]] bool isStronglyTyped() const
+
379 {
+
380 return type_info_ != typeid(AnyTypeAllowed) && type_info_ != typeid(BT::Any);
+
381 }
+
382
+
383 [[nodiscard]] const StringConverter& converter() const
+
384 {
+
385 return converter_;
+
386 }
+
387
+
388private:
+
389 std::type_index type_info_;
+
390 StringConverter converter_;
+
391 std::string type_str_;
+
392};
+
393
+
394class PortInfo : public TypeInfo
+
395{
+
396public:
+
397 PortInfo(PortDirection direction = PortDirection::INOUT)
+
398 : TypeInfo(), direction_(direction)
+
399 {}
+
400
+
401 PortInfo(PortDirection direction, std::type_index type_info, StringConverter conv)
+
402 : TypeInfo(type_info, conv), direction_(direction)
+
403 {}
+
404
+
405 [[nodiscard]] PortDirection direction() const;
+
406
+
407 void setDescription(StringView description);
+
408
+
409 template <typename T>
+
410 void setDefaultValue(const T& default_value)
+
411 {
+
412 default_value_ = Any(default_value);
+
413 try
+
414 {
+
415 default_value_str_ = BT::toStr(default_value);
+
416 }
+
417 catch(LogicError&)
+
418 {}
+
419 }
+
420
+
421 [[nodiscard]] const std::string& description() const;
+
422
+
423 [[nodiscard]] const Any& defaultValue() const;
+
424
+
425 [[nodiscard]] const std::string& defaultValueString() const;
+
426
+
427private:
+
428 PortDirection direction_;
+
429 std::string description_;
+
430 Any default_value_;
+
431 std::string default_value_str_;
+
432};
+
433
+
434template <typename T = AnyTypeAllowed>
+
435[[nodiscard]] std::pair<std::string, PortInfo> CreatePort(PortDirection direction,
+
436 StringView name,
+
437 StringView description = {})
+
438{
+
439 auto sname = static_cast<std::string>(name);
+
440 if(!IsAllowedPortName(sname))
+
441 {
+
442 throw RuntimeError("The name of a port must not be `name` or `ID` "
+
443 "and must start with an alphabetic character. "
+
444 "Underscore is reserved.");
+
445 }
+
446
+
447 std::pair<std::string, PortInfo> out;
+
448
+
449 if(std::is_same<T, void>::value)
+
450 {
+
451 out = { sname, PortInfo(direction) };
+
452 }
+
453 else
+
454 {
+
455 out = { sname, PortInfo(direction, typeid(T), GetAnyFromStringFunctor<T>()) };
+
456 }
+
457 if(!description.empty())
+
458 {
+
459 out.second.setDescription(description);
+
460 }
+
461 return out;
+
462}
+
463
+
464//----------
+
465/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT, ...)
+
466 *
+
467 * @param name the name of the port
+
468 * @param description optional human-readable description
+
469 */
+
470template <typename T = AnyTypeAllowed>
+
471[[nodiscard]] inline std::pair<std::string, PortInfo>
+
472InputPort(StringView name, StringView description = {})
+
473{
+
474 return CreatePort<T>(PortDirection::INPUT, name, description);
+
475}
+
476
+
477/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
+
478 *
+
479 * @param name the name of the port
+
480 * @param description optional human-readable description
+
481 */
+
482template <typename T = AnyTypeAllowed>
+
483[[nodiscard]] inline std::pair<std::string, PortInfo>
+
484OutputPort(StringView name, StringView description = {})
+
485{
+
486 return CreatePort<T>(PortDirection::OUTPUT, name, description);
+
487}
+
488
+
489/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
+
490 *
+
491 * @param name the name of the port
+
492 * @param description optional human-readable description
+
493 */
+
494template <typename T = AnyTypeAllowed>
+
495[[nodiscard]] inline std::pair<std::string, PortInfo>
+
496BidirectionalPort(StringView name, StringView description = {})
+
497{
+
498 return CreatePort<T>(PortDirection::INOUT, name, description);
+
499}
+
500//----------
+
501
+
502namespace details
+
503{
+
504
+
505template <typename T = AnyTypeAllowed, typename DefaultT = T>
+
506[[nodiscard]] inline std::pair<std::string, PortInfo>
+
507PortWithDefault(PortDirection direction, StringView name, const DefaultT& default_value,
+
508 StringView description)
+
509{
+
510 static_assert(IsConvertibleToString<DefaultT>() || std::is_convertible_v<T, DefaultT> ||
+
511 std::is_constructible_v<T, DefaultT>,
+
512 "The default value must be either the same of the port or string");
+
513
+
514 auto out = CreatePort<T>(direction, name, description);
+
515
+
516 if constexpr(std::is_constructible_v<T, DefaultT>)
+
517 {
+
518 out.second.setDefaultValue(T(default_value));
+
519 }
+
520 else if constexpr(IsConvertibleToString<DefaultT>())
+
521 {
+
522 out.second.setDefaultValue(std::string(default_value));
+
523 }
+
524 else
+
525 {
+
526 out.second.setDefaultValue(default_value);
+
527 }
+
528 return out;
+
529}
+
530
+
531} // end namespace details
+
532
+
533/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT,...)
+
534 * It also sets the PortInfo::defaultValue()
+
535 *
+
536 * @param name the name of the port
+
537 * @param default_value default value of the port, either type T of BlackboardKey
+
538 * @param description optional human-readable description
+
539 */
+
540template <typename T = AnyTypeAllowed, typename DefaultT = T>
+
541[[nodiscard]] inline std::pair<std::string, PortInfo>
+
542InputPort(StringView name, const DefaultT& default_value, StringView description)
+
543{
+
544 return details::PortWithDefault<T, DefaultT>(PortDirection::INPUT, name, default_value,
+
545 description);
+
546}
+
547
+
548/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
+
549 * It also sets the PortInfo::defaultValue()
+
550 *
+
551 * @param name the name of the port
+
552 * @param default_value default value of the port, either type T of BlackboardKey
+
553 * @param description optional human-readable description
+
554 */
+
555template <typename T = AnyTypeAllowed, typename DefaultT = T>
+
556[[nodiscard]] inline std::pair<std::string, PortInfo>
+
557BidirectionalPort(StringView name, const DefaultT& default_value, StringView description)
+
558{
+
559 return details::PortWithDefault<T, DefaultT>(PortDirection::INOUT, name, default_value,
+
560 description);
+
561}
+
562
+
563/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
+
564 * It also sets the PortInfo::defaultValue()
+
565 *
+
566 * @param name the name of the port
+
567 * @param default_value default blackboard entry where the output is written
+
568 * @param description optional human-readable description
+
569 */
+
570template <typename T = AnyTypeAllowed>
+
571[[nodiscard]] inline std::pair<std::string, PortInfo> OutputPort(StringView name,
+
572 StringView default_value,
+
573 StringView description)
+
574{
+
575 if(default_value.empty() || default_value.front() != '{' || default_value.back() != '}')
+
576 {
+
577 throw LogicError("Output port can only refer to blackboard entries, i.e. use the "
+
578 "syntax '{port_name}'");
+
579 }
+
580 auto out = CreatePort<T>(PortDirection::OUTPUT, name, description);
+
581 out.second.setDefaultValue(default_value);
+
582 return out;
+
583}
+
584
+
585//----------
+
586
+ +
588
+
589template <typename T, typename = void>
+
590struct has_static_method_providedPorts : std::false_type
+
591{
+
592};
+
593
+
594template <typename T>
+ +
596 T, typename std::enable_if<
+
597 std::is_same<decltype(T::providedPorts()), PortsList>::value>::type>
+
598 : std::true_type
+
599{
+
600};
+
601
+
602template <typename T, typename = void>
+
603struct has_static_method_metadata : std::false_type
+
604{
+
605};
+
606
+
607template <typename T>
+ +
609 T, typename std::enable_if<
+
610 std::is_same<decltype(T::metadata()), KeyValueVector>::value>::type>
+
611 : std::true_type
+
612{
+
613};
+
614
+
615template <typename T>
+
616[[nodiscard]] inline PortsList
+
617getProvidedPorts(enable_if<has_static_method_providedPorts<T>> = nullptr)
+
618{
+
619 return T::providedPorts();
+
620}
+
621
+
622template <typename T>
+
623[[nodiscard]] inline PortsList
+
624getProvidedPorts(enable_if_not<has_static_method_providedPorts<T>> = nullptr)
+
625{
+
626 return {};
+
627}
+
628
+
629using TimePoint = std::chrono::high_resolution_clock::time_point;
+
630using Duration = std::chrono::high_resolution_clock::duration;
+
631
+
632} // namespace BT
+
Definition: safe_any.hpp:37
+
Definition: exceptions.h:46
+
Definition: basic_types.h:395
+
Definition: basic_types.h:348
+
The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
Definition: basic_types.h:503
+
Definition: action_node.h:25
+
std::pair< std::string, PortInfo > BidirectionalPort(StringView name, StringView description={})
Definition: basic_types.h:496
+
NodeStatus
Definition: basic_types.h:34
+
Any convertFromJSON(StringView json_text, std::type_index type)
convertFromJSON will parse a json string and use JsonExporter to convert its content to a given type....
+
std::pair< std::string, PortInfo > OutputPort(StringView name, StringView default_value, StringView description)
Definition: basic_types.h:571
+
std::string toStr(BT::NodeStatus status, bool colored)
toStr converts NodeStatus to string. Optionally colored.
+
T convertFromJSON(StringView str)
Same as the non template version, but with automatic casting.
Definition: basic_types.h:104
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
std::pair< std::string, PortInfo > InputPort(StringView name, const DefaultT &default_value, StringView description)
Definition: basic_types.h:542
+
std::pair< std::string, PortInfo > OutputPort(StringView name, StringView description={})
Definition: basic_types.h:484
+
std::pair< std::string, PortInfo > InputPort(StringView name, StringView description={})
Definition: basic_types.h:472
+
std::pair< std::string, PortInfo > BidirectionalPort(StringView name, const DefaultT &default_value, StringView description)
Definition: basic_types.h:557
+
std::string toStr(const T &value)
toStr is the reverse operation of convertFromString.
Definition: basic_types.h:252
+
T convertFromString(StringView str)
Definition: basic_types.h:122
+
Definition: basic_types.h:88
+
Definition: basic_types.h:336
+
Definition: basic_types.h:604
+
Definition: basic_types.h:591
+
+
+ + + + diff --git a/da/d20/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and-members.html b/da/d20/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and-members.html new file mode 100644 index 000000000..1da920ad7 --- /dev/null +++ b/da/d20/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::bit_and Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::bit_and, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::bit_and)BT::Grammar::Expression::bit_andstatic
operand typedef (defined in BT::Grammar::Expression::bit_and)BT::Grammar::Expression::bit_and
+
+ + + + diff --git a/da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html b/da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html new file mode 100644 index 000000000..ba774fda6 --- /dev/null +++ b/da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html @@ -0,0 +1,119 @@ + + + + + + + +BehaviorTree: BT::Grammar::Integer::invalid_suffix Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Integer::invalid_suffix Struct Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr auto name = "invalid suffix on integer literal"
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/da/d26/class_b_t_1_1_script_condition.html b/da/d26/class_b_t_1_1_script_condition.html new file mode 100644 index 000000000..681d1282f --- /dev/null +++ b/da/d26/class_b_t_1_1_script_condition.html @@ -0,0 +1,333 @@ + + + + + + + +BehaviorTree: BT::ScriptCondition Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ScriptCondition Class Reference
+
+
+ +

Execute a script, and if the result is true, return SUCCESS, FAILURE otherwise. + More...

+ +

#include <script_condition.h>

+
+Inheritance diagram for BT::ScriptCondition:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::ScriptCondition:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ScriptCondition (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::ConditionNode
ConditionNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override final
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

Execute a script, and if the result is true, return SUCCESS, FAILURE otherwise.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html b/da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html new file mode 100644 index 000000000..9cb435710 --- /dev/null +++ b/da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html @@ -0,0 +1,212 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprBinaryArithmetic Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprBinaryArithmetic Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprBinaryArithmetic:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprBinaryArithmetic:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + +

+Public Types

enum  op_t {
+  plus +, minus +, times +, div +,
+  concat +, bit_and +, bit_or +, bit_xor +,
+  logic_and +, logic_or +
+ }
 
- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+ + + + + + + + + +

+Public Member Functions

+const char * opStr () const
 
ExprBinaryArithmetic (expr_ptr lhs, op_t op, expr_ptr rhs)
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + + + + + +

+Public Attributes

+enum BT::Ast::ExprBinaryArithmetic::op_t op
 
+expr_ptr lhs
 
+expr_ptr rhs
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprBinaryArithmetic::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/da/d2f/class_b_t_1_1_wake_up_signal.html b/da/d2f/class_b_t_1_1_wake_up_signal.html new file mode 100644 index 000000000..64bfd0d91 --- /dev/null +++ b/da/d2f/class_b_t_1_1_wake_up_signal.html @@ -0,0 +1,149 @@ + + + + + + + +BehaviorTree: BT::WakeUpSignal Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::WakeUpSignal Class Reference
+
+
+ + + + + + +

+Public Member Functions

bool waitFor (std::chrono::microseconds usec)
 
+void emitSignal ()
 
+

Member Function Documentation

+ +

◆ waitFor()

+ +
+
+ + + + + +
+ + + + + + + + +
bool BT::WakeUpSignal::waitFor (std::chrono::microseconds usec)
+
+inline
+
+

Return true if the timeout was NOT reached and the signal was received.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/d2f/class_b_t_1_1_wake_up_signal.js b/da/d2f/class_b_t_1_1_wake_up_signal.js new file mode 100644 index 000000000..2d73c88f4 --- /dev/null +++ b/da/d2f/class_b_t_1_1_wake_up_signal.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_wake_up_signal = +[ + [ "waitFor", "da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff", null ] +]; \ No newline at end of file diff --git a/da/d34/class_b_t_1_1_control_node__inherit__graph.map b/da/d34/class_b_t_1_1_control_node__inherit__graph.map new file mode 100644 index 000000000..57de1900d --- /dev/null +++ b/da/d34/class_b_t_1_1_control_node__inherit__graph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/da/d34/class_b_t_1_1_control_node__inherit__graph.md5 b/da/d34/class_b_t_1_1_control_node__inherit__graph.md5 new file mode 100644 index 000000000..aa66b81c6 --- /dev/null +++ b/da/d34/class_b_t_1_1_control_node__inherit__graph.md5 @@ -0,0 +1 @@ +20e130c9468f9c8534aaa78cdf36280d \ No newline at end of file diff --git a/da/d34/class_b_t_1_1_control_node__inherit__graph.png b/da/d34/class_b_t_1_1_control_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8c71eb726790d5d5d723ebaaf9760fb86aa8f68b GIT binary patch literal 50608 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 + + + + + + +BehaviorTree: BT::RuntimeError Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::RuntimeError Class Reference
+
+
+
+Inheritance diagram for BT::RuntimeError:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::RuntimeError:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + +

+Public Member Functions

RuntimeError (std::string_view message)
 
+template<typename... SV>
 RuntimeError (const SV &... args)
 
- Public Member Functions inherited from BT::BehaviorTreeException
BehaviorTreeException (std::string_view message)
 
+template<typename... SV>
 BehaviorTreeException (const SV &... args)
 
+const char * what () const noexcept
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.map b/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.map new file mode 100644 index 000000000..6370ffa4c --- /dev/null +++ b/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.md5 b/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.md5 new file mode 100644 index 000000000..c7047abd6 --- /dev/null +++ b/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.md5 @@ -0,0 +1 @@ +472e32ea5a40599fac4dfbd89d958f1e \ No newline at end of file diff --git a/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.png b/da/d43/struct_b_t_1_1_ast_1_1_expr_literal__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5db5a0cdb7d4b489403580b5cdba565781cb8f4c GIT binary patch literal 4740 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 literal 0 HcmV?d00001 diff --git a/da/d45/class_b_t_1_1_sleep_node__inherit__graph.map b/da/d45/class_b_t_1_1_sleep_node__inherit__graph.map new file mode 100644 index 000000000..c0a15f9c9 --- /dev/null +++ b/da/d45/class_b_t_1_1_sleep_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/da/d45/class_b_t_1_1_sleep_node__inherit__graph.md5 b/da/d45/class_b_t_1_1_sleep_node__inherit__graph.md5 new file mode 100644 index 000000000..ad824e9b6 --- /dev/null +++ b/da/d45/class_b_t_1_1_sleep_node__inherit__graph.md5 @@ -0,0 +1 @@ +df7ae768fdfefbd284a27597638f5bd2 \ No newline at end of file diff --git a/da/d45/class_b_t_1_1_sleep_node__inherit__graph.png b/da/d45/class_b_t_1_1_sleep_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcf0161195501300cddb5ea5dc3f37ad7bc0c92 GIT binary patch literal 11479 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

2wW&#k;vd~S|Sk`ow(ALm6!>U3k0V34M z$|_=PY)pRC3^qETR!}K0U&m7#`{qpw&<5!A=akmznVE5c(Km{O1ifzX1bg0V#( zFo-%OW&u$4r@>2U)wnr^AJ45Nqa$mOk$iy_WAw_sL0r}M_p3iS&aXY-g3dHRNnB@V zXGAHV3RGmXvm2Pq+S8L4Xx3q8XGhZo+M5O*@-R&%6`J3$HoXV7i<=%Nl{bDmV}Z>Q z!IOy7+Zg-84omR0qvI|J6LeR>2-?=#BojEKysZIE*v6oie}XJ4yvD(S4}m#jD%)ZV zGl%Fwa5F7n52BKiNMJIsQcGPht)YaFENnLC6;Xo%4Re@nnCbLXJVxak z%=w|S2;lTmVG50ah{zw1^`48RrKORzH7RnPpWh$w2#h%NV}uQ0bmZ%tonDO_mA1Av z41Dd;kmt6o&K4l?I@%uVP~GVEPYs?SNLsO;B*J-n|QjhIxq&X%BhL zr1GN^V?3CCg;69y(8o;x_qh_g1f^k~0@{YAlm;48FaE{oE@FYyg_58$X)O1kw@Ut1 zN=Vt6f`ca6|En_^KJWWCQtafX^Vu9mC^1V_xKR^L*P`1`)Uwoqz=YUXR}CUtw5R7UPeKak41Yv}vG08HjtL;wH) literal 0 HcmV?d00001 diff --git a/da/d52/condition__node_8h_source.html b/da/d52/condition__node_8h_source.html new file mode 100644 index 000000000..33e0209d9 --- /dev/null +++ b/da/d52/condition__node_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/condition_node.h Source File + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
condition_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#ifndef CONDITIONNODE_H
+
15#define CONDITIONNODE_H
+
16
+
17#include "leaf_node.h"
+
18
+
19namespace BT
+
20{
+
21class ConditionNode : public LeafNode
+
22{
+
23public:
+
24 ConditionNode(const std::string& name, const NodeConfig& config);
+
25
+
26 virtual ~ConditionNode() override = default;
+
27
+
28 //Do nothing
+
29 virtual void halt() override final
+
30 {
+ +
32 }
+
33
+
34 virtual NodeType type() const override final
+
35 {
+
36 return NodeType::CONDITION;
+
37 }
+
38};
+
39
+
40/**
+
41 * @brief The SimpleConditionNode provides an easy to use ConditionNode.
+
42 * The user should simply provide a callback with this signature
+
43 *
+
44 * BT::NodeStatus functionName(void)
+
45 *
+
46 * This avoids the hassle of inheriting from a ActionNode.
+
47 *
+
48 * Using lambdas or std::bind it is easy to pass a pointer to a method.
+
49 */
+ +
51{
+
52public:
+
53 using TickFunctor = std::function<NodeStatus(TreeNode&)>;
+
54
+
55 // You must provide the function to call when tick() is invoked
+
56 SimpleConditionNode(const std::string& name, TickFunctor tick_functor,
+
57 const NodeConfig& config);
+
58
+
59 ~SimpleConditionNode() override = default;
+
60
+
61protected:
+
62 virtual NodeStatus tick() override;
+
63
+
64 TickFunctor tick_functor_;
+
65};
+
66} // namespace BT
+
67
+
68#endif
+
Definition: condition_node.h:22
+
virtual void halt() override final
Definition: condition_node.h:29
+
Definition: leaf_node.h:22
+
The SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callb...
Definition: condition_node.h:51
+
virtual NodeStatus tick() override
Method to be implemented by the user.
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
void resetStatus()
Set the status to IDLE.
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/da/d60/struct_b_t_1_1_ast_1_1_expr_name-members.html b/da/d60/struct_b_t_1_1_ast_1_1_expr_name-members.html new file mode 100644 index 000000000..daa5c6902 --- /dev/null +++ b/da/d60/struct_b_t_1_1_ast_1_1_expr_name-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprName Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprName, including all inherited members.

+ + + + + + +
evaluate(Environment &env) const override (defined in BT::Ast::ExprName)BT::Ast::ExprNameinlinevirtual
ExprName(std::string n) (defined in BT::Ast::ExprName)BT::Ast::ExprNameinlineexplicit
name (defined in BT::Ast::ExprName)BT::Ast::ExprName
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/da/d61/class_b_t_1_1_tree_node.html b/da/d61/class_b_t_1_1_tree_node.html new file mode 100644 index 000000000..f1ad06f18 --- /dev/null +++ b/da/d61/class_b_t_1_1_tree_node.html @@ -0,0 +1,922 @@ + + + + + + + +BehaviorTree: BT::TreeNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

Abstract base class for Behavior Tree Nodes. + More...

+ +

#include <tree_node.h>

+
+Inheritance diagram for BT::TreeNode:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Types

+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + +

+Protected Types

+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + + + + + + + +

+Friends

+class BehaviorTreeFactory
 
+class DecoratorNode
 
+class ControlNode
 
+class Tree
 
+

Detailed Description

+

Abstract base class for Behavior Tree Nodes.

+

Constructor & Destructor Documentation

+ +

◆ TreeNode()

+ +
+
+ + + + + + + + + + + + + + + + + + +
BT::TreeNode::TreeNode (std::string name,
NodeConfig config 
)
+
+ +

TreeNode main constructor.

+
Parameters
+ + + +
namename of the instance, not the type.
configinformation about input/output ports. See NodeConfig
+
+
+

Note: If your custom node has ports, the derived class must implement:

static PortsList providedPorts();
+
+
+
+

Member Function Documentation

+ +

◆ config()

+ +
+
+ + + + + + + +
const NodeConfig & BT::TreeNode::config () const
+
+

Configuration passed at construction time. Can never change after the creation of the TreeNode instance.

+ +
+
+ +

◆ executeTick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BT::NodeStatus BT::TreeNode::executeTick ()
+
+virtual
+
+ +

The method that should be used to invoke tick() and setStatus();.

+ +

Reimplemented in BT::SyncActionNode, BT::DecoratorNode, BT::ThreadedAction, and BT::CoroActionNode.

+ +
+
+ +

◆ fullPath()

+ +
+
+ + + + + + + +
const std::string & BT::TreeNode::fullPath () const
+
+

Human readable identifier, that includes the hierarchy of Subtrees See tutorial 10 as an example.

+ +
+
+ +

◆ getInput() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Expected< T > BT::TreeNode::getInput (const std::string & key) const
+
+inline
+
+

Same as bool getInput(const std::string& key, T& destination) but using optional.

+
Parameters
+ + +
keythe name of the port.
+
+
+ +
+
+ +

◆ getInput() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Result BT::TreeNode::getInput (const std::string & key,
T & destination 
) const
+
+inline
+
+

Read an input port, which, in practice, is an entry in the blackboard. If the blackboard contains a std::string and T is not a string, convertFromString<T>() is used automatically to parse the text.

+
Parameters
+ + + +
keythe name of the port.
destinationreference to the object where the value should be stored
+
+
+
Returns
false if an error occurs.
+ +
+
+ +

◆ getInputStamped() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Expected< StampedValue< T > > BT::TreeNode::getInputStamped (const std::string & key) const
+
+inline
+
+

Same as bool getInputStamped(const std::string& key, T& destination) but return StampedValue<T>

+
Parameters
+ + +
keythe name of the port.
+
+
+ +
+
+ +

◆ getInputStamped() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Expected< Timestamp > BT::TreeNode::getInputStamped (const std::string & key,
T & destination 
) const
+
+inline
+
+ +

getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.

+
Parameters
+ + + +
keythe name of the port.
destinationreference to the object where the value should be stored
+
+
+ +
+
+ +

◆ getLockedPortContent()

+ +
+
+ + + + + + + + +
AnyPtrLocked BT::TreeNode::getLockedPortContent (const std::string & key)
+
+ +

getLockedPortContent should be used when:

+
    +
  • your port contains an object with reference semantic (usually a smart pointer)
  • +
  • you want to modify the object we are pointing to.
  • +
  • you are concerned about thread-safety.
  • +
+

For example, if your port has type std::shared_ptr<Foo>, the code below is NOT thread safe:

+

auto foo_ptr = getInput<std::shared_ptr<Foo>>("port_name"); // modifying the content of foo_ptr is NOT thread-safe

+

What you must do, instead, to guaranty thread-safety, is:

+

if(auto any_ref = getLockedPortContent("port_name")) { Any* any = any_ref.get(); auto foo_ptr = any->cast<std::shared_ptr<Foo>>(); // modifying the content of foo_ptr inside this scope IS thread-safe }

+

It is important to destroy the object AnyPtrLocked, to release the lock.

+

NOTE: this method doesn't work, if the port contains a static string, instead of a blackboard pointer.

+
Parameters
+ + +
keythe identifier of the port.
+
+
+
Returns
empty AnyPtrLocked if the blackboard entry doesn't exist or the content of the port was a static string.
+ +
+
+ +

◆ Instantiate()

+ +
+
+
+template<class DerivedT , typename... ExtraArgs>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
static std::unique_ptr< TreeNode > BT::TreeNode::Instantiate (const std::string & name,
const NodeConfigconfig,
ExtraArgs... args 
)
+
+inlinestatic
+
+

Used to inject config into a node, even if it doesn't have the proper constructor

+ +
+
+ +

◆ setOutput()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Result BT::TreeNode::setOutput (const std::string & key,
const T & value 
)
+
+inline
+
+ +

setOutput modifies the content of an Output port

+
Parameters
+ + + +
keythe name of the port.
valuenew value
+
+
+
Returns
valid Result, if succesful.
+ +
+
+ +

◆ setPostTickFunction()

+ +
+
+ + + + + + + + +
void BT::TreeNode::setPostTickFunction (PostTickCallback callback)
+
+

This method attaches to the TreeNode a callback with signature:

NodeStatus myCallback(TreeNode& node, NodeStatus status)
+

This callback is executed AFTER the tick() and, if it returns SUCCESS or FAILURE, the value returned by the actual tick() is overriden with this one.

+ +
+
+ +

◆ setPreTickFunction()

+ +
+
+ + + + + + + + +
void BT::TreeNode::setPreTickFunction (PreTickCallback callback)
+
+

This method attaches to the TreeNode a callback with signature:

 NodeStatus callback(TreeNode& node)
+

This callback is executed BEFORE the tick() and, if it returns SUCCESS or FAILURE, the actual tick() will NOT be executed and this result will be returned instead.

+

This is useful to inject a "dummy" implementation of the TreeNode at run-time

+ +
+
+ +

◆ setTickMonitorCallback()

+ +
+
+ + + + + + + + +
void BT::TreeNode::setTickMonitorCallback (TickMonitorCallback callback)
+
+

This method attaches to the TreeNode a callback with signature:

void myCallback(TreeNode& node, NodeStatus status, std::chrono::microseconds duration)
+

This callback is executed AFTER the tick() and will inform the user about its status and the execution time. Works only if the tick was not substituted by a pre-condition.

+ +
+
+ +

◆ subscribeToStatusChange()

+ +
+
+ + + + + + + + +
StatusChangeSubscriber BT::TreeNode::subscribeToStatusChange (StatusChangeCallback callback)
+
+ +

subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.

+
Parameters
+ + +
callbackThe callback to be execute when status change.
+
+
+
Returns
the subscriber handle.
+ +
+
+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BT::NodeStatus BT::TreeNode::tick ()
+
+protectedpure virtual
+
+
+ +

◆ UID()

+ +
+
+ + + + + + + +
uint16_t BT::TreeNode::UID () const
+
+

The unique identifier of this instance of treeNode. It is assigneld by the factory

+ +
+
+ +

◆ waitValidStatus()

+ +
+
+ + + + + + + +
BT::NodeStatus BT::TreeNode::waitValidStatus ()
+
+

Blocking function that will sleep until the setStatus() is called with either RUNNING, FAILURE or SUCCESS.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/d61/class_b_t_1_1_tree_node.js b/da/d61/class_b_t_1_1_tree_node.js new file mode 100644 index 000000000..93f41c686 --- /dev/null +++ b/da/d61/class_b_t_1_1_tree_node.js @@ -0,0 +1,25 @@ +var class_b_t_1_1_tree_node = +[ + [ "TreeNode", "da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e", null ], + [ "config", "da/d61/class_b_t_1_1_tree_node.html#a7d17e161369b535793ed9c6cc0a6a0ac", null ], + [ "emitWakeUpSignal", "da/d61/class_b_t_1_1_tree_node.html#a05339c112add31fc3c592e3e0e5d5d4b", null ], + [ "executeTick", "da/d61/class_b_t_1_1_tree_node.html#a07d0876cfd608b690650e930d1a629cc", null ], + [ "fullPath", "da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58", null ], + [ "getInput", "da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b", null ], + [ "getInput", "da/d61/class_b_t_1_1_tree_node.html#ae921e5800a82b7591cb711c710d49725", null ], + [ "getInputStamped", "da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6", null ], + [ "getInputStamped", "da/d61/class_b_t_1_1_tree_node.html#a4fd8498410d2344cc9af272ea97dfd09", null ], + [ "getLockedPortContent", "da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a", null ], + [ "name", "da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c", null ], + [ "registrationName", "da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11", null ], + [ "resetStatus", "da/d61/class_b_t_1_1_tree_node.html#a8874bae4b946a2ea6d1b3db1a696cf6a", null ], + [ "setOutput", "da/d61/class_b_t_1_1_tree_node.html#a74618849a9199ab568eb451d580e20fc", null ], + [ "setPostTickFunction", "da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72", null ], + [ "setPreTickFunction", "da/d61/class_b_t_1_1_tree_node.html#aebc95976e7923c048021b553c56489b5", null ], + [ "setStatus", "da/d61/class_b_t_1_1_tree_node.html#ab98b671336cdc496028b52112e21a0ed", null ], + [ "setTickMonitorCallback", "da/d61/class_b_t_1_1_tree_node.html#afd27f6b1a6b692b113eccc29957deb31", null ], + [ "subscribeToStatusChange", "da/d61/class_b_t_1_1_tree_node.html#afb4606479245153e183b0530e517b3cc", null ], + [ "tick", "da/d61/class_b_t_1_1_tree_node.html#a15ea206d20defd764035481ceda1de3e", null ], + [ "UID", "da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36", null ], + [ "waitValidStatus", "da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6", null ] +]; \ No newline at end of file diff --git a/da/d64/class_b_t_1_1_test_node__coll__graph.map b/da/d64/class_b_t_1_1_test_node__coll__graph.map new file mode 100644 index 000000000..5c8086a15 --- /dev/null +++ b/da/d64/class_b_t_1_1_test_node__coll__graph.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/da/d64/class_b_t_1_1_test_node__coll__graph.md5 b/da/d64/class_b_t_1_1_test_node__coll__graph.md5 new file mode 100644 index 000000000..13778e96a --- /dev/null +++ b/da/d64/class_b_t_1_1_test_node__coll__graph.md5 @@ -0,0 +1 @@ +bfe024b63ada29d12deea4404d2dc92b \ No newline at end of file diff --git a/da/d64/class_b_t_1_1_test_node__coll__graph.png b/da/d64/class_b_t_1_1_test_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f9348c83f457b97098719f3bb4a45e3230bdf5f0 GIT binary patch literal 30332 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°A|@euHhs3@?RJt7hB1SI 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 BV@d!3 literal 0 HcmV?d00001 diff --git a/da/d65/set__blackboard__node_8h_source.html b/da/d65/set__blackboard__node_8h_source.html new file mode 100644 index 000000000..2976baa12 --- /dev/null +++ b/da/d65/set__blackboard__node_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/set_blackboard_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
set_blackboard_node.h
+
+
+
1/* Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#ifndef ACTION_SETBLACKBOARD_NODE_H
+
14#define ACTION_SETBLACKBOARD_NODE_H
+
15
+
16#include "behaviortree_cpp/action_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The SetBlackboard is action used to store a string
+
22 * into an entry of the Blackboard specified in "output_key".
+
23 *
+
24 * Example usage:
+
25 *
+
26 * <SetBlackboard value="42" output_key="the_answer" />
+
27 *
+
28 * Will store the string "42" in the entry with key "the_answer".
+
29 *
+
30 * Alternatively, you can use it to copy one port inside another port:
+
31 *
+
32 * <SetBlackboard value="{src_port}" output_key="dst_port" />
+
33 *
+
34 * This will copy the type and content of {src_port} into {dst_port}
+
35 */
+ +
37{
+
38public:
+
39 SetBlackboardNode(const std::string& name, const NodeConfig& config)
+
40 : SyncActionNode(name, config)
+
41 {
+
42 setRegistrationID("SetBlackboard");
+
43 }
+
44
+
45 static PortsList providedPorts()
+
46 {
+
47 return { InputPort("value", "Value to be written int othe output_key"),
+
48 BidirectionalPort("output_key", "Name of the blackboard entry where the "
+
49 "value should be written") };
+
50 }
+
51
+
52private:
+
53 virtual BT::NodeStatus tick() override
+
54 {
+
55 std::string output_key;
+
56 if(!getInput("output_key", output_key))
+
57 {
+
58 throw RuntimeError("missing port [output_key]");
+
59 }
+
60
+
61 const std::string value_str = config().input_ports.at("value");
+
62
+
63 StringView stripped_key;
+
64 BT::Any out_value;
+
65
+
66 std::shared_ptr<Blackboard::Entry> dst_entry =
+
67 config().blackboard->getEntry(output_key);
+
68
+
69 if(isBlackboardPointer(value_str, &stripped_key))
+
70 {
+
71 const auto input_key = std::string(stripped_key);
+
72 std::shared_ptr<Blackboard::Entry> src_entry =
+
73 config().blackboard->getEntry(input_key);
+
74
+
75 if(!src_entry)
+
76 {
+
77 throw RuntimeError("Can't find the port referred by [value]");
+
78 }
+
79 if(!dst_entry)
+
80 {
+
81 config().blackboard->createEntry(output_key, src_entry->info);
+
82 dst_entry = config().blackboard->getEntry(output_key);
+
83 }
+
84
+
85 out_value = src_entry->value;
+
86 }
+
87 else
+
88 {
+
89 out_value = BT::Any(value_str);
+
90 }
+
91
+
92 if(out_value.empty())
+
93 return NodeStatus::FAILURE;
+
94
+
95 // avoid type issues when port is remapped: current implementation of the set might be a little bit problematic for initialized on the fly values
+
96 // this still does not attack math issues
+
97 if(dst_entry && dst_entry->info.type() != typeid(std::string) && out_value.isString())
+
98 {
+
99 try
+
100 {
+
101 out_value = dst_entry->info.parseString(out_value.cast<std::string>());
+
102 }
+
103 catch(const std::exception& e)
+
104 {
+
105 throw LogicError("Can't convert string [", out_value.cast<std::string>(),
+
106 "] to type [", BT::demangle(dst_entry->info.type()),
+
107 "]: ", e.what());
+
108 }
+
109 }
+
110
+
111 config().blackboard->set(output_key, out_value);
+
112
+
113 return NodeStatus::SUCCESS;
+
114 }
+
115};
+
116} // namespace BT
+
117
+
118#endif
+
Definition: safe_any.hpp:37
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
The SetBlackboard is action used to store a string into an entry of the Blackboard specified in "outp...
Definition: set_blackboard_node.h:37
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: blackboard.h:44
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/da/d67/class_b_t_1_1_blackboard-members.html b/da/d67/class_b_t_1_1_blackboard-members.html new file mode 100644 index 000000000..3a1de92dd --- /dev/null +++ b/da/d67/class_b_t_1_1_blackboard-members.html @@ -0,0 +1,136 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Blackboard Member List
+
+
+ +

This is the complete list of members for BT::Blackboard, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addSubtreeRemapping(StringView internal, StringView external) (defined in BT::Blackboard)BT::Blackboard
Blackboard(Blackboard::Ptr parent) (defined in BT::Blackboard)BT::Blackboardinlineprotected
clear() (defined in BT::Blackboard)BT::Blackboard
cloneInto(Blackboard &dst) constBT::Blackboard
create(Blackboard::Ptr parent={})BT::Blackboardinlinestatic
createEntry(const std::string &key, const TypeInfo &info) (defined in BT::Blackboard)BT::Blackboard
debugMessage() const (defined in BT::Blackboard)BT::Blackboard
enableAutoRemapping(bool remapping) (defined in BT::Blackboard)BT::Blackboard
entryInfo(const std::string &key) (defined in BT::Blackboard)BT::Blackboard
entryMutex() const (defined in BT::Blackboard)BT::Blackboard
get(const std::string &key, T &value) constBT::Blackboardinline
get(const std::string &key) constBT::Blackboardinline
getAny(const std::string &key) const (defined in BT::Blackboard)BT::Blackboard
getAny(const std::string &key) (defined in BT::Blackboard)BT::Blackboard
getAnyLocked(const std::string &key) (defined in BT::Blackboard)BT::Blackboard
getAnyLocked(const std::string &key) const (defined in BT::Blackboard)BT::Blackboard
getEntry(const std::string &key) const (defined in BT::Blackboard)BT::Blackboard
getEntry(const std::string &key) (defined in BT::Blackboard)BT::Blackboard
getKeys() const (defined in BT::Blackboard)BT::Blackboard
getStamped(const std::string &key, T &value) const (defined in BT::Blackboard)BT::Blackboardinline
getStamped(const std::string &key) const (defined in BT::Blackboard)BT::Blackboardinline
parent() (defined in BT::Blackboard)BT::Blackboard
Ptr typedef (defined in BT::Blackboard)BT::Blackboard
rootBlackboard() (defined in BT::Blackboard)BT::Blackboard
rootBlackboard() const (defined in BT::Blackboard)BT::Blackboard
set(const std::string &key, const T &value)BT::Blackboardinline
unset(const std::string &key) (defined in BT::Blackboard)BT::Blackboardinline
~Blackboard()=default (defined in BT::Blackboard)BT::Blackboardvirtual
+
+ + + + diff --git a/da/d6d/subtree__node_8h_source.html b/da/d6d/subtree__node_8h_source.html new file mode 100644 index 000000000..6a385058b --- /dev/null +++ b/da/d6d/subtree__node_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/subtree_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
subtree_node.h
+
+
+
1#ifndef DECORATOR_SUBTREE_NODE_H
+
2#define DECORATOR_SUBTREE_NODE_H
+
3
+
4#include "behaviortree_cpp/decorator_node.h"
+
5
+
6namespace BT
+
7{
+
8/**
+
9 * @brief The SubTreeNode is a way to wrap an entire Subtree,
+
10 * creating a separated BlackBoard.
+
11 * If you want to have data flow through ports, you need to explicitly
+
12 * remap the ports.
+
13 *
+
14 * NOTE: _autoremap will exclude all the ports which name start with underscore '_'
+
15 *
+
16 * Consider this example:
+
17
+
18<root main_tree_to_execute = "MainTree" >
+
19
+
20 <BehaviorTree ID="MainTree">
+
21 <Sequence>
+
22
+
23 <Script code="myParam='Hello'" />
+
24 <SubTree ID="Talk" param="{myParam}" />
+
25
+
26 <SubTree ID="Talk" param="World" />
+
27
+
28 <Script code="param='Auto remapped'" />
+
29 <SubTree ID="Talk" _autoremap="1" />
+
30
+
31 </Sequence>
+
32 </BehaviorTree>
+
33
+
34 <BehaviorTree ID="Talk">
+
35 <SaySomething message="{param}" />
+
36 </BehaviorTree>
+
37</root>
+
38
+
39 * You may notice three different approaches to remapping:
+
40 *
+
41 * 1) Subtree: "{param}" -> Parent: "{myParam}" -> Value: "Hello"
+
42 * Classical remapping from one port to another, but you need to use the syntax
+
43 * {myParam} to say that you are remapping the another port.
+
44 *
+
45 * 2) Subtree: "{param}" -> Value: "World"
+
46 * syntax without {}, in this case param directly point to the __string__ "World".
+
47 *
+
48 * 3) Subtree: "{param}" -> Parent: "{parent}"
+
49 * Setting to true (or 1) the attribute "_autoremap", we are automatically remapping
+
50 * each port. Useful to avoid boilerplate.
+
51 */
+
52class SubTreeNode : public DecoratorNode
+
53{
+
54public:
+
55 SubTreeNode(const std::string& name, const NodeConfig& config);
+
56
+
57 virtual ~SubTreeNode() override = default;
+
58
+
59 static PortsList providedPorts();
+
60
+
61 void setSubtreeID(const std::string& ID)
+
62 {
+
63 subtree_id_ = ID;
+
64 }
+
65
+
66 const std::string& subtreeID() const
+
67 {
+
68 return subtree_id_;
+
69 }
+
70 virtual BT::NodeStatus tick() override;
+
71
+
72 virtual NodeType type() const override final
+
73 {
+
74 return NodeType::SUBTREE;
+
75 }
+
76
+
77private:
+
78 std::string subtree_id_;
+
79};
+
80
+
81} // namespace BT
+
82
+
83#endif // DECORATOR_SUBTREE_NODE_H
+
Definition: decorator_node.h:9
+
The SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard....
Definition: subtree_node.h:53
+
virtual BT::NodeStatus tick() override
Method to be implemented by the user.
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
NodeType
Enumerates the possible types of nodes.
Definition: basic_types.h:21
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/da/d73/class_b_t_1_1_sync_action_node.html b/da/d73/class_b_t_1_1_sync_action_node.html new file mode 100644 index 000000000..1fcef44ac --- /dev/null +++ b/da/d73/class_b_t_1_1_sync_action_node.html @@ -0,0 +1,398 @@ + + + + + + + +BehaviorTree: BT::SyncActionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SyncActionNode Class Reference
+
+
+ +

The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require an implementation of halt(). + More...

+ +

#include <action_node.h>

+
+Inheritance diagram for BT::SyncActionNode:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for BT::SyncActionNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require an implementation of halt().

+

Member Function Documentation

+ +

◆ executeTick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::SyncActionNode::executeTick ()
+
+overridevirtual
+
+ +

throws if the derived class return RUNNING.

+ +

Reimplemented from BT::TreeNode.

+ +
+
+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::SyncActionNode::halt ()
+
+inlinefinaloverridevirtual
+
+ +

You don't need to override this.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/d73/class_b_t_1_1_sync_action_node.js b/da/d73/class_b_t_1_1_sync_action_node.js new file mode 100644 index 000000000..2e5839a21 --- /dev/null +++ b/da/d73/class_b_t_1_1_sync_action_node.js @@ -0,0 +1,5 @@ +var class_b_t_1_1_sync_action_node = +[ + [ "executeTick", "da/d73/class_b_t_1_1_sync_action_node.html#a27f92ef5b12777c509e04bed372a9c5f", null ], + [ "halt", "da/d73/class_b_t_1_1_sync_action_node.html#a20556b49ddc39c608018209643fc14d2", null ] +]; \ No newline at end of file diff --git a/da/d75/bt__sqlite__logger_8h_source.html b/da/d75/bt__sqlite__logger_8h_source.html new file mode 100644 index 000000000..5cef32788 --- /dev/null +++ b/da/d75/bt__sqlite__logger_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/bt_sqlite_logger.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_sqlite_logger.h
+
+
+
1#pragma once
+
2
+
3#include <filesystem>
+
4#include "behaviortree_cpp/loggers/abstract_logger.h"
+
5
+
6namespace sqlite
+
7{
+
8class Connection;
+
9}
+
10
+
11namespace BT
+
12{
+
13
+
14/** SQL schema
+
15 *
+
16 * CREATE TABLE IF NOT EXISTS Definitions (
+
17 * session_id INTEGER PRIMARY KEY AUTOINCREMENT,
+
18 * date TEXT NOT NULL,
+
19 * xml_tree TEXT NOT NULL);
+
20 *
+
21 * CREATE TABLE IF NOT EXISTS Nodes ("
+
22 * session_id INTEGER NOT NULL,
+
23 * fullpath VARCHAR, "
+
24 * node_uid INTEGER NOT NULL );
+
25 *
+
26 * CREATE TABLE IF NOT EXISTS Transitions (
+
27 * timestamp INTEGER PRIMARY KEY NOT NULL,
+
28 * session_id INTEGER NOT NULL,
+
29 * node_uid INTEGER NOT NULL,
+
30 * duration INTEGER,
+
31 * state INTEGER NOT NULL,
+
32 * extra_data VARCHAR );
+
33 *
+
34 */
+
35
+
36/**
+
37 * @brief The SqliteLogger is a logger that will store the tree and all the
+
38 * status transitions in a SQLite database (single file).
+
39 *
+
40 * You can append data to the same file; this allows you to store multiple experiments into the database.
+
41 * Yn that case, each recording has a unique session_id.
+
42 *
+
43 * This is primarily meant to be used with Groot2, but the content of
+
44 * the tables is sufficiently self-explaining, and you can create
+
45 * your own tools to extract the information.
+
46 */
+ +
48{
+
49public:
+
50 /**
+
51 * @brief To correctly read this log with Groot2, you must use the suffix ".db3".
+
52 * Constructor will throw otherwise.
+
53 *
+
54 * @param tree the tree to log
+
55 * @param filepath path of the file where info will be stored
+
56 * @param append if true, add this recording to the database
+
57 */
+
58 SqliteLogger(const Tree& tree, std::filesystem::path const& file, bool append = false);
+
59
+
60 virtual ~SqliteLogger() override;
+
61
+
62 // You can inject a function that add a string to the Transitions table,
+
63 // in the column "extra_data".
+
64 // The arguments of the function are the same as SqliteLogger::callback()
+
65 using ExtraCallback =
+
66 std::function<std::string(Duration, const TreeNode&, NodeStatus, NodeStatus)>;
+
67 void setAdditionalCallback(ExtraCallback func);
+
68
+
69 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
+
70 NodeStatus status) override;
+
71
+
72 void execSqlStatement(std::string statement);
+
73
+
74 virtual void flush() override;
+
75
+
76private:
+
77 std::unique_ptr<sqlite::Connection> db_;
+
78
+
79 int64_t monotonic_timestamp_ = 0;
+
80 std::unordered_map<const BT::TreeNode*, int64_t> starting_time_;
+
81
+
82 int session_id_ = -1;
+
83
+
84 struct Transition
+
85 {
+
86 uint16_t node_uid;
+
87 int64_t timestamp;
+
88 int64_t duration;
+
89 NodeStatus status;
+
90 std::string extra_data;
+
91 };
+
92
+
93 std::deque<Transition> transitions_queue_;
+
94 std::condition_variable queue_cv_;
+
95 std::mutex queue_mutex_;
+
96
+
97 std::thread writer_thread_;
+
98 std::atomic_bool loop_ = true;
+
99
+
100 ExtraCallback extra_func_;
+
101
+
102 void writerLoop();
+
103};
+
104
+
105} // namespace BT
+
The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite data...
Definition: bt_sqlite_logger.h:48
+
SqliteLogger(const Tree &tree, std::filesystem::path const &file, bool append=false)
To correctly read this log with Groot2, you must use the suffix ".db3". Constructor will throw otherw...
+
Definition: abstract_logger.h:16
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/da/d76/manual__node_8h_source.html b/da/d76/manual__node_8h_source.html new file mode 100644 index 000000000..d348c4e6b --- /dev/null +++ b/da/d76/manual__node_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/manual_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
manual_node.h
+
+
+
1/* Copyright (C) 2020-2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief Use a Terminal User Interface (ncurses) to select a certain child manually.
+
21 */
+ +
23{
+
24public:
+
25 ManualSelectorNode(const std::string& name, const NodeConfig& config);
+
26
+
27 virtual ~ManualSelectorNode() override = default;
+
28
+
29 virtual void halt() override;
+
30
+
31 static PortsList providedPorts()
+
32 {
+
33 return { InputPort<bool>(REPEAT_LAST_SELECTION, false,
+
34 "If true, execute again the same child that was selected "
+
35 "the "
+
36 "last "
+
37 "time") };
+
38 }
+
39
+
40private:
+
41 static constexpr const char* REPEAT_LAST_SELECTION = "repeat_last_selection";
+
42
+
43 virtual BT::NodeStatus tick() override;
+
44 int running_child_idx_;
+
45 int previously_executed_idx_;
+
46
+
47 enum NumericalStatus
+
48 {
+
49 NUM_SUCCESS = 253,
+
50 NUM_FAILURE = 254,
+
51 NUM_RUNNING = 255,
+
52 };
+
53
+
54 NodeStatus selectStatus() const;
+
55
+
56 uint8_t selectChild() const;
+
57};
+
58
+
59} // namespace BT
+
Definition: control_node.h:22
+
Use a Terminal User Interface (ncurses) to select a certain child manually.
Definition: manual_node.h:23
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.map b/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.map new file mode 100644 index 000000000..acb13dd58 --- /dev/null +++ b/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.md5 b/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.md5 new file mode 100644 index 000000000..2672afa9e --- /dev/null +++ b/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.md5 @@ -0,0 +1 @@ +b60a0e0c9ca01031cbf1ba3e914fc79c \ No newline at end of file diff --git a/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.png b/da/d94/struct_b_t_1_1_grammar_1_1_any_value__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..67ee6de9620497ba922ebe0f1c2532164196756b GIT binary patch literal 5243 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 literal 0 HcmV?d00001 diff --git a/da/d94/struct_b_t_1_1_stamped_value__coll__graph.map b/da/d94/struct_b_t_1_1_stamped_value__coll__graph.map new file mode 100644 index 000000000..2ef250efe --- /dev/null +++ b/da/d94/struct_b_t_1_1_stamped_value__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/da/d94/struct_b_t_1_1_stamped_value__coll__graph.md5 b/da/d94/struct_b_t_1_1_stamped_value__coll__graph.md5 new file mode 100644 index 000000000..057493c80 --- /dev/null +++ b/da/d94/struct_b_t_1_1_stamped_value__coll__graph.md5 @@ -0,0 +1 @@ +06d21a547780df1a64376a8609446bca \ No newline at end of file diff --git a/da/d94/struct_b_t_1_1_stamped_value__coll__graph.png b/da/d94/struct_b_t_1_1_stamped_value__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a9360427416e9829355f4b9a5e28f219c777e164 GIT binary patch literal 5509 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%0ALOSvI zhEMCYdQi1^XvSWxsHo@%^oAOs=5_!~yxX_iXJ%;R_-;a6<_=|SgoK31@7*J%q@2uK zjfjZo>FKfhG~L;Wqpzsu zrKP2jv|{QzaVaUiV9Ck+<^%;$*xS*3mFAOa8y!8pk1O4zv9Ym9QXaxYL_~ihH9PwT z2s6lJlM4?hE6Kxdma(z1@=xnfCzzeBEgn8T6CYoN?ugInoC^@=*m7#(1_cR~RaJ$> z&Bx1uPEJk(CrsiI_n*SY58H{Ke2IVC1NQLeKhr*`wkRbPw)IvoAR!T}r z={`4ZCp$A;+D2YKzA(w`A0I!Il%xe!CMhLVQB(7yy*+1YVg-4*t6_h6ey#?<^Y-oA zDy(F2r^m$7XN<<*ghcG;`?tzkq5;4m>q8lAEG#lA?!3+2)C)QA+|a`c4UQ->BcE#_p!`=4x)`)G;7#V$xeTDefXw9}k?Gml%%G^g*DZMWp;4m} zJ6lUj{t*#MO{3o4-o-{O>A+i5>v1V6Dgq<7-^)=}-Gt4~$+SsRYxZww5Ew~jkHJ8P*TqN47A zwqX6ej`p@OxC?3|4Y;vrx1+U~q@))Bub4Q58(@=Pp#@vK^M07Pz>0PQQy;|~o0vE}U(axPglg*T>A?pLurr!Y$nrlw}|D#6sx#Ks3S(R|g6LDXo$d7shENBym__@E$cP+Xhnfz&$h z{iZ6{w(`}}S2mBkjZu3=Iblmb+4=OaSiV6BCzLR z150CW{;v1`}%J zyehc|5_erq#Q@^J-FIyu)ox-*SXlTkAQ%{iK-r9Q z6^4X#*_Dj~?>N=y!~qBiL}7Vnr(|&SogiK33_X|~Jl6&2tMJ>m`q7YzujfbWqb)u@ zIZ?l2wDwfg)YMej!z=fkpFEI4>gwv*gM9-7Kc=R1 zOA_I5_^@@&01*b@<$n%_AXnFWKI>T_^vt}xBrs@Ks~_f!rwBNESYYSiXrG%yj3*S; z)+YG--vT5yK12&#?bJ5!?8@cet6VPyCXebwio`ul?Hriu|7)k5H%oYIwB&4{iWTC+NKL^uN?toCH;~ZY7f42IHejd8#$EHFO@qh{@pEH~yj`JV+ d7`gQagKA}=Gf;!mADpW~6y>0@rO%E1{{`O8 + + + + + diff --git a/da/dac/class_b_t_1_1_if_then_else_node__coll__graph.md5 b/da/dac/class_b_t_1_1_if_then_else_node__coll__graph.md5 new file mode 100644 index 000000000..629373a82 --- /dev/null +++ b/da/dac/class_b_t_1_1_if_then_else_node__coll__graph.md5 @@ -0,0 +1 @@ +3362d975028f86fe88aa30d0f7d707d5 \ No newline at end of file diff --git a/da/dac/class_b_t_1_1_if_then_else_node__coll__graph.png b/da/dac/class_b_t_1_1_if_then_else_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..38dced99bcc0b139d8f3eab70d9c7046fd0efd15 GIT binary patch literal 12575 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 k*9iXg3k8Lfr`Hj}Tl|8WBQ)SQ9 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ParallelNode Member List
+
+
+ +

This is the complete list of members for BT::ParallelNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
failureThreshold() const (defined in BT::ParallelNode)BT::ParallelNode
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::ParallelNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
ParallelNode(const std::string &name) (defined in BT::ParallelNode)BT::ParallelNode
ParallelNode(const std::string &name, const NodeConfig &config) (defined in BT::ParallelNode)BT::ParallelNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ParallelNode)BT::ParallelNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setFailureThreshold(int threshold) (defined in BT::ParallelNode)BT::ParallelNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setSuccessThreshold(int threshold) (defined in BT::ParallelNode)BT::ParallelNode
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
successThreshold() const (defined in BT::ParallelNode)BT::ParallelNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~ParallelNode() override=default (defined in BT::ParallelNode)BT::ParallelNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html b/da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html new file mode 100644 index 000000000..34351a904 --- /dev/null +++ b/da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::bit_or Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::bit_or Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::bit_or:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::bit_or:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = bit_and
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::bit_or::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
+
auto bit_or = dsl::not_followed_by(LEXY_LIT("|"), dsl::lit_c<'|'>);
+
return dsl::op<Ast::ExprBinaryArithmetic::bit_or>(bit_or) /
+
dsl::op<Ast::ExprBinaryArithmetic::bit_xor>(LEXY_LIT("^"));
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/da/dd5/class_b_t_1_1_x_m_l_parser-members.html b/da/dd5/class_b_t_1_1_x_m_l_parser-members.html new file mode 100644 index 000000000..bd659470b --- /dev/null +++ b/da/dd5/class_b_t_1_1_x_m_l_parser-members.html @@ -0,0 +1,125 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::XMLParser Member List
+
+
+ +

This is the complete list of members for BT::XMLParser, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
clearInternalState() override (defined in BT::XMLParser)BT::XMLParservirtual
instantiateTree(const Blackboard::Ptr &root_blackboard, std::string main_tree_to_execute={}) override (defined in BT::XMLParser)BT::XMLParservirtual
loadFromFile(const std::filesystem::path &filename, bool add_includes=true) override (defined in BT::XMLParser)BT::XMLParservirtual
loadFromText(const std::string &xml_text, bool add_includes=true) override (defined in BT::XMLParser)BT::XMLParservirtual
operator=(const XMLParser &other)=delete (defined in BT::XMLParser)BT::XMLParser
operator=(XMLParser &&other) noexcept (defined in BT::XMLParser)BT::XMLParser
operator=(const Parser &other)=delete (defined in BT::Parser)BT::Parser
operator=(Parser &&other)=default (defined in BT::Parser)BT::Parser
Parser()=default (defined in BT::Parser)BT::Parser
Parser(const Parser &other)=delete (defined in BT::Parser)BT::Parser
Parser(Parser &&other)=default (defined in BT::Parser)BT::Parser
registeredBehaviorTrees() const override (defined in BT::XMLParser)BT::XMLParservirtual
XMLParser(const BehaviorTreeFactory &factory) (defined in BT::XMLParser)BT::XMLParser
XMLParser(const XMLParser &other)=delete (defined in BT::XMLParser)BT::XMLParser
XMLParser(XMLParser &&other) noexcept (defined in BT::XMLParser)BT::XMLParser
~Parser()=default (defined in BT::Parser)BT::Parservirtual
~XMLParser() override (defined in BT::XMLParser)BT::XMLParser
+
+ + + + diff --git a/da/de2/class_safe_any_1_1_simple_string-members.html b/da/de2/class_safe_any_1_1_simple_string-members.html new file mode 100644 index 000000000..e11e47633 --- /dev/null +++ b/da/de2/class_safe_any_1_1_simple_string-members.html @@ -0,0 +1,132 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
SafeAny::SimpleString Member List
+
+
+ +

This is the complete list of members for SafeAny::SimpleString, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
capacity_left (defined in SafeAny::SimpleString)SafeAny::SimpleString
data (defined in SafeAny::SimpleString)SafeAny::SimpleString
data() const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
isSOO() const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator!=(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator<(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator<=(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator=(const SimpleString &other) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator=(SimpleString &&other) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator==(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator>(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
operator>=(const SimpleString &other) const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(const std::string &str) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(const std::string_view &str) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(const SimpleString &other) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(SimpleString &&other) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(const char *input_data) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
SimpleString(const char *input_data, std::size_t size) (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
size() const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
soo (defined in SafeAny::SimpleString)SafeAny::SimpleString
str (defined in SafeAny::SimpleString)SafeAny::SimpleString
toStdString() const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
toStdStringView() const (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
~SimpleString() (defined in SafeAny::SimpleString)SafeAny::SimpleStringinline
+
+ + + + diff --git a/da/de5/class_b_t_1_1_sequence_node__inherit__graph.map b/da/de5/class_b_t_1_1_sequence_node__inherit__graph.map new file mode 100644 index 000000000..47cdc2243 --- /dev/null +++ b/da/de5/class_b_t_1_1_sequence_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/da/de5/class_b_t_1_1_sequence_node__inherit__graph.md5 b/da/de5/class_b_t_1_1_sequence_node__inherit__graph.md5 new file mode 100644 index 000000000..4a35ddcb3 --- /dev/null +++ b/da/de5/class_b_t_1_1_sequence_node__inherit__graph.md5 @@ -0,0 +1 @@ +d7ba4d364ea7f3355b5f2f66c7409d1a \ No newline at end of file diff --git a/da/de5/class_b_t_1_1_sequence_node__inherit__graph.png b/da/de5/class_b_t_1_1_sequence_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..30da18ee9bf481a5fc52079c1c24813e3a22e8db GIT binary patch literal 6151 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::_xid_start_character Member List
+
+
+ +

This is the complete list of members for BT::Grammar::_xid_start_character, including all inherited members.

+ + + + + +
char_class_ascii() (defined in BT::Grammar::_xid_start_character)BT::Grammar::_xid_start_characterinlinestatic
char_class_match_cp(char32_t cp) (defined in BT::Grammar::_xid_start_character)BT::Grammar::_xid_start_characterinlinestatic
char_class_match_swar(lexy::_detail::swar_int c) (defined in BT::Grammar::_xid_start_character)BT::Grammar::_xid_start_characterinlinestatic
char_class_name() (defined in BT::Grammar::_xid_start_character)BT::Grammar::_xid_start_characterinlinestatic
+
+ + + + diff --git a/da/ded/class_b_t_1_1_consume_queue-members.html b/da/ded/class_b_t_1_1_consume_queue-members.html new file mode 100644 index 000000000..af63a1ad7 --- /dev/null +++ b/da/ded/class_b_t_1_1_consume_queue-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ConsumeQueue< T > Member List
+
+
+ +

This is the complete list of members for BT::ConsumeQueue< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ConsumeQueue(const std::string &name, const NodeConfig &config) (defined in BT::ConsumeQueue< T >)BT::ConsumeQueue< T >inline
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ConsumeQueue< T >)BT::ConsumeQueue< T >inlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() overrideBT::ConsumeQueue< T >inlinevirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.map b/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.map new file mode 100644 index 000000000..2cb38ce03 --- /dev/null +++ b/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.md5 b/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.md5 new file mode 100644 index 000000000..906053136 --- /dev/null +++ b/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.md5 @@ -0,0 +1 @@ +502289abb7c2550a887a4918fa763787 \ No newline at end of file diff --git a/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.png b/da/dee/class_b_t_1_1_manual_selector_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..882dd0f36102a14fc7008f0ddfbf533ed45b0d49 GIT binary patch literal 13171 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::RetryNodeTypo Member List
+
+
+ +

This is the complete list of members for BT::RetryNodeTypo, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::RetryNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::RetryNode)BT::RetryNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
RetryNode(const std::string &name, int NTries) (defined in BT::RetryNode)BT::RetryNode
RetryNode(const std::string &name, const NodeConfig &config) (defined in BT::RetryNode)BT::RetryNode
RetryNodeTypo(const std::string &name, int NTries) (defined in BT::RetryNodeTypo)BT::RetryNodeTypoinline
RetryNodeTypo(const std::string &name, const NodeConfig &config) (defined in BT::RetryNodeTypo)BT::RetryNodeTypoinline
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~RetryNode() override=default (defined in BT::RetryNode)BT::RetryNodevirtual
~RetryNodeTypo() override=default (defined in BT::RetryNodeTypo)BT::RetryNodeTypovirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/da/df5/class_b_t_1_1_groot2_publisher.html b/da/df5/class_b_t_1_1_groot2_publisher.html new file mode 100644 index 000000000..d587d46b5 --- /dev/null +++ b/da/df5/class_b_t_1_1_groot2_publisher.html @@ -0,0 +1,222 @@ + + + + + + + +BehaviorTree: BT::Groot2Publisher Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Groot2Publisher Class Reference
+
+
+ +

The Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2. + More...

+ +

#include <groot2_publisher.h>

+
+Inheritance diagram for BT::Groot2Publisher:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Groot2Publisher:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Groot2Publisher (const BT::Tree &tree, unsigned server_port=1667)
 
Groot2Publisher (const Groot2Publisher &other)=delete
 
+Groot2Publisheroperator= (const Groot2Publisher &other)=delete
 
Groot2Publisher (Groot2Publisher &&other)=default
 
+Groot2Publisheroperator= (Groot2Publisher &&other)=default
 
void setMaxHeartbeatDelay (std::chrono::milliseconds delay)
 setMaxHeartbeatDelay is used to tell the publisher when a connection with Groot2 should be cancelled, if no heartbeat is received.
 
+std::chrono::milliseconds maxHeartbeatDelay () const
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Detailed Description

+

The Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2.

+

An inter-process communication mechanism allows the two processes to communicate through a TCP port. The user should provide the port to be used in the constructor.

+

Member Function Documentation

+ +

◆ setMaxHeartbeatDelay()

+ +
+
+ + + + + + + + +
void BT::Groot2Publisher::setMaxHeartbeatDelay (std::chrono::milliseconds delay)
+
+ +

setMaxHeartbeatDelay is used to tell the publisher when a connection with Groot2 should be cancelled, if no heartbeat is received.

+

Default is 5000 ms

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/da/df5/class_b_t_1_1_groot2_publisher.js b/da/df5/class_b_t_1_1_groot2_publisher.js new file mode 100644 index 000000000..2395a2f7f --- /dev/null +++ b/da/df5/class_b_t_1_1_groot2_publisher.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_groot2_publisher = +[ + [ "setMaxHeartbeatDelay", "da/df5/class_b_t_1_1_groot2_publisher.html#aa8266d54c77499c29fca5622941a5583", null ] +]; \ No newline at end of file diff --git a/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.map b/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.map new file mode 100644 index 000000000..bff81633a --- /dev/null +++ b/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.md5 b/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.md5 new file mode 100644 index 000000000..b407cad65 --- /dev/null +++ b/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.md5 @@ -0,0 +1 @@ +b786cec24fb5f0fc543f60a1e46b28bd \ No newline at end of file diff --git a/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.png b/da/dfa/struct_b_t_1_1_blackboard_1_1_entry__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe5a99fcbebe269be590c9a71f08a2e8655fc98 GIT binary patch literal 10297 zcmZ{qWmuKn)As2`Lb^l1O-Q$NOKbrpHVslDEnOlYNH<8c=>{nQDW$u+I|Kpgd=~eY z|M7l!@xV)WuC-?7oVn&VUtg;!;9^l=As`^&Dk;ipARr*hf`5Bspn<;$YI?te3!162 zf-J(rOIs_$IsW(LCf}6E+&-fql_{5`O>7}ES?0Faw9)GeuGcyyn)$3uD9wvZDm#m*um^dq~IPxJ|uP}|kNZOWIKsdkND%MF?Y+{Hsv zMs1CQ=vaxccEGsMPQ*Rv0Qz|NzckiAZ%-7e~=Q2Z0O-*xDNcdSk z4Dn2VVaag++|eP+A*G<;dH$z&p~0D4!uRELxxxC7=-(Rh>GpR2zb!ZA@>d_`>mvAV zrjBm^4Lk3b)lUVVS`6o_riMgDqDf--7Zk8OWmYk6|BNamBvkpXm+%SAODo>{6n+~r zfe*=(Hq%cpJZEdHpDz17h*ecp@nhL@kvTXznjEin;=&7rkFWPDoL7ILW_X_{c_|mg z<`-5Q;;bz-dmSGg8Sjqe#mC1-M@P5iD#guInW3+DN3rnmj1isBT4v_S1V6dmqFnC__xS-fmH4n)HQ!4|rHfS(#B-_}k%P)4$Vk=y(B?R=|E~ z0Jw!tlWQ5o+s^I4z-SyciuwhGR`-_h|BkgZ8>X&^*b#-;UPe&C>^&1GA4ehb& z{T_VN($hKm?pN9aR8j>ZIP~gPc6WQ*1JHH9zr)n4`%p!GF>T~$4i44(q?d(6WNSEc zxcOqKzs7nTd>cnlP|%NthU2qoqwy*;1sabHg4?@0)z$Iw@votw47|K?^fF(Lrd#ic zp-^bag-%9Ba4@>4>z}sK(U{IKQs;Tw`YMlq7WcDkZhNmnnEcdtD z663Wt+J>IHOp(;0U4`m7?qIWyPEJV1n|%rH9v%b~6z}`C{n2TRfd_&m%}rRB7{(_i zem8DMvTHgJ&`d!K@CP1KY4RJb(e1DA;^rKkSqLgB>brOEMkGI>4wXN3Ar6oX%?uV8V@9M%PJ^1pYEt@ zUIOE#rlqA>*yFG<RM*|z9iN=M_cJOs!pu((Uf_b=-QB^# zG@c{)brx~-<=+cUT~hSk-{CJ3Rp%*^3|Z@dlr z4m{Yny~Z6WQjIg5H2QWOm=oQ zi7$&f@~FvS^>cVw7_V4KsGXjpk#tup-%D-cJI_iwEHz6M&9a_e1>S&g-kSFwT?(4-b#;Kr&CN zhs8_Y2)rF78y0){QlFWLX;LSysi|q9)+VXf=jz0Kd^t+u{zsaGpKsoGoob7S-t>e7 zCTieao4|%TkL%*K2#5GeN%<2=_qZ*2bZ=bD*;MpanRTZu;JrNhj7!pP zxn(hbXm2klUgQ2|`5|#>Y02qiqxU4k>#)jDauT10=0%y0grU8`Rt%%U_m8_8;qr{Y zS+*OtGZ;Z=DbV`V%>8&2XR@f`9bXU)5O(&BC9l8ySLq@yq4q6TU8cV*dZOv`Tbn-a zB1!uCiqp{0u=>9fe(9GA_R%1LRBMVWxP+-|e)Uz|` zj-*zE%+}k}c6N4>EFL~(QA>tJPjUIRWQncc-g=jq9Z(r?^mXh6EOekUe%h7d5S_%?fWoR-9L|sz?7*lu=al-OIJE?t9}3eeJ?GOpW+=3K~`mDv}J}z zzC2o$2pkS~-_1*6$MU;4T$GiQ(nOh=vV{7j3FD6i#E$Kv8$V=X`G zKsUY=FO}f3H?P;lVP|)Dfz-*LnJPvQ=Bp8cOKsEBq-Gj1m&GZf3yvl_P8D&dn+*d|yF@l-$)W zetRSXEJ7w|r{BD3f>&uB$Z^=sHiBsFcOY6qlatlgt9WHJ)R~gf)low*ZI4}Mi-D_Cr=J-|M@*!_z{ti zjMdv4f&AdUlN}7|#jg4JrlpfgbTu`#+w*yQ@LF!C4aMv8gMJVrs+_6TIG{Mdqot)4uv<_B`mSni2o8QHcjqRG%`n`a9U%)3Y&NqYtD|50C)IYsbbk$U)Mn z&~Gq3;iZTeo1fQfxjpHxZIp06P_@X%t3DFfQ+{2uPyfVczaj{~8UFeXS5!NbTXLxF>)`}(!Mub*aZT9TV9dpKVYr4e?LrHGLK79CADoG!|eSK30O!}joa2*+!3aW^2dCLCrL z7AofF<|gwU&Q^Exjan-g#82(Zsi{SRbQLEjCr9G(XRcN`L&T+6-droPOex{jL?@j9 zY0LE<+wR($X-Zi+hw3QZT-={OA7-;<(62y^r`4!shp&gEI!VX67s(MY^S;GAgUbX7 zRJJR-1)1f?Gx@&+pf8V6e0_bxX~gCx-fBKi5j_*=UzoT8X+sU%l5kiQ6T4V~0)ZsV zf$gM^t%46u5d`h8SfI}*~keFkP zF42(JiK%I3i3i3%hT*j=Y-vv(x)<%hU2+&!p+_OW^49fmVK#(kFLQi=z|@5KA={hlR5JCpPP%$gFHBgb9SiC>lV0`k)&4pE`Q~ zXh7zglaQ9NAWN;TWe1?%BlDaUf2BtFH9RI{C4um*h_uDTue+Cbel@#l!=hK zKZqjD@SK~%1yAx(Sa+Mk@aJ5i!u+`d-sz|FcDeKae z-7Ma{{8=T961rdbI_$YWXg>^-QgUNGGYK2J^|O(+9t_no!AE4k@yC>hEM@I!t(}g% zx%(TDSCmH}y0<+fPX-N=^2Su8-=0%=yPw@twUI{TM5*yc#PTg&XwZZ$HWbr+8m1p4 zU&0-NAZJ@H_BC2KIdLVPK1MQ9y(jg6p)}|frJzNfqO< zKmn#muRJ0%$-{UO14~`jpySdBav9r#tWR1N__V5I9_rH1EiO1>n2?UeHGZ<^>QI&m zez>iGHlF>XB7VzIqm?yD-~)L^BsysIPKhJqtljYdjvQ+gFTa?CaphcP_SMh2Xq}3_ zlSxxq9ZRa{_a6)y7>S;HyV(?nomenS2!; zm40PdJ;dXC+1S2_-wVG8ILlK-z(A3H;kT-Y0ozE2c&2+mwlf z#*Q84?yuThzdDLV?<_scyt;XA>s#|G;L>3%gjYJ$T+wm)bM9*QKm~^)Ma<^J@h_dg zh0oD?;ApgGlr5{JLmS>SAvX~{ft!1m*g}Cz1!V@3E}~O4`#7dNINGef3Z0W+4RSm$ z<*5G9T1Z4vbIJL(Jh<@FMvw@-AD%Kz%kL#v3J50MQe%RDtapUSrK=-9y(+^TPG)ceI!fqPq4)_hjO94}SMSan~7oom*6PuBY8 zETSB47_CTRF24B`b06QS%uBtAdv(`$FDp)7p1eckWG6;S&ZOwtTsjmzFB&_DX!+LC z9iG(e0!g6-(&Q#Al9-Dui2Xxs0snHN6j`QXR!`eTmb_#C8T;D@qwvO2LQl~Ik!P)| znLK?@+1B41Q$45EMo)yaeDJXw5t1mR70vL8qyNz7hJ0BQCluBf zU8!2aKyaNl^Nf&-n=G^VMj0b`tLbfYq4XDqr&K0Ae>I<0)#iGi{QL&VcHqFq75RD{)-9@gA^X9_2rLMp+W!Il6f$1l#lGZj zEOx|wgfr3-=}8fu+?IFa$Lp$q!vz%0~AL(sb@- z%ysk(He1RY#)}(*BF+(3T_>H9?*F%_Q7zdf8TBQew^kxln+{_pMC<-SJER(Qa3^71 zH@`}TxUt<;_oG5d_m=gS#Gtah6(KoIW|;jYy$GE!o4h@lN4ioFQZVbKE!w@=RtvH1 zfGxw3{R;aE%(cuk$;0^D{Lk*AR!P|GGSUJ1shETPZ0&j*T*S(c;2`+T5St|89G)3Z z3gSrp|6(m5h21$-NV~b1AM4DXMM~1m{cFwpa*<^f z`qQCYxzUsMsbR(XV02G zJ+0#j!&0O%U8gA{?+8_n_eJg-Hu@%IzTQg91)ZlpKtG}?{=_ATWfy>SckDgKeeq?>6> z##Q#YTY@#$L!=)iEUYH27zfV3$Pd9DF~rD(<2JFEWZ%QGyYMLq4x-t}3D+~PQKZYm zkDXv>E4sY*YjiQC-<@!@rQU&y(`${!+58Ff=1%Pl^7_}mjKrGVe zfvkRM8({s6C$&%5qTg-=cY*NsEo_;`X`Z)=MjOb@Sraepk9-l%Kz+>R?H9jSJ@7Yo z?J(wA8e4s9VVK}LN3~7PXqO4YD2^pPEUANhKR)yAfz^5aRc`?4r{$^-sPUQ~IxFfX zEZ|Z|q(!&Le*!JY4&(#rkEFwwxDMZhiu1?zSu$#`Ak8)Z44G;av}~PSewz?cW%AK^cw{(Is!?&$%Mcj?m_GHpC=VaK|gy$Zyq?Bq=TV3gCw+@ts69RsWhsyA%X-no;(N z&G8R<*7zRQBkf4-C)-bZ((9+EDiv33Yi1jvRez*?P<~{ScRpL8yx(!vS*L(upP11R zlsRSaHf8u*&@IdFr{u$%8`xR~DZ^T`YF(jOE_l;9E(OJn-TCs6xyzkJNfKB?CgOF1 zK?!E+2<$+@R9Md@;>=10SE28h;IrYJ=E|`V*hgY*tv3?}2D+y*C0^Jgd#4mNjy<@z z?s%aVA)<3C>9rB>(?`&XkVnKPDL>aer>G${;Yw&45$pR^kKUL)xb*P4qITd=u5OU< zlC#NTqTwM1s!xkiKMu>7a2BvGYu)eo&~zUaBkLGVoA*GWpWS2K)3FBx-_$rA~W z!kYPOnN96x$5ly0n=w^ndnO4pzH*^Vb@MRFJ(VNxU{(u-H~S88*J4(z>Nm0 z4>i2d2vmJXHgX37V&29(=3X}Hd{6r51Q<Pr4WTC2EvjT z!!eZqJ?LoH(I{I^4A$4v09sfnx*xDU#~vf0@cTXhy{eSu4b z02O5jZ?s-5x@N8?Id;iBEf?vI)xmrSAR3<2i-PZFb>S1^exCIWQ4IxUmnb!rvIgoU zLnk!>1d**ID$k0eki-<55u_Fjb9GZ)LbS=y_5vP%Lf}6G)Bi(O z^)3^d@mRr-6bH@xik4q|8~BGamrM4hAiTCdBVV#~iEAXU(6*S!sr-|$3FKP0kBqex z*btlX<)Fktv1XMaov&=qU-;>l9>sShzC*UJsG!)FO7TM1fq5t&%EiCHYvCjo^~T`f z9Exo7uOiBAM}G!21vr&Nyn)K@<5qtfT!kPOM?z9?%NjRF#xRvJLj+zCu(x;XOb9T| zaZV0Do@IVGPY6evT+#I+MiHsT?X&R4Vzu|0&tYQk6B~#@r9Oa0V>R%S(o3QP6wAkC zE(O2G@1F2!WrQXMQ!K0V*-W8#*Rr+joFi3IK@1=7+sy4%L$|`-)3c^Ip%FkYg7zTNJjP7hc0!aCuByA#LR(SSW zqdJwm1e-&a!Dq`vg+w_;F(Cn4JeiN4RMjc^rKN;yO5z;7p$XkmK z7qlXDUc0Ka&lB=YaHED!ec=faz`({%HMhq-hijJCYqyqG`Hdyi9ABFE1ov0`cxO~> zOHr=f=<>0De|r1PaG(!vc2#ZG`0jVm({-KKQ?QZZXsYtZhfmreMK5m(d5Kz%9!t|= ziEea+iu@GhY)V`I-Y>jIsC|qspX12JHNGSQ!|tQg@~^KKOc!;ltH%)?pZmM)OC{zR z|MO+7vaT82;=kSrjye8g3*~3PE`bFIQM8)BEuz% z1L7BIw0M%SH>Uk2%7Z*bb3E_u_HgF*$!0$;z3Qm!YqTmF>-jnk!376o1VBxgIXRb=D65i&X+ zO$T6`0Je=bx!I4`8u?xY0W^<=g|#zZ&k68)mTIa1{}>4=se+>;Hz2{=Nk+cy^Yf|4 z>)mlFDX&aT82~0V+31NOpBrc(xW{Jn z+1?}qyIx(mL6fWQ&PP{QW>L}9U|L@?aD19`z`hC<(R1#0PV<)jz< zSVq7ApdSi>K&tl2m9GKGGVY6qsC?r=1s&SQ4&dYO_!(%+R)XfRzP|pCvnf3YE9=@L zbBZ4Vlv}seR}65qI<7BYzkUUrBpL8S0NNk%J@5cjzJLob4=`SB3H|)}v(U#Ke9qQe z9*sTHgM3tHLlMJ{Gj;0an*-{AeAqcD^$j&`s;NFcDj{1NILn6dcf9l0#fd0WQZi zS%f zXn20jmh3g~_=YjI}y#Vu3fO z2{{70Accm7^$repTJbRit^hDPkYe5tEa#C#(q_!{8V2ig9u~8#Wtsy=9(cK~XAZc; z`QPQJ_*gKp0;>rDk3#{H5_aCg0RsXh8hTgH)GG{|RgU||PtVT+n-EGcy8dd?KR2urO?3^`Cd=^8op;ZEOTqSMxp+r+?rlCpR|` z@Qyez`+#C;X&JT;CL$6RhK7bP=&gVynPi+c`-mU6RaWN|U?uKl$Ds-_XTqISpCmJN zNv8C3W*s^a6&2<6zH|V9Zx?V8YLSmCU6iS}78_U-WTpYJ2??lHW#M~5KG%FD+7(-4 zdCFRgE=m$$wgTuCK0f}VGYh-y#do^+`T0G@Qd|r`p3lU@7C$b6aU4Jn$IA2sfnOR} ze>nrlB<-aK;U^H8RhGjvU!G87wG9d`t2}o6Z(s29Cjid{lLY#Vwo_yxAD=rqI+8`m zBluqLvV_$}yFh-=ySfm7yw^jfdtZA z_De4xo$3Cp!mrBv%4uP75wWbFikLVE96E@0^PQ3G1<(Dm|BxCnac3won}f46BakBS z0c)$P>R{yp%%=OB`g8A;|qI-0-Dz=Gv7kI$q5DGVQVrC{(P3;Lto%sNtgDDU$s}Z^|l72As z(%avk19)wI9s@u!AO}58_N+$Ih`kDaLj4%CyNzH*#&Rev8|Z987kNL6A2`&blaudc znWbu}wYP`>c!Q_gdwVefT~$jHk^-~{kkK+1^2GJ6tuKIAPrl^k<=vgB%CRo}4)89B zA*X{mel%Q)$E;hnhXMow88|SY-nnD7DX;79rl*pV$!cj$8MATVxbJO1N_Pfds#9f( z3dYLvO#;udQzV ZXf|k^x0aqDgIPcXB{? + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators/force_failure_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
force_failure_node.h
+
+
+
1/* Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/decorator_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief The ForceFailureNode returns always FAILURE or RUNNING.
+
21 */
+ +
23{
+
24public:
+
25 ForceFailureNode(const std::string& name) : DecoratorNode(name, {})
+
26 {
+
27 setRegistrationID("ForceFailure");
+
28 }
+
29
+
30private:
+
31 virtual BT::NodeStatus tick() override;
+
32};
+
33
+
34//------------ implementation ----------------------------
+
35
+
36inline NodeStatus ForceFailureNode::tick()
+
37{
+
38 setStatus(NodeStatus::RUNNING);
+
39
+
40 const NodeStatus child_status = child_node_->executeTick();
+
41
+
42 if(isStatusCompleted(child_status))
+
43 {
+
44 resetChild();
+
45 return NodeStatus::FAILURE;
+
46 }
+
47
+
48 // RUNNING or skipping
+
49 return child_status;
+
50}
+
51} // namespace BT
+
Definition: decorator_node.h:9
+ +
The ForceFailureNode returns always FAILURE or RUNNING.
Definition: force_failure_node.h:23
+
virtual BT::NodeStatus executeTick()
The method that should be used to invoke tick() and setStatus();.
+
void setStatus(NodeStatus new_status)
setStatus changes the status of the node. it will throw if you try to change the status to IDLE,...
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/db/d0f/class_b_t_1_1_script_node.html b/db/d0f/class_b_t_1_1_script_node.html new file mode 100644 index 000000000..dbe64a706 --- /dev/null +++ b/db/d0f/class_b_t_1_1_script_node.html @@ -0,0 +1,336 @@ + + + + + + + +BehaviorTree: BT::ScriptNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+
+Inheritance diagram for BT::ScriptNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::ScriptNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ScriptNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/db/d10/always__failure__node_8h_source.html b/db/d10/always__failure__node_8h_source.html new file mode 100644 index 000000000..f7fd04c10 --- /dev/null +++ b/db/d10/always__failure__node_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/always_failure_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
always_failure_node.h
+
+
+
1/* Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/action_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * Simple actions that always returns FAILURE.
+
21 */
+ +
23{
+
24public:
+
25 AlwaysFailureNode(const std::string& name) : SyncActionNode(name, {})
+
26 {
+
27 setRegistrationID("AlwaysFailure");
+
28 }
+
29
+
30private:
+
31 virtual BT::NodeStatus tick() override
+
32 {
+
33 return NodeStatus::FAILURE;
+
34 }
+
35};
+
36} // namespace BT
+
Definition: always_failure_node.h:23
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.map b/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.map new file mode 100644 index 000000000..37d18d367 --- /dev/null +++ b/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.map @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.md5 b/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.md5 new file mode 100644 index 000000000..b2c375803 --- /dev/null +++ b/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.md5 @@ -0,0 +1 @@ +a76170e1d7da326f940ca26a351f35b3 \ No newline at end of file diff --git a/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.png b/db/d2b/class_b_t_1_1_sync_action_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..315e887acff095e30ceaa20236218b3745921c53 GIT binary patch literal 47678 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 z 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 a{9(LyLSxwM=GPhw{#cu@Wo4PVNB$32 + + + diff --git a/db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.md5 b/db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.md5 new file mode 100644 index 000000000..a88fb38a7 --- /dev/null +++ b/db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.md5 @@ -0,0 +1 @@ +23e9457f053d9a7177206cbf11b61fbc \ No newline at end of file diff --git a/db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.png b/db/d2d/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..93e92fb1ac3b2987af1443d94b5ea7a3aeb3c66a GIT binary patch literal 6278 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 literal 0 HcmV?d00001 diff --git a/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.map b/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.map new file mode 100644 index 000000000..678557612 --- /dev/null +++ b/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.md5 b/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.md5 new file mode 100644 index 000000000..9002eb5f2 --- /dev/null +++ b/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.md5 @@ -0,0 +1 @@ +f07e29e6226b041a8d88179ab68f5422 \ No newline at end of file diff --git a/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.png b/db/d31/class_b_t_1_1_groot2_publisher__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5906ed3f711963d72a296a1754af3a3905dd0a36 GIT binary patch literal 5537 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 literal 0 HcmV?d00001 diff --git a/db/d57/demangle__util_8h_source.html b/db/d57/demangle__util_8h_source.html new file mode 100644 index 000000000..be0001c0a --- /dev/null +++ b/db/d57/demangle__util_8h_source.html @@ -0,0 +1,233 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/demangle_util.h Source File + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
demangle_util.h
+
+
+
1#ifndef DEMANGLE_UTIL_H
+
2#define DEMANGLE_UTIL_H
+
3
+
4#include <chrono>
+
5#include <string>
+
6#include <typeindex>
+
7
+
8#if defined(__clang__) && defined(__has_include)
+
9#if __has_include(<cxxabi.h>)
+
10#define HAS_CXXABI_H
+
11#endif
+
12#elif defined(__GLIBCXX__) || defined(__GLIBCPP__)
+
13#define HAS_CXXABI_H
+
14#endif
+
15
+
16#if defined(HAS_CXXABI_H)
+
17#include <cxxabi.h>
+
18#include <cstdlib>
+
19#include <cstddef>
+
20#endif
+
21
+
22namespace BT
+
23{
+
24inline char const* demangle_alloc(char const* name) noexcept;
+
25inline void demangle_free(char const* name) noexcept;
+
26
+ +
28{
+
29private:
+
30 char const* m_p;
+
31
+
32public:
+
33 explicit scoped_demangled_name(char const* name) noexcept : m_p(demangle_alloc(name))
+
34 {}
+
35
+
36 ~scoped_demangled_name() noexcept
+
37 {
+
38 demangle_free(m_p);
+
39 }
+
40
+
41 char const* get() const noexcept
+
42 {
+
43 return m_p;
+
44 }
+
45
+
46 scoped_demangled_name(scoped_demangled_name const&) = delete;
+
47 scoped_demangled_name& operator=(scoped_demangled_name const&) = delete;
+
48};
+
49
+
50#if defined(HAS_CXXABI_H)
+
51
+
52inline char const* demangle_alloc(char const* name) noexcept
+
53{
+
54 int status = 0;
+
55 std::size_t size = 0;
+
56 return abi::__cxa_demangle(name, NULL, &size, &status);
+
57}
+
58
+
59inline void demangle_free(char const* name) noexcept
+
60{
+
61 std::free(const_cast<char*>(name));
+
62}
+
63
+
64#else
+
65
+
66inline char const* demangle_alloc(char const* name) noexcept
+
67{
+
68 return name;
+
69}
+
70
+
71inline void demangle_free(char const*) noexcept
+
72{}
+
73
+
74inline std::string demangle(char const* name)
+
75{
+
76 return name;
+
77}
+
78
+
79#endif
+
80
+
81inline std::string demangle(const std::type_index& index)
+
82{
+
83 if(index == typeid(std::string))
+
84 {
+
85 return "std::string";
+
86 }
+
87 if(index == typeid(std::string_view))
+
88 {
+
89 return "std::string_view";
+
90 }
+
91 if(index == typeid(std::chrono::seconds))
+
92 {
+
93 return "std::chrono::seconds";
+
94 }
+
95 if(index == typeid(std::chrono::milliseconds))
+
96 {
+
97 return "std::chrono::milliseconds";
+
98 }
+
99 if(index == typeid(std::chrono::microseconds))
+
100 {
+
101 return "std::chrono::microseconds";
+
102 }
+
103
+
104 scoped_demangled_name demangled_name(index.name());
+
105 char const* const p = demangled_name.get();
+
106 if(p)
+
107 {
+
108 return p;
+
109 }
+
110 else
+
111 {
+
112 return index.name();
+
113 }
+
114}
+
115
+
116inline std::string demangle(const std::type_info& info)
+
117{
+
118 return demangle(std::type_index(info));
+
119}
+
120
+
121} // namespace BT
+
122
+
123#undef HAS_CXXABI_H
+
124
+
125#endif // DEMANGLE_UTIL_H
+
Definition: demangle_util.h:28
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/db/d65/class_b_t_1_1_if_then_else_node-members.html b/db/d65/class_b_t_1_1_if_then_else_node-members.html new file mode 100644 index 000000000..6d5f1bbca --- /dev/null +++ b/db/d65/class_b_t_1_1_if_then_else_node-members.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::IfThenElseNode Member List
+
+
+ +

This is the complete list of members for BT::IfThenElseNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::IfThenElseNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
IfThenElseNode(const std::string &name) (defined in BT::IfThenElseNode)BT::IfThenElseNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~IfThenElseNode() override=default (defined in BT::IfThenElseNode)BT::IfThenElseNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html b/db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html new file mode 100644 index 000000000..15094172a --- /dev/null +++ b/db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html @@ -0,0 +1,192 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprIf Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprIf Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprIf:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprIf:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + +

+Public Member Functions

ExprIf (expr_ptr condition, expr_ptr then, expr_ptr else_)
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + + + + + +

+Public Attributes

+expr_ptr condition
 
+expr_ptr then
 
+expr_ptr else_
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprIf::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html b/db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html new file mode 100644 index 000000000..4e67910a4 --- /dev/null +++ b/db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html @@ -0,0 +1,141 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprBase Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprBase Struct Referenceabstract
+
+
+
+Inheritance diagram for BT::Ast::ExprBase:
+
+
Inheritance graph
+ + + + + + + + + + +
[legend]
+ + + + +

+Public Types

+using Ptr = std::shared_ptr< ExprBase >
 
+ + + +

+Public Member Functions

+virtual Any evaluate (Environment &env) const =0
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/db/d70/struct_b_t_1_1_monitor_1_1_reply_header-members.html b/db/d70/struct_b_t_1_1_monitor_1_1_reply_header-members.html new file mode 100644 index 000000000..9ce0df996 --- /dev/null +++ b/db/d70/struct_b_t_1_1_monitor_1_1_reply_header-members.html @@ -0,0 +1,112 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Monitor::ReplyHeader Member List
+
+
+ +

This is the complete list of members for BT::Monitor::ReplyHeader, including all inherited members.

+ + + + + +
ReplyHeader() (defined in BT::Monitor::ReplyHeader)BT::Monitor::ReplyHeaderinline
request (defined in BT::Monitor::ReplyHeader)BT::Monitor::ReplyHeader
size() (defined in BT::Monitor::ReplyHeader)BT::Monitor::ReplyHeaderinlinestatic
tree_id (defined in BT::Monitor::ReplyHeader)BT::Monitor::ReplyHeader
+
+ + + + diff --git a/db/d74/struct_b_t_1_1_ast_1_1_expr_base-members.html b/db/d74/struct_b_t_1_1_ast_1_1_expr_base-members.html new file mode 100644 index 000000000..262ef4688 --- /dev/null +++ b/db/d74/struct_b_t_1_1_ast_1_1_expr_base-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::ExprBase Member List
+
+
+ +

This is the complete list of members for BT::Ast::ExprBase, including all inherited members.

+ + + + +
evaluate(Environment &env) const =0 (defined in BT::Ast::ExprBase)BT::Ast::ExprBasepure virtual
Ptr typedef (defined in BT::Ast::ExprBase)BT::Ast::ExprBase
~ExprBase()=default (defined in BT::Ast::ExprBase)BT::Ast::ExprBasevirtual
+
+ + + + diff --git a/db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html b/db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html new file mode 100644 index 000000000..c515f0be7 --- /dev/null +++ b/db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html @@ -0,0 +1,207 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprAssignment Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprAssignment Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprAssignment:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprAssignment:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + +

+Public Types

enum  op_t {
+  assign_create +, assign_existing +, assign_plus +, assign_minus +,
+  assign_times +, assign_div +
+ }
 
- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+ + + + + + + + + +

+Public Member Functions

+const char * opStr () const
 
ExprAssignment (expr_ptr _lhs, op_t op, expr_ptr _rhs)
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + + + + + +

+Public Attributes

+enum BT::Ast::ExprAssignment::op_t op
 
+expr_ptr lhs
 
+expr_ptr rhs
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprAssignment::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/db/d7e/leaf__node_8h_source.html b/db/d7e/leaf__node_8h_source.html new file mode 100644 index 000000000..003d30d76 --- /dev/null +++ b/db/d7e/leaf__node_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/leaf_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
leaf_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#ifndef LEAFNODE_H
+
15#define LEAFNODE_H
+
16
+
17#include "behaviortree_cpp/tree_node.h"
+
18
+
19namespace BT
+
20{
+
21class LeafNode : public TreeNode
+
22{
+
23protected:
+
24public:
+
25 LeafNode(const std::string& name, const NodeConfig& config) : TreeNode(name, config)
+
26 {}
+
27
+
28 virtual ~LeafNode() override = default;
+
29};
+
30} // namespace BT
+
31
+
32#endif
+
Definition: leaf_node.h:22
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
TreeNode(std::string name, NodeConfig config)
TreeNode main constructor.
+
Definition: action_node.h:25
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/db/d81/bt__factory_8h_source.html b/db/d81/bt__factory_8h_source.html new file mode 100644 index 000000000..0bcbf416c --- /dev/null +++ b/db/d81/bt__factory_8h_source.html @@ -0,0 +1,708 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/bt_factory.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_factory.h
+
+
+
1/* Copyright (C) 2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2023 Davide Faconti - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#ifndef BT_FACTORY_H
+
15#define BT_FACTORY_H
+
16
+
17#include <filesystem>
+
18#include <functional>
+
19#include <memory>
+
20#include <unordered_map>
+
21#include <set>
+
22#include <vector>
+
23
+
24#include "behaviortree_cpp/contrib/magic_enum.hpp"
+
25#include "behaviortree_cpp/behavior_tree.h"
+
26
+
27namespace BT
+
28{
+
29/// The term "Builder" refers to the Builder Pattern (https://en.wikipedia.org/wiki/Builder_pattern)
+
30using NodeBuilder =
+ +
32
+
33template <typename T, typename... Args>
+
34inline NodeBuilder CreateBuilder(Args... args)
+
35{
+
36 return [=](const std::string& name, const NodeConfig& config) {
+
37 return TreeNode::Instantiate<T, Args...>(name, config, args...);
+
38 };
+
39}
+
40
+
41template <typename T>
+
42inline TreeNodeManifest CreateManifest(const std::string& ID,
+
43 PortsList portlist = getProvidedPorts<T>())
+
44{
+
45 if constexpr(has_static_method_metadata<T>::value)
+
46 {
+
47 return { getType<T>(), ID, portlist, T::metadata() };
+
48 }
+
49 return { getType<T>(), ID, portlist, {} };
+
50}
+
51
+
52#ifdef BT_PLUGIN_EXPORT
+
53
+
54#if defined(_WIN32)
+
55#define BTCPP_EXPORT extern "C" __declspec(dllexport)
+
56#else
+
57// Unix-like OSes
+
58#define BTCPP_EXPORT extern "C" __attribute__((visibility("default")))
+
59#endif
+
60
+
61#else
+
62#define BTCPP_EXPORT static
+
63#endif
+
64/* Use this macro to automatically register one or more custom Nodes
+
65* into a factory. For instance:
+
66*
+
67* BT_REGISTER_NODES(factory)
+
68* {
+
69* factory.registerNodeType<MoveBaseAction>("MoveBase");
+
70* }
+
71*
+
72* IMPORTANT: this function MUST be declared in a cpp file, NOT a header file.
+
73* You must add the definition [BT_PLUGIN_EXPORT] in CMakeLists.txt using:
+
74*
+
75* target_compile_definitions(my_plugin_target PRIVATE BT_PLUGIN_EXPORT )
+
76
+
77* See examples in sample_nodes directory.
+
78*/
+
79
+
80#define BT_REGISTER_NODES(factory)
+
81 BTCPP_EXPORT void BT_RegisterNodesFromPlugin(BT::BehaviorTreeFactory& factory)
+
82
+
83constexpr const char* PLUGIN_SYMBOL = "BT_RegisterNodesFromPlugin";
+
84
+
85bool WildcardMatch(const std::string& str, StringView filter);
+
86
+
87/**
+
88 * @brief Struct used to store a tree.
+
89 * If this object goes out of scope, the tree is destroyed.
+
90 */
+
91class Tree
+
92{
+
93public:
+
94 // a tree can contain multiple subtree.
+
95 struct Subtree
+
96 {
+
97 using Ptr = std::shared_ptr<Subtree>;
+
98 std::vector<TreeNode::Ptr> nodes;
+
99 Blackboard::Ptr blackboard;
+
100 std::string instance_name;
+
101 std::string tree_ID;
+
102 };
+
103
+
104 std::vector<Subtree::Ptr> subtrees;
+
105 std::unordered_map<std::string, TreeNodeManifest> manifests;
+
106
+
107 Tree();
+
108
+
109 Tree(const Tree&) = delete;
+
110 Tree& operator=(const Tree&) = delete;
+
111
+
112 Tree(Tree&& other) = default;
+
113 Tree& operator=(Tree&& other) = default;
+
114
+
115 void initialize();
+
116
+
117 void haltTree();
+
118
+
119 [[nodiscard]] TreeNode* rootNode() const;
+
120
+
121 /**
+
122 * @brief Sleep for a certain amount of time. This sleep could be interrupted by the method TreeNode::emitWakeUpSignal()
+
123 *
+
124 * @param timeout duration of the sleep
+
125 * @return true if the timeout was NOT reached and the signal was received.
+
126 *
+
127 * */
+
128 bool sleep(std::chrono::system_clock::duration timeout);
+
129
+
130 ~Tree();
+
131
+
132 /// Tick the root of the tree once, even if a node invoked
+
133 /// emitWakeUpSignal()
+ +
135
+
136 /**
+
137 * @brief by default, tickOnce() sends a single tick, BUT
+
138 * as long as there is at least one node of the tree
+
139 * invoking TreeNode::emitWakeUpSignal(), it will be ticked again.
+
140 */
+ +
142
+
143 /// Call tickOnce until the status is different from RUNNING.
+
144 /// Note that between one tick and the following one,
+
145 /// a Tree::sleep() is used
+ +
147 tickWhileRunning(std::chrono::milliseconds sleep_time = std::chrono::milliseconds(10));
+
148
+
149 [[nodiscard]] Blackboard::Ptr rootBlackboard();
+
150
+
151 //Call the visitor for each node of the tree.
+
152 void applyVisitor(const std::function<void(const TreeNode*)>& visitor) const;
+
153
+
154 //Call the visitor for each node of the tree.
+
155 void applyVisitor(const std::function<void(TreeNode*)>& visitor);
+
156
+
157 [[nodiscard]] uint16_t getUID();
+
158
+
159 /// Get a list of nodes which fullPath() match a wildcard filter and
+
160 /// a given path. Example:
+
161 ///
+
162 /// move_nodes = tree.getNodesByPath<MoveBaseNode>("move_*");
+
163 ///
+
164 template <typename NodeType = BT::TreeNode>
+
165 [[nodiscard]] std::vector<const TreeNode*>
+ +
167 {
+
168 std::vector<const TreeNode*> nodes;
+
169 for(auto const& subtree : subtrees)
+
170 {
+
171 for(auto const& node : subtree->nodes)
+
172 {
+
173 if(auto node_recast = dynamic_cast<const NodeType*>(node.get()))
+
174 {
+
175 if(WildcardMatch(node->fullPath(), wildcard_filter))
+
176 {
+
177 nodes.push_back(node.get());
+
178 }
+
179 }
+
180 }
+
181 }
+
182 return nodes;
+
183 }
+
184
+
185private:
+
186 std::shared_ptr<WakeUpSignal> wake_up_;
+
187
+
188 enum TickOption
+
189 {
+
190 EXACTLY_ONCE,
+
191 ONCE_UNLESS_WOKEN_UP,
+
192 WHILE_RUNNING
+
193 };
+
194
+
195 NodeStatus tickRoot(TickOption opt, std::chrono::milliseconds sleep_time);
+
196
+
197 uint16_t uid_counter_ = 0;
+
198};
+
199
+
200class Parser;
+
201
+
202/**
+
203 * @brief The BehaviorTreeFactory is used to create instances of a
+
204 * TreeNode at run-time.
+
205 *
+
206 * Some node types are "builtin", whilst other are used defined and need
+
207 * to be registered using a unique ID.
+
208 */
+ +
210{
+
211public:
+
212 BehaviorTreeFactory();
+
213 ~BehaviorTreeFactory();
+
214
+
215 BehaviorTreeFactory(const BehaviorTreeFactory& other) = delete;
+
216 BehaviorTreeFactory& operator=(const BehaviorTreeFactory& other) = delete;
+
217
+
218 BehaviorTreeFactory(BehaviorTreeFactory&& other) noexcept = default;
+
219 BehaviorTreeFactory& operator=(BehaviorTreeFactory&& other) noexcept = default;
+
220
+
221 /// Remove a registered ID.
+
222 bool unregisterBuilder(const std::string& ID);
+
223
+
224 /** The most generic way to register a NodeBuilder.
+
225 *
+
226 * Throws if you try to register twice a builder with the same
+
227 * registration_ID.
+
228 */
+
229 void registerBuilder(const TreeNodeManifest& manifest, const NodeBuilder& builder);
+
230
+
231 template <typename T>
+
232 void registerBuilder(const std::string& ID, const NodeBuilder& builder)
+
233 {
+
234 auto manifest = CreateManifest<T>(ID);
+
235 registerBuilder(manifest, builder);
+
236 }
+
237
+
238 /**
+
239 * @brief registerSimpleAction help you register nodes of type SimpleActionNode.
+
240 *
+
241 * @param ID registration ID
+
242 * @param tick_functor the callback to be invoked in the tick() method.
+
243 * @param ports if your SimpleNode requires ports, provide the list here.
+
244 *
+
245 * */
+
246 void registerSimpleAction(const std::string& ID,
+
247 const SimpleActionNode::TickFunctor& tick_functor,
+
248 PortsList ports = {});
+
249 /**
+
250 * @brief registerSimpleCondition help you register nodes of type SimpleConditionNode.
+
251 *
+
252 * @param ID registration ID
+
253 * @param tick_functor the callback to be invoked in the tick() method.
+
254 * @param ports if your SimpleNode requires ports, provide the list here.
+
255 *
+
256 * */
+
257 void registerSimpleCondition(const std::string& ID,
+
258 const SimpleConditionNode::TickFunctor& tick_functor,
+
259 PortsList ports = {});
+
260 /**
+
261 * @brief registerSimpleDecorator help you register nodes of type SimpleDecoratorNode.
+
262 *
+
263 * @param ID registration ID
+
264 * @param tick_functor the callback to be invoked in the tick() method.
+
265 * @param ports if your SimpleNode requires ports, provide the list here.
+
266 *
+
267 * */
+
268 void registerSimpleDecorator(const std::string& ID,
+
269 const SimpleDecoratorNode::TickFunctor& tick_functor,
+
270 PortsList ports = {});
+
271
+
272 /**
+
273 * @brief registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro).
+
274 *
+
275 * @param file_path path of the file
+
276 */
+
277 void registerFromPlugin(const std::string& file_path);
+
278
+
279 /**
+
280 * @brief registerFromROSPlugins finds all shared libraries that export ROS plugins for behaviortree_cpp, and calls registerFromPlugin for each library.
+
281 * @throws If not compiled with ROS support or if the library cannot load for any reason
+
282 */
+
283 [[deprecated("Removed support for ROS1")]] void registerFromROSPlugins();
+
284
+
285 /**
+
286 * @brief registerBehaviorTreeFromFile.
+
287 * Load the definition of an entire behavior tree, but don't instantiate it.
+
288 * You can instantiate it later with:
+
289 *
+
290 * BehaviorTreeFactory::createTree(tree_id)
+
291 *
+
292 * where "tree_id" come from the XML attribute <BehaviorTree ID="tree_id">
+
293 *
+
294 */
+
295 void registerBehaviorTreeFromFile(const std::filesystem::path& filename);
+
296
+
297 /// Same of registerBehaviorTreeFromFile, but passing the XML text,
+
298 /// instead of the filename.
+
299 void registerBehaviorTreeFromText(const std::string& xml_text);
+
300
+
301 /// Returns the ID of the trees registered either with
+
302 /// registerBehaviorTreeFromFile or registerBehaviorTreeFromText.
+ +
304
+
305 /**
+
306 * @brief Clear previously-registered behavior trees.
+
307 */
+ +
309
+
310 /**
+
311 * @brief instantiateTreeNode creates an instance of a previously registered TreeNode.
+
312 *
+
313 * @param name name of this particular instance
+
314 * @param ID ID used when it was registered
+
315 * @param config configuration that is passed to the constructor of the TreeNode.
+
316 * @return new node.
+
317 */
+ +
319 const std::string& name, const std::string& ID, const NodeConfig& config) const;
+
320
+
321 /** registerNodeType where you explicitly pass the list of ports.
+
322 * Doesn't require the implementation of static method providedPorts()
+
323 */
+
324 template <typename T, typename... ExtraArgs>
+
325 void registerNodeType(const std::string& ID, const PortsList& ports, ExtraArgs... args)
+
326 {
+
327 static_assert(std::is_base_of<ActionNodeBase, T>::value ||
+
328 std::is_base_of<ControlNode, T>::value ||
+
329 std::is_base_of<DecoratorNode, T>::value ||
+
330 std::is_base_of<ConditionNode, T>::value,
+
331 "[registerNode]: accepts only classed derived from either "
+
332 "ActionNodeBase, "
+
333 "DecoratorNode, ControlNode or ConditionNode");
+
334
+
335 constexpr bool default_constructable =
+
336 std::is_constructible<T, const std::string&>::value;
+
337 constexpr bool param_constructable =
+
338 std::is_constructible<T, const std::string&, const NodeConfig&,
+
339 ExtraArgs...>::value;
+
340
+
341 // clang-format off
+
342 static_assert(!std::is_abstract<T>::value,
+
343 "[registerNode]: Some methods are pure virtual. "
+
344 "Did you override the methods tick() and halt()?");
+
345
+
346 static_assert(default_constructable || param_constructable,
+
347 "[registerNode]: the registered class must have at least one of these two constructors:\n"
+
348 " (const std::string&, const NodeConfig&) or (const std::string&)\n"
+
349 "Check also if the constructor is public!)");
+
350 // clang-format on
+
351
+
352 registerBuilder(CreateManifest<T>(ID, ports), CreateBuilder<T>(args...));
+
353 }
+
354
+
355 /** registerNodeType is the method to use to register your custom TreeNode.
+
356 *
+
357 * It accepts only classed derived from either ActionNodeBase, DecoratorNode,
+
358 * ControlNode or ConditionNode.
+
359 */
+
360 template <typename T, typename... ExtraArgs>
+
361 void registerNodeType(const std::string& ID, ExtraArgs... args)
+
362 {
+
363 if constexpr(std::is_abstract_v<T>)
+
364 {
+
365 // check first if the given class is abstract
+
366 static_assert(!std::is_abstract_v<T>, "The Node type can't be abstract. "
+
367 "Did you forget to implement an abstract "
+
368 "method in the derived class?");
+
369 }
+
370 else
+
371 {
+
372 constexpr bool param_constructable =
+
373 std::is_constructible<T, const std::string&, const NodeConfig&,
+
374 ExtraArgs...>::value;
+
375 constexpr bool has_static_ports_list = has_static_method_providedPorts<T>::value;
+
376
+
377 // clang-format off
+
378 static_assert(!(param_constructable && !has_static_ports_list),
+
379 "[registerNode]: you MUST implement the static method:\n"
+
380 " PortsList providedPorts();\n");
+
381
+
382 static_assert(!(has_static_ports_list && !param_constructable),
+
383 "[registerNode]: since you have a static method providedPorts(),\n"
+
384 "you MUST add a constructor with signature:\n"
+
385 "(const std::string&, const NodeConfig&)\n");
+
386 }
+
387 // clang-format on
+
388 registerNodeType<T>(ID, getProvidedPorts<T>(), args...);
+
389 }
+
390
+
391 /// All the builders. Made available mostly for debug purposes.
+ +
393
+
394 /// Manifests of all the registered TreeNodes.
+ +
396 manifests() const;
+
397
+
398 /// List of builtin IDs.
+
399 [[nodiscard]] const std::set<std::string>& builtinNodes() const;
+
400
+
401 /**
+
402 * @brief createTreeFromText will parse the XML directly from string.
+
403 * The XML needs to contain either a single <BehaviorTree> or specify
+
404 * the attribute [main_tree_to_execute].
+
405 *
+
406 * Consider using instead registerBehaviorTreeFromText() and createTree().
+
407 *
+
408 * @param text string containing the XML
+
409 * @param blackboard blackboard of the root tree
+
410 * @return the newly created tree
+
411 */
+ +
413 const std::string& text, Blackboard::Ptr blackboard = Blackboard::create());
+
414
+
415 /**
+
416 * @brief createTreeFromFile will parse the XML from a given file.
+
417 * The XML needs to contain either a single <BehaviorTree> or specify
+
418 * the attribute [main_tree_to_execute].
+
419 *
+
420 * Consider using instead registerBehaviorTreeFromFile() and createTree().
+
421 *
+
422 * @param file_path location of the file to load
+
423 * @param blackboard blackboard of the root tree
+
424 * @return the newly created tree
+
425 */
+
426 [[nodiscard]] Tree
+
427 createTreeFromFile(const std::filesystem::path& file_path,
+
428 Blackboard::Ptr blackboard = Blackboard::create());
+
429
+
430 [[nodiscard]] Tree createTree(const std::string& tree_name,
+
431 Blackboard::Ptr blackboard = Blackboard::create());
+
432
+
433 /// Add metadata to a specific manifest. This metadata will be added
+
434 /// to <TreeNodesModel> with the function writeTreeNodesModelXML()
+
435 void addMetadataToManifest(const std::string& node_id, const KeyValueVector& metadata);
+
436
+
437 /**
+
438 * @brief Add an Enum to the scripting language.
+
439 * For instance if you do:
+
440 *
+
441 * registerScriptingEnum("THE_ANSWER", 42),
+
442 *
+
443 * You may type this in your scripts:
+
444 *
+
445 * <Script code="myport:=THE_ANSWER" />
+
446 *
+
447 * @param name string representation of the enum
+
448 * @param value its value.
+
449 */
+
450 void registerScriptingEnum(StringView name, int value);
+
451
+
452 /**
+
453 * @brief registerScriptingEnums is syntactic sugar
+
454 * to automatically register multiple enums. We use
+
455 * https://github.com/Neargye/magic_enum.
+
456 *
+
457 * Please refer to https://github.com/Neargye/magic_enum/blob/master/doc/limitations.md
+
458 * for limitations.
+
459 */
+
460 template <typename EnumType>
+ +
462 {
+
463 constexpr auto entries = magic_enum::enum_entries<EnumType>();
+
464 for(const auto& it : entries)
+
465 {
+
466 registerScriptingEnum(it.second, static_cast<int>(it.first));
+
467 }
+
468 }
+
469
+
470 void clearSubstitutionRules();
+
471
+
472 using SubstitutionRule =
+ +
474
+
475 /**
+
476 * @brief addSubstitutionRule replace a node with another one when the tree is
+
477 * created.
+
478 * If the rule ia a string, we will use a diferent node type (already registered)
+
479 * instead.
+
480 * If the rule is a TestNodeConfig, a test node with that configuration will be created instead.
+
481 *
+
482 * @param filter filter used to select the node to sobstitute. The node path is used.
+
483 * You may use wildcard matching.
+
484 * @param rule pass either a string or a TestNodeConfig
+
485 */
+
486 void addSubstitutionRule(StringView filter, SubstitutionRule rule);
+
487
+
488 /**
+
489 * @brief loadSubstitutionRuleFromJSON will parse a JSON file to
+
490 * create a set of substitution rules. See Tutorial 11
+
491 * for an example of the syntax.
+
492 *
+
493 * @param json_text the JSON file as text (BOT the path of the file)
+
494 */
+
495 void loadSubstitutionRuleFromJSON(const std::string& json_text);
+
496
+
497 /**
+
498 * @brief substitutionRules return the current substitution rules.
+
499 */
+ +
501 substitutionRules() const;
+
502
+
503private:
+
504 struct PImpl;
+
505 std::unique_ptr<PImpl> _p;
+
506};
+
507
+
508/**
+
509 * @brief BlackboardClone make a copy of the content of the
+
510 * blackboard
+
511 * @param src source
+
512 * @param dst destination
+
513 */
+
514void BlackboardClone(const Blackboard& src, Blackboard& dst);
+
515
+
516/**
+
517 * @brief BlackboardBackup uses Blackboard::cloneInto to backup
+
518 * all the blackboards of the tree
+
519 *
+
520 * @param tree source
+
521 * @return destination (the backup)
+
522 */
+ +
524
+
525/**
+
526 * @brief BlackboardRestore uses Blackboard::cloneInto to restore
+
527 * all the blackboards of the tree
+
528 *
+
529 * @param backup a vectror of blackboards
+
530 * @param tree the destination
+
531 */
+
532void BlackboardRestore(const std::vector<Blackboard::Ptr>& backup, BT::Tree& tree);
+
533
+
534/**
+
535 * @brief ExportTreeToJSON it calls ExportBlackboardToJSON
+
536 * for all the blackboards in the tree
+
537 */
+ +
539
+
540/**
+
541 * @brief ImportTreeFromJSON it calls ImportBlackboardFromJSON
+
542 * for all the blackboards in the tree
+
543 */
+
544void ImportTreeFromJSON(const nlohmann::json& json, BT::Tree& tree);
+
545
+
546} // namespace BT
+
547
+
548#endif // BT_FACTORY_H
+
#define BTCPP_EXPORT
Definition: bt_factory.h:62
+
The ActionNodeBase is the base class to use to create any kind of action. A particular derived class ...
Definition: action_node.h:36
+
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Definition: bt_factory.h:210
+
void addSubstitutionRule(StringView filter, SubstitutionRule rule)
addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string...
+
void registerSimpleCondition(const std::string &ID, const SimpleConditionNode::TickFunctor &tick_functor, PortsList ports={})
registerSimpleCondition help you register nodes of type SimpleConditionNode.
+
void registerBuilder(const TreeNodeManifest &manifest, const NodeBuilder &builder)
+
void loadSubstitutionRuleFromJSON(const std::string &json_text)
loadSubstitutionRuleFromJSON will parse a JSON file to create a set of substitution rules....
+
void registerNodeType(const std::string &ID, ExtraArgs... args)
Definition: bt_factory.h:361
+
void clearRegisteredBehaviorTrees()
Clear previously-registered behavior trees.
+
Tree createTreeFromText(const std::string &text, Blackboard::Ptr blackboard=Blackboard::create())
createTreeFromText will parse the XML directly from string. The XML needs to contain either a single ...
+
std::vector< std::string > registeredBehaviorTrees() const
+
void registerBehaviorTreeFromText(const std::string &xml_text)
+
const std::unordered_map< std::string, SubstitutionRule > & substitutionRules() const
substitutionRules return the current substitution rules.
+
void registerScriptingEnum(StringView name, int value)
Add an Enum to the scripting language. For instance if you do:
+
void registerSimpleAction(const std::string &ID, const SimpleActionNode::TickFunctor &tick_functor, PortsList ports={})
registerSimpleAction help you register nodes of type SimpleActionNode.
+
void registerScriptingEnums()
registerScriptingEnums is syntactic sugar to automatically register multiple enums....
Definition: bt_factory.h:461
+
void registerBehaviorTreeFromFile(const std::filesystem::path &filename)
registerBehaviorTreeFromFile. Load the definition of an entire behavior tree, but don't instantiate i...
+
const std::unordered_map< std::string, NodeBuilder > & builders() const
All the builders. Made available mostly for debug purposes.
+
const std::set< std::string > & builtinNodes() const
List of builtin IDs.
+
void addMetadataToManifest(const std::string &node_id, const KeyValueVector &metadata)
+
const std::unordered_map< std::string, TreeNodeManifest > & manifests() const
Manifests of all the registered TreeNodes.
+
std::unique_ptr< TreeNode > instantiateTreeNode(const std::string &name, const std::string &ID, const NodeConfig &config) const
instantiateTreeNode creates an instance of a previously registered TreeNode.
+
void registerNodeType(const std::string &ID, const PortsList &ports, ExtraArgs... args)
Definition: bt_factory.h:325
+
Tree createTreeFromFile(const std::filesystem::path &file_path, Blackboard::Ptr blackboard=Blackboard::create())
createTreeFromFile will parse the XML from a given file. The XML needs to contain either a single <Be...
+
void registerSimpleDecorator(const std::string &ID, const SimpleDecoratorNode::TickFunctor &tick_functor, PortsList ports={})
registerSimpleDecorator help you register nodes of type SimpleDecoratorNode.
+
bool unregisterBuilder(const std::string &ID)
Remove a registered ID.
+
void registerFromPlugin(const std::string &file_path)
registerFromPlugin load a shared library and execute the function BT_REGISTER_NODES (see macro).
+
void registerFromROSPlugins()
registerFromROSPlugins finds all shared libraries that export ROS plugins for behaviortree_cpp,...
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
Definition: condition_node.h:22
+
Definition: control_node.h:22
+
Definition: decorator_node.h:9
+
The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and inst...
Definition: bt_parser.h:27
+
The SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callbac...
Definition: action_node.h:80
+
The SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callb...
Definition: condition_node.h:51
+
The SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callb...
Definition: decorator_node.h:53
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
NodeStatus tickOnce()
by default, tickOnce() sends a single tick, BUT as long as there is at least one node of the tree inv...
+
std::vector< const TreeNode * > getNodesByPath(StringView wildcard_filter) const
Definition: bt_factory.h:166
+
NodeStatus tickWhileRunning(std::chrono::milliseconds sleep_time=std::chrono::milliseconds(10))
+
NodeStatus tickExactlyOnce()
+
bool sleep(std::chrono::system_clock::duration timeout)
Sleep for a certain amount of time. This sleep could be interrupted by the method TreeNode::emitWakeU...
+
Abstract base class for Behavior Tree Nodes.
Definition: tree_node.h:132
+
Definition: wakeup_signal.hpp:13
+
Definition: action_node.h:25
+
nlohmann::json ExportTreeToJSON(const BT::Tree &tree)
ExportTreeToJSON it calls ExportBlackboardToJSON for all the blackboards in the tree.
+
NodeStatus
Definition: basic_types.h:34
+
std::vector< Blackboard::Ptr > BlackboardBackup(const BT::Tree &tree)
BlackboardBackup uses Blackboard::cloneInto to backup all the blackboards of the tree.
+
void ImportTreeFromJSON(const nlohmann::json &json, BT::Tree &tree)
ImportTreeFromJSON it calls ImportBlackboardFromJSON for all the blackboards in the tree.
+
void BlackboardRestore(const std::vector< Blackboard::Ptr > &backup, BT::Tree &tree)
BlackboardRestore uses Blackboard::cloneInto to restore all the blackboards of the tree.
+
void BlackboardClone(const Blackboard &src, Blackboard &dst)
BlackboardClone make a copy of the content of the blackboard.
+
Definition: tree_node.h:83
+
Definition: bt_factory.h:96
+
This information is used mostly by the XMLParser.
Definition: tree_node.h:36
+
+
+ + + + diff --git a/db/d84/pop__from__queue_8hpp_source.html b/db/d84/pop__from__queue_8hpp_source.html new file mode 100644 index 000000000..b651808c4 --- /dev/null +++ b/db/d84/pop__from__queue_8hpp_source.html @@ -0,0 +1,259 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/pop_from_queue.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
pop_from_queue.hpp
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <list>
+
16#include <mutex>
+
17#include "behaviortree_cpp/action_node.h"
+
18#include "behaviortree_cpp/decorator_node.h"
+
19
+
20/**
+
21 * Template Action used in ex04_waypoints.cpp example.
+
22 *
+
23 * Its purpose is to do make it easy to create while loops wich consume the elements of a queue.
+
24 *
+
25 * Note that modifying the queue is not thread safe, therefore the action that creates the queue
+
26 * or push elements into it, must be Synchronous.
+
27 *
+
28 * When ticked, we pop_front from the "queue" and insert that value in "popped_item".
+
29 * Return FAILURE if the queue is empty, SUCCESS otherwise.
+
30 */
+
31namespace BT
+
32{
+
33
+
34template <typename T>
+
35struct ProtectedQueue
+
36{
+
37 std::list<T> items;
+
38 std::mutex mtx;
+
39};
+
40
+
41/*
+
42 * Few words about why we represent the queue as std::shared_ptr<ProtectedQueue>:
+
43 *
+
44 * Since we will pop from the queue, the fact that the blackboard uses
+
45 * a value semantic is not very convenient, since it would oblige us to
+
46 * copy the entire std::list from the BB and than copy again a new one with one less element.
+
47 *
+
48 * We avoid this using reference semantic (wrapping the object in a shared_ptr).
+
49 * Unfortunately, remember that this makes our access to the list not thread-safe!
+
50 * This is the reason why we add a mutex to be used when modyfying the ProtectedQueue::items
+
51 *
+
52 * */
+
53
+
54template <typename T>
+
55class PopFromQueue : public SyncActionNode
+
56{
+
57public:
+
58 PopFromQueue(const std::string& name, const NodeConfig& config)
+
59 : SyncActionNode(name, config)
+
60 {}
+
61
+
62 NodeStatus tick() override
+
63 {
+
64 std::shared_ptr<ProtectedQueue<T>> queue;
+
65 if(getInput("queue", queue) && queue)
+
66 {
+
67 std::unique_lock<std::mutex> lk(queue->mtx);
+
68 auto& items = queue->items;
+
69
+
70 if(items.empty())
+
71 {
+
72 return NodeStatus::FAILURE;
+
73 }
+
74 else
+
75 {
+
76 T val = items.front();
+
77 items.pop_front();
+
78 setOutput("popped_item", val);
+
79 return NodeStatus::SUCCESS;
+
80 }
+
81 }
+
82 else
+
83 {
+
84 return NodeStatus::FAILURE;
+
85 }
+
86 }
+
87
+
88 static PortsList providedPorts()
+
89 {
+
90 return { InputPort<std::shared_ptr<ProtectedQueue<T>>>("queue"), OutputPort<T>("poppe"
+
91 "d_"
+
92 "ite"
+
93 "m") };
+
94 }
+
95};
+
96
+
97/**
+
98 * Get the size of a queue. Usefull is you want to write something like:
+
99 *
+
100 * <QueueSize queue="{waypoints}" size="{wp_size}" />
+
101 * <Repeat num_cycles="{wp_size}" >
+
102 * <Sequence>
+
103 * <PopFromQueue queue="{waypoints}" popped_item="{wp}" >
+
104 * <UseWaypoint waypoint="{wp}" />
+
105 * </Sequence>
+
106 * </Repeat>
+
107 */
+
108template <typename T>
+
109class QueueSize : public SyncActionNode
+
110{
+
111public:
+
112 QueueSize(const std::string& name, const NodeConfig& config)
+
113 : SyncActionNode(name, config)
+
114 {}
+
115
+
116 NodeStatus tick() override
+
117 {
+
118 std::shared_ptr<ProtectedQueue<T>> queue;
+
119 if(getInput("queue", queue) && queue)
+
120 {
+
121 std::unique_lock<std::mutex> lk(queue->mtx);
+
122 auto& items = queue->items;
+
123
+
124 if(items.empty())
+
125 {
+
126 return NodeStatus::FAILURE;
+
127 }
+
128 else
+
129 {
+
130 setOutput("size", int(items.size()));
+
131 return NodeStatus::SUCCESS;
+
132 }
+
133 }
+
134 return NodeStatus::FAILURE;
+
135 }
+
136
+
137 static PortsList providedPorts()
+
138 {
+
139 return { InputPort<std::shared_ptr<ProtectedQueue<T>>>("queue"),
+
140 OutputPort<int>("size") };
+
141 }
+
142};
+
143
+
144} // namespace BT
+
Definition: pop_from_queue.hpp:56
+
NodeStatus tick() override
Method to be implemented by the user.
Definition: pop_from_queue.hpp:62
+
Definition: pop_from_queue.hpp:110
+
NodeStatus tick() override
Method to be implemented by the user.
Definition: pop_from_queue.hpp:116
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
Definition: pop_from_queue.hpp:36
+
+
+ + + + diff --git a/db/d85/bt__parser_8h_source.html b/db/d85/bt__parser_8h_source.html new file mode 100644 index 000000000..1789f8cf8 --- /dev/null +++ b/db/d85/bt__parser_8h_source.html @@ -0,0 +1,162 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/bt_parser.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
bt_parser.h
+
+
+
1/* Copyright (C) 2023 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <filesystem>
+
16#include "behaviortree_cpp/bt_factory.h"
+
17#include "behaviortree_cpp/blackboard.h"
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * @brief The BehaviorTreeParser is a class used to read the model
+
23 * of a BehaviorTree from file or text and instantiate the
+
24 * corresponding tree using the BehaviorTreeFactory.
+
25 */
+
26class Parser
+
27{
+
28public:
+
29 Parser() = default;
+
30
+
31 virtual ~Parser() = default;
+
32
+
33 Parser(const Parser& other) = delete;
+
34 Parser& operator=(const Parser& other) = delete;
+
35
+
36 Parser(Parser&& other) = default;
+
37 Parser& operator=(Parser&& other) = default;
+
38
+
39 virtual void loadFromFile(const std::filesystem::path& filename,
+
40 bool add_includes = true) = 0;
+
41
+
42 virtual void loadFromText(const std::string& xml_text, bool add_includes = true) = 0;
+
43
+
44 virtual std::vector<std::string> registeredBehaviorTrees() const = 0;
+
45
+
46 virtual Tree instantiateTree(const Blackboard::Ptr& root_blackboard,
+
47 std::string tree_name = {}) = 0;
+
48
+
49 virtual void clearInternalState(){};
+
50};
+
51
+
52} // namespace BT
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and inst...
Definition: bt_parser.h:27
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
Definition: action_node.h:25
+
+
+ + + + diff --git a/db/d8d/struct_b_t_1_1_file_logger2_1_1_transition-members.html b/db/d8d/struct_b_t_1_1_file_logger2_1_1_transition-members.html new file mode 100644 index 000000000..575c43244 --- /dev/null +++ b/db/d8d/struct_b_t_1_1_file_logger2_1_1_transition-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::FileLogger2::Transition Member List
+
+
+ +

This is the complete list of members for BT::FileLogger2::Transition, including all inherited members.

+ + + + +
node_uid (defined in BT::FileLogger2::Transition)BT::FileLogger2::Transition
status (defined in BT::FileLogger2::Transition)BT::FileLogger2::Transition
timestamp_usec (defined in BT::FileLogger2::Transition)BT::FileLogger2::Transition
+
+ + + + diff --git a/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.map b/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.map new file mode 100644 index 000000000..ca2d8ff1c --- /dev/null +++ b/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.md5 b/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.md5 new file mode 100644 index 000000000..aeab4a42f --- /dev/null +++ b/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.md5 @@ -0,0 +1 @@ +a1e6d5ca3320cb83235ff019f6bf8a04 \ No newline at end of file diff --git a/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.png b/db/d93/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..18573d7bcae44df6c78ae07337b44715200bb81e GIT binary patch literal 6432 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 OA|);-RwSbL=|2GTo8!d* literal 0 HcmV?d00001 diff --git a/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.map b/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.map new file mode 100644 index 000000000..478e2d34c --- /dev/null +++ b/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.md5 b/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.md5 new file mode 100644 index 000000000..441c4e276 --- /dev/null +++ b/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.md5 @@ -0,0 +1 @@ +5264d140a1ea20ec3fd205d1c82de457 \ No newline at end of file diff --git a/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.png b/db/da2/class_b_t_1_1_unset_blackboard_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..af5beb7b12c30c768bb85ca6cd4d9d1f89d6f666 GIT binary patch literal 12199 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 yS + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ConditionNode Member List
+
+
+ +

This is the complete list of members for BT::ConditionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ConditionNode(const std::string &name, const NodeConfig &config) (defined in BT::ConditionNode)BT::ConditionNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::ConditionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick()=0BT::TreeNodeprotectedpure virtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ConditionNode)BT::ConditionNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ConditionNode() override=default (defined in BT::ConditionNode)BT::ConditionNodevirtual
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.map b/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.map new file mode 100644 index 000000000..13f6f3a1e --- /dev/null +++ b/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.md5 b/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.md5 new file mode 100644 index 000000000..da40871af --- /dev/null +++ b/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.md5 @@ -0,0 +1 @@ +1774cb895e0d7a908147834b1d26b38b \ No newline at end of file diff --git a/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.png b/db/db1/struct_b_t_1_1_ast_1_1_expr_name__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..31b524dca6efb109a1246ae534b3d88cce0d12e5 GIT binary patch literal 11547 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 ZkjC*%hGx()!L&1$>@!8Ff+t4r{ue-DH&*}v literal 0 HcmV?d00001 diff --git a/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.map b/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.map new file mode 100644 index 000000000..0dd73c2e0 --- /dev/null +++ b/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.md5 b/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.md5 new file mode 100644 index 000000000..d560bb649 --- /dev/null +++ b/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.md5 @@ -0,0 +1 @@ +512f14c89a302cf1cd45fc108afe4738 \ No newline at end of file diff --git a/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.png b/db/db6/struct_b_t_1_1_ast_1_1_expr_if__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aced2258da59e03bd80168d0fa910a88b76818d4 GIT binary patch literal 12039 zcmZ{~1z6Qlx9&?Q2oj1ShytQ?N;fDe-HoJlcQ-1Hk`j_GLb^Lt6r{TwkuK@JV}1MX zbN0FM_*iSP{%ghCIdLWQvC22R=E;we6J{84 zUbCw>i9YEm)~hIH(krX?srXktQ@^OKZrK$%_`r`TYt#ij%6vJwmL?319=klXZzuZW z5-Q&NAD)`CeeFT-ySvT)?x%g*7fL_v_BMTSiz4`r2=b4tGYfIEwx2&w=@HwG63?@a zhy~ntX?mkxs^X7jvBxR9StK8ou?OC*3Zo45%+idZy+cBx9cdUcxj0?tv^iDNH(?lJ z`NrNAMI+KN|a>vP2XaIrhlCbvhAF~X(cIuc7ESa+mU@H}I*-Ua!Gc(J_|7<#*Eimm#Rx{T#H_uBJ^l~jL_dD&< zS9N!H&-5VoIrvDzZL1qPBuy6|7x!hd(jvPzl{dSwsYy**S~_!?-*rM>AgMWEMJv!ph3poyr@lUZleha!b6O!F zA?X~>S2;b~C`o#57$|zq7%c9gLtrymsf1h@pYtQNo@7oHeBq1I&fZ>T^-*=1#gn}y zOPB_gyqT%#SD0h|Z6an`L>!;}y#IQCW)NFSk2GCV{KDE=ez9JYw)tl?iEO1J?W(V` zF4{Y>hYAuB?-1P`AD@lvF8qj3Pfzz;isZ(&5q|O{qu*Dr!By_`i1{?jLOt%Q#sGhwo7j*gC@Q!LWj1cwTU11Xe)?U|G$ zb~7Wc6kgX&Vi*`DHTAoetHTmR@l^3^{>dsUjm3j{myM3j&cy&sveIsTpEHg*ziY@i zCwx>?RM~W)&-3#JXGdFI{;250f}YNA*DGgftRhJ`%P*Rp*Oa||eAXr^Xevy5=+z}l z^qLr38X6kz5fgU=pkp%bqoJdR7pY7-2sp3akx5`&=+6{=V`>@`6B8I6jqg9RWIx}E z>gePIBb3iP6^!2m*r zsH<^ns^;Fkd&X=1Ud!VwOstW4fVog{c)ALb9$I|rTJY_ zK4*izG(lwI^Y1iP^#6;9h%g$GOW~@LZK!`Bd~plxQOJ>($YsM-8r9M)R!!!SCJ;mgox~ZB7K$ z)VL)X5gf`OswjodH`!q;6r~*&+pr*RPUeH~A8U{4(HP0f;)uS-V>&9Ds zbEJZhGrYPumHo^YUu`p0ZZ{|NxA(IQ>^n+Rg&jQE`|5NBk~at@IF=dJ73fpWWj8BO z@4D6b=Xb0YJmBi;O5o~b$$FyvtyC;^8LX_#MDgo}!6F@QZ*TAM7C+(e2TWOB$J@(7 zQLpQr7n;wvvz=CYowuix?$OBGx0AYQ@`?I*dvB7x?-M$Yfa+2X@uyv5E9dCQ23r<_ zs8GA56IS(u8!EBHP-S!%o2vKDY*T`rWze@)rkZJyT=~z|T)BSdTim*@U*G=Bm&)T1 z$ZpoFnY=MN1PfbfJ`i}cHAOTvy71%u@6OIFC}sY$3Jzxn78jS77PE~WndN>LdzkR@ z&mTX6AT1hP9?Z~Ky>4(_ULPq)74~aZO#iXml_(`E`$eNfkHc~}q_y=0EK?VxH?RBd zlbTu2g5@9BXCslYgoEWKU2Np-P*y&qrODUW&LDFzTKMV-56^h{^sEC)lQ^=#);q5S zCMIf>Eg#*-AtdK8S3K=q5Zls7D|nPu>+g?p_zjbshd)A^MuU5u{9yy~FdaOj6f^8f zWXZLes_w-T4Z)73R1$|>OeGDx6E7mq9el@CD&~&JIF*#hEyF}gEX=lC9=)UJ;4WPO z-=g)vyIINc;|_HY>Xta!f2CFQtb4X3{sw&hxg$_PaU2-16z#D%KoOmD>0~}kg)gUE zmiIG^3QKONnhrq*w*yWkZ@t{Tq)y|uOz$}}zDM$8bVZFDJ*Txbo$20(85=$t`1MBS z8Oo1byD#e}b~k%)ZI!e}?pEB1m$EIYlB8q0xOO1fMZKyr`g9chte^;oZ6+o+-}uF| z7nyVw%GyyF47xaf{od0Y2xz`lx~-H?DK*Y&lf7PIuyOc%xSHRbkhCa?REzu9r|0@A zlW47Mp3MLgp3i-AI{O~SBj{TN)d30*(yeMhbhrc7p^?Ie~Mv$@zCu>Fx`pD zP3pG^W>$5|pW+i*1UlbD6u;;YQGEy>_|w3K7Wqzmg~48pO@CCXcQ{eK)4 z3pbLnJ6;|6eSNxztrSlwb)WT;!6i1(OAV{0Fy&>Y`kT(vHr79{4LGF3%}K4bNsVRgD_W>1z9v$JKIMqS`dYb^wGgxN?ouOoVtzgO znlYI#IemxCeSLd=IPml%wQ(VaAI5hMgwMYG@!aF>{X1D-rD946>Xc4t#aonFw9t}$ zv(=JhBX^Qgw~~o?1nE{a2Tbl#FHr}56S#lN+3G`6apBYh5uV?}k(RP25^6TlAEH^Q zonJpl9dD>#zn8`F@5wX?H9hN}7i);%JR!$=NJyFgdF35`%K9y|r0oXHRnLS&$eDPI z7*iJARv<=rBFQ~HS69ZYD+sS}v28rPFC3gV5rSom9S6nJznH!TUC93+U?&A&Df+@<7hmKCbM+Ns}Iep)oTcC+!OH)e;I*!mqQ zg73);o-zx@tv9@H$)YCc>0gZ=`puza1&|kxp5A$driaE>z+^;`T2%i&Oe4opm&_*Y ziY*gMeSiCfpWQ2~1N9&@+p4nO4o6ISOAZUEVWk4EO^Z~o{7?%m`^8Pi!sf2^V|{Hr6n!L>6Cj83C^4`|+(Cf#B@WXLm6GPOL9m2a+ z>6D>-jIcLMxYTrVa{8vS-Yk3^y#obW6}5YQ#$5I!iG_jU1r?=*Bw`nn@;NYPA&DNjkxPgJ1AHpXUBPMt^p153v{gdc` zDrS#0@oFpmN4c{1t?{tg$qvyLg+*b^Pv46~=d~ z-hvBT=O+=!;~-qVXYDEc>(l(-%}>Gm zaAdp{`xKFGwM&D$Jr;N55y6`IvBH?37mktp_YB!=zgyQns#Q^$%<(&(oamll#aj7D zNnsr(iyby*kbyBK;5b9V!%wy#;K&|Ns}%gZmi%(SIg2bd;s2!vJC|d(Tk2SDPy4h~ zEZtF4hzX`mjKG-iQ^#=HR5t!Dj2yjo45e6|SaL*Jt7;sVFg4HKoZ}<687er9oT;BX7whRiCp7Cks ziYX%hW$V_d#-q#9`u4P6y-`xCWKslK%3@USK6RUl3M2CEWIUpB@=X3zTPsmhSy8RAt>wf;5KGGUGG9 z8yje;tBVz3cE2lc=GXN%TKD^e`@RKXdYmpNV&USN{EB#p@@Hjbf6}Ui)u`>3Y4@jZ zAmOlW>_9C=kPA1rt;MV}e29<#iTqs1-De?TVT+(B6HF9@FF7(ZGjYfSKGCVy*V^$)i+d=bVr7##LgAVJ;429E;%ROCHj}t)NI=Ej1a)B67IL>c ziTyqNb4t*c>Zdtr->=9=54mk0gVHjZC^zA-n{8|(?mRoLP`eJo7t&l!dpkU=3K#U> z-QAVl;gOLhopE##B%EO&wI++QpF(+jZq}D(vOE9Hd2{?@JGoyfJdoYz%o#-@noMqE zwCEwPBjv!rfNTmEuD>L?Ph32M2Akpc8xa!E?orFqR`$T9wbW@vK4s`=ong0|y|2I2 zP?XH)K&kgLe>ZkEZO* zK>K%p=1+wE&yoM!Ii~OTn)dJDQG43|kMvbp+^Zmb_Ci^i!0B&yCIm}&nqbP5Z9}BK z-(~#u<&Gb$cJ1JmZ}s|Ivk(8;+FHUE2+c?)o$3#XiI}Yyr~4k8W$mjV>tdx`345RWm_HAyHlb#S4GWze#3{LvTB% zuiVN45;GDmMj;{(yjh z$2|6}+kB&}Xc3QjWB&YkV`OYx=f3w8q74~4K$pg6HQtGy&m!pv08%4^03k!=vSeU$DSauY|?eE@RYJUDHHkN14vIo~I z)XW09yJffQH<;s;#l*$S48EalH|z+NmzQJ5JGnINz5cVc6`5nvox&XrS=xn6HY_Zx z{J2XxZJ}q+f}jXa&Jb-7qhjDa?tlRJy|>g}cRcHLI@WR}-j%?VB;dg&e6fpeT2a?_ z*7fh0A>UU+L!&GIW@|hHH`$TPeh+tSdb<9i&oinKB|WG?#Q&etIeKSnOAaCg;XPLT z+G47j$*%d78pX6CiF?*PyPs>zMK?h`U64j0jZ#qX^GcdmRB7pR&%<>SC;tysP{sN| zdcuDFYz;t%8ivqs@!g!Lz_hcodw-P6QJ`K_-qvC>#kIJ!^pMY)R`KE_J_ke*5@bO^ zBp@e`E-7IFsqafk!xrDmPprlmP{W=Z}0 zu0`fv7_=;vSDtOI4I*wI&$yApKwvk8KqJ=;QSU zfBVw=rtDhe3=EzCJDCTTn_vP=rBJ6Psz|41u-Zl^Fffpq-<7du+EM21u~M96w{}72Bs_wMIZAs{$P3bNVZrSsPYtw*?0Vq_ZBtf&6hcuXAGss2yhj zErvmJtBHsN^1+90zM_Wn22LQ(X z=fctXX0%X?7J+?<^N{U}_Ih`3F92iC#=}vaLd~))=?%u;_Y?%aMLcB3#x*L~pp*)c z20-iAUv45J1dr@$gt~`;OY)|U;ra9DAI#D`-obheeUZ8cCF&I5xEUQe5I7{{G&iT! z)6;`3D^?^eE-pUUno87b^4!}fY0>_RPcHOWZs<8N4l-;P!&$Nli?v%|2=L#5S_k8^ z~Mk^s5-rKk+y`eUDFW3P>A?d7vD#Sq|qBD45l|?exO*d-GLt zPmWuzd*B`=4-pQJH-oG)Av1frj#8Jj{?2QsNdxt#Z{ZHTE3sHW?XZQP(HT(p}t}l5@VKx+gH^536W1pw#Y0dB*^5FZ5~*3AsK8YJ{85fKqVF>EU{ZU?jmnE~L9 zpIRtfE`NS~(k{&7^cM%JGsHnte?}=3V=mk24%iy#Cq0J} zI1dyJ!i)@X9n{Qls%H3!6jo>;Me{oSo!{8#GL9B}2crVOdI2p7IG42EeHo(yDS+_U z`$@#>@sF}VqXd~raN%iC#C*2uLjWy|g@4OkjYpGKseCSBO4$;;l|G33!0U}?>RsSu zM>*T)?lEPbot>?1Xs9r5$J6t>bm`(lGVnfueVmr-EB?B=I=I{Fj9QEplRlG(F!=Z9 z_hUZi5cn=Q1^V)ovTLEF^$@EUYQ6+kjl5tXm*(~ZM%qz6g2RXdscA*!^tP{R1;da) zafykEXNP0@Ow0Q23pYpLNa$LcLW6*6^w?L0`&fK#ZZ0+sj;cAa~o-Jv*YwSvUXYd>_(3`Xdh$Ju6*UPIj-d4?w$vH zknqtXE3M-}gp4Je5uI~$`p8(Ef$Pe8I7@S0%#y~?Z`yvx7)m9NH^HVo)TD_bA&#Ki zpqjl43%7jsqt=SX;(zt&{s+nUvQ(Z-NlD4WA50>?EIP>*nQ~6gar*V^U1^eU^io;L znk@nO&HMG!$*%3^4kPUG*_ex|q*1iu%gr36c*uL?!2A;75Bk%a;fIQ#lqK0Kh~*yL zHYb@T1u5z1s{38YLMnuwh?Hby-6{X~Qu3m>+z+)ieR;oBuA6qQuGU%3uJE8Y|9%Gh(*3Ad_^F=q`L?Td0@e%{ zRFl?UC|>Ba6*&nSe$H8qP?oXJ6`}>1aG2{#7~F|FFim!P-+R9xvsMo8uwl&lPV$2g zSJXHT!?nd-HSM8MHi0O!x`uVuBJzVNKn$hZwlkDkho;>NU$bKC4yf+sE`^amgEa3x zNpjdUY2z*8+uC>^%(7+Ifm;fz!*_x#36YN9h-o40NzI(6C#f3^=Rgz@@2`FG&b>*~ zDGs0IC=gj9sb6krqer}Eec^`~&&?#H#OCIxn#@NHLvAg-TrYyU%imVJxhv#WtOHAO zy$szbI_)?t{I;88NY>*&1bKP)Wg@W@vfVY=KS_e>}OcdU#F73&*K~XpNJZ?b zaXZ5P6@Z62Q?5c*hOIKm*g!mfeljH=D45cOzygQjj%^c;Re&nMSg1Lo=>e+q|9O8L?j{dBvYGfSxl^A4A8 zbI`ftSDt;rK$qhw1wk2NygD~ntxZ5vH*mnxzjx*>nOfi6%<1KW9@Xewo5ebU+$3@D zfV3yGXxgYktu6iMl+8D6(XLS4(FFrq&>1>Qx42q$51ON|#&=?C!)6~o6#Jbh$Uvgf zLJd`jLB=y5?z80(Y_E6r-QGpGjd2^n)Ii7 z)3XprU`ckq@1F*o)R_Bm3!Cm@J(NtLo|YCLEa-QMrBg_f?%&_pbT7Uwv2$^sGXwyg zxt6_=AIBj%2O%kNyU!I%W&fBx%@BDnfiSRld2a5h?DCdUJRLX*tXR6s35e2DqHbBj z%AT>}Tb1OWx4hr)4mxP{)q1>+>XdJ&`~5hUwM&Y^e6_~O3mvmR{nS9gE8}JUH?K-7rxEaA&NWWF9C^L=zgG#w zQteTjP;9{AnBv(ur&>9jB-1ztF0KM&2viodjR1{)NkdmjKW$Z%4=P_8@1D@?lAYzZ z(;f^U5(B2$Y-Lpa0rz&$j32N)7YlmX8-)lle?sPtLL4B}cwuYnohP^2*L7nYO#oH4 zLGS8LKfd5go^mFNuaY*8=$jckI2P9qBk_VaF6knC1ZUZ2urv>gAHQ2I=7REI@!R(jZY`CShI-z0#5 z=t3U5_Yx!C>=V&$S#MXp!;d_5jws627;{cr<(3q@^+nx)pKkS7E=2k%x5@~ru@Gsj zo%*COj`X9wal4uDD7!o+-2uA@%lXY0Vulc_&&W6*a`W)NW7|b(7WWHM4~sRvi};Wb zY>z>7pe`zEhWS*QMoNT7^c!)6%jyn6mG7K6|Gdq?Rp<(xfI%1T<=eJ&G%NoWO{V?E zW~S`Vhi~(|tG0wfwHIv<%7}~y_#a-@?UD7)^<%n3inJ`BMQ&`Ex8`gJ<7Y&#@n8se z`gmAu+*abW)Q(Zii-SG6z8iq9$wy5k!kC3y(u zaN4+P#_>wq{De{}WG~08T}8am&b8kEY5~*7+#US@uMZ7(KtZAKo}|=9IPz{1&WJzR zbcYxr?KksU&aA{leXu-ywd6d!x{NXLQKGz+Y(Yu!ho~-XBdre>m4m}h*ksYtIH69i z0))ts5>|5Uy*8tpArZBwKT%z+jR_E!DhvK}@r}%a?VwUng!R7=_ z&ZIsG7hl|tOm!@I8Id;2ytU1=&v<9@zD@7HCZUu2%=zL| zW4{JZcqOG}X;Q;>qyN<~6-BCq_Wx<5`tJ)Gr@s*Ov%RG2gYlv76J@uQ;wVE&3_MEL zEN%4NN6MHH?Vk#Olo!c`U{H6ALMxftV*M{yCNS{>M*cf4QZS zM&GG^CG%a%C<3cTY2C@dZO95Y7tUM?>8DcPvEWtY0WYeO9EkbrV)XT_KAk0_6oGt3 z60WE}KgTMO1zVb%tANP(Gamx^J9YdgI-)-|<>93Cg|rg0pp@eIUAg6k;N{1lcuets z_oM&UVGqc>OLQ?Pl{DxMA%#>HHWMye4{Hi8f8ycz(#oc0FfB`+LRJ_fu6!fWFoU_J zUfZmHc5jqq$iJ8bF~SgN%iSE!%#VJ0PgD;=K}0o}GE};{v9CIX6JdjL1ZS)39|XI| zusKlsP~<%RT21Eqr~FMgZ`JqPaqfW*hLTbYCH=>j7Ps#o3})E1_0F0>(%*@HS+I)n z^y$-IsuE8)<9Y3^6_&XT>SZ<~@)7Yi&WO4(xx~pT!7bxS4bn0-XdK$JQBzCIx>AMZ z+slZ6FM;9NhvZI^zV^};V|xSP3IUc6%O0pji*+@VNzfGdaBPbGh<@4m2k5pGJLWE( zKjLzZz$ylZhCY+N%gg+;{_g)Y(8*-DfW1HxiOIqBVFV-|P#_OKluZb@XP~Zr0mSJ6 zm9o3H_ibioW`ZJ=FKaTk4c<9f%S~q-0zfeBI%NZFfC!XVGN%>DG}+LNXj1+JFtx>L zD_C06gVv$u;raA32!r?W97qrFD*Tt(PQ^JL8)-6X_BrQk{9Ha>WkrOE_t*g7J_=HI z10Z+~CLj8Ig<<`XG|Iuj!B+|jX7Da8g2(Sl0IsShB_##H*b1=A9XMKOL_}Lx zS2%bePK5p(u(h&^%Iy)u0{IP}a#OApkL%0hwduMFgqp*}i33RDBsLRl z(3{|>1d<^GuxO&jj+~5)4A}$$=!K@4zzxTi z#>GuYfdnY?pXKF=RE(yZNJ0nB8e+CLw?IrXRYtna zdb|%OVqr7ye*ze$9b_@8`CPLgz`YFMg~4y%-hJ@kU3hr7s7ped!E-Qib^>(jMxtBK zLwZ1j%g~ExpPG8qufwu2R)PfD(=KDL-90?^fGpdCSEcJ8kg^Y{so)y(sa=ZV#~vBT z6vYJV$?m}cB_m^Dr@VvM<)63&F^DJ_hyu&b0H8+)r(ms9~*Ag;Asp z3U=Ms*LT|Q`jYW={e1wf09hZhy?K>c&OPINZ((7QYvg_xAHf+KoR^oUJZ1wLySLrWy#?axG)$R5}}^|k=RP%avP|Ae`n=5t#> zTi<|QxkD2zd}N^6$BSd@*C%{oVPW6PLyfM=k`lYnJuId8)L9zT{;z5b514g309(;t z7$OsQb*`la;evwn#{xHD%EgBT`2sDgRDQQ8ec#i!Z*LR*I~YK!mGLZ2S9Wr%Uu^mw)6uLdr!0x=N2<1xxd|_C4co+u5c}fr@aq#J( zJf&wZgl9rRL%)H!3p#IuORX6L1XGmZZ1*%pTy6fd%&2sdwkqJGE&tK-76Bn+*}G;Filx#`F!ScK|8=d0|K}A z?;pLZ3Bo{2ULFr#U4(?B8U<3UZJmzIVKI1vg@pymlntHE{PCP$F2H9FD8 + + + + + + +BehaviorTree: BT::Grammar::Real::invalid_suffix Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Real::invalid_suffix Struct Reference
+
+
+ + + + +

+Static Public Attributes

+static constexpr auto name = "invalid suffix on double literal"
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.map b/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.map new file mode 100644 index 000000000..06e7806fc --- /dev/null +++ b/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.md5 b/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.md5 new file mode 100644 index 000000000..32a9aa1f7 --- /dev/null +++ b/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.md5 @@ -0,0 +1 @@ +f8ffd5dbd20b68800cf457b829cd58ef \ No newline at end of file diff --git a/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.png b/db/dcf/class_b_t_1_1_sub_tree_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..98719959b7ad401e8b3fe248109c1ad519e67839 GIT binary patch literal 6193 zcmb_hWmJ^Wx*kPBkQ6~$M39gchDMN-20>uxloq5BP+CGjKspDc9J(Z>K}vFlZfTLu z8SdtubJvY^&c6#Y%v!9yzHfi;e%>eE`KYccPl!*A4}m}k6%}MO!DlLX*W%%Tzu3f2 zTEPd7nUcH=~8(L4cMVgiDLkquX0 z{kKGgt9Xp6_OtZ@mDOEP8^nhjt|GJ2vKkpq1H!o!0{2jp`hm5!D2SMt7#;zE-HuJJ zmFDt%Pr zNvXZFGdO|c)n;uvkLk^~YlD{kNxTqU7z`@p`1V|It$N*6MB;p%iGs@j@0qstz3xwR z@UpV9&VO7J5^{$sATyHzV%`0svV&|WJpLz%<0;K=CcWVtym1qFqSoE#Y?WoTg`8@Pzo{z~sTFFQN? zpGhJf>p@zbQlo*xjnVS*^1_oNu$YXLRLaGLZ??h1`uuPsl3L)!d`4oTyr-v7BDb;C z`mbyuQBmZ&lLFn2RKuO=S#X!af`T8z!^2rSTAG?=wY5%fzDpz|B+!bwN7{^j-J5_p zk>0!cXEPj@@M8dIVEM~>*0qkE-t6&UH@p3rHq~N44*&3&FEv;obQPt=5kFE zDOy`w3w3vQ?@#6rC7|Tuao^T;-$u38IWHF!6qt+^XdLd&XX;g2Isfjb0tHmal<;WA zep>Yj*XZ@@*JIrb{!db*;lp@PD0Fdai$hFYJQ)0hg@qM(OgqljfAq&3WC~2Ai+ZT$ z=I2A}42FTfS=MRO2^-X7h3eC@dJU2HNbxbGXx-Oo$ zYl$i|J#Wd+%~jXY=|Yv8A8ox*QtIvL$;!>m9d_sE=SO>ccz6T^1b7|{K+i4@hV1&2 zGcpFjMtPx7Wa+{FzFB(+;rX#?d&tJT3B=Re8vwytJ>3I2JTYa7vNf(`W?=y*ZmNz- zY42D;&YIfTD3%&E*)|pySlQZ6z4mcfTwJWHuXnjT-J{+@eEY`A%34s)B`L|k!NK86 zS3SLJp(6>~dkB=wkGN}8tP?4RMo<3RQ zKr@=JX8kKms;;4d-=c@4N*^J$bEH>caofwwOJIVKRw#y8@-pVfk7qNpv(E1BU7*he z>?YQykqB5f=qxIUcS3=<#3g%YGw88l9sQ%F@Z}xO-W|(JS-Wf3~$iJsSUSI$|l53sKRGx-;!7iMenYr|MIP^0eEnEG(*w@<(N>f79BI5)!7!tTWL86IWneb>B?UhfpRMa))ax>fm;#=%fa{$c54%7f834LtgrBs@F8>1}lgyG;cP zRLV2lR%vxipV>(X#c8#rI9=48)DKpV@wKo6$b&awRvbJ_or0W2fw89iF+J@J>)uFq zEmwOLpxho8fX|b6e-RC}P-JYLo2AbNb1DbsDL;;E@ys z{{3%TI*Y1Dq8XbZLUC$aW?dVv-ejsp)lg*~7 zsR>xJEB%Iw@;d0Q!NEZY5E>v+G~30j_|47DI8mjn`1%M6Ku@%^wE8)RItlUdGP`q4 z8erWIP z(T$Xs#VH}g3|tt@Nek46*5BX%Mp#czkH~Ty3y80m#lh<0hN7%=Yh2`l93HM;Nj^m|$Jv|RNI0)3# zhP)H)qKV7=ul&9$C$}MBwYueI!G2970UWPN-W>c^!6Bjz(+4}~ zINa}|s_H2|0fC~L+G7@$kP^d&rNu>O;{!a>eSXA$s&8^}yaS9-LSG^`vcVwp{d>q4F2ff zD5#@C4%UY5($XqRN!<_>6udkfRkNS2iQ+Zyf_U5{AtRFpJFBUw0mpv4JsDV8$^Td_ z!(wx+5D=wny=XK=RCsvX>@3}Tpr6CFPR3+pWN%zt%*KnfX+>PaPES3Hii+wy_Z|Xr z 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::math_prefix Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::math_prefix, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::math_prefix)BT::Grammar::Expression::math_prefixstatic
operand typedef (defined in BT::Grammar::Expression::math_prefix)BT::Grammar::Expression::math_prefix
+
+ + + + diff --git a/db/df7/struct_b_t_1_1_grammar_1_1_string_literal-members.html b/db/df7/struct_b_t_1_1_grammar_1_1_string_literal-members.html new file mode 100644 index 000000000..955749cfa --- /dev/null +++ b/db/df7/struct_b_t_1_1_grammar_1_1_string_literal-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::StringLiteral Member List
+
+
+ +

This is the complete list of members for BT::Grammar::StringLiteral, including all inherited members.

+ + + +
rule (defined in BT::Grammar::StringLiteral)BT::Grammar::StringLiteralstatic
value (defined in BT::Grammar::StringLiteral)BT::Grammar::StringLiteralstatic
+
+ + + + diff --git a/dc/d04/class_b_t_1_1_reactive_fallback.html b/dc/d04/class_b_t_1_1_reactive_fallback.html new file mode 100644 index 000000000..0bfc15041 --- /dev/null +++ b/dc/d04/class_b_t_1_1_reactive_fallback.html @@ -0,0 +1,391 @@ + + + + + + + +BehaviorTree: BT::ReactiveFallback Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ReactiveFallback Class Reference
+
+
+ +

The ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last: + More...

+ +

#include <reactive_fallback.h>

+
+Inheritance diagram for BT::ReactiveFallback:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ReactiveFallback:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ReactiveFallback (const std::string &name)
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void EnableException (bool enable)
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last:

+
    +
  • If a child returns RUNNING, continue to the next sibling.
  • +
  • If a child returns FAILURE, continue to the next sibling.
  • +
  • If a child returns SUCCESS, stop and return SUCCESS.
  • +
+

If all the children fail, than this node returns FAILURE.

+

IMPORTANT: to work properly, this node should not have more than a single asynchronous child.

+

Member Function Documentation

+ +

◆ EnableException()

+ +
+
+ + + + + +
+ + + + + + + + +
static void BT::ReactiveFallback::EnableException (bool enable)
+
+static
+
+

A ReactiveFallback is not supposed to have more than a single anychronous node; if it does an exception is thrown. You can disabled that check, if you know what you are doing.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html b/dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html new file mode 100644 index 000000000..85a46603c --- /dev/null +++ b/dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html @@ -0,0 +1,145 @@ + + + + + + + +BehaviorTree: BT::Monitor::RequestHeader Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Monitor::RequestHeader Struct Reference
+
+
+ + + + + + + + +

+Public Member Functions

RequestHeader (RequestType type)
 
+bool operator== (const RequestHeader &other) const
 
+bool operator!= (const RequestHeader &other) const
 
+ + + +

+Static Public Member Functions

+static size_t size ()
 
+ + + + + + + +

+Public Attributes

+uint32_t unique_id = 0
 
+uint8_t protocol = kProtocolID
 
+RequestType type = RequestType::UNDEFINED
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d0b/class_b_t_1_1_manual_selector_node.html b/dc/d0b/class_b_t_1_1_manual_selector_node.html new file mode 100644 index 000000000..f0da7c934 --- /dev/null +++ b/dc/d0b/class_b_t_1_1_manual_selector_node.html @@ -0,0 +1,388 @@ + + + + + + + +BehaviorTree: BT::ManualSelectorNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ManualSelectorNode Class Reference
+
+
+ +

Use a Terminal User Interface (ncurses) to select a certain child manually. + More...

+ +

#include <manual_node.h>

+
+Inheritance diagram for BT::ManualSelectorNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ManualSelectorNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ManualSelectorNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

Use a Terminal User Interface (ncurses) to select a certain child manually.

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ManualSelectorNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/d0b/class_b_t_1_1_manual_selector_node.js b/dc/d0b/class_b_t_1_1_manual_selector_node.js new file mode 100644 index 000000000..e243c7a8e --- /dev/null +++ b/dc/d0b/class_b_t_1_1_manual_selector_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_manual_selector_node = +[ + [ "halt", "dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf", null ] +]; \ No newline at end of file diff --git a/dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html b/dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html new file mode 100644 index 000000000..d5b8d0c26 --- /dev/null +++ b/dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: BT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type > Struct Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type > Struct Template Reference
+
+
+
+Inheritance diagram for BT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >:
+
+
Collaboration graph
+ + + + +
[legend]
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d13/struct_b_t_1_1_grammar_1_1_real.html b/dc/d13/struct_b_t_1_1_grammar_1_1_real.html new file mode 100644 index 000000000..9da54674f --- /dev/null +++ b/dc/d13/struct_b_t_1_1_grammar_1_1_real.html @@ -0,0 +1,206 @@ + + + + + + + +BehaviorTree: BT::Grammar::Real Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Real Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Real:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Real:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  invalid_suffix
 
+ + + + + +

+Static Public Attributes

static constexpr auto rule
 
static constexpr auto value
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Real::rule
+
+staticconstexpr
+
+Initial value:
= [] {
+
auto integer_part = dsl::sign + dsl::digits<>;
+
auto fraction = dsl::period >> dsl::digits<>;
+
auto exponent = (dsl::lit_c<'e'> / dsl::lit_c<'E'>) >> (dsl::sign + dsl::digits<>);
+
+
auto suffix_error =
+
dsl::peek_not(dsl::period / dsl::ascii::alpha / dsl::ascii::alpha_underscore)
+
.error<invalid_suffix>;
+
+
auto real_part = (fraction >> dsl::if_(exponent) | exponent) >> suffix_error;
+
auto real_number = dsl::token(integer_part + real_part);
+
return dsl::capture(real_number);
+
}()
+
+
+
+ +

◆ value

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Real::value
+
+staticconstexpr
+
+Initial value:
=
+
lexy::as_string<std::string> |
+
lexy::callback<BT::Any>([](std::string&& str) { return BT::Any(std::stod(str)); })
+
Definition: safe_any.hpp:37
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d13/struct_b_t_1_1_grammar_1_1_real.js b/dc/d13/struct_b_t_1_1_grammar_1_1_real.js new file mode 100644 index 000000000..b5542b63a --- /dev/null +++ b/dc/d13/struct_b_t_1_1_grammar_1_1_real.js @@ -0,0 +1,4 @@ +var struct_b_t_1_1_grammar_1_1_real = +[ + [ "invalid_suffix", "db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html", null ] +]; \ No newline at end of file diff --git a/dc/d16/class_b_t_1_1_script_condition__inherit__graph.map b/dc/d16/class_b_t_1_1_script_condition__inherit__graph.map new file mode 100644 index 000000000..012c56947 --- /dev/null +++ b/dc/d16/class_b_t_1_1_script_condition__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dc/d16/class_b_t_1_1_script_condition__inherit__graph.md5 b/dc/d16/class_b_t_1_1_script_condition__inherit__graph.md5 new file mode 100644 index 000000000..5d82928a4 --- /dev/null +++ b/dc/d16/class_b_t_1_1_script_condition__inherit__graph.md5 @@ -0,0 +1 @@ +facd1a39d07142252e92a1c3514f5105 \ No newline at end of file diff --git a/dc/d16/class_b_t_1_1_script_condition__inherit__graph.png b/dc/d16/class_b_t_1_1_script_condition__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..05ec0cab6c5e57c0197bccca78e30c23a4e1d6e0 GIT binary patch literal 8164 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 literal 0 HcmV?d00001 diff --git a/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.map b/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.map new file mode 100644 index 000000000..c98b1b889 --- /dev/null +++ b/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.md5 b/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.md5 new file mode 100644 index 000000000..29d672e83 --- /dev/null +++ b/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.md5 @@ -0,0 +1 @@ +c29c866a00b7b7c2120f0f38f0274f80 \ No newline at end of file diff --git a/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.png b/dc/d17/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c11d4d5c56b61f7dc8ac1d4e1957a670ea14eae7 GIT binary patch literal 6700 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 Jj|!II{{beTzcv5> literal 0 HcmV?d00001 diff --git a/dc/d26/class_b_t_1_1_port_info__coll__graph.map b/dc/d26/class_b_t_1_1_port_info__coll__graph.map new file mode 100644 index 000000000..e5f8013c9 --- /dev/null +++ b/dc/d26/class_b_t_1_1_port_info__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dc/d26/class_b_t_1_1_port_info__coll__graph.md5 b/dc/d26/class_b_t_1_1_port_info__coll__graph.md5 new file mode 100644 index 000000000..4c0b1ea19 --- /dev/null +++ b/dc/d26/class_b_t_1_1_port_info__coll__graph.md5 @@ -0,0 +1 @@ +2d93bc6c47ccdf7654a9fe2b2835eba3 \ No newline at end of file diff --git a/dc/d26/class_b_t_1_1_port_info__coll__graph.png b/dc/d26/class_b_t_1_1_port_info__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2a88ff5497b3bb34aaedda711b9e45374a93239f GIT binary patch literal 3327 zcmcha_fr#X*T+}j#(<#+NR3p580konZU{vPMHILxN>Mb@oAee+08y%-G-*QUEsB7Y z0D+)E15$&Cp$G`lMQO^j&b;%^^A|k3vwMEHW_M5dUgvW*$->N#ja85p006eDMkq_r z`hb@wgc-btRD5Lz4YP}hAqqJDdlq%zGXVhl@+#`ejo|#Xf(UfxgfO{_%J>AKhZq`< z;ZiOePlba!1uzuEmMT9OPs`Nz!8bK= zd3XI*VP$3IKs3?H?F`G<(ooUe~3ja&#W9 zYvj2`mDODwc>g}$vJz!xmU4aT%$YMrXf&zW^V4+seMMP?%?||{5H>b_Gc)%7{(cK9 ztN4Y5I}UFG+1y?U3O>fAYDFHYJr7wFXx|;T2LN1SsLZUnZ)c}c-74$)bZcyS`f2?9 zV*?2WM#j$-1A%E^M3~b5njtp=_c<9G?f6e5*My(>Z>5YlsVAGWorF9)c@d01f@fl%Wz zu8qz^Sy{(UC=wzlB$S?>j;*PY=0sXpSVV7c`^iIN!Em3}rFzjwM_XhOjF(scTwij* zLsfogMO9T(UUR&088R|bd;Lonb*bR8KeIvUY48Am0<(m{LG<3KMND&$n;i#3CajUoS{+E2;GNJ2 z{Q)oZ^7fVj1~$5m%^+e6V>XWGPjUz^P~Nn)K`2eU5f|j-q&ho0Np}=&cfAoW?PMxJ zUzKTcpbp$8>i&vKEk)17ob|f$$%4;`{pzP$-mBKmbpD*Pk|h&0hJIuwSy`5)z)x0^Hoa zI_xYgCxB;Y$>jSXG3Diw4bsVD)iygJtK+r3lau_Bzjtj&{r&3SOC_e8m>Gz4y68;Q zaReTke<4rRyC2lz78uejn3dqIK0dK@BWV}3WTus!c)BPY4uSU43xZ~_|4KI}hOD

f zMXk?txIg#}cA1YuL%NX%-=y9g^BGQlBDIio%`L614Hy_05{EG_5qa`MLOzGGqul2t zB}=NRSjj18{X;u;RhT^KyQ>p;>H6yGyz}Ru$95K+^QpixBnZO)8gez8$13C0p=NDQ z$K>busY6&vT8maQ6R^qQ*pZOc!f}yN0N1MDuX92gqlR-{&+RqGIuEcea}eS<&D{^G z<)Qu*1eF_kH@40yq^TrhASidNZbDChD+py~02#V9@RS8o%3esvd?Fl-cqW zGT@6&nwUT*ABl~5-09b>q?`@@3h@xa2}b3fY0{F}gK#M}XnDNc3og zF=P7SgaCy3ke`9@m@9>I@^}cZyH#}|U_)8ae6U0)dM(vjiC;NcRD+PNK$GSZy`{|1 zr#+ced4M7wuuFLUu9@m|8)09zD zOso5Uc^D4elhTrbLZS5eR2`hrxt3MgYim1slg6!Ied< zC1_*j$!=*$Nq%Q%SC`I$U+dUbbJ7Gy1HoQTPKygVH%Ak9*ND*hk^UC_{EF3)QC;`iGQ>EV*WV=JQ7+T zAWGHisHr7>_+aMoshKS)DM@Ku)7Sd64iNH0#@ELI+ASg(~v$@)Lp9f?g zB`6$&fq;l=@ttSB6+HV-^1bD6BY1^-A7FRx-rWw-($Wh4v3xpewqt z^YF|?(WjIX0E}E*?S6D`2#l%k8lJnHvCkzBe^1A@ zoTTUb%82JR(BD_XD{*_GBYwSR5eI2=~OYjE6sd zj7dx5Y>+;c`8E#3{v}may+1CEY#fMe9~il?eXWMqhVI9>8>$5oA8CAhc4q6k)cb)sGmk>x^ba$R0oK?Vh>W@KdSO@gxv=9L{-WpIrF7_YTgEqzP{ zJrm_h0swIC`pZDHBsUU?tZ^wAn`51BW9C9yI5<2yItpJ{Tx?r7;5O%sii(o9ZDIoF zJ#Z4>=jR7NurCf4X#DxK#I0ciKp>EYwsNJt!^53asc}UDZQR_y_r6RWvDRI*SKb1V zRZ&~}01?@i_e?6C@>Mjh2$Xv=pB%HimkOon`Z{MscsPB=NuM`wWz!SW)$V-h8Vo7)VaSXlKeHWnSn1|QBf)Z7IzbG zGTLT)&a18ad3$eotQ1d1yV6w5-HSjBvwpolAEi5*Mj^s9=fOW3;HthEst)NC^B?0m BP(c6y literal 0 HcmV?d00001 diff --git a/dc/d26/struct_b_t_1_1_node_config.html b/dc/d26/struct_b_t_1_1_node_config.html new file mode 100644 index 000000000..b97e86296 --- /dev/null +++ b/dc/d26/struct_b_t_1_1_node_config.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: BT::NodeConfig Struct Reference + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::NodeConfig Struct Reference
+
+
+
+Collaboration diagram for BT::NodeConfig:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+Blackboard::Ptr blackboard
 
+std::shared_ptr< ScriptingEnumsRegistry > enums
 
+PortsRemapping input_ports
 
+PortsRemapping output_ports
 
+NonPortAttributes other_attributes
 
+const TreeNodeManifestmanifest = nullptr
 
+uint16_t uid = 0
 
+std::string path
 
+std::map< PreCond, std::string > pre_conditions
 
+std::map< PostCond, std::string > post_conditions
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d27/unset__blackboard__node_8h_source.html b/dc/d27/unset__blackboard__node_8h_source.html new file mode 100644 index 000000000..bfd5816a0 --- /dev/null +++ b/dc/d27/unset__blackboard__node_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/unset_blackboard_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
unset_blackboard_node.h
+
+
+
1/* Copyright (C) 2023 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/action_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * Action that removes an entry from the blackboard and return SUCCESS.
+
21 */
+ +
23{
+
24public:
+
25 UnsetBlackboardNode(const std::string& name, const NodeConfig& config)
+
26 : SyncActionNode(name, config)
+
27 {
+
28 setRegistrationID("UnsetBlackboard");
+
29 }
+
30
+
31 static PortsList providedPorts()
+
32 {
+
33 return { InputPort<std::string>("key", "Key of the entry to remove") };
+
34 }
+
35
+
36private:
+
37 virtual BT::NodeStatus tick() override
+
38 {
+
39 std::string key;
+
40 if(!getInput("key", key))
+
41 {
+
42 throw RuntimeError("missing input port [key]");
+
43 }
+
44 config().blackboard->unset(key);
+
45 return NodeStatus::SUCCESS;
+
46 }
+
47};
+
48} // namespace BT
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: unset_blackboard_node.h:23
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.map b/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.map new file mode 100644 index 000000000..485524cca --- /dev/null +++ b/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.md5 b/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.md5 new file mode 100644 index 000000000..7041aa4f5 --- /dev/null +++ b/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.md5 @@ -0,0 +1 @@ +07beb6149d717be09d08dcefe7e17741 \ No newline at end of file diff --git a/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.png b/dc/d3d/class_b_t_1_1_always_success_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..141f0935dcc7f142c69e14aba57e88a199c1c20b GIT binary patch literal 12349 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 literal 0 HcmV?d00001 diff --git a/dc/d44/class_b_t_1_1_timeout_node-members.html b/dc/d44/class_b_t_1_1_timeout_node-members.html new file mode 100644 index 000000000..5746ab10d --- /dev/null +++ b/dc/d44/class_b_t_1_1_timeout_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TimeoutNode Member List
+
+
+ +

This is the complete list of members for BT::TimeoutNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::TimeoutNode)BT::TimeoutNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TimeoutNode(const std::string &name, unsigned milliseconds) (defined in BT::TimeoutNode)BT::TimeoutNodeinline
TimeoutNode(const std::string &name, const NodeConfig &config) (defined in BT::TimeoutNode)BT::TimeoutNodeinline
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TimeoutNode() override (defined in BT::TimeoutNode)BT::TimeoutNodeinline
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dc/d49/class_b_t_1_1_simple_condition_node.html b/dc/d49/class_b_t_1_1_simple_condition_node.html new file mode 100644 index 000000000..484c76a3d --- /dev/null +++ b/dc/d49/class_b_t_1_1_simple_condition_node.html @@ -0,0 +1,380 @@ + + + + + + + +BehaviorTree: BT::SimpleConditionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callback with this signature. + More...

+ +

#include <condition_node.h>

+
+Inheritance diagram for BT::SimpleConditionNode:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::SimpleConditionNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Types

+using TickFunctor = std::function< NodeStatus(TreeNode &)>
 
- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SimpleConditionNode (const std::string &name, TickFunctor tick_functor, const NodeConfig &config)
 
- Public Member Functions inherited from BT::ConditionNode
ConditionNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override final
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

virtual NodeStatus tick () override
 Method to be implemented by the user.
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+ + + +

+Protected Attributes

+TickFunctor tick_functor_
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
+

Detailed Description

+

The SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callback with this signature.

+

BT::NodeStatus functionName(void)

+

This avoids the hassle of inheriting from a ActionNode.

+

Using lambdas or std::bind it is easy to pass a pointer to a method.

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeStatus BT::SimpleConditionNode::tick ()
+
+overrideprotectedvirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/d49/class_b_t_1_1_simple_condition_node.js b/dc/d49/class_b_t_1_1_simple_condition_node.js new file mode 100644 index 000000000..120a45ea6 --- /dev/null +++ b/dc/d49/class_b_t_1_1_simple_condition_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_simple_condition_node = +[ + [ "tick", "dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad", null ] +]; \ No newline at end of file diff --git a/dc/d4e/script__parser_8hpp_source.html b/dc/d4e/script__parser_8hpp_source.html new file mode 100644 index 000000000..dc7f8402d --- /dev/null +++ b/dc/d4e/script__parser_8hpp_source.html @@ -0,0 +1,160 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/scripting/script_parser.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
script_parser.hpp
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/blackboard.h"
+
16
+
17namespace BT
+
18{
+
19
+
20/// Simple map (string->nt), used to convert enums in the
+
21/// scripting language
+
22using EnumsTable = std::unordered_map<std::string, int>;
+ +
24
+
25namespace Ast
+
26{
+
27/**
+
28 * @brief The Environment class is used to encapsulate
+
29 * the information and states needed by the scripting language
+
30 */
+
31struct Environment
+
32{
+
33 BT::Blackboard::Ptr vars;
+
34 EnumsTablePtr enums;
+
35};
+
36} // namespace Ast
+
37
+
38/**
+
39 * @brief ValidateScript will check if a certain string is valid.
+
40 */
+ +
42
+
43using ScriptFunction = std::function<Any(Ast::Environment& env)>;
+
44
+
45Expected<ScriptFunction> ParseScript(const std::string& script);
+
46
+
47Expected<Any> ParseScriptAndExecute(Ast::Environment& env, const std::string& script);
+
48
+
49} // namespace BT
+
Definition: safe_any.hpp:37
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
Definition: action_node.h:25
+
Result ValidateScript(const std::string &script)
ValidateScript will check if a certain string is valid.
+
The Environment class is used to encapsulate the information and states needed by the scripting langu...
Definition: script_parser.hpp:32
+
+
+ + + + diff --git a/dc/d4f/class_b_t_1_1_sleep_node-members.html b/dc/d4f/class_b_t_1_1_sleep_node-members.html new file mode 100644 index 000000000..8fff7d59f --- /dev/null +++ b/dc/d4f/class_b_t_1_1_sleep_node-members.html @@ -0,0 +1,174 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SleepNode Member List
+
+
+ +

This is the complete list of members for BT::SleepNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::StatefulActionNodeprotectedvirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
isHaltRequested() const (defined in BT::StatefulActionNode)BT::StatefulActionNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
onHalted() overrideBT::SleepNodevirtual
onRunning() overrideBT::SleepNodevirtual
onStart() overrideBT::SleepNodevirtual
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::SleepNode)BT::SleepNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
SleepNode(const std::string &name, const NodeConfig &config) (defined in BT::SleepNode)BT::SleepNode
StatefulActionNode(const std::string &name, const NodeConfig &config) (defined in BT::StatefulActionNode)BT::StatefulActionNodeinline
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
tick() override finalBT::StatefulActionNodeprotectedvirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SleepNode() override (defined in BT::SleepNode)BT::SleepNodeinline
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dc/d55/struct_b_t_1_1_grammar_1_1stmt-members.html b/dc/d55/struct_b_t_1_1_grammar_1_1stmt-members.html new file mode 100644 index 000000000..753cadf53 --- /dev/null +++ b/dc/d55/struct_b_t_1_1_grammar_1_1stmt-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::stmt Member List
+
+
+ +

This is the complete list of members for BT::Grammar::stmt, including all inherited members.

+ + + + +
rule (defined in BT::Grammar::stmt)BT::Grammar::stmtstatic
value (defined in BT::Grammar::stmt)BT::Grammar::stmtstatic
whitespace (defined in BT::Grammar::stmt)BT::Grammar::stmtstatic
+
+ + + + diff --git a/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.map b/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.map new file mode 100644 index 000000000..96110d528 --- /dev/null +++ b/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.md5 b/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.md5 new file mode 100644 index 000000000..525574844 --- /dev/null +++ b/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.md5 @@ -0,0 +1 @@ +f5a0766c424a8a1145ef81b152728b6e \ No newline at end of file diff --git a/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.png b/dc/d5e/struct_b_t_1_1_tree_node_manifest__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..026a4e25315bbf69c9a248ebc1fe9fa12cc0387c GIT binary patch literal 29229 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 literal 0 HcmV?d00001 diff --git a/dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html b/dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html new file mode 100644 index 000000000..a7bec9dd1 --- /dev/null +++ b/dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html @@ -0,0 +1,125 @@ + + + + + + + +BehaviorTree: BT::FileLogger2::Transition Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::FileLogger2::Transition Struct Reference
+
+
+ + + + + + + + +

+Public Attributes

+uint64_t timestamp_usec
 
+uint16_t node_uid
 
+uint8_t status
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d6c/struct_b_t_1_1_tree_node_manifest.html b/dc/d6c/struct_b_t_1_1_tree_node_manifest.html new file mode 100644 index 000000000..79ba72cdd --- /dev/null +++ b/dc/d6c/struct_b_t_1_1_tree_node_manifest.html @@ -0,0 +1,149 @@ + + + + + + + +BehaviorTree: BT::TreeNodeManifest Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TreeNodeManifest Struct Reference
+
+
+ +

This information is used mostly by the XMLParser. + More...

+ +

#include <tree_node.h>

+
+Collaboration diagram for BT::TreeNodeManifest:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + +

+Public Attributes

+NodeType type
 
+std::string registration_ID
 
+PortsList ports
 
+KeyValueVector metadata
 
+

Detailed Description

+

This information is used mostly by the XMLParser.

+

The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html b/dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html new file mode 100644 index 000000000..6a95c610e --- /dev/null +++ b/dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html @@ -0,0 +1,167 @@ + + + + + + + +BehaviorTree: BT::Monitor::Hook Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Monitor::Hook Struct Reference
+
+
+
+Collaboration diagram for BT::Monitor::Hook:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + +

+Public Types

enum class  Position { PRE = 0 +, POST = 1 + }
 
enum class  Mode { BREAKPOINT = 0 +, REPLACE = 1 + }
 
+using Ptr = std::shared_ptr< Hook >
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

+bool enabled = true
 
+Position position = Position::PRE
 
+uint16_t node_uid = 0
 
+Mode mode = Mode::BREAKPOINT
 
+std::condition_variable wakeup
 
+std::mutex mutex
 
+bool ready = false
 
+bool remove_when_done = false
 
+NodeStatus desired_status = NodeStatus::SKIPPED
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html b/dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html new file mode 100644 index 000000000..3f1723659 --- /dev/null +++ b/dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html @@ -0,0 +1,139 @@ + + + + + + + +BehaviorTree: BT::Monitor::ReplyHeader Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Monitor::ReplyHeader Struct Reference
+
+
+
+Collaboration diagram for BT::Monitor::ReplyHeader:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + +

+Static Public Member Functions

+static size_t size ()
 
+ + + + + +

+Public Attributes

+RequestHeader request
 
+TreeUniqueUUID tree_id
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d75/struct_b_t_1_1_grammar_1_1_integer.html b/dc/d75/struct_b_t_1_1_grammar_1_1_integer.html new file mode 100644 index 000000000..15d876c10 --- /dev/null +++ b/dc/d75/struct_b_t_1_1_grammar_1_1_integer.html @@ -0,0 +1,180 @@ + + + + + + + +BehaviorTree: BT::Grammar::Integer Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Integer Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Integer:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Integer:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Classes

struct  integer
 
struct  invalid_suffix
 
+ + + + + +

+Static Public Attributes

static constexpr auto rule
 
+static constexpr auto value = lexy::construct<int64_t>
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Integer::rule
+
+staticconstexpr
+
+Initial value:
= [] {
+
auto hex_integer =
+
(LEXY_LIT("0x") | LEXY_LIT("0X")) >> dsl::integer<int64_t, dsl::hex>;
+
auto regular_integer =
+
dsl::peek(dsl::lit_c<'-'> / dsl::lit_c<'+'> / dsl::digit<>) >> dsl::p<integer>;
+
auto suffix_error =
+
dsl::peek_not(dsl::period / dsl::ascii::alpha / dsl::ascii::alpha_underscore)
+
.error<invalid_suffix>;
+
return (hex_integer | regular_integer) >> suffix_error;
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/d75/struct_b_t_1_1_grammar_1_1_integer.js b/dc/d75/struct_b_t_1_1_grammar_1_1_integer.js new file mode 100644 index 000000000..926e7e0bf --- /dev/null +++ b/dc/d75/struct_b_t_1_1_grammar_1_1_integer.js @@ -0,0 +1,5 @@ +var struct_b_t_1_1_grammar_1_1_integer = +[ + [ "integer", "d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html", null ], + [ "invalid_suffix", "da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html", null ] +]; \ No newline at end of file diff --git a/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.map b/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.map new file mode 100644 index 000000000..52b658e91 --- /dev/null +++ b/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.md5 b/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.md5 new file mode 100644 index 000000000..ab51c2c9f --- /dev/null +++ b/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.md5 @@ -0,0 +1 @@ +03cd7746f9b0a6c49216f33c8a001045 \ No newline at end of file diff --git a/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.png b/dc/d76/struct_b_t_1_1_tree_1_1_subtree__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..87bbca0ad84a956cadad1d4dabc28e72a88c078a GIT binary patch literal 23852 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 literal 0 HcmV?d00001 diff --git a/dc/d96/class_b_t_1_1_wake_up_signal-members.html b/dc/d96/class_b_t_1_1_wake_up_signal-members.html new file mode 100644 index 000000000..307ac6c7c --- /dev/null +++ b/dc/d96/class_b_t_1_1_wake_up_signal-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::WakeUpSignal Member List
+
+
+ +

This is the complete list of members for BT::WakeUpSignal, including all inherited members.

+ + + +
emitSignal() (defined in BT::WakeUpSignal)BT::WakeUpSignalinline
waitFor(std::chrono::microseconds usec)BT::WakeUpSignalinline
+
+ + + + diff --git a/dc/da6/class_b_t_1_1_fallback_node.html b/dc/da6/class_b_t_1_1_fallback_node.html new file mode 100644 index 000000000..74568b8f4 --- /dev/null +++ b/dc/da6/class_b_t_1_1_fallback_node.html @@ -0,0 +1,386 @@ + + + + + + + +BehaviorTree: BT::FallbackNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::FallbackNode Class Reference
+
+
+ +

The FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNING, previous children will NOT be ticked again. + More...

+ +

#include <fallback_node.h>

+
+Inheritance diagram for BT::FallbackNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::FallbackNode:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

FallbackNode (const std::string &name, bool make_asynch=false)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNING, previous children will NOT be ticked again.

+
    +
  • If all the children return FAILURE, this node returns FAILURE.
  • +
  • If a child returns RUNNING, this node returns RUNNING.
  • +
  • If a child returns SUCCESS, stop the loop and return SUCCESS.
  • +
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::FallbackNode::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/da6/class_b_t_1_1_fallback_node.js b/dc/da6/class_b_t_1_1_fallback_node.js new file mode 100644 index 000000000..780f581a8 --- /dev/null +++ b/dc/da6/class_b_t_1_1_fallback_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_fallback_node = +[ + [ "halt", "dc/da6/class_b_t_1_1_fallback_node.html#a254b111f7bde893dd711327f4879e290", null ] +]; \ No newline at end of file diff --git a/dc/dae/class_b_t_1_1_switch_node.html b/dc/dae/class_b_t_1_1_switch_node.html new file mode 100644 index 000000000..bba6174d1 --- /dev/null +++ b/dc/dae/class_b_t_1_1_switch_node.html @@ -0,0 +1,383 @@ + + + + + + + +BehaviorTree: BT::SwitchNode< NUM_CASES > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SwitchNode< NUM_CASES > Class Template Reference
+
+
+
+Inheritance diagram for BT::SwitchNode< NUM_CASES >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::SwitchNode< NUM_CASES >:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SwitchNode (const std::string &name, const BT::NodeConfig &config)
 
void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+
+template<size_t NUM_CASES>
+ + + + + +
+ + + + + + + +
void BT::SwitchNode< NUM_CASES >::halt ()
+
+inlineoverridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/dae/class_b_t_1_1_switch_node.js b/dc/dae/class_b_t_1_1_switch_node.js new file mode 100644 index 000000000..628d24f39 --- /dev/null +++ b/dc/dae/class_b_t_1_1_switch_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_switch_node = +[ + [ "halt", "dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb", null ] +]; \ No newline at end of file diff --git a/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.map b/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.map new file mode 100644 index 000000000..10c2fc6b1 --- /dev/null +++ b/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.md5 b/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.md5 new file mode 100644 index 000000000..da09ad684 --- /dev/null +++ b/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.md5 @@ -0,0 +1 @@ +3c8023bfd123bfb62de3da3de99a4c0f \ No newline at end of file diff --git a/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.png b/dc/db5/class_b_t_1_1_parallel_all_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..996b6000391ae438c24dc29cfbdb30caccceb326 GIT binary patch literal 12596 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 + + + + + diff --git a/dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.md5 b/dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.md5 new file mode 100644 index 000000000..1dd9129c1 --- /dev/null +++ b/dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.md5 @@ -0,0 +1 @@ +c544bdffe1e2a5da1756c6dbb399e538 \ No newline at end of file diff --git a/dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.png b/dc/dec/class_b_t_1_1_simple_condition_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eaed9e197b2eb71f7f02dde7bca03cd6aa6d8c22 GIT binary patch literal 8614 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 + + + + + + +BehaviorTree: BT::Grammar::Expression::bit_prefix Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::bit_prefix Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::bit_prefix:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::bit_prefix:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = dsl::atom
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::bit_prefix::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
auto complement = LEXY_LIT("~");
+
auto logical_not = dsl::not_followed_by(LEXY_LIT("!"), dsl::lit_c<'='>);
+
+
return dsl::op<Ast::ExprUnaryArithmetic::complement>(complement) /
+
dsl::op<Ast::ExprUnaryArithmetic::logical_not>(logical_not);
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/dc/dfc/class_b_t_1_1_condition_node.html b/dc/dfc/class_b_t_1_1_condition_node.html new file mode 100644 index 000000000..7d2a24e05 --- /dev/null +++ b/dc/dfc/class_b_t_1_1_condition_node.html @@ -0,0 +1,371 @@ + + + + + + + +BehaviorTree: BT::ConditionNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ConditionNode Class Reference
+
+
+
+Inheritance diagram for BT::ConditionNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::ConditionNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConditionNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override final
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::ConditionNode::halt ()
+
+inlinefinaloverridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Implements BT::TreeNode.

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeType BT::ConditionNode::type () const
+
+inlinefinaloverridevirtual
+
+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dc/dfc/class_b_t_1_1_condition_node.js b/dc/dfc/class_b_t_1_1_condition_node.js new file mode 100644 index 000000000..f59d204b4 --- /dev/null +++ b/dc/dfc/class_b_t_1_1_condition_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_condition_node = +[ + [ "halt", "dc/dfc/class_b_t_1_1_condition_node.html#ad6dc34ea7ed32903800f9384416e1bac", null ] +]; \ No newline at end of file diff --git a/dc/dfd/class_b_t_1_1_script_node__coll__graph.map b/dc/dfd/class_b_t_1_1_script_node__coll__graph.map new file mode 100644 index 000000000..d0737aabc --- /dev/null +++ b/dc/dfd/class_b_t_1_1_script_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dc/dfd/class_b_t_1_1_script_node__coll__graph.md5 b/dc/dfd/class_b_t_1_1_script_node__coll__graph.md5 new file mode 100644 index 000000000..c2a5a7109 --- /dev/null +++ b/dc/dfd/class_b_t_1_1_script_node__coll__graph.md5 @@ -0,0 +1 @@ +e42fe48ac1b651ad99c3cae85a267002 \ No newline at end of file diff --git a/dc/dfd/class_b_t_1_1_script_node__coll__graph.png b/dc/dfd/class_b_t_1_1_script_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f39134a58dac639fb080c9cf62726bbdf8a6a373 GIT binary patch literal 11488 zcmd6tby$_}m+oIeNeMx^K~$tukWK}pJEf(iOIoB$Kopb^DQN_xLnQxi zQ9LVzFPF`g6l9SL)bFgO{3HZnK<>**X?efinDQ~wT0FZ2S>d>|+%r>=ERpA_?& z#%@~B+>6B*ucDMj+1UpD8Wv+sR=%?jluj1~Sr*nkty}cC2zzN5QV{g4ww%o=h=I4Y z^+{kL(GB?;vvlG9gEQal0k@35ub1xf(f9iFe&fdA?x3)U;TgFTl85zLBJiB_LHyS= zPF~&}tOs%VIbYilNusC5X>>^fN+$#?$hS-h`izW>af-CUTjJt$iHV6+^tyT5#FRx? zSkLd{{`07O^HRW`%-q7F+F1UB3&TVt9y#ai+~@Fd&YZC-*OV!WiI2_-va*=)%9whF zh6`cjCasfoZa=bRu-FZ%ut!Uci#}Y`d#ugQ&uiElx*ZG34LkZQ#0qgcj`O>mJ-b4k z@ak1$pZG~}dxu>S3w_tOZ_1W7HWq_<4;Yx<<>t$-^h>GS8rSFdnx z+_-VN;T#xRU0q$9`D`4EkS?aOlDF8Ti7NBS&iywZkG@2b9G;(SCZ?uhsj8~7>sMmR z%gdXeWQh5dTXYgoP*ItW6zdBd3u%RGRo4l#5HrGMiTUko*`Iv+B>knM<84({)yQJ~ zWTOvBc6Rn1uRk=_eHpP?Sq!i5xS$6F1T6o^!6M@@csf6C?(O4~U0X|mP&r_+<Qb%-4uZNm9*f>eH(bIaQ!_H6DO~%|C(dkPVL`=Xj(LS%{I&1?`h6!Sr{t6rZHozy zwGs8r=_c)wYow%V%F6gD$;m_YM!GWz2}G`5Ubz|6@RN5-xvnbxb2e#gq|&m<+>AtY#W(x}+Dfo!w!FM;Rg z^wdLBO-;=d&BG5pdoFHnBp0f(_Y@UFq_bOtF|fYuQBqRY2AuhZZuA*6`3e{r84+E* z`nED7A^~<)woG``+PClD=hoL_l9NeeXz!9078Y*p>|C8_@L0Qi_wL>5)#Q3X;;vP< zd&px~*H1xc7zr<5V(aRT>QL({EX6k{5MjPdOEd3?p=2{d*f4&moqRanT?q}tBRBv0 z{Q6@ruQHzAh0b{Gn!dii@VYu-OsSyA$VkPz#MxO{k|iR!rQg3ZqRkHEDj`8CZ$t!Y zH(+nhE-l>dm=GWlQBhYjIUXs}Y7DTV!*P4C9p~ZU(N68$ z7|hjjs!=j?m}fFHWWBdK%q<`w_t9x;c4H&9)VN{3<>HJ>#OqJ7&dCRM4vy^~3iNZU z!$oXsEr;`XU5l=}%Reyw{Q2_|mX?W$X?Av&AucH;B@DLxr{Upi6E%)9uqB5}le7na zMpNa{j@K91k|^BUUup}seE#Wwd^n)#s|Ky#7%zS6-`{ON2Bpj3D1Bx`8p8ygSjy9* ztVYT9FF)NqrnL7fJccA+Ezy1BClM)z#cKa(%v_CyGN-B=R2L4J`>cl)N0O0)2txTJ zrvuxj%19%!Aj>3SZ98lol{X?w-7Z?#jQ%NjeD@lCPDB$nEqcx~s@o*Au(#?4V{ zV@FDQ#&pIa(wuDt3bc@;H&;*P{H|5|({%lQ72G}Oah;Ns<>9maZrhW?RQ|k zMRH%htBV>ZB(T&ZGO_ngdiK#wVEa}>;_o*MhHRb2{HHy|r0x$t+EzU_CGn^xfAZ9U z{ZgKE)5(MVlbRS?oh|ia#>1PoyC+8Dx5cG-@6Sp8?>&AjD~NP{`67$qt)FCJC!IDx zhRib9r)Ew!`avl#dt}EQ8)#ZnSa=KiOx}u_;jr8M1$(ugTu)DLue_OAwtVN1H^biE zo|%P3&Wf2niRhC4+$B=Aq&(nBk&VOO~e zr;YJy@3oSTTic!VMKLy(mY7iTU5w@AE(IJdl6!l5w|@EZu6^y15_CNti;mVGKZtd7 zbP{?Np(1^P7Fq$7=sybme2q=->)@OmW(UXHndG}$TatQudZ8yXb#6CURbKy`ubyf4 zrP<&H1*+Fnpx`(NTq#fHON|rwHk6Njp0>cMp%b+$-% zPzyq$qHvd2Rov zxo0N_qd!Lm2Ax3uC9B$JUonEUS5?oHF-aB6f~WjN`E#xO^NXG^S^@*p^?gIyqueA^7j1fq{z5I zPzaL^dbuWNK<^+|N&aT#Qlut}~8Sz^QM0p>ySLpF}>q znI<&LSjoJ1?-EK&IcbGmpGH8bj(XIUz*zOL4LxPwG~g&KB4X$7->+k1`uLU>_GQt6 z=wqxZV|Ts&fabW7rFIjghQ6f<;MLdH+wB=Q`Fb?8lxS82nyR#m3r}}X4-W_emh0EEy*8)0`T1oP6>*>8 zQ@$NJhr_%*W|KMh#%sFmaC<>}oK7Nuy;rCRj>Rn8HY6w{1pQ@tdQp|GsZ)U`NR?{4 zp=YS~#lLa|)xdxKvaGIgUX_cDj>e0LjdfZ7$pgDNaxGKT2OWOeVY~{buCA`@>sR9V zkv@qF(TIB+6TBX)TE+SwE@uXw*LC}X)O&KaHwwoUE({ZSeb>D1>g^X7#>8E2`y1Md$c4*I6BA~ew1b47t*lVoPYI&rDTF`M^Yt41!d9qwa^$L< zE_lW5_qVpip41ArC6#Sstt-QvR?i84!GUm@|AK=Oldw(7KYaKcFLAE7a3qFoZEq82 zh8EASuD;)K|MsD0_`tON+c*4^gUwDjC&ZMLk#Lf;tExz0!4H2WsUiq$fOgbH!Slfp zL_|ag78aJC!TB~>6)gLxx6L5DnYKzN=sxei--Qwr5*Wm9l@=96f3WGB@8N3slJ_7T z3TYT@rogSge@P~w(!{3R)&>254qEePr4`=(pD8>f;j87|2&WZQU}$M|^diIjlle|T8pd28q#eNIzdP>mrcBbx`wl15jfZG3AL6U@WQ z{6$5B7kL+~)cubcBA1P9Z3}hIr#}j`r|!{QLOgfYBC@gsYiR#6m$ujtxoU0P+#uWW_xWP*RQT00w1V?a zv6OsAre-|{CIU;6@4|}HMEwh6d+7aQhc_?V=j81NVT{T0esV{*^YhPBM)K?%vp_p= zJRqV{tYmkd3=bNYAi5{%WQOLDlaGCkinHYV0<$HFB|%$($Y*Q>Q%RHL(6;pLekjHm zsp7YS1$SdPG)n8C!QR!@{B?QXMXUinfi`CBf&;g|m|0zFI7J>7VHyvHN9eYQD-)H! zbJt{Zqa$dv(RUftNCc{HJilmgC?rmsN^|IWki$-BRw!tlb`Qo0YS)Rhh8WM(L^kxzB8sa3{GhD=Fcn{f#V zb&rl0s4}yPwAdQ(Lbi6Yq(b?1^$m5&bdSoy6`VK720U3UJ6VUK4Fv^-vrQ+13iC_w5-&ImskAfm^KUet?Hi_eEcIn} zHv0Ufs?I#tn!-|urz_#vPc;n~GhZk$RB()!Gwe54=mIZBM69T&h^h*wCo>oFT3Vza zY9wXn`+j{*BBr5X=S)paEvgR8)rc%8xQU5{#Vjh?nA`27{^G?8J?Lg^Y*i;EUp&Of z9HpW&D?QxZXBQSQxVX5Wi5CsqfL(j+?q2LhiNw)~MS)kDL-_+}&vxq#VBi@U86Q7> z90V>JZcqeR6!Y;aTa-Qd{p}To6cIPv2}D43jF3*WHHMP!p@jv8p`l?TNV2Y;9+HWv zsVP(qi=h(0&CAPM9xbDfqrID_@p*mhgSwtx#P@WeQ6EEUDyYv`poqYyw7d0*h0_O~ zs^R^Rg^gnUJ?)<-7lZk^xm#P#_qf zK*Q_3HdU;wtUyUE|6s2C@F54_0~1qsR~G}~zR(eCaN_6f-T(W0y7q{VpP#0sB?~d} zRJ}(uqGn)__A?_nSr%FTGu0p~`|I~_5bI{pp835f1U6PPq{9SP|JGvyee&UJSY;0XaL&;Z3NZLh) z{Mp~5+B84(ZYHLB{}Vwk8&a?93|qu95mgOzOUg5{@LB#z5jy^Nc-Vr#@n}* zjBG3{n9pbW`-u>S)E@2q>)7bPJBY~0o`D$Sw|fnrjDniFC`R*4FgG_B4XO9sU^A(8 zU+zZ>3k$oas!IORez_tdF0KQrOMiuh0(M9coL7Ki7zhmw4T=-78`qNpw}b2CEH$bd zDA-QVX;&TNeTCoTyZ32#Wv~L|lJ%x)p_Vydv|8W2_ucJ3KozwQdiG_Awcl+iOKAen}Is*W%>tjHM0-|1k?il|sOd z^cf+2-2D8!eEbY42N-i{xQm{DCUJy>gsP8+ywu%(brB=2a8&aLY!0{PzynEZXj}!W z07vs_o!ip<$C&^bDJe82W@eYISt&#kq&VOey`^jZWhPDBPYxfWjvib9ifBv+oH$}$ zzWi1xl{2=P5SfKz+6fxAJtsULsH4WsT`_$Cb1jaLTW8$NbU(4Lw95z0FafOMhDq)U%?A1*4 z@ft^JuxqoMoAD-1zH{^K(G_Qh_4qwjGC6#Q}9oy()PjnyT(e3RS(%6VPQsYZX!WJL6jTi_S<&= zmlZuRbfCApK1NccTh;+v#>~zx3Ror~SJUqEpI%=gh`EJ?6u=g+v$L05f2TTygSh;& zB4>O-NFi2e89ser6a#j{yJI7IdwQti*i30ul$3=#?FWJ5sRXb1T^L@yd;EVr3?(mV zpO^nG`a4yzy}g}Qob#YZ?Inina<*>PhQ@fK2nLkn!mlFZ{JFY|cl)f!4^^4ciaKr! z6uXd}%E~X+cU?o4*FGP&Fo%uLV1FI@1fWJ^^&vXqkG|WZ*w5?ib3_8#iUf@h?dGMB z=a`M}H+;uM#I1xrn-V?`lg1(}u;WxIP+R`w+4G1|wU%i$QFY|6v!?mQtYcoU-1^2PfRnYu>psJ)Qmd(;t3xO* zEtserxq_~?;4E<|%SZuBvszu#uQk|#3ElcuFhMo{3U=!n6<5KVSxrw8OnOEIL}+zF zUMDypkqftwimh;J7K9h}(^m-To`Z%?cIZkP$hrF#l7@$vM3L%$;WsGk9hO}Tco zd7ug$ClC(iC61!u|AiFp9Um=aqTqIHY-jLL2tarM+H<|MD}kZgP|}FV$@43=4c4QR z0D^?VcafmrU^Enr{W$H52acs3plrFrSf$8`ueUcGg5v43nI=E-wb3#KaB|AZ%BbTC z?&cb;$k2XRaf!vz&LYaHp)3g>A7Aw`Ku;(@=0K2^C+qkSNd*Ngz|qS?g__aBg4W+C z0QED8h*0_Z`m$Mshll5wwghkp>e$;=NM?w5;L`i=5<@v=Ozo)vg@#WnLJE8|6b?HW zyLQJL$}fZ3qsdWG3xa^-9ctJF$_>1~t)~aiZK+pIU!M|4ZwMGw${DDHN>fjL7nhbS zpoT0D<`dR9PCNtdu2~Xr?b@}7*jTyy_akdnSd-fN`pV?i?s}|}CM#YaDKm|SdZ22x zenT|_5)>+-!1L4PSZX1Se=!=XFli}piB--s%~TTx1_lEoC5GA~9LDv@I%OutYdg@? z3&8|xsjFuXNIA&Betr;D?no^OUn+@!1TNwVc1NYos<_Z1|o==Z{EFYxNfSacMp^w4_tQ~h)WsZ+9*Mp#Tpd z(%#-)C_q3Atu20e%4;SU5~LsD^a1zM1s(rEJ(Ilx_9Ok^N|gumRr5gzjMj2dRk|$5 zqx8cE(>|=MYfA~YZruWD1qn>J!Nd(#*7@VTwQ5eUjqz*n>JgEV>MIs@cDTr6H@DB- zDYvt=*xGC0MYH@4{t#iJEiNv?O0)xBm<0?mJNpooZ(SUAN+5`0?p3&~j{S`Z6bwOa zDhLZuO89`Bm^j#L#-AJw4GlnKXPsMMSPk}U??hdM&`}yzb;^5+bf*fRfB|me-mtKfJ4q_1$5dcJo z!Z)zi^FPRt2<-Fo^E;1c5meK!u;@fx&d*vGi_m!I5Bz)BV=aM!D9{F4FDWt-2PDmK zy`!T-7eF30a2#)X>_P)XDm_vB6OT#bgky zK>OnHu`X>c3JD6<8L1%49kJB1vZS=M55U2&DKy55A4iCai4DKcEZ8}h0E%^;g(ac6 zS$wM2C8vY9GTY^CPEH}n2Q32wwi+(Ia!Hz{*|tzi3kw-oP4g27gSw`tGpKT!nJuFO zsMo7(2WQvT@Sy)ceTsRyW_l6w@uSd_Cr_x>*H%{zHeF%2p)`q6O8_kn4h|}b13^qo zPLAd8?~l5-)Iv_O&}~87%q=d4p>;2P~+}!Jcw(t>DN|m0T-W?WI`iI^$ zoEDZIc24Bq=79kXqdM11_9Ml?b#*>XXG%&+)Quak7ax0ggh4D)>$KdTt=HgLVz8$x z^mtYh#eM=$CT6x^p9|Q%h9s-Dp&^=F4najZd^WvEfv7zkAtr8aH3zO+x1_ACSz+gZ z3ZZT+xnlc6l7NC+@=3pm_uQo~ot@0=?8+sQ?`4QEL1eUj{faX^Jq^z9ORiEX%Eh4= zmjCgt6iB_dZ{L=iw?`SAjOGDF@B03|q?!ZZc{l;>C#VzJ$Id^?(SU5V8#*^>J73gy z6!%U}HpXZ^iO{dsa|u0gDwHW$6^2<4w|( z2!^x6H7hDcjjKAc8`j{PLNzJr0gKrIAPbx6>IA?&Mr`!;^>qZ<-`~f^#%@i%rHN8a zw={d5!rUDmA_#sYY8HUK4e~o`0hM8?U$9I6 z;gqs+a*<~k7#J=~y|gz;akm3dC1P)FG&^T7%Cu>EQutT7+2<}`;2`|8N?D4A1jBa^ z4)VdN8l(;m4z8r=nlR$w;ZZ^GCoCfJ9D>6VNJp*c72;?Zk=+hz=Yrz0v`}zpk!u9> z;>yMip4U>rAUuGuVW`YhVs+vp*Mrx05*3w{03N>r6@M{Qi_-qrVQ-4K{Z?)|i;OS{ zJo7-ESP1?#!N0}|v#2jNc7OTubaHCy>-cyY+?@OIbYdC}=kJ9rQ=nz2LFcnKvKkd4 zP+v5f>hDjue1%HZ)6({Tlrl#J&ax70cx0JYC4COZqTSi~v z6%>2{ZuurF>ob*1@dqEBXG+~B;J$)uInWvra95YnI^yqx9=#06jwQ9neqBgR>rdql;?=E4uCLqgO3m&vw5!_pg6ECmrjnp`o!18+AU+)Z!6Kg2q-G7JYvLqfC|YW&5Cx(#q<^@oM{* zLe6xY#`RCZ8$D{E8NuIRN&r9n`Mq{gf4(Zc`^tda#A3PiBl2K=U>8t-tKmPRo$mAf zCw|mLmavD}<+R`|oE#;>Wq0-J)x*uoVcGv2e%f7mr_6eySg7^>Lisq8;=d)J&#C^j zTk`7bIIa!*onRMfZt?5{U(H8Dcn{@ciF+T_y%UUGO873TsEn0`WCdLvtTI+L{I4k} zUBmw$DQM96#gIzSTWLbUnK)9r^EYfobiby3SAu<57~wqW-MErdtO>!qR*ud zi60;wFU=8~W&WQS^8dT%l66k*EuokUF{YWW{f4Px*EA?(%k%e(iu|Dwc`!&)(~VU% za&+krM|)dac6E3{5LU{?DUOpph_j+UEyEaNg_`-#gv=e~?XjLO{R^{hX!-aEqb#qw z`ot)YB02aUUOql`HMOh_UOR2@!R6)LU5k!uhR+Sp-sbTD;Q@1uj{@)D5m9*_5)|MUEA8)+Sc}VxsnY?;~tusp}`ym5EDmF zclW2tteRsZLqnv{)gP3WaXi;zI9MMG1zOVD(Qz3>DvE*CyRU@6@kZrE5@)+fwHu(q z7?ZyC*SXmsDQHeN6Ld?B+CbW7m6Z|7$jFEWoKk?lmWF66Y4r_{g?vs8M3I|wOH1Jp z&qS{6!yAD0H3!WP=>ohxWK|X&F}50xjw$cZaS%E>x|h6GxCm$vOqkulfs`~7mCEQ> z%1&~MiqgQW5X?orsO5wv2J~*;Eps?EMe#bcIqrZ{?-)8UgUJi14B8zxn0_rTN^z!s z?(J0(wbQ1Z0?wL{loSe7lu<&0-rCw4h=S&rys0TY2%B)|_mD@SA;QAKH*ei)gL(&e z4i~z^&xr{P1PbM2fFJmjyr2UwdrS*~I6TnW}k^E{M9LU0vAm^b+!q zA9KHc^Jci-SwPM;_*-8ec^Lt0G1OQYEI`rlN6;H=W%$~rf;>FIfKOnF09J{YCUp1Yhr=mgt-pkC=@+rVa zCU$oG-rinpTwH1BQn8wz(1Lv~0lTCC;S2LG+T(0&Y(&?tU4jWQ<=1zJ5ft`?Hb1uz zF9B-&3ur$c2*qIyLn6w3{#sW^5Ssz11I5-3VJ7GkPSfTX=jNl!Aex^7=rcGdW4*_j z0BulST|Lp;cV*&ZnYW@t1Yps|#>Q166IdHmM}ZB^#K?#S%{{EFj4My&O%&vF3!tyO zFU}6yHO&B-Y3)k@Y4nAV2YdiGFE2WBM?~bUO<%_0#>bh5Ha5D>5|Gn@B(#7TF6dMl ziW3m2Z3EdoJUNM8Lq|s^A|VNdSRuQ(7#~9Ec`aEYOxW&JE$0SD=^~u=$Lw{2?H=2BHsu!CQlgQ7?5(7(@Q%FSAf|fovMSbpqxQ#=vxooc+lKV0xoSrz8Z{7$7KAI$##zK-O#P z>p#J8BY3cgn3ylX!?7V<2Ptl`HQNRoNW0-2Qel7st<%$Vu&iOgDlZezU?b%f6>T8P z`wKO10DX?u9UG2?2{sgH0C^8i2u-Uu5CmVl4G!$x^1zD#RKNmj0O|G@(4Rz*@WPm3 za&q!4ShRWZ*w|Pe&vm`iC5ek*NCyBDK0f$k{94%Ua!)Fk^N3poM~RI6#?Q~6b6Oa% z%lP@d-gDl)OAV0@YL)~gu_2%bV(||}&X`AWW6-U>2Y)z9dwP0g^z~nPE0#7FLoJ6; z32qq{99226BB;X^M+HGU_&pL3TQHj#2U;@f1mXrs;J^I64Al zHVo=EDLFYaj8cN+1-@Hz=L+OHlE8@}BS=h7$0H{v2fY5dqeC7)ALc7yGz1(0CQOWM zM=Z_HqtnvT!VJP3geO~jdtvZtAu5{a>Fx&n909r#b;99;1%cy(A(nOic-4Pj&%xi6<8TPpo9 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ManualSelectorNode Member List
+
+
+ +

This is the complete list of members for BT::ManualSelectorNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::ManualSelectorNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
ManualSelectorNode(const std::string &name, const NodeConfig &config) (defined in BT::ManualSelectorNode)BT::ManualSelectorNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ManualSelectorNode)BT::ManualSelectorNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~ManualSelectorNode() override=default (defined in BT::ManualSelectorNode)BT::ManualSelectorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.map b/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.map new file mode 100644 index 000000000..2a94679ec --- /dev/null +++ b/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.md5 b/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.md5 new file mode 100644 index 000000000..8c37f71a5 --- /dev/null +++ b/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.md5 @@ -0,0 +1 @@ +381fed27e32597b787a9cd6437789610 \ No newline at end of file diff --git a/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.png b/dd/d14/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..347f275cb9d1588886930ada05b5570be088bddb GIT binary patch literal 5908 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 literal 0 HcmV?d00001 diff --git a/dd/d25/class_b_t_1_1_runtime_error-members.html b/dd/d25/class_b_t_1_1_runtime_error-members.html new file mode 100644 index 000000000..318813f92 --- /dev/null +++ b/dd/d25/class_b_t_1_1_runtime_error-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::RuntimeError Member List
+
+
+ +

This is the complete list of members for BT::RuntimeError, including all inherited members.

+ + + + + + +
BehaviorTreeException(std::string_view message) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
BehaviorTreeException(const SV &... args) (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
RuntimeError(std::string_view message) (defined in BT::RuntimeError)BT::RuntimeErrorinline
RuntimeError(const SV &... args) (defined in BT::RuntimeError)BT::RuntimeErrorinline
what() const noexcept (defined in BT::BehaviorTreeException)BT::BehaviorTreeExceptioninline
+
+ + + + diff --git a/dd/d26/class_b_t_1_1_keep_running_until_failure_node-members.html b/dd/d26/class_b_t_1_1_keep_running_until_failure_node-members.html new file mode 100644 index 000000000..c29df0751 --- /dev/null +++ b/dd/d26/class_b_t_1_1_keep_running_until_failure_node-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::KeepRunningUntilFailureNode Member List
+
+
+ +

This is the complete list of members for BT::KeepRunningUntilFailureNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
KeepRunningUntilFailureNode(const std::string &name) (defined in BT::KeepRunningUntilFailureNode)BT::KeepRunningUntilFailureNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dd/d26/class_b_t_1_1_type_info__inherit__graph.map b/dd/d26/class_b_t_1_1_type_info__inherit__graph.map new file mode 100644 index 000000000..03d1fa596 --- /dev/null +++ b/dd/d26/class_b_t_1_1_type_info__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dd/d26/class_b_t_1_1_type_info__inherit__graph.md5 b/dd/d26/class_b_t_1_1_type_info__inherit__graph.md5 new file mode 100644 index 000000000..ed0b0de3e --- /dev/null +++ b/dd/d26/class_b_t_1_1_type_info__inherit__graph.md5 @@ -0,0 +1 @@ +09df61510d68c79ae84c22ab7c3fd6a3 \ No newline at end of file diff --git a/dd/d26/class_b_t_1_1_type_info__inherit__graph.png b/dd/d26/class_b_t_1_1_type_info__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..16f9fd0ba988ca8505e0900c2c827727e2b43947 GIT binary patch literal 3357 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Tree Member List
+
+
+ +

This is the complete list of members for BT::Tree, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
applyVisitor(const std::function< void(const TreeNode *)> &visitor) const (defined in BT::Tree)BT::Tree
applyVisitor(const std::function< void(TreeNode *)> &visitor) (defined in BT::Tree)BT::Tree
getNodesByPath(StringView wildcard_filter) constBT::Treeinline
getUID() (defined in BT::Tree)BT::Tree
haltTree() (defined in BT::Tree)BT::Tree
initialize() (defined in BT::Tree)BT::Tree
manifests (defined in BT::Tree)BT::Tree
operator=(const Tree &)=delete (defined in BT::Tree)BT::Tree
operator=(Tree &&other)=default (defined in BT::Tree)BT::Tree
rootBlackboard() (defined in BT::Tree)BT::Tree
rootNode() const (defined in BT::Tree)BT::Tree
sleep(std::chrono::system_clock::duration timeout)BT::Tree
subtrees (defined in BT::Tree)BT::Tree
tickExactlyOnce()BT::Tree
tickOnce()BT::Tree
tickWhileRunning(std::chrono::milliseconds sleep_time=std::chrono::milliseconds(10))BT::Tree
Tree() (defined in BT::Tree)BT::Tree
Tree(const Tree &)=delete (defined in BT::Tree)BT::Tree
Tree(Tree &&other)=default (defined in BT::Tree)BT::Tree
~Tree() (defined in BT::Tree)BT::Tree
+
+ + + + diff --git a/dd/d32/class_b_t_1_1_loop_node.html b/dd/d32/class_b_t_1_1_loop_node.html new file mode 100644 index 000000000..98379993d --- /dev/null +++ b/dd/d32/class_b_t_1_1_loop_node.html @@ -0,0 +1,388 @@ + + + + + + + +BehaviorTree: BT::LoopNode< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::LoopNode< T > Class Template Reference
+
+
+ +

The LoopNode class is used to pop_front elements from a std::deque. This element is copied into the port "value" and the child will be executed, as long as we have elements in the queue. + More...

+ +

#include <loop_node.h>

+
+Inheritance diagram for BT::LoopNode< T >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::LoopNode< T >:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LoopNode (const std::string &name, const NodeConfig &config)
 
NodeStatus tick () override
 Method to be implemented by the user.
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+
template<typename T = Any>
+class BT::LoopNode< T >

The LoopNode class is used to pop_front elements from a std::deque. This element is copied into the port "value" and the child will be executed, as long as we have elements in the queue.

+

See Example 4: ex04_waypoints

+

NOTE: unless T is Any, string or double, you must register the loop manually into the factory.

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+
+template<typename T = Any>
+ + + + + +
+ + + + + + + +
NodeStatus BT::LoopNode< T >::tick ()
+
+inlineoverridevirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dd/d32/class_b_t_1_1_loop_node.js b/dd/d32/class_b_t_1_1_loop_node.js new file mode 100644 index 000000000..dcbddc19e --- /dev/null +++ b/dd/d32/class_b_t_1_1_loop_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_loop_node = +[ + [ "tick", "dd/d32/class_b_t_1_1_loop_node.html#a0797d0b208dc24644a8d51cbc7606cd7", null ] +]; \ No newline at end of file diff --git a/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.map b/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.map new file mode 100644 index 000000000..df9239220 --- /dev/null +++ b/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.md5 b/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.md5 new file mode 100644 index 000000000..9a7edb46e --- /dev/null +++ b/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.md5 @@ -0,0 +1 @@ +f5deb7be909e764c28ab6c63c89dbf4d \ No newline at end of file diff --git a/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.png b/dd/d33/class_b_t_1_1_set_blackboard_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c319d17bd60b6119be4c0440b39ea139d7de46 GIT binary patch literal 11933 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 + + + + diff --git a/dd/d34/class_b_t_1_1_runtime_error__coll__graph.md5 b/dd/d34/class_b_t_1_1_runtime_error__coll__graph.md5 new file mode 100644 index 000000000..2f0433473 --- /dev/null +++ b/dd/d34/class_b_t_1_1_runtime_error__coll__graph.md5 @@ -0,0 +1 @@ +478012050e5e6d04008a1b54cdee898b \ No newline at end of file diff --git a/dd/d34/class_b_t_1_1_runtime_error__coll__graph.png b/dd/d34/class_b_t_1_1_runtime_error__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f80163a988f3d06a01e5568aa4bc9fac17181c9d GIT binary patch literal 7003 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 MMj2CZ&nV#E0JcR_TL1t6 literal 0 HcmV?d00001 diff --git a/dd/d3d/simple__string_8hpp_source.html b/dd/d3d/simple__string_8hpp_source.html new file mode 100644 index 000000000..33ba801f5 --- /dev/null +++ b/dd/d3d/simple__string_8hpp_source.html @@ -0,0 +1,298 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/simple_string.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
simple_string.hpp
+
+
+
1#pragma once
+
2
+
3#include <string>
+
4#include <cstring>
+
5#include <stdexcept>
+
6#include <limits>
+
7#include <cstdint>
+
8#include <string_view>
+
9
+
10namespace SafeAny
+
11{
+
12
+
13// Read only version of String that has size 16 bytes and can store
+
14// in-place strings with size up to 15 bytes.
+
15
+
16// Inspired by https://github.com/elliotgoodrich/SSO-23
+
17
+
18class SimpleString
+
19{
+
20public:
+
21 SimpleString(const std::string& str) : SimpleString(str.data(), str.size())
+
22 {}
+
23
+
24 SimpleString(const std::string_view& str) : SimpleString(str.data(), str.size())
+
25 {}
+
26
+
27 SimpleString(const SimpleString& other) : SimpleString(other.data(), other.size())
+
28 {}
+
29
+
30 SimpleString& operator=(const SimpleString& other)
+
31 {
+
32 this->~SimpleString();
+
33 createImpl(other.data(), other.size());
+
34 return *this;
+
35 }
+
36
+
37 SimpleString(SimpleString&& other) : SimpleString(nullptr, 0)
+
38 {
+
39 std::swap(_storage, other._storage);
+
40 }
+
41
+
42 SimpleString& operator=(SimpleString&& other)
+
43 {
+
44 this->~SimpleString();
+
45
+
46 std::swap(_storage, other._storage);
+
47 return *this;
+
48 }
+
49
+
50 SimpleString(const char* input_data) : SimpleString(input_data, strlen(input_data))
+
51 {}
+
52
+
53 SimpleString(const char* input_data, std::size_t size)
+
54 {
+
55 createImpl(input_data, size);
+
56 }
+
57
+
58 ~SimpleString()
+
59 {
+
60 if(!isSOO())
+
61 {
+
62 delete[] _storage.str.data;
+
63 }
+
64 _storage.soo.capacity_left = CAPACITY;
+
65 }
+
66
+
67 std::string toStdString() const
+
68 {
+
69 return size() > 0 ? std::string(data(), size()) : std::string();
+
70 }
+
71 std::string_view toStdStringView() const
+
72 {
+
73 return size() > 0 ? std::string_view(data(), size()) : std::string_view();
+
74 }
+
75
+
76 const char* data() const
+
77 {
+
78 if(isSOO())
+
79 {
+
80 return _storage.soo.data;
+
81 }
+
82 else
+
83 {
+
84 return _storage.str.data;
+
85 }
+
86 }
+
87
+
88 std::size_t size() const
+
89 {
+
90 if(isSOO())
+
91 {
+
92 return CAPACITY - _storage.soo.capacity_left;
+
93 }
+
94 else
+
95 {
+
96 return _storage.str.size & LONG_MASK;
+
97 }
+
98 }
+
99
+
100 bool operator==(const SimpleString& other) const
+
101 {
+
102 size_t N = size();
+
103 return other.size() == N && std::strncmp(data(), other.data(), N) == 0;
+
104 }
+
105
+
106 bool operator!=(const SimpleString& other) const
+
107 {
+
108 size_t N = size();
+
109 return other.size() != N || std::strncmp(data(), other.data(), N) != 0;
+
110 }
+
111
+
112 bool operator<=(const SimpleString& other) const
+
113 {
+
114 return std::strcmp(data(), other.data()) <= 0;
+
115 }
+
116
+
117 bool operator>=(const SimpleString& other) const
+
118 {
+
119 return std::strcmp(data(), other.data()) >= 0;
+
120 }
+
121
+
122 bool operator<(const SimpleString& other) const
+
123 {
+
124 return std::strcmp(data(), other.data()) < 0;
+
125 }
+
126
+
127 bool operator>(const SimpleString& other) const
+
128 {
+
129 return std::strcmp(data(), other.data()) > 0;
+
130 }
+
131
+
132 bool isSOO() const
+
133 {
+
134 return !(_storage.soo.capacity_left & IS_LONG_BIT);
+
135 }
+
136
+
137private:
+
138 struct String
+
139 {
+
140 char* data;
+
141 std::size_t size;
+
142 };
+
143
+
144 constexpr static std::size_t CAPACITY = 15; // sizeof(String) - 1);
+
145 constexpr static std::size_t IS_LONG_BIT = 1 << 7;
+
146 constexpr static std::size_t LONG_MASK = (~std::size_t(0)) >> 1;
+
147 constexpr static std::size_t MAX_SIZE = 100UL * 1024UL * 1024UL;
+
148
+
149 union
+
150 {
+
151 String str;
+
152
+
153 struct SOO
+
154 {
+
155 char data[CAPACITY];
+
156 uint8_t capacity_left;
+
157 } soo;
+
158 } _storage;
+
159
+
160private:
+
161 void createImpl(const char* input_data, std::size_t size)
+
162 {
+
163 if(size > MAX_SIZE)
+
164 {
+
165 throw std::invalid_argument("size too large for a simple string");
+
166 }
+
167
+
168 if(size > CAPACITY)
+
169 {
+
170 _storage.str.size = size;
+
171 _storage.soo.capacity_left = IS_LONG_BIT;
+
172 _storage.str.data = new char[size + 1];
+
173 std::memcpy(_storage.str.data, input_data, size);
+
174 _storage.str.data[size] = '\0';
+
175 }
+
176 else
+
177 {
+
178 _storage.soo.capacity_left = uint8_t(CAPACITY - size);
+
179 if(size > 0)
+
180 {
+
181 std::memcpy(_storage.soo.data, input_data, size);
+
182 }
+
183 if(size < CAPACITY)
+
184 {
+
185 _storage.soo.data[size] = '\0';
+
186 }
+
187 }
+
188 }
+
189};
+
190
+
191} // namespace SafeAny
+
Definition: simple_string.hpp:19
+
+
+ + + + diff --git a/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.map b/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.map new file mode 100644 index 000000000..84d068ec2 --- /dev/null +++ b/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.md5 b/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.md5 new file mode 100644 index 000000000..e56598630 --- /dev/null +++ b/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.md5 @@ -0,0 +1 @@ +aaa1febcd8b3aab68c0a0fd7ed47fe97 \ No newline at end of file diff --git a/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.png b/dd/d57/class_b_t_1_1_sqlite_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8477434819870e4eea7ef26ace59ed50fdb876 GIT binary patch literal 5138 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 + + + + + + +BehaviorTree: include/behaviortree_cpp/xml_parsing.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
xml_parsing.h
+
+
+
1#ifndef XML_PARSING_BT_H
+
2#define XML_PARSING_BT_H
+
3
+
4#include "behaviortree_cpp/bt_parser.h"
+
5
+
6#include <filesystem>
+
7#include <unordered_map>
+
8
+
9namespace BT
+
10{
+
11/**
+
12 * @brief The XMLParser is a class used to read the model
+
13 * of a BehaviorTree from file or text and instantiate the
+
14 * corresponding tree using the BehaviorTreeFactory.
+
15 */
+
16class XMLParser : public Parser
+
17{
+
18public:
+
19 XMLParser(const BehaviorTreeFactory& factory);
+
20
+
21 ~XMLParser() override;
+
22
+
23 XMLParser(const XMLParser& other) = delete;
+
24 XMLParser& operator=(const XMLParser& other) = delete;
+
25
+
26 XMLParser(XMLParser&& other) noexcept;
+
27 XMLParser& operator=(XMLParser&& other) noexcept;
+
28
+
29 void loadFromFile(const std::filesystem::path& filename,
+
30 bool add_includes = true) override;
+
31
+
32 void loadFromText(const std::string& xml_text, bool add_includes = true) override;
+
33
+
34 [[nodiscard]] std::vector<std::string> registeredBehaviorTrees() const override;
+
35
+
36 [[nodiscard]] Tree instantiateTree(const Blackboard::Ptr& root_blackboard,
+
37 std::string main_tree_to_execute = {}) override;
+
38
+
39 void clearInternalState() override;
+
40
+
41private:
+
42 struct PImpl;
+
43 std::unique_ptr<PImpl> _p;
+
44};
+
45
+
46void VerifyXML(const std::string& xml_text,
+
47 const std::unordered_map<std::string, NodeType>& registered_nodes);
+
48
+
49/**
+
50 * @brief writeTreeNodesModelXML generates an XMl that contains the manifests in the
+
51 * <TreeNodesModel>
+
52 *
+
53 * @param factory the factory with the registered types
+
54 * @param include_builtin if true, include the builtin Nodes
+
55 *
+
56 * @return string containing the XML.
+
57 */
+
58[[nodiscard]] std::string writeTreeNodesModelXML(const BehaviorTreeFactory& factory,
+
59 bool include_builtin = false);
+
60
+
61/**
+
62 * @brief writeTreeXSD generates an XSD for the nodes defined in the factory
+
63 *
+
64 * @param factory the factory with the registered types
+
65 *
+
66 * @return string containing the XML.
+
67 */
+
68[[nodiscard]] std::string writeTreeXSD(const BehaviorTreeFactory& factory);
+
69
+
70/**
+
71 * @brief WriteTreeToXML create a string that contains the XML that corresponds to a given tree.
+
72 * When using this function with a logger, you should probably set both add_metadata and
+
73 * add_builtin_models to true.
+
74 *
+
75 * @param tree the input tree
+
76 * @param add_metadata if true, the attributes "_uid" and "_fullPath" will be added to the nodes
+
77 * @param add_builtin_models if true, include the builtin Nodes into the <TreeNodesModel>
+
78 *
+
79 * @return string containing the XML.
+
80 */
+
81[[nodiscard]] std::string WriteTreeToXML(const Tree& tree, bool add_metadata,
+
82 bool add_builtin_models);
+
83
+
84} // namespace BT
+
85
+
86#endif // XML_PARSING_BT_H
+
The BehaviorTreeFactory is used to create instances of a TreeNode at run-time.
Definition: bt_factory.h:210
+
The Blackboard is the mechanism used by BehaviorTrees to exchange typed data.
Definition: blackboard.h:33
+
The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and inst...
Definition: bt_parser.h:27
+
Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
Definition: bt_factory.h:92
+
The XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate t...
Definition: xml_parsing.h:17
+
Definition: action_node.h:25
+
std::string writeTreeXSD(const BehaviorTreeFactory &factory)
writeTreeXSD generates an XSD for the nodes defined in the factory
+
std::string WriteTreeToXML(const Tree &tree, bool add_metadata, bool add_builtin_models)
WriteTreeToXML create a string that contains the XML that corresponds to a given tree....
+
std::string writeTreeNodesModelXML(const BehaviorTreeFactory &factory, bool include_builtin=false)
writeTreeNodesModelXML generates an XMl that contains the manifests in the <TreeNodesModel>
+
+
+ + + + diff --git a/dd/d5d/class_b_t_1_1_loop_node__coll__graph.map b/dd/d5d/class_b_t_1_1_loop_node__coll__graph.map new file mode 100644 index 000000000..978d6e117 --- /dev/null +++ b/dd/d5d/class_b_t_1_1_loop_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/dd/d5d/class_b_t_1_1_loop_node__coll__graph.md5 b/dd/d5d/class_b_t_1_1_loop_node__coll__graph.md5 new file mode 100644 index 000000000..51df79483 --- /dev/null +++ b/dd/d5d/class_b_t_1_1_loop_node__coll__graph.md5 @@ -0,0 +1 @@ +26551fb0ffa0b559ffdcdc4fc235fb06 \ No newline at end of file diff --git a/dd/d5d/class_b_t_1_1_loop_node__coll__graph.png b/dd/d5d/class_b_t_1_1_loop_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b7ce6f9d6805d2c0d0e3de59cf21dd46aaaf18c2 GIT binary patch literal 7297 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 literal 0 HcmV?d00001 diff --git a/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.map b/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.map new file mode 100644 index 000000000..8b3c882b3 --- /dev/null +++ b/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.md5 b/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.md5 new file mode 100644 index 000000000..0a425bc00 --- /dev/null +++ b/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.md5 @@ -0,0 +1 @@ +454db6689ba0196489567d057f2e3b2d \ No newline at end of file diff --git a/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.png b/dd/d5f/class_b_t_1_1_retry_node_typo__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..76fb59e0a41c389a8d9dd442f582aa99d44cfa8f GIT binary patch literal 9793 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 nFT2$V`l4?B=hl@($^~)FUTYd + + + + + diff --git a/dd/d7a/class_b_t_1_1_switch_node__coll__graph.md5 b/dd/d7a/class_b_t_1_1_switch_node__coll__graph.md5 new file mode 100644 index 000000000..bfddff3d4 --- /dev/null +++ b/dd/d7a/class_b_t_1_1_switch_node__coll__graph.md5 @@ -0,0 +1 @@ +b5c865095beb1fa00b8c55834bd87258 \ No newline at end of file diff --git a/dd/d7a/class_b_t_1_1_switch_node__coll__graph.png b/dd/d7a/class_b_t_1_1_switch_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f77ecf4d3fac913dd68d374cf25bd5adba8a180 GIT binary patch literal 14738 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 + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::FallbackNode Member List
+
+
+ +

This is the complete list of members for BT::FallbackNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
FallbackNode(const std::string &name, bool make_asynch=false) (defined in BT::FallbackNode)BT::FallbackNode
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::FallbackNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~FallbackNode() override=default (defined in BT::FallbackNode)BT::FallbackNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.map b/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.map new file mode 100644 index 000000000..b979fe22a --- /dev/null +++ b/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.md5 b/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.md5 new file mode 100644 index 000000000..25e4a2a5d --- /dev/null +++ b/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.md5 @@ -0,0 +1 @@ +5c8a846e2db90de01dfb7a3a8e2e952d \ No newline at end of file diff --git a/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.png b/dd/d89/struct_b_t_1_1_grammar_1_1_expression_1_1assignment__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c4d3efebfb865e399f90c5b8d47bfce75ed3022a GIT binary patch literal 6399 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 literal 0 HcmV?d00001 diff --git a/dd/d94/class_b_t_1_1_retry_node__inherit__graph.map b/dd/d94/class_b_t_1_1_retry_node__inherit__graph.map new file mode 100644 index 000000000..2403e4a10 --- /dev/null +++ b/dd/d94/class_b_t_1_1_retry_node__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dd/d94/class_b_t_1_1_retry_node__inherit__graph.md5 b/dd/d94/class_b_t_1_1_retry_node__inherit__graph.md5 new file mode 100644 index 000000000..52b9811ea --- /dev/null +++ b/dd/d94/class_b_t_1_1_retry_node__inherit__graph.md5 @@ -0,0 +1 @@ +0bb60ec5e34e91cc095244e01123c1f0 \ No newline at end of file diff --git a/dd/d94/class_b_t_1_1_retry_node__inherit__graph.png b/dd/d94/class_b_t_1_1_retry_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..cff090ac63742f2e27e5bb266b9460eba02fbc24 GIT binary patch literal 8591 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 b`V-=|B8>DODLvd9Ef8e|b@?JW6W@OW_0x#^ literal 0 HcmV?d00001 diff --git a/dd/d99/class_b_t_1_1_simple_action_node-members.html b/dd/d99/class_b_t_1_1_simple_action_node-members.html new file mode 100644 index 000000000..6b5fe3ba6 --- /dev/null +++ b/dd/d99/class_b_t_1_1_simple_action_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SimpleActionNode Member List
+
+
+ +

This is the complete list of members for BT::SimpleActionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
SimpleActionNode(const std::string &name, TickFunctor tick_functor, const NodeConfig &config) (defined in BT::SimpleActionNode)BT::SimpleActionNode
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
tick() override finalBT::SimpleActionNodeprotectedvirtual
tick_functor_ (defined in BT::SimpleActionNode)BT::SimpleActionNodeprotected
TickFunctor typedef (defined in BT::SimpleActionNode)BT::SimpleActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SimpleActionNode() override=default (defined in BT::SimpleActionNode)BT::SimpleActionNode
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/dd/dac/struct_b_t_1_1_grammar_1_1_expression_1_1comparison-members.html b/dd/dac/struct_b_t_1_1_grammar_1_1_expression_1_1comparison-members.html new file mode 100644 index 000000000..ba8bab7fe --- /dev/null +++ b/dd/dac/struct_b_t_1_1_grammar_1_1_expression_1_1comparison-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::comparison Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::comparison, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::comparison)BT::Grammar::Expression::comparisonstatic
operand typedef (defined in BT::Grammar::Expression::comparison)BT::Grammar::Expression::comparison
+
+ + + + diff --git a/dd/dae/parallel__node_8h_source.html b/dd/dae/parallel__node_8h_source.html new file mode 100644 index 000000000..4f3d9d3d3 --- /dev/null +++ b/dd/dae/parallel__node_8h_source.html @@ -0,0 +1,196 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/parallel_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
parallel_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2022 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include <set>
+
17#include "behaviortree_cpp/control_node.h"
+
18
+
19namespace BT
+
20{
+
21/**
+
22 * @brief The ParallelNode execute all its children
+
23 * __concurrently__, but not in separate threads!
+
24 *
+
25 * Even if this may look similar to ReactiveSequence,
+
26 * this Control Node is the __only__ one that can have
+
27 * multiple children RUNNING at the same time.
+
28 *
+
29 * The Node is completed either when the THRESHOLD_SUCCESS
+
30 * or THRESHOLD_FAILURE number is reached (both configured using ports).
+
31 *
+
32 * If any of the thresholds is reached, and other children are still running,
+
33 * they will be halted.
+
34 *
+
35 * Note that threshold indexes work as in Python:
+
36 * https://www.i2tutorials.com/what-are-negative-indexes-and-why-are-they-used/
+
37 *
+
38 * Therefore -1 is equivalent to the number of children.
+
39 */
+
40class ParallelNode : public ControlNode
+
41{
+
42public:
+
43 ParallelNode(const std::string& name);
+
44
+
45 ParallelNode(const std::string& name, const NodeConfig& config);
+
46
+
47 static PortsList providedPorts()
+
48 {
+
49 return { InputPort<int>(THRESHOLD_SUCCESS, -1,
+
50 "number of children that need to succeed to trigger a "
+
51 "SUCCESS"),
+
52 InputPort<int>(THRESHOLD_FAILURE, 1,
+
53 "number of children that need to fail to trigger a "
+
54 "FAILURE") };
+
55 }
+
56
+
57 ~ParallelNode() override = default;
+
58
+
59 virtual void halt() override;
+
60
+
61 size_t successThreshold() const;
+
62 size_t failureThreshold() const;
+
63 void setSuccessThreshold(int threshold);
+
64 void setFailureThreshold(int threshold);
+
65
+
66private:
+
67 int success_threshold_;
+
68 int failure_threshold_;
+
69
+
70 std::set<size_t> completed_list_;
+
71
+
72 size_t success_count_ = 0;
+
73 size_t failure_count_ = 0;
+
74
+
75 bool read_parameter_from_ports_;
+
76 static constexpr const char* THRESHOLD_SUCCESS = "success_count";
+
77 static constexpr const char* THRESHOLD_FAILURE = "failure_count";
+
78
+
79 virtual BT::NodeStatus tick() override;
+
80
+
81 void clear();
+
82};
+
83
+
84} // namespace BT
+
Definition: control_node.h:22
+
The ParallelNode execute all its children concurrently, but not in separate threads!
Definition: parallel_node.h:41
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: tree_node.h:83
+
+
+ + + + diff --git a/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.map b/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.map new file mode 100644 index 000000000..cb06dfc93 --- /dev/null +++ b/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.md5 b/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.md5 new file mode 100644 index 000000000..7d65586a8 --- /dev/null +++ b/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.md5 @@ -0,0 +1 @@ +4fef2a7fcfd283460ba39d3f6342f229 \ No newline at end of file diff --git a/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.png b/dd/db8/class_b_t_1_1_sequence_with_memory__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5845c7603f70aa2243d64cd336f93a60b36b5d0c GIT binary patch literal 13576 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 VHME|GpEe<0h`tiZ6Vm$lzX10p7l8l( literal 0 HcmV?d00001 diff --git a/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.map b/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.map new file mode 100644 index 000000000..6aaef4bb2 --- /dev/null +++ b/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.md5 b/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.md5 new file mode 100644 index 000000000..cfe8cda4e --- /dev/null +++ b/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.md5 @@ -0,0 +1 @@ +845a073ff5e8e7c36f23420968c687cd \ No newline at end of file diff --git a/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.png b/dd/dbc/class_b_t_1_1_stateful_action_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7feebf8865b47a7f4e04fe793d94e9d183d9ae99 GIT binary patch literal 14491 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 + + + + + + +BehaviorTree: BT::RunOnceNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::RunOnceNode Class Reference
+
+
+ +

The RunOnceNode is used when you want to execute the child only once. If the child is asynchronous, we will tick until either SUCCESS or FAILURE is returned. + More...

+ +

#include <run_once_node.h>

+
+Inheritance diagram for BT::RunOnceNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::RunOnceNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RunOnceNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The RunOnceNode is used when you want to execute the child only once. If the child is asynchronous, we will tick until either SUCCESS or FAILURE is returned.

+

After that first execution, you can set value of the port "then_skip" to:

+
    +
  • if TRUE (default), the node will be skipped in the future.
  • +
  • if FALSE, return synchronously the same status returned by the child, forever.
  • +
+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dd/dc2/always__success__node_8h_source.html b/dd/dc2/always__success__node_8h_source.html new file mode 100644 index 000000000..c91d01671 --- /dev/null +++ b/dd/dc2/always__success__node_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions/always_success_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
always_success_node.h
+
+
+
1/* Copyright (C) 2018-2022 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/action_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * Simple actions that always returns SUCCESS.
+
21 */
+ +
23{
+
24public:
+
25 AlwaysSuccessNode(const std::string& name) : SyncActionNode(name, {})
+
26 {
+
27 setRegistrationID("AlwaysSuccess");
+
28 }
+
29
+
30private:
+
31 virtual BT::NodeStatus tick() override
+
32 {
+
33 return NodeStatus::SUCCESS;
+
34 }
+
35};
+
36} // namespace BT
+
Definition: always_success_node.h:23
+
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
Definition: action_node.h:53
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.map b/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.map new file mode 100644 index 000000000..911896dc9 --- /dev/null +++ b/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.md5 b/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.md5 new file mode 100644 index 000000000..511457fef --- /dev/null +++ b/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.md5 @@ -0,0 +1 @@ +9da752d7bbd4c7c333998a1e6bd3c90f \ No newline at end of file diff --git a/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.png b/dd/dca/struct_b_t_1_1_grammar_1_1_string_literal__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..91d8ff17e93cf2b5eae52802dfec905a724c21a5 GIT binary patch literal 5353 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 literal 0 HcmV?d00001 diff --git a/dd/dcd/operators_8hpp_source.html b/dd/dcd/operators_8hpp_source.html new file mode 100644 index 000000000..cc26efaa1 --- /dev/null +++ b/dd/dcd/operators_8hpp_source.html @@ -0,0 +1,1021 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/scripting/operators.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
operators.hpp
+
+
+
1/* Copyright (C) 2022 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <cmath>
+
16#include <memory>
+
17#include <string>
+
18#include <vector>
+
19
+
20#include "behaviortree_cpp/scripting/any_types.hpp"
+
21#include "behaviortree_cpp/scripting/script_parser.hpp"
+
22
+
23// Naive implementation of an AST with simple evaluation function.
+
24namespace BT::Ast
+
25{
+
26using SimpleString = SafeAny::SimpleString;
+
27
+
28using expr_ptr = std::shared_ptr<struct ExprBase>;
+
29
+
30// extended strin to number that consider enums and booleans
+
31inline double StringToDouble(const Any& value, const Environment& env)
+
32{
+
33 const auto str = value.cast<std::string>();
+
34 if(str == "true")
+
35 {
+
36 return 1.0;
+
37 }
+
38 if(str == "false")
+
39 {
+
40 return 0.0;
+
41 }
+
42 if(env.enums)
+
43 {
+
44 auto it = env.enums->find(str);
+
45 if(it != env.enums->end())
+
46 {
+
47 return it->second;
+
48 }
+
49 }
+
50 return value.cast<double>();
+
51}
+
52
+
53struct ExprBase
+
54{
+
55 using Ptr = std::shared_ptr<ExprBase>;
+
56
+
57 virtual ~ExprBase() = default;
+
58 virtual Any evaluate(Environment& env) const = 0;
+
59};
+
60
+
61inline std::string ErrorNotInit(const char* side, const char* op_str)
+
62{
+
63 return StrCat("The ", side, " operand of the operator [", op_str,
+
64 "] is not initialized");
+
65}
+
66
+
67struct ExprLiteral : ExprBase
+
68{
+
69 Any value;
+
70
+
71 ExprLiteral(Any v) : value(v)
+
72 {}
+
73
+
74 Any evaluate(Environment&) const override
+
75 {
+
76 return value;
+
77 }
+
78};
+
79
+
80struct ExprName : ExprBase
+
81{
+
82 std::string name;
+
83
+
84 explicit ExprName(std::string n) : name(LEXY_MOV(n))
+
85 {}
+
86
+
87 Any evaluate(Environment& env) const override
+
88 {
+
89 //search first in the enums table
+
90 if(env.enums)
+
91 {
+
92 auto enum_ptr = env.enums->find(name);
+
93 if(enum_ptr != env.enums->end())
+
94 {
+
95 return Any(double(enum_ptr->second));
+
96 }
+
97 }
+
98 // search now in the variables table
+
99 auto any_ref = env.vars->getAnyLocked(name);
+
100 if(!any_ref)
+
101 {
+
102 throw RuntimeError(StrCat("Variable not found: ", name));
+
103 }
+
104 return *any_ref.get();
+
105 }
+
106};
+
107
+ +
109{
+
110 enum op_t
+
111 {
+
112 negate,
+
113 complement,
+
114 logical_not
+
115 } op;
+
116 expr_ptr rhs;
+
117
+
118 explicit ExprUnaryArithmetic(op_t op, expr_ptr e) : op(op), rhs(LEXY_MOV(e))
+
119 {}
+
120
+
121 Any evaluate(Environment& env) const override
+
122 {
+
123 auto rhs_v = rhs->evaluate(env);
+
124 if(rhs_v.isNumber())
+
125 {
+
126 const double rv = rhs_v.cast<double>();
+
127 switch(op)
+
128 {
+
129 case negate:
+
130 return Any(-rv);
+
131 case complement:
+
132 if(rv > static_cast<double>(std::numeric_limits<int64_t>::max()) ||
+
133 rv < static_cast<double>(std::numeric_limits<int64_t>::min()))
+
134 {
+
135 throw RuntimeError("Number out of range for bitwise operation");
+
136 }
+
137 return Any(static_cast<double>(~static_cast<int64_t>(rv)));
+
138 case logical_not:
+
139 return Any(static_cast<double>(!static_cast<bool>(rv)));
+
140 }
+
141 }
+
142 else if(rhs_v.isString())
+
143 {
+
144 throw RuntimeError("Invalid operator for std::string");
+
145 }
+
146 throw RuntimeError("ExprUnaryArithmetic: undefined");
+
147 }
+
148};
+
149
+ +
151{
+
152 enum op_t
+
153 {
+
154 plus,
+
155 minus,
+
156 times,
+
157 div,
+
158 concat,
+
159
+
160 bit_and,
+
161 bit_or,
+
162 bit_xor,
+
163
+
164 logic_and,
+
165 logic_or
+
166 } op;
+
167
+
168 const char* opStr() const
+
169 {
+
170 switch(op)
+
171 {
+
172 case plus:
+
173 return "+";
+
174 case minus:
+
175 return "-";
+
176 case times:
+
177 return "*";
+
178 case div:
+
179 return "/";
+
180 case concat:
+
181 return "..";
+
182 case bit_and:
+
183 return "&";
+
184 case bit_or:
+
185 return "|";
+
186 case bit_xor:
+
187 return "^";
+
188 case logic_and:
+
189 return "&&";
+
190 case logic_or:
+
191 return "||";
+
192 }
+
193 return "";
+
194 }
+
195
+
196 expr_ptr lhs, rhs;
+
197
+
198 explicit ExprBinaryArithmetic(expr_ptr lhs, op_t op, expr_ptr rhs)
+
199 : op(op), lhs(LEXY_MOV(lhs)), rhs(LEXY_MOV(rhs))
+
200 {}
+
201
+
202 Any evaluate(Environment& env) const override
+
203 {
+
204 auto lhs_v = lhs->evaluate(env);
+
205 auto rhs_v = rhs->evaluate(env);
+
206
+
207 if(lhs_v.empty())
+
208 {
+
209 throw RuntimeError(ErrorNotInit("left", opStr()));
+
210 }
+
211 if(rhs_v.empty())
+
212 {
+
213 throw RuntimeError(ErrorNotInit("right", opStr()));
+
214 }
+
215
+
216 if(rhs_v.isNumber() && lhs_v.isNumber())
+
217 {
+
218 auto lv = lhs_v.cast<double>();
+
219 auto rv = rhs_v.cast<double>();
+
220
+
221 switch(op)
+
222 {
+
223 case plus:
+
224 return Any(lv + rv);
+
225 case minus:
+
226 return Any(lv - rv);
+
227 case times:
+
228 return Any(lv * rv);
+
229 case div:
+
230 return Any(lv / rv);
+
231 default: {
+
232 }
+
233 }
+
234
+
235 if(op == bit_and || op == bit_or || op == bit_xor)
+
236 {
+
237 try
+
238 {
+
239 int64_t li = lhs_v.cast<int64_t>();
+
240 int64_t ri = rhs_v.cast<int64_t>();
+
241 switch(op)
+
242 {
+
243 case bit_and:
+
244 return Any(static_cast<double>(li & ri));
+
245 case bit_or:
+
246 return Any(static_cast<double>(li | ri));
+
247 case bit_xor:
+
248 return Any(static_cast<double>(li ^ ri));
+
249 default: {
+
250 }
+
251 }
+
252 }
+
253 catch(...)
+
254 {
+
255 throw RuntimeError("Binary operators are not allowed if "
+
256 "one of the operands is not an integer");
+
257 }
+
258 }
+
259
+
260 if(op == logic_or || op == logic_and)
+
261 {
+
262 try
+
263 {
+
264 auto lb = lhs_v.cast<bool>();
+
265 auto rb = rhs_v.cast<bool>();
+
266 switch(op)
+
267 {
+
268 case logic_or:
+
269 return Any(static_cast<double>(lb || rb));
+
270 case logic_and:
+
271 return Any(static_cast<double>(lb && rb));
+
272 default: {
+
273 }
+
274 }
+
275 }
+
276 catch(...)
+
277 {
+
278 throw RuntimeError("Logic operators are not allowed if "
+
279 "one of the operands is not castable to bool");
+
280 }
+
281 }
+
282 }
+
283 else if(rhs_v.isString() && lhs_v.isString() && op == plus)
+
284 {
+
285 return Any(lhs_v.cast<std::string>() + rhs_v.cast<std::string>());
+
286 }
+
287 else if(op == concat && ((rhs_v.isString() && lhs_v.isString()) ||
+
288 (rhs_v.isString() && lhs_v.isNumber()) ||
+
289 (rhs_v.isNumber() && lhs_v.isString())))
+
290 {
+
291 return Any(lhs_v.cast<std::string>() + rhs_v.cast<std::string>());
+
292 }
+
293 else
+
294 {
+
295 throw RuntimeError("Operation not permitted");
+
296 }
+
297
+
298 return {}; // unreachable
+
299 }
+
300};
+
301
+
302template <typename T>
+
303bool IsSame(const T& lv, const T& rv)
+
304{
+
305 if constexpr(std::is_same_v<double, T>)
+
306 {
+
307 constexpr double EPS = static_cast<double>(std::numeric_limits<float>::epsilon());
+
308 return std::abs(lv - rv) <= EPS;
+
309 }
+
310 else
+
311 {
+
312 return (lv == rv);
+
313 }
+
314}
+
315
+ +
317{
+
318 enum op_t
+
319 {
+
320 equal,
+
321 not_equal,
+
322 less,
+
323 greater,
+
324 less_equal,
+
325 greater_equal
+
326 };
+
327
+
328 const char* opStr(op_t op) const
+
329 {
+
330 switch(op)
+
331 {
+
332 case equal:
+
333 return "==";
+
334 case not_equal:
+
335 return "!=";
+
336 case less:
+
337 return "<";
+
338 case greater:
+
339 return ">";
+
340 case less_equal:
+
341 return "<=";
+
342 case greater_equal:
+
343 return ">=";
+
344 }
+
345 return "";
+
346 }
+
347
+
348 std::vector<op_t> ops;
+
349 std::vector<expr_ptr> operands;
+
350
+
351 Any evaluate(Environment& env) const override
+
352 {
+
353 auto SwitchImpl = [&](const auto& lv, const auto& rv, op_t op) {
+
354 switch(op)
+
355 {
+
356 case equal:
+
357 if(!IsSame(lv, rv))
+
358 return false;
+
359 break;
+
360 case not_equal:
+
361 if(IsSame(lv, rv))
+
362 return false;
+
363 break;
+
364 case less:
+
365 if(lv >= rv)
+
366 return false;
+
367 break;
+
368 case greater:
+
369 if(lv <= rv)
+
370 return false;
+
371 break;
+
372 case less_equal:
+
373 if(lv > rv)
+
374 return false;
+
375 break;
+
376 case greater_equal:
+
377 if(lv < rv)
+
378 return false;
+
379 break;
+
380 }
+
381 return true;
+
382 };
+
383
+
384 auto lhs_v = operands[0]->evaluate(env);
+
385 for(auto i = 0u; i != ops.size(); ++i)
+
386 {
+
387 auto rhs_v = operands[i + 1]->evaluate(env);
+
388
+
389 if(lhs_v.empty())
+
390 {
+
391 throw RuntimeError(ErrorNotInit("left", opStr(ops[i])));
+
392 }
+
393 if(rhs_v.empty())
+
394 {
+
395 throw RuntimeError(ErrorNotInit("right", opStr(ops[i])));
+
396 }
+
397 const Any False(0.0);
+
398
+
399 if(lhs_v.isNumber() && rhs_v.isNumber())
+
400 {
+
401 auto lv = lhs_v.cast<double>();
+
402 auto rv = rhs_v.cast<double>();
+
403 if(!SwitchImpl(lv, rv, ops[i]))
+
404 {
+
405 return False;
+
406 }
+
407 }
+
408 else if(lhs_v.isString() && rhs_v.isString())
+
409 {
+
410 auto lv = lhs_v.cast<SimpleString>();
+
411 auto rv = rhs_v.cast<SimpleString>();
+
412 if(!SwitchImpl(lv, rv, ops[i]))
+
413 {
+
414 return False;
+
415 }
+
416 }
+
417 else if(lhs_v.isString() && rhs_v.isNumber())
+
418 {
+
419 auto lv = StringToDouble(lhs_v, env);
+
420 auto rv = rhs_v.cast<double>();
+
421 if(!SwitchImpl(lv, rv, ops[i]))
+
422 {
+
423 return False;
+
424 }
+
425 }
+
426 else if(lhs_v.isNumber() && rhs_v.isString())
+
427 {
+
428 auto lv = lhs_v.cast<double>();
+
429 auto rv = StringToDouble(rhs_v, env);
+
430 if(!SwitchImpl(lv, rv, ops[i]))
+
431 {
+
432 return False;
+
433 }
+
434 }
+
435 else
+
436 {
+
437 throw RuntimeError(StrCat("Can't mix different types in Comparison. "
+
438 "Left operand [",
+
439 BT::demangle(lhs_v.type()), "] right operand [",
+
440 BT::demangle(rhs_v.type()), "]"));
+
441 }
+
442 lhs_v = rhs_v;
+
443 }
+
444 return Any(1.0);
+
445 }
+
446};
+
447
+
448struct ExprIf : ExprBase
+
449{
+
450 expr_ptr condition, then, else_;
+
451
+
452 explicit ExprIf(expr_ptr condition, expr_ptr then, expr_ptr else_)
+
453 : condition(LEXY_MOV(condition)), then(LEXY_MOV(then)), else_(LEXY_MOV(else_))
+
454 {}
+
455
+
456 Any evaluate(Environment& env) const override
+
457 {
+
458 const auto& v = condition->evaluate(env);
+
459 bool valid = (v.isType<SimpleString>() && v.cast<SimpleString>().size() > 0) ||
+
460 (v.cast<double>() != 0.0);
+
461 if(valid)
+
462 {
+
463 return then->evaluate(env);
+
464 }
+
465 else
+
466 {
+
467 return else_->evaluate(env);
+
468 }
+
469 }
+
470};
+
471
+ +
473{
+
474 enum op_t
+
475 {
+
476 assign_create,
+
477 assign_existing,
+
478 assign_plus,
+
479 assign_minus,
+
480 assign_times,
+
481 assign_div
+
482 } op;
+
483
+
484 const char* opStr() const
+
485 {
+
486 switch(op)
+
487 {
+
488 case assign_create:
+
489 return ":=";
+
490 case assign_existing:
+
491 return "=";
+
492 case assign_plus:
+
493 return "+=";
+
494 case assign_minus:
+
495 return "-=";
+
496 case assign_times:
+
497 return "*=";
+
498 case assign_div:
+
499 return "/=";
+
500 }
+
501 return "";
+
502 }
+
503
+
504 expr_ptr lhs, rhs;
+
505
+
506 explicit ExprAssignment(expr_ptr _lhs, op_t op, expr_ptr _rhs)
+
507 : op(op), lhs(LEXY_MOV(_lhs)), rhs(LEXY_MOV(_rhs))
+
508 {}
+
509
+
510 Any evaluate(Environment& env) const override
+
511 {
+
512 auto varname = dynamic_cast<ExprName*>(lhs.get());
+
513 if(!varname)
+
514 {
+
515 throw RuntimeError("Assignment left operand not a blackboard entry");
+
516 }
+
517 const auto& key = varname->name;
+
518
+
519 auto entry = env.vars->getEntry(key);
+
520 if(!entry)
+
521 {
+
522 // variable doesn't exist, create it if using operator assign_create
+
523 if(op == assign_create)
+
524 {
+
525 env.vars->createEntry(key, PortInfo());
+
526 entry = env.vars->getEntry(key);
+
527 if(!entry)
+
528 {
+
529 throw LogicError("Bug: report");
+
530 }
+
531 }
+
532 else
+
533 {
+
534 // fail otherwise
+
535 auto msg = StrCat("The blackboard entry [", key,
+
536 "] doesn't exist, yet.\n"
+
537 "If you want to create a new one, "
+
538 "use the operator "
+
539 "[:=] instead of [=]");
+
540 throw RuntimeError(msg);
+
541 }
+
542 }
+
543 auto value = rhs->evaluate(env);
+
544
+
545 std::scoped_lock lock(entry->entry_mutex);
+
546 auto* dst_ptr = &entry->value;
+
547
+
548 auto errorPrefix = [dst_ptr, &key]() {
+
549 return StrCat("Error assigning a value to entry [", key, "] with type [",
+
550 BT::demangle(dst_ptr->type()), "]. ");
+
551 };
+
552
+
553 if(value.empty())
+
554 {
+
555 throw RuntimeError(ErrorNotInit("right", opStr()));
+
556 }
+
557
+
558 if(op == assign_create || op == assign_existing)
+
559 {
+
560 // the very fist assignment can come from any type.
+
561 // In the future, type check will be done by Any::copyInto
+
562 if(dst_ptr->empty() && entry->info.type() == typeid(AnyTypeAllowed))
+
563 {
+
564 *dst_ptr = value;
+
565 }
+
566 else if(value.isString() && !dst_ptr->isString())
+
567 {
+
568 // special case: string to other type.
+
569 // Check if we can use the StringConverter
+
570 auto const str = value.cast<std::string>();
+
571 const auto* entry_info = env.vars->entryInfo(key);
+
572
+
573 if(auto converter = entry_info->converter())
+
574 {
+
575 *dst_ptr = converter(str);
+
576 }
+
577 else if(dst_ptr->isNumber())
+
578 {
+
579 auto num_value = StringToDouble(value, env);
+
580 *dst_ptr = Any(num_value);
+
581 }
+
582 else
+
583 {
+
584 auto msg = StrCat(errorPrefix(),
+
585 "\nThe right operand is a string, "
+
586 "can't convert to ",
+
587 demangle(dst_ptr->type()));
+
588 throw RuntimeError(msg);
+
589 }
+
590 }
+
591 else
+
592 {
+
593 try
+
594 {
+
595 value.copyInto(*dst_ptr);
+
596 }
+
597 catch(std::exception&)
+
598 {
+
599 auto msg = StrCat(errorPrefix(), "\nThe right operand has type [",
+
600 BT::demangle(value.type()), "] and can't be converted to [",
+
601 BT::demangle(dst_ptr->type()), "]");
+
602 throw RuntimeError(msg);
+
603 }
+
604 }
+
605 entry->sequence_id++;
+
606 entry->stamp = std::chrono::steady_clock::now().time_since_epoch();
+
607 return *dst_ptr;
+
608 }
+
609
+
610 if(dst_ptr->empty())
+
611 {
+
612 throw RuntimeError(ErrorNotInit("left", opStr()));
+
613 }
+
614
+
615 // temporary use
+
616 Any temp_variable = *dst_ptr;
+
617
+
618 if(value.isNumber())
+
619 {
+
620 if(!temp_variable.isNumber())
+
621 {
+
622 throw RuntimeError("This Assignment operator can't be used "
+
623 "with a non-numeric type");
+
624 }
+
625
+
626 auto lv = temp_variable.cast<double>();
+
627 auto rv = value.cast<double>();
+
628 switch(op)
+
629 {
+
630 case assign_plus:
+
631 temp_variable = Any(lv + rv);
+
632 break;
+
633 case assign_minus:
+
634 temp_variable = Any(lv - rv);
+
635 break;
+
636 case assign_times:
+
637 temp_variable = Any(lv * rv);
+
638 break;
+
639 case assign_div:
+
640 temp_variable = Any(lv / rv);
+
641 break;
+
642 default: {
+
643 }
+
644 }
+
645 }
+
646 else if(value.isString())
+
647 {
+
648 if(op == assign_plus)
+
649 {
+
650 auto lv = temp_variable.cast<std::string>();
+
651 auto rv = value.cast<std::string>();
+
652 temp_variable = Any(lv + rv);
+
653 }
+
654 else
+
655 {
+
656 throw RuntimeError("Operator not supported for strings");
+
657 }
+
658 }
+
659
+
660 temp_variable.copyInto(*dst_ptr);
+
661 entry->sequence_id++;
+
662 entry->stamp = std::chrono::steady_clock::now().time_since_epoch();
+
663 return *dst_ptr;
+
664 }
+
665};
+
666} // namespace BT::Ast
+
667
+
668namespace BT::Grammar
+
669{
+
670namespace dsl = lexy::dsl;
+
671
+
672constexpr auto escaped_newline = dsl::backslash >> dsl::newline;
+
673
+
674// An expression that is nested inside another expression.
+ +
676{
+
677 // We change the whitespace rule to allow newlines:
+
678 // as it's nested, the REPL can properly handle continuation lines.
+
679 static constexpr auto whitespace = dsl::ascii::space | escaped_newline;
+
680 // The rule itself just recurses back to expression, but with the adjusted whitespace now.
+
681 static constexpr auto rule = dsl::recurse<struct Expression>;
+
682
+
683 static constexpr auto value = lexy::forward<Ast::expr_ptr>;
+
684};
+
685
+
686// An arbitrary expression.
+
687// It uses lexy's built-in support for operator precedence parsing to automatically generate a
+
688// proper rule. This is done by inheriting from expression_production.
+ +
690{
+
691 struct expected_operand
+
692 {
+
693 static constexpr auto name = "expected operand";
+
694 };
+
695
+
696 // We need to specify the atomic part of an expression.
+
697 static constexpr auto atom = [] {
+ +
699 auto boolean = dsl::p<BooleanLiteral>;
+
700 auto var = dsl::p<Name>;
+
701 auto literal = dsl::p<AnyValue>;
+
702
+ +
704 }();
+
705
+
706 // Each of the nested classes defines one operation.
+
707 // They inherit from a tag type that specify the kind of operation (prefix, infix, postfix),
+
708 // and associativity (left, right, single (non-associative)),
+
709 // and specify the operator rule and operand.
+
710
+
711 // -x
+
712 struct math_prefix : dsl::prefix_op
+
713 {
+
714 static constexpr auto op = dsl::op<Ast::ExprUnaryArithmetic::negate>(LEXY_LIT("-"));
+
715 using operand = dsl::atom;
+
716 };
+
717 // x * x, x / x
+ +
719 {
+
720 static constexpr auto op = [] {
+
721 // Don't confuse with *= or /=
+
722 auto times = dsl::not_followed_by(LEXY_LIT("*"), dsl::lit_c<'='>);
+
723 auto div = dsl::not_followed_by(LEXY_LIT("/"), dsl::lit_c<'='>);
+ + +
726 }();
+
727 using operand = math_prefix;
+
728 };
+
729 // x + x, x - x
+
730 struct math_sum : dsl::infix_op_left
+
731 {
+
732 static constexpr auto op = [] {
+
733 // Don't confuse with += or -=
+
734 auto plus = dsl::not_followed_by(LEXY_LIT("+"), dsl::lit_c<'='>);
+
735 auto minus = dsl::not_followed_by(LEXY_LIT("-"), dsl::lit_c<'='>);
+
736 return dsl::op<Ast::ExprBinaryArithmetic::plus>(plus) /
+ +
738 }();
+
739
+
740 using operand = math_product;
+
741 };
+
742
+
743 // x .. y
+ +
745 {
+
746 static constexpr auto op = [] {
+
747 return dsl::op<Ast::ExprBinaryArithmetic::concat>(LEXY_LIT(".."));
+
748 }();
+
749
+
750 using operand = math_sum;
+
751 };
+
752
+
753 // ~x
+
754 struct bit_prefix : dsl::prefix_op
+
755 {
+
756 static constexpr auto op = [] {
+
757 auto complement = LEXY_LIT("~");
+
758 auto logical_not = dsl::not_followed_by(LEXY_LIT("!"), dsl::lit_c<'='>);
+
759
+ + +
762 }();
+
763 using operand = dsl::atom;
+
764 };
+
765
+
766 // x & x
+
767 struct bit_and : dsl::infix_op_left
+
768 {
+
769 static constexpr auto op = [] {
+
770 // Don't confuse with &&
+
771 auto bit_and = dsl::not_followed_by(LEXY_LIT("&"), dsl::lit_c<'&'>);
+ +
773 }();
+
774
+
775 using operand = bit_prefix;
+
776 };
+
777
+
778 // x | x, x ^ x
+
779 struct bit_or : dsl::infix_op_left
+
780 {
+
781 static constexpr auto op = [] {
+
782 // Don't confuse with ||
+
783 auto bit_or = dsl::not_followed_by(LEXY_LIT("|"), dsl::lit_c<'|'>);
+ + +
786 }();
+
787
+
788 using operand = bit_and;
+
789 };
+
790
+
791 // Comparisons are list operators, which allows implementation of chaining.
+
792 // x == y < z
+ +
794 {
+
795 // Other comparison operators omitted for simplicity.
+
796 static constexpr auto op = dsl::op<Ast::ExprComparison::equal>(LEXY_LIT("==")) /
+ + + + + +
802 "="));
+
803
+
804 // The use of dsl::groups ensures that an expression can either contain math or bit or string
+
805 // operators. Mixing requires parenthesis.
+ +
807 };
+
808
+
809 // Logical operators, || and &&
+
810 struct logical : dsl::infix_op_left
+
811 {
+
812 static constexpr auto op =
+ + +
815
+
816 using operand = comparison;
+
817 };
+
818
+
819 // x ? y : z
+ +
821 {
+
822 // We treat a conditional operator, which has three operands,
+
823 // as a binary operator where the operator consists of ?, the inner operator, and :.
+
824 // The <void> ensures that `dsl::op` does not produce a value.
+
825 static constexpr auto op =
+
826 dsl::op<void>(LEXY_LIT("?") >> (dsl::p<nested_expr> + dsl::lit_c<':'>));
+
827 using operand = logical;
+
828 };
+
829
+ +
831 {
+
832 // We need to prevent `=` from matching `==`.
+
833 static constexpr auto op =
+ + +
836 dsl::not_followed_by(LEXY_LIT("="), dsl::lit_c<'='>)) /
+ + + + +
841
+
842 using operand = conditional;
+
843 };
+
844
+
845 // An expression also needs to specify the operation with the lowest binding power.
+
846 // The operation of everything else is determined by following the `::operand` member.
+
847 using operation = assignment;
+
848
+
849 static constexpr auto value =
+
850 // We need a sink as the comparison expression generates a list.
+ +
852 [] { return std::make_unique<Ast::ExprComparison>(); },
+
853 [](auto& node, Ast::expr_ptr opr) { node->operands.push_back(LEXY_MOV(opr)); },
+
854 [](auto& node, Ast::ExprComparison::op_t op) { node->ops.push_back(op); })
+
855 // The result of the list feeds into a callback that handles all other cases.
+
856 >> lexy::callback(
+
857 // atoms
+ + +
860 // unary/binary operators
+ + +
863 // conditional and assignment
+ + +
866};
+
867
+
868// A statement, which is a list of expressions separated by semicolons.
+
869struct stmt
+
870{
+
871 // We don't allow newlines as whitespace at the top-level.
+
872 // This is because we can't easily know whether we need to request more input when seeing a
+
873 // newline or not. Once we're having a e.g. parenthesized expression, we know that we need more
+
874 // input until we've reached ), so then change the whitespace rule.
+
875 static constexpr auto whitespace = dsl::ascii::blank | escaped_newline | dsl::newline;
+
876
+
877 static constexpr auto rule = [] {
+
878 // We can't use `dsl::eol` as our terminator directly,
+
879 // since that would try and skip whitespace, which requests more input on the REPL.
+
880 auto at_eol = dsl::peek(dsl::eol);
+ +
882 }();
+
883
+
884 static constexpr auto value = lexy::as_list<std::vector<Ast::expr_ptr>>;
+
885};
+
886
+
887} // namespace BT::Grammar
+
Definition: safe_any.hpp:37
+
Definition: exceptions.h:59
+
Definition: simple_string.hpp:19
+
Definition: action_node.h:25
+
The Environment class is used to encapsulate the information and states needed by the scripting langu...
Definition: script_parser.hpp:32
+
Definition: operators.hpp:473
+
Definition: operators.hpp:54
+
Definition: operators.hpp:151
+
Definition: operators.hpp:317
+
Definition: operators.hpp:449
+
Definition: operators.hpp:68
+
Definition: operators.hpp:81
+
Definition: operators.hpp:109
+
Definition: operators.hpp:831
+
Definition: operators.hpp:768
+
Definition: operators.hpp:780
+
Definition: operators.hpp:755
+
Definition: operators.hpp:794
+
Definition: operators.hpp:821
+
Definition: operators.hpp:692
+
Definition: operators.hpp:811
+
Definition: operators.hpp:713
+
Definition: operators.hpp:719
+
Definition: operators.hpp:731
+
Definition: operators.hpp:745
+
Definition: operators.hpp:690
+
Definition: operators.hpp:676
+
Definition: operators.hpp:870
+
+
+ + + + diff --git a/dd/dce/class_b_t_1_1_action_node_base__coll__graph.map b/dd/dce/class_b_t_1_1_action_node_base__coll__graph.map new file mode 100644 index 000000000..158e294f3 --- /dev/null +++ b/dd/dce/class_b_t_1_1_action_node_base__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/dd/dce/class_b_t_1_1_action_node_base__coll__graph.md5 b/dd/dce/class_b_t_1_1_action_node_base__coll__graph.md5 new file mode 100644 index 000000000..ffae026bc --- /dev/null +++ b/dd/dce/class_b_t_1_1_action_node_base__coll__graph.md5 @@ -0,0 +1 @@ +04a728e178ce3fb18e6ea239f532c2bc \ No newline at end of file diff --git a/dd/dce/class_b_t_1_1_action_node_base__coll__graph.png b/dd/dce/class_b_t_1_1_action_node_base__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..26cf4e2151de143d810d12f69ac666e518c86774 GIT binary patch literal 6056 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 AS^xk5 literal 0 HcmV?d00001 diff --git a/dd/dce/class_b_t_1_1_always_success_node.html b/dd/dce/class_b_t_1_1_always_success_node.html new file mode 100644 index 000000000..fef13476c --- /dev/null +++ b/dd/dce/class_b_t_1_1_always_success_node.html @@ -0,0 +1,333 @@ + + + + + + + +BehaviorTree: BT::AlwaysSuccessNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::AlwaysSuccessNode Class Reference
+
+
+ +

#include <always_success_node.h>

+
+Inheritance diagram for BT::AlwaysSuccessNode:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::AlwaysSuccessNode:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AlwaysSuccessNode (const std::string &name)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

Simple actions that always returns SUCCESS.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.map b/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.map new file mode 100644 index 000000000..0c521e2a8 --- /dev/null +++ b/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.map @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.md5 b/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.md5 new file mode 100644 index 000000000..120c0e6d9 --- /dev/null +++ b/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.md5 @@ -0,0 +1 @@ +593a964d65b8adc2eeca89ecc12f44bd \ No newline at end of file diff --git a/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.png b/dd/dce/class_b_t_1_1_leaf_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5922cb4726c48906e3cf3fad3caf0cd6f1428f57 GIT binary patch literal 71758 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 V3`_hoe^T)ITiZY@Q}aOJ{{VjELh%3q literal 0 HcmV?d00001 diff --git a/dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html b/dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html new file mode 100644 index 000000000..4a5160f13 --- /dev/null +++ b/dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html @@ -0,0 +1,186 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprLiteral Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.map b/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.map new file mode 100644 index 000000000..bba55f128 --- /dev/null +++ b/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.md5 b/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.md5 new file mode 100644 index 000000000..94e3cc4b6 --- /dev/null +++ b/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.md5 @@ -0,0 +1 @@ +3ceddd93bcf5dde8929b137e4c75aff3 \ No newline at end of file diff --git a/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.png b/dd/dd3/class_b_t_1_1_parallel_all_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..790dfdce9c64b198abc60b0f44128db7cebf6b20 GIT binary patch literal 5843 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 + + + + + + +BehaviorTree: BT::RetryNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +

The RetryNode is used to execute a child several times if it fails. + More...

+ +

#include <retry_node.h>

+
+Inheritance diagram for BT::RetryNode:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::RetryNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RetryNode (const std::string &name, int NTries)
 
RetryNode (const std::string &name, const NodeConfig &config)
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The RetryNode is used to execute a child several times if it fails.

+

If the child returns SUCCESS, the loop is stopped and this node returns SUCCESS.

+

If the child returns FAILURE, this node will try again up to N times (N is read from port "num_attempts").

+

Example:

+

<RetryUntilSuccessful num_attempts="3"> <OpenDoor> </RetryUntilSuccessful>

+

Note: RetryNodeTypo is only included to support the deprecated typo "RetryUntilSuccesful" (note the single 's' in Succesful)

+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::RetryNode::halt ()
+
+overridevirtual
+
+ +

The method used to interrupt the execution of this node.

+ +

Reimplemented from BT::DecoratorNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/dd/de4/class_b_t_1_1_retry_node.js b/dd/de4/class_b_t_1_1_retry_node.js new file mode 100644 index 000000000..2cd1cb9cb --- /dev/null +++ b/dd/de4/class_b_t_1_1_retry_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_retry_node = +[ + [ "halt", "dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678", null ] +]; \ No newline at end of file diff --git a/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.map b/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.map new file mode 100644 index 000000000..065d43a68 --- /dev/null +++ b/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.md5 b/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.md5 new file mode 100644 index 000000000..2f0433473 --- /dev/null +++ b/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.md5 @@ -0,0 +1 @@ +478012050e5e6d04008a1b54cdee898b \ No newline at end of file diff --git a/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.png b/dd/df1/class_b_t_1_1_runtime_error__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..f80163a988f3d06a01e5568aa4bc9fac17181c9d GIT binary patch literal 7003 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 MMj2CZ&nV#E0JcR_TL1t6 literal 0 HcmV?d00001 diff --git a/de/d01/class_b_t_1_1_sqlite_logger-members.html b/de/d01/class_b_t_1_1_sqlite_logger-members.html new file mode 100644 index 000000000..c66f80439 --- /dev/null +++ b/de/d01/class_b_t_1_1_sqlite_logger-members.html @@ -0,0 +1,126 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SqliteLogger Member List
+
+
+ +

This is the complete list of members for BT::SqliteLogger, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
callback(Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override (defined in BT::SqliteLogger)BT::SqliteLoggervirtual
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
execSqlStatement(std::string statement) (defined in BT::SqliteLogger)BT::SqliteLogger
ExtraCallback typedef (defined in BT::SqliteLogger)BT::SqliteLogger
flush() override (defined in BT::SqliteLogger)BT::SqliteLoggervirtual
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setAdditionalCallback(ExtraCallback func) (defined in BT::SqliteLogger)BT::SqliteLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
SqliteLogger(const Tree &tree, std::filesystem::path const &file, bool append=false)BT::SqliteLogger
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
~SqliteLogger() override (defined in BT::SqliteLogger)BT::SqliteLoggervirtual
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
+
+ + + + diff --git a/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.map b/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.map new file mode 100644 index 000000000..a17c1735a --- /dev/null +++ b/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.md5 b/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.md5 new file mode 100644 index 000000000..27ca42419 --- /dev/null +++ b/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.md5 @@ -0,0 +1 @@ +340cc0911016a41812657e3e2bc3b31e \ No newline at end of file diff --git a/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.png b/de/d15/struct_b_t_1_1_grammar_1_1__xid__start__character__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fffd158ee3f2bd65cfe0c508570eade5ab0cbf80 GIT binary patch literal 7231 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 + + + + + + +BehaviorTree: BT::KeepRunningUntilFailureNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::KeepRunningUntilFailureNode Class Reference
+
+
+ +

The KeepRunningUntilFailureNode returns always FAILURE or RUNNING. + More...

+ +

#include <keep_running_until_failure_node.h>

+
+Inheritance diagram for BT::KeepRunningUntilFailureNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::KeepRunningUntilFailureNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

KeepRunningUntilFailureNode (const std::string &name)
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The KeepRunningUntilFailureNode returns always FAILURE or RUNNING.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/d23/class_b_t_1_1_control_node__coll__graph.map b/de/d23/class_b_t_1_1_control_node__coll__graph.map new file mode 100644 index 000000000..7229f9340 --- /dev/null +++ b/de/d23/class_b_t_1_1_control_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/de/d23/class_b_t_1_1_control_node__coll__graph.md5 b/de/d23/class_b_t_1_1_control_node__coll__graph.md5 new file mode 100644 index 000000000..15cc4fb9f --- /dev/null +++ b/de/d23/class_b_t_1_1_control_node__coll__graph.md5 @@ -0,0 +1 @@ +73f1f2c717060d70ac9d064eca31529f \ No newline at end of file diff --git a/de/d23/class_b_t_1_1_control_node__coll__graph.png b/de/d23/class_b_t_1_1_control_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..928918a8620438c0790bd76397accd7a8c41a82a GIT binary patch literal 10413 zcmZvi1yohtxAqSr4T5wE2vXABC@C!+(%s#SAk9ILMnFJ9Qo38ZyIZ=u;aj}__kMNn zU<`Vnv-Vtb&OM*sdO|QIKEi*8D)v7F< zA8Y_KH?!ALNdgnkX6^Swo)@}9r{CE&{V;?P$pioMDU&t74sC61O(a&)wT=y6!4nm} zeIzzE)|Q_n7^AW$w+<~%(UmS+(7}{B^J3bnYQ5!yd>6T>b-s)6+vu2>RVcS8gOsFX zs}-jwFDki3YU>ybceLvm@(9qKx9WA%wRB;eS zdR?z4$n{x_R@F&e7(d)y2Y&g&GfDmC%}Xq-_N|eug*pN9K+7qPjQz#N6xAY47W-9E zdR&ybYFpE-;fzA<`uO(&@X_DD@8#W|^f8T9m@DPTr6T(&;w-`Lt*t5TS8>cFSkG0l zSkJNx-tMt=d6dueTURe^T8^%SX!kJD3pqk5z1jX$!yY(FF~ZX4tf9ny-X@^ z9IaB$k4l%ieIzWZqfR1QX0I!|gXTw{m~Y=mOra2YfpcsWJVvAbM3zLEoPsKaIPO3U zj@YkXndw+q6m-MMMS`}#7LwrLWZzyMmVBzR`bFw}rl9@tqn*k^FsYAv6sb^Ce_eYp z`mSyBeO23f*zCpDh=>q~1$4dKbjU(iSJ#>|g=7~5uQEM7{b4&dT`N9eukUPo>^xgK z!O707=IRx1OJ-Luo~olQ(}tv1av{V?*uRgV1KXx+FF?Hg?v!qAUYie_Za( ztkKBJ%TM_UI`1gQt>%SYpKk631_m0ZJ@g|g%oX2$Ew^22lKIa4GG(9>ggTMOk&2d< zmj8CIoN*2WG3{c1POU~ODNVqW*XLm+n3RT&ZuJYE4vmroZO3AxClVrJUPXgQ@C&H3 zY%=@Ggqp7L&DnMYvBpI~%5?bBXJxTgzx z=M$T5gBZR_6M^j>8ZzySAW)Gq<5*cc?JI_V{`^PmYIcH7+tO0AOyj{qz2nK>9;v=Q zA}$-^(~SYcgZWzHNd$O!gHrVxx8v6XDO?E4^R?$jN9#g zbpdfMMrPq|+HgFRuAGw-yMls()7G$mrR7viaBBm;Kq1 zdRN=epFeXuZDELKjTqOmv9Pd+N=P_f9qD)Rf}Dt_*JxYq2uDIg%T~&jd%Eb2bi5uj z{?Yll@$qU$f0{sw%|hKssi6ctu5{cQws5ST4iX;1OZWa4&6z2k$d-QD;fvx0~PY z^-5LBOM_6lkQWG}Ffw;6?z9Jg{-kvMqripl_4`Fidk{Kqrq7~w5##Ku@Sp25gIZ=T z5vMSZD_-S>>R!n6#CaHPNfy-XMdzF?1!-*7`ww=u>vLDWh1F5>CU=L$?i1T6LWFh;>Q-DP$!XE{Nf9UgqX6V^G|?MF9$gr-@fBxTDT zPY@j!k$*s@hNuumSz%zGzGIUAG8aaOofFOwcfLR{&&K!HO44QK8R2(QL$ujvy?EUs z1!z*+z6QtFuk~G{0wxx6Fwj!9uxUm@f|YwPv@$rxw|J&PHD2xx?=Zx=xGX5+P_y|# zjDMpcY|MGl^C`&?6j_vMlM}K^nlKRRX z4ZD*?>G+fXQa6O~Yal#6T11^iwzxUI+E~-K{%DEc1gq?`*IwD;uuTP%;tCgBPC9=ye ztf_T-4XRK5Zm$_0ce=1Mn5OC7k5>2_qb6Gg17TISh|i&B9FjAry19w0ZS$qFBH<1B5FsGNRiJDLO$h+ER+`ImbLq`x3CdL!o;e2?3K^mrm4}Sel?d;!3Z6dGLMTR zOuIHdC{W@NNsV*JxWaWHEloMZlS_G@wFjdTo;gHmnT_eV}4 zUuvo5piy5lqBM>P?KzxG@|puC!eZ$P@0#tf^ih78ey1rH?_@2XUd81@r^J-I5`Wy~ zIJjs&HI2%f9_=~oOmeefUGK0@xk{)XO}KyIXph`Uv|cL~6q%)|+oj(OIloXqB+s|K z^C()I+$}hi#u6TPNAq}5Bq$AC9RHDv5@;umsVPwLdukABJ;=3`La6W4JywdSknlmc zAefP`FxMZgrOW(fk~H4g++^Dr3z7of(_hjS7B9UNb7*_uFD=eeZ=|vgl_>fzJ$V_) z`DMZDT`1?6HnK9v5If(Gz zcXc~4@CaMdOy@Pr+f|X2(P~S#9R@KqN;qPpd1$urE zwj>)oI8=V#kh`2c58HghTPfjUD&M6nk?2Pzk3c>zf~g4`9Z~isnPO9)BN?I_F=@pm zAbLWs$8vyKN_;6mZWnx|$_@j}a0 z>&%{9@XN#dD_8+fFPJq2<+`;FH&a|*avZ;0KrShD$G^x}NLin>+-t81m?&&6QJ&#h zW<5%G*nL(~Iz%cJmrDDX7;BDIkqU1F6?7ToY!=!2-96<)wGFdTbXw zg(aovGbi&On>h{asL*Ndud)&Km@lT#l1p_(x7wIYzhu7n7Dz>>(j#E0s`uPZ$PRlN zh8V%7<2tFoa+u&o|>Gr zt`=ga&&Cw8f-U=2wIC0hPvaz^I1_Pxya#W59T|heruVFgIs}_8M7o>Z`pij2SXnga zd!`~1LF43&*@Q@dMte{!qGRu^>t4(pzGx~Xl57oj0**Z$?bz9GRga2M3(=-1V^__< z+PjY*5u?CO=F|5O*UD%_3Si&m>95sC^NDCzV+y-PXkpvQW~pcf@^p^bBPyiLtG_Ky z5;kXz4u{Pgj3&>;XtM;;!6tX47cJ@y=4x_Juw0F{h3EzwNY7?X41E_D*g}j-am-{p zp=_=!CoG~pDGp=)+z|)Z>KaDy6|= z)ISqhU(Y7@^O#5TWeJdk=QUGigz~m78}h*aHA~SqlnUf|(-AxJXN)EEMglWA4-2#E zQXtw4N?aWGsz~qWsKw^pQ9n>xZ+5_Fk|`(2D#17=b*X$*{(jq5QI?=YZLR1a(?2GV zYUew6JVsyjhv;TapqO#cP6_#@ft8;J%m-8LP<|OTI`;h~P$pDOr@gi9CVEeXBs*>% zTJLdi>V%s4@b$j}ex5uZ@mA^^d2UKaS647i_Q9DGG1~jJJ5{dd`?nWyzp5XO&*%L_ za`{Q3YMLr0=WyxOkJ3kXDKl!56nEsZ$0gFBS>!dV>3z{IbKNNXcX(g;v8!PS(dZc( zg)uc5Bqb$}oe+iHiolqZyKDUL{{J7dHsA)+1f;=y=G_CjnNYw;#2I&cFH83kpg z!JSP^OzeOEw&1(7mZBmiy1*F*n6=NHXjByOR#X4cjnhjVt3b)x*)bb-L5+uhyvN4H zWpz7RMxG;#6mPmak!3&J6#Jk^OVnRYg_0P6OY!((Pxt({g4;wFE zfw}Tr9d%t&xL~c{gzf(3{L~3wMRo32r^e17=dJ4SPf0BCNW%4sK`@7#PvqlZQOo@? zDE;ky>k{;Wq<6N`l7QU|qo=0_TF2CU$10n`>3pY1r*eF6B`7F3Ve?75-u2LAuF6^_ zg)?$U@V38n(TdY?&bqqR+f(HjsGL!tN`*y4X6jv;@EEo9F7{>`?oRsfBRdOraH%@_r?ZpQY8nW*#8#kcVBFT@)TY7ZCCv}KKz7R{GQ&U$ zCVIc~IJzCRA|x^EKSOvyOf#nI;lUdv^iVUles<IVe{Aa@=Uf^}&ItwbPI5^@Ivcy?D&dhKbG?jBofZ7$j zKT`rC(S6w;VY2hZdS{sbz$l@H7 z6d3O9uqnlHONok!m0C>DrTIR%mz9?juoyhQzrA!#?uTern6+A#G>U)xh=GKJ1avc8 zk@J^ZMXZ=%{yiWW|NQwg{7Z=%MBon^*L=&EybxMT$V&>dxhe)APpNr$lE7U-(mZx( zaT&F`6Il$IlVl!e;sFw}D2mnT2j!s%`F zC&?tSegVv2b#+y}+(b6X8c5~<(=_)WokkB3U-{o)%}){0Z@{9GS&rmd)Vn%bnfHCX zr=+G%AjmN?GQuDt3Qtcb{YEXH1KtQ?WNLcahQfqFOx*vs=iByZHp-IsCCR61n>SQc zIlWz1quJ8L{BFagzQxKecXVr3LRuu!|BtL!PDIoqF;q)W%KxMAnwj}4Q2KTU^E^$D z51y}pMh`+IP+YNhzgh_f)WTqQvZ%shA`INwC=gXoDc0nD!W^f`0iGfDyOpPZw zl{Xt`_M?^dn>pKN=hy_@rrqNDv-F2E>Mn;8oyIeeb`_JF=>ndrw>LKyQmri0%{KtXu``D=W!2JTsIO~8INkP{!(xT;yd9e#gpEz1$GgGtTHf4PG3 zO$xtz8T{E=lu)tj!Mw)EilasMS8`r%Zgr4l+Yk4*yYUR4b|gr>mGQ8#wNx&F$e#rG zfT?_N;!-Jh$@^}fBpVeIPYIG(jEIjhx$I= zE*TjcKa~Q+=V}EZEG*1zfCW_s#> zCgt{9!{mS|NlHl}gRWNCS5*wvHI_OIE-)m(!1!qH9{hrYcsH5dyse<5sTUvw0v-pW zq?=->J=oCfbOJT|cql9x6;;qmd$8l)Gz%&`EXenb9_sW$yKaqH(AG3c4dA5X>7NRY z|D>B@%BgA}2v**widl~Gy`unabpwQI{d`InY=*#7!=y@veFn5J&5s{HT3A|>Q&K!- z=ZJV5D8Et38h{R5s8t)I-yURtI>5zuqb7AcD$S(L;Xem}j9e=3mkEnEOiWRrt!YiT zUc14Y^s>#bYq6J-1a|=rteH+ zMhwP}$fm|WnnI#Xuk{&VEW%n^-?Ql1*<*{f>&pzgUVuA%YSw^O?#)()`}sk5T@PfY zinWti4B=G^aQwc1C+@PwTwg;2Tn0Rs0fw0?wV5o`0DM;aT&S7tjoRC4+oi$5R6Y1j*YP?Q1NkW_C-(w$oY#zugZn+Glo{??;HN|`+gIe|SHJ5fVz}%B8A0x@(%Fq8i?c>f<}{~r<->M>+8p~bJWwaqL_LbkMC_y(tu>tju@?|ZU=q2S>= zFGMb_hS2-eDf?fc4g8H6-vT#GGBJUqvwxfTvwvo+)c2D*-| zw;W**@N})b92hE3``;-@;5-(`k?VTX<>u&mV;)2s^qOT_1@W;=!)Hu1w(Og|(}(eb zVV^a4XB{#WQ6ry0nTo_Cg5}&k8Z8~^j^Hz)WXXXT@anS(MC#TeWhG3p?&Zgmr4rlY zC{=9JVtfWe%A`e!tCJ7<-eyP-KZi#{@-y~TOybCH z_{q8~z2I2!l{&m3n~Y@t3!&9ee6jo2revygNz~Lj#|>J%{nHF>$+k9<%+bz2d>D4Fcumz z#J(?o^l!lRiU<-2ikAoa90hQ8a4joGc4%@aqq zMNV#tIok;GU6h1WwKQZFR;y4!Q!CAd$EA%;1h6M>l8~aJ+1OWb<&DLxj-612y9tu> z7*PClbw%!*VcO|vZDHt0>YmSK|b0p!--+-AoGhD<&U$L5WxS*9XwPK3TVsWc~s|LE@g zv@=!Aa9~OgL9!iPN9;>KRa+X_*GH~~Yj>udwj_3~k`uvx2>$Q%Xpi3iD(h@HEJYXc zg?~Vd<)7NKZAo4g8pQYC^sn~^CyX>|O%QdsKv=3}20cT2{`S%#S#Pv{*f6QeYt$`` z_cC$z6RI#sEo6HotDn&6>w@lE#rC}Ya{W?%KbkTVaqE7mA;JcQrY6Z^jH-H+I=aJU zcAoM_W~>G|W`@+S`5B*oM+<_uQux@yg40KY-h_-r0B0wRuaGY>@%mStXK(mQ6601S7fVr=L(QfB4+FKkd`J6 zlP}7j1UjZhFE%~6x&%7k3awkKz0krxk<;HkiT-kiX~Fp+f@7F3V{C0p2d$R>b>jJ( zG~JJGFREY~P^I7L$MH28$ShpktbehMDUH6^N^&F}0?}>bpiqf&p+7n4u*;NiQ+p;` zWg7PQ;<;S?)-C6rsqj*qX7z$(m1S$G)m5BYDJS|4sF zkUU@KTls2rG`+ed(4e|lYlKtR`Qk=I43s_Um(fJ~xPHi>K{_5X&BF|V_5kw<iFCHgTaQ?{YIU9+0fC@pLHxMlbm?Bhl)x*NmF&D${OTxhw>^0>F_cL2arx! zCYWkNp;N4mf1s4$^3wF?h}41n?z1x&ktHFBg#Tt(0$Pg^p7jN8*BH@sgg4_3z+{#D zTz~#r%pv&y%ARZt@fLcq>H(Je3I?@PFpvY5b~>uEoO0=hq_Cym{8@|G+atsao{Fq@ zxJTr6y=dNeF!Flx7)!81D<16naN>|lysmOs?ice?`{^CnFowUo8t`ua-rslZTGcF) zs+B%Q2oO9V+XE(N@)_u^^F7DXyyN9oLVygIIRPw`+7R zzjZ^lWG5I6*gy1+!HjdPO<5M{pS5LJ{K_@7&&{StAan$x@bf4ej*&&danB!ZflGJ5 zi{~X7k=Y?Ap8I==o-IeOq%MUE5@31v)7dO$Xp&?e#4s*a%Gh>G5Tk;(y9+6XnN#SN}-K9)#-=H!G1X1~_8F&NPX~!;}y-Nn9 z5wh-o8PkO0iK+v+4>(kRl|rijD%o>cjR)m*e=0voIEJ%-f5wD}@4>0{skm5EISwV= zI4dEJ^4Yo_IU#`B=Q0*<8)RW;_0#F|M{|MwA#rI?$&fk#XatT;nyn*KaBmtTCY2O! z3`tY;g|$=z`I-&3PMHAQoOG@7=weX`JJ<$ctHiCqrqHAKS_8d*R?0_ zEApMUNg}7eT|G<|l5@&%VeS=f2HH>t{2zB_*Qu_Q?$jrx76QA>Q7L zTow+o0FT?LnetoP`ph_=zlvFJS7Q1D?Vh&74}i3(H0XOoTT0V^eGBp3vSq?rzG`SZ z|2iZ*UMJSIz~jI0o?s#;&zSYT+iCgnUbfiF{gd!ipzA!|%sJo}(43z?z1F}{ZXUD% zGx=XWhM2?1?DPFOGeI_$T6GjfwN=(k2U)D*hz-gfZ|RIxpMNxXWQOeI9cB9U7}cfO zyZypVd$F8M%x&lAxH;$!ycPMf8}9#YR%9(W82&iB=eRKf9e@C2Pa5oTuKr>2_lOdb3@t?{h?Jqcu$=WQXVW1_=HGTJ4i{u)ubu@+4Ic*CA zweZABwCi1*fn{T|kRXzXi?Q4W4F7vG<-x~mU3}WWRKUWu;DiMhAx^t)#$~ts4xFGv zhBZ%tu>AJzTYzF1IAFHlOl|gBS-HPl%9V(EMJ(VE3s4ajP+8uW3libD3{UfZR}`r! zpod;SURIco1$Djh>>t_aj;458y5~V{@bK`kRP~z7Qj>R2cefsp=7B*$yhUqtKEQwg zyd_u1U8J?gokZJXxkD=6K+#91rpo&G2&VEnucmn(w3@N25~g4*{#4xdrNTzj{C2H31xexoVt3+hp#}j$e<$( z2kH@wPPzeZrVEH7pl2DiYFcz3Z`4|Ru0C$;p91?hr zfKWdVWrKl%L4C!axZanLRq3MHrPBO()g?4tWliLLbG8!y$z}zpa)vRV^PLHL-KOtA z{X9VpkhJPGcKX@&NGsO!EzB=s0>A(S*8+?( za45JCyXzC<$ztt3X{JU|03Kkr=4;uMa%5IO82~Dl-&PZNL}epwM#AS}wA|u9ZN)kG zou_?gq5$j!3LvS#Ibt^Q888HH?Tgb>*u1lgKtM}?mjk3X16I_4$r>Pd^A3Fs5M!!! z+nN>lmNZmQDw_IB;4Y>bNKEhU?yd%GecGwhy&NW{dbQ3!DJut-l$1~;!5A|J5exYc z1G-vf+*dq%5Q;?&4jJIHKt4bKD!4iulP`!Jro$p8j%aQc0$R~HM%o-$Q(6J5S?|T^ z!Z-t}7Fvcm7*tpsn--A2<3cxDqASE{GvAG;>t!!{49ZwhS^4h=tL#1)LN1$#e;i1> zz0$FApM~A(HS5v$f#V8VPNoJ5T){*x@2o5;3LQ9a3;~_+dc40ho?ZX@_Xsd62T%cH z`6_P(AMYF`W&mSCLPpL%nUMtGqmL5F)S`|g8=FErLJt%R*tOE$dw4jwkxVfZuoT2; zCbB2bm+@>hC?Sy64uF)8fO6(_-uW|50G`hOPR|ILO1x_?%iEpp<(#x6lHhVb~b3X-g4BO3m`zq%+1u)sh)c;Wxc*Y}UZ duX61X27C6G+3CcwIPf1rB*o-Ji-q+*|1X<0h;9G? literal 0 HcmV?d00001 diff --git a/de/d25/struct_b_t_1_1_tree_1_1_subtree-members.html b/de/d25/struct_b_t_1_1_tree_1_1_subtree-members.html new file mode 100644 index 000000000..15397b188 --- /dev/null +++ b/de/d25/struct_b_t_1_1_tree_1_1_subtree-members.html @@ -0,0 +1,113 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Tree::Subtree Member List
+
+
+ +

This is the complete list of members for BT::Tree::Subtree, including all inherited members.

+ + + + + + +
blackboard (defined in BT::Tree::Subtree)BT::Tree::Subtree
instance_name (defined in BT::Tree::Subtree)BT::Tree::Subtree
nodes (defined in BT::Tree::Subtree)BT::Tree::Subtree
Ptr typedef (defined in BT::Tree::Subtree)BT::Tree::Subtree
tree_ID (defined in BT::Tree::Subtree)BT::Tree::Subtree
+
+ + + + diff --git a/de/d30/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum-members.html b/de/d30/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum-members.html new file mode 100644 index 000000000..62f66dbca --- /dev/null +++ b/de/d30/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::math_sum Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::math_sum, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::math_sum)BT::Grammar::Expression::math_sumstatic
operand typedef (defined in BT::Grammar::Expression::math_sum)BT::Grammar::Expression::math_sum
+
+ + + + diff --git a/de/d34/class_safe_any_1_1_simple_string.html b/de/d34/class_safe_any_1_1_simple_string.html new file mode 100644 index 000000000..8db0d3d4c --- /dev/null +++ b/de/d34/class_safe_any_1_1_simple_string.html @@ -0,0 +1,183 @@ + + + + + + + +BehaviorTree: SafeAny::SimpleString Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
SafeAny::SimpleString Class Reference
+
+
+
+Collaboration diagram for SafeAny::SimpleString:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SimpleString (const std::string &str)
 
SimpleString (const std::string_view &str)
 
SimpleString (const SimpleString &other)
 
+SimpleStringoperator= (const SimpleString &other)
 
SimpleString (SimpleString &&other)
 
+SimpleStringoperator= (SimpleString &&other)
 
SimpleString (const char *input_data)
 
SimpleString (const char *input_data, std::size_t size)
 
+std::string toStdString () const
 
+std::string_view toStdStringView () const
 
+const char * data () const
 
+std::size_t size () const
 
+bool operator== (const SimpleString &other) const
 
+bool operator!= (const SimpleString &other) const
 
+bool operator<= (const SimpleString &other) const
 
+bool operator>= (const SimpleString &other) const
 
+bool operator< (const SimpleString &other) const
 
+bool operator> (const SimpleString &other) const
 
+bool isSOO () const
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/d41/class_b_t_1_1_std_cout_logger-members.html b/de/d41/class_b_t_1_1_std_cout_logger-members.html new file mode 100644 index 000000000..27bf48dac --- /dev/null +++ b/de/d41/class_b_t_1_1_std_cout_logger-members.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::StdCoutLogger Member List
+
+
+ +

This is the complete list of members for BT::StdCoutLogger, including all inherited members.

+ + + + + + + + + + + + + + + +
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
flush() override (defined in BT::StdCoutLogger)BT::StdCoutLoggervirtual
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StdCoutLogger(const BT::Tree &tree) (defined in BT::StdCoutLogger)BT::StdCoutLogger
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
~StdCoutLogger() override (defined in BT::StdCoutLogger)BT::StdCoutLogger
+
+ + + + diff --git a/de/d43/class_b_t_1_1_shared_library-members.html b/de/d43/class_b_t_1_1_shared_library-members.html new file mode 100644 index 000000000..3c6d902f1 --- /dev/null +++ b/de/d43/class_b_t_1_1_shared_library-members.html @@ -0,0 +1,123 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::SharedLibrary Member List
+
+
+ +

This is the complete list of members for BT::SharedLibrary, including all inherited members.

+ + + + + + + + + + + + + + + + +
Flags enum nameBT::SharedLibrary
getOSName(const std::string &name)BT::SharedLibrarystatic
getPath() constBT::SharedLibrary
getSymbol(const std::string &name)BT::SharedLibrary
hasSymbol(const std::string &name)BT::SharedLibrary
isLoaded() constBT::SharedLibrary
load(const std::string &path, int flags=0)BT::SharedLibrary
prefix()BT::SharedLibrarystatic
SharedLibrary()BT::SharedLibrary
SharedLibrary(const std::string &path, int flags=0)BT::SharedLibrary
SHLIB_GLOBAL enum valueBT::SharedLibrary
SHLIB_LOCAL enum valueBT::SharedLibrary
suffix()BT::SharedLibrarystatic
unload()BT::SharedLibrary
~SharedLibrary()=defaultBT::SharedLibraryvirtual
+
+ + + + diff --git a/de/d4f/class_b_t_1_1_minitrace_logger.html b/de/d4f/class_b_t_1_1_minitrace_logger.html new file mode 100644 index 000000000..0e43c5724 --- /dev/null +++ b/de/d4f/class_b_t_1_1_minitrace_logger.html @@ -0,0 +1,256 @@ + + + + + + + +BehaviorTree: BT::MinitraceLogger Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::MinitraceLogger Class Reference
+
+
+
+Inheritance diagram for BT::MinitraceLogger:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::MinitraceLogger:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MinitraceLogger (const BT::Tree &tree, const char *filename_json)
 
virtual void callback (Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override
 
virtual void flush () override
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Member Function Documentation

+ +

◆ callback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BT::MinitraceLogger::callback (Duration timestamp,
const TreeNodenode,
NodeStatus prev_status,
NodeStatus status 
)
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::MinitraceLogger::flush ()
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/d69/class_b_t_1_1_retry_node__coll__graph.map b/de/d69/class_b_t_1_1_retry_node__coll__graph.map new file mode 100644 index 000000000..00da7f784 --- /dev/null +++ b/de/d69/class_b_t_1_1_retry_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/de/d69/class_b_t_1_1_retry_node__coll__graph.md5 b/de/d69/class_b_t_1_1_retry_node__coll__graph.md5 new file mode 100644 index 000000000..05dab1d00 --- /dev/null +++ b/de/d69/class_b_t_1_1_retry_node__coll__graph.md5 @@ -0,0 +1 @@ +71ce293977644c76da3a9b37b5add048 \ No newline at end of file diff --git a/de/d69/class_b_t_1_1_retry_node__coll__graph.png b/de/d69/class_b_t_1_1_retry_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..59f0fa3b9dadc2cd28ad07301a2f61263d310c98 GIT binary patch literal 7191 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 literal 0 HcmV?d00001 diff --git a/de/d69/class_b_t_1_1_sequence_with_memory.html b/de/d69/class_b_t_1_1_sequence_with_memory.html new file mode 100644 index 000000000..b054bd38c --- /dev/null +++ b/de/d69/class_b_t_1_1_sequence_with_memory.html @@ -0,0 +1,386 @@ + + + + + + + +BehaviorTree: BT::SequenceWithMemory Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SequenceWithMemory Class Reference
+
+
+ +

The SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING, previous children are not ticked again. + More...

+ +

#include <sequence_with_memory_node.h>

+
+Inheritance diagram for BT::SequenceWithMemory:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::SequenceWithMemory:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SequenceWithMemory (const std::string &name)
 
virtual void halt () override
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING, previous children are not ticked again.

+
    +
  • If all the children return SUCCESS, this node returns SUCCESS.
  • +
  • If a child returns RUNNING, this node returns RUNNING. Loop is NOT restarted, the same running child will be ticked again.
  • +
  • If a child returns FAILURE, stop the loop and return FAILURE. Loop is NOT restarted, the same running child will be ticked again.
  • +
+

Member Function Documentation

+ +

◆ halt()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::SequenceWithMemory::halt ()
+
+overridevirtual
+
+

The method used to interrupt the execution of a RUNNING node. Only Async nodes that may return RUNNING should implement it.

+ +

Reimplemented from BT::ControlNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/d69/class_b_t_1_1_sequence_with_memory.js b/de/d69/class_b_t_1_1_sequence_with_memory.js new file mode 100644 index 000000000..14cb641e8 --- /dev/null +++ b/de/d69/class_b_t_1_1_sequence_with_memory.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_sequence_with_memory = +[ + [ "halt", "de/d69/class_b_t_1_1_sequence_with_memory.html#a1337e21debce05cc2fc2fe4481663a22", null ] +]; \ No newline at end of file diff --git a/de/d72/class_b_t_1_1_reactive_fallback-members.html b/de/d72/class_b_t_1_1_reactive_fallback-members.html new file mode 100644 index 000000000..1e2151b09 --- /dev/null +++ b/de/d72/class_b_t_1_1_reactive_fallback-members.html @@ -0,0 +1,173 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ReactiveFallback Member List
+
+
+ +

This is the complete list of members for BT::ReactiveFallback, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
EnableException(bool enable)BT::ReactiveFallbackstatic
executeTick()BT::TreeNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
ReactiveFallback(const std::string &name) (defined in BT::ReactiveFallback)BT::ReactiveFallbackinline
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/de/d78/convert__impl_8hpp_source.html b/de/d78/convert__impl_8hpp_source.html new file mode 100644 index 000000000..54d7e68f1 --- /dev/null +++ b/de/d78/convert__impl_8hpp_source.html @@ -0,0 +1,310 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/convert_impl.hpp Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
convert_impl.hpp
+
+
+
1/* Copyright (C) 2022 Davide Faconti, Eurecat - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include <type_traits>
+
16#include <cmath>
+ +
18
+
19#undef max
+
20#undef min
+
21
+
22namespace SafeAny
+
23{
+
24
+
25namespace details
+
26{
+
27
+
28template <typename BoolCondition>
+
29using EnableIf = typename std::enable_if<BoolCondition::value, void>::type;
+
30
+
31template <typename T>
+
32constexpr bool is_integer()
+
33{
+
34 return std::is_same<T, bool>::value || std::is_same<T, char>::value ||
+
35 std::is_integral<T>::value;
+
36}
+
37
+
38template <typename T>
+
39constexpr bool is_convertible_type()
+
40{
+
41 return is_integer<T>() || std::is_floating_point<T>::value ||
+
42 std::is_same<T, std::string>::value || std::is_same<T, SimpleString>::value ||
+
43 std::is_enum<T>::value;
+
44}
+
45
+
46template <typename T>
+
47constexpr bool is_convertible_to_bool()
+
48{
+
49 return is_integer<T>() || std::is_floating_point<T>::value || std::is_enum<T>::value;
+
50}
+
51
+
52template <typename T>
+
53constexpr bool is_signed()
+
54{
+
55 return std::is_signed<T>::value;
+
56}
+
57
+
58template <typename T1, typename T2>
+
59constexpr bool is_same()
+
60{
+
61 return std::is_same<T1, T2>::value;
+
62}
+
63
+
64template <typename From, typename To>
+
65inline void checkUpperLimit(const From& from)
+
66{
+
67 if(from > static_cast<From>(std::numeric_limits<To>::max()))
+
68 {
+
69 throw std::runtime_error("Value outside the max numerical limit.");
+
70 }
+
71}
+
72
+
73template <typename From, typename To>
+
74inline void checkLowerLimit(const From& from)
+
75{
+
76 if constexpr(std::is_same<To, bool>::value)
+
77 {
+
78 if(from != 0 && from != 1)
+
79 {
+
80 throw std::runtime_error("Implicit casting to bool is not allowed");
+
81 }
+
82 }
+
83 else if(from < std::numeric_limits<To>::min())
+
84 {
+
85 throw std::runtime_error("Value outside the lovest numerical limit.");
+
86 }
+
87}
+
88
+
89template <typename From, typename To>
+
90inline void checkTruncation(const From& from)
+
91{
+
92 // Handle integer to floating point
+
93 if constexpr(std::is_integral_v<From> && std::is_floating_point_v<To>)
+
94 {
+
95 // Check if value can be represented exactly in the target type
+
96 constexpr uint64_t max_exact = (1LL << std::numeric_limits<double>::digits) - 1;
+
97 bool doesnt_fit = false;
+
98 if constexpr(!std::is_signed_v<From>)
+
99 {
+
100 doesnt_fit = static_cast<uint64_t>(from) > max_exact;
+
101 }
+
102 else
+
103 {
+
104 doesnt_fit = std::abs(static_cast<int64_t>(from)) > static_cast<int64_t>(max_exact);
+
105 }
+
106 if(doesnt_fit)
+
107 {
+
108 throw std::runtime_error("Loss of precision when converting a large integer number "
+
109 "to floating point:" +
+
110 std::to_string(from));
+
111 }
+
112 }
+
113 // Handle floating point to integer
+
114 else if constexpr(std::is_floating_point_v<From> && std::is_integral_v<To>)
+
115 {
+
116 if(from > static_cast<From>(std::numeric_limits<To>::max()) ||
+
117 from < static_cast<From>(std::numeric_limits<To>::lowest()) ||
+
118 from != std::nearbyint(from))
+
119 {
+
120 throw std::runtime_error("Invalid floating point to integer conversion");
+
121 }
+
122 }
+
123 // Handle other conversions
+
124 else
+
125 {
+
126 if(from > static_cast<From>(std::numeric_limits<To>::max()) ||
+
127 from < static_cast<From>(std::numeric_limits<To>::lowest()))
+
128 {
+
129 throw std::runtime_error("Value outside numeric limits");
+
130 }
+
131 To as_target = static_cast<To>(from);
+
132 From back_to_source = static_cast<From>(as_target);
+
133 if(from != back_to_source)
+
134 {
+
135 throw std::runtime_error("Value truncated in conversion");
+
136 }
+
137 }
+
138}
+
139
+
140//----------------------- Implementation ----------------------------------------------
+
141
+
142template <typename SRC, typename DST>
+
143void convertNumber(const SRC& source, DST& target)
+
144{
+
145 static_assert(is_convertible_type<SRC>() && is_convertible_type<DST>(), "Not "
+
146 "convertible");
+
147
+
148 constexpr bool both_integers = is_integer<SRC>() && is_integer<DST>();
+
149
+
150 if constexpr(is_signed<SRC>() && !is_signed<DST>())
+
151 {
+
152 if(source < 0)
+
153 {
+
154 throw std::runtime_error("Value is negative and can't be converted to unsigned");
+
155 }
+
156 }
+
157 // these conversions are always safe:
+
158 // - same type
+
159 // - float -> double
+
160 if constexpr(is_same<SRC, DST>() || (is_same<SRC, float>() && is_same<DST, double>()))
+
161 {
+
162 // No check needed
+
163 target = static_cast<DST>(source);
+
164 }
+
165 else if constexpr(both_integers)
+
166 {
+
167 if constexpr(sizeof(SRC) == sizeof(DST) && !is_signed<SRC>() && is_signed<DST>())
+
168 {
+
169 checkUpperLimit<SRC, DST>(source);
+
170 }
+
171 // casting to a smaller number need to be check
+
172 else if constexpr(sizeof(SRC) > sizeof(DST))
+
173 {
+
174 if constexpr(is_signed<SRC>())
+
175 {
+
176 checkLowerLimit<SRC, DST>(source);
+
177 }
+
178 checkUpperLimit<SRC, DST>(source);
+
179 }
+
180 target = static_cast<DST>(source);
+
181 }
+
182 // special case: bool accept truncation
+
183 else if constexpr(is_convertible_to_bool<SRC>() && is_same<DST, bool>())
+
184 {
+
185 target = static_cast<DST>(source);
+
186 }
+
187 // casting to/from floating points might cause truncation.
+
188 else if constexpr(std::is_floating_point<SRC>::value ||
+
189 std::is_floating_point<DST>::value)
+
190 {
+
191 bool both_float =
+
192 std::is_floating_point<SRC>::value && std::is_floating_point<DST>::value;
+
193 // to avoid being too pedantic, let's accept casting between double and float
+
194 if(!both_float)
+
195 {
+
196 checkTruncation<SRC, DST>(source);
+
197 }
+
198 target = static_cast<DST>(source);
+
199 }
+
200}
+
201
+
202} //end namespace details
+
203} //end namespace SafeAny
+
Definition: simple_string.hpp:19
+
+
+ + + + diff --git a/de/d79/groot2__protocol_8h_source.html b/de/d79/groot2__protocol_8h_source.html new file mode 100644 index 000000000..a2579207f --- /dev/null +++ b/de/d79/groot2__protocol_8h_source.html @@ -0,0 +1,379 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers/groot2_protocol.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
groot2_protocol.h
+
+
+
1#pragma once
+
2
+
3#include <cstdint>
+
4#include <array>
+
5#include <cstring>
+
6#include <stdexcept>
+
7#include <random>
+
8#include <memory>
+
9#include <condition_variable>
+
10#include <mutex>
+
11#include "behaviortree_cpp/basic_types.h"
+
12#include "behaviortree_cpp/contrib/json.hpp"
+
13
+
14namespace BT::Monitor
+
15{
+
16
+
17/*
+
18 * All the messages exchange with the BT executor are multipart ZMQ request-replies.
+
19 *
+
20 * The first part of the request and the reply have fixed size and are described below.
+
21 * The request and reply must have the same value of the fields:
+
22 *
+
23 * - request_id
+
24 * - request_type
+
25 * - protocol_id
+
26 */
+
27
+
28enum RequestType : uint8_t
+
29{
+
30 // Request the entire tree defintion as XML
+
31 FULLTREE = 'T',
+
32 // Request the staus of all the nodes
+
33 STATUS = 'S',
+
34 // retrieve the valus in a set of blackboards
+
35 BLACKBOARD = 'B',
+
36
+
37 // Groot requests the insertion of a hook
+
38 HOOK_INSERT = 'I',
+
39 // Groot requests to remove a hook
+
40 HOOK_REMOVE = 'R',
+
41 // Notify Groot that we reached a breakpoint
+
42 BREAKPOINT_REACHED = 'N',
+
43 // Groot will unlock a breakpoint
+
44 BREAKPOINT_UNLOCK = 'U',
+
45 // receive the existing hooks in JSON format
+
46 HOOKS_DUMP = 'D',
+
47
+
48 // Remove all hooks. To be done before disconnecting Groot
+
49 REMOVE_ALL_HOOKS = 'A',
+
50
+
51 DISABLE_ALL_HOOKS = 'X',
+
52
+
53 // start/stop recordong
+
54 TOGGLE_RECORDING = 'r',
+
55 // get all transitions when recording
+
56 GET_TRANSITIONS = 't',
+
57
+
58 UNDEFINED = 0,
+
59};
+
60
+
61inline const char* ToString(const RequestType& type)
+
62{
+
63 switch(type)
+
64 {
+
65 case RequestType::FULLTREE:
+
66 return "full_tree";
+
67 case RequestType::STATUS:
+
68 return "status";
+
69 case RequestType::BLACKBOARD:
+
70 return "blackboard";
+
71
+
72 case RequestType::HOOK_INSERT:
+
73 return "hook_insert";
+
74 case RequestType::HOOK_REMOVE:
+
75 return "hook_remove";
+
76 case RequestType::BREAKPOINT_REACHED:
+
77 return "breakpoint_reached";
+
78 case RequestType::BREAKPOINT_UNLOCK:
+
79 return "breakpoint_unlock";
+
80 case RequestType::REMOVE_ALL_HOOKS:
+
81 return "hooks_remove_all";
+
82 case RequestType::HOOKS_DUMP:
+
83 return "hooks_dump";
+
84 case RequestType::DISABLE_ALL_HOOKS:
+
85 return "disable_hooks";
+
86 case RequestType::TOGGLE_RECORDING:
+
87 return "toggle_recording";
+
88 case RequestType::GET_TRANSITIONS:
+
89 return "get_transitions";
+
90
+
91 case RequestType::UNDEFINED:
+
92 return "undefined";
+
93 }
+
94 return "undefined";
+
95}
+
96
+
97constexpr uint8_t kProtocolID = 2;
+
98using TreeUniqueUUID = std::array<char, 16>;
+
99
+
100struct RequestHeader
+
101{
+
102 uint32_t unique_id = 0;
+
103 uint8_t protocol = kProtocolID;
+
104 RequestType type = RequestType::UNDEFINED;
+
105
+
106 static size_t size()
+
107 {
+
108 return sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t);
+
109 }
+
110
+
111 RequestHeader() = default;
+
112
+
113 RequestHeader(RequestType type) : type(type)
+
114 {
+
115 // a random number for request_id will do
+
116 static std::random_device rd;
+
117 std::mt19937 mt(rd());
+
118 std::uniform_int_distribution<uint32_t> dist;
+
119 unique_id = dist(mt);
+
120 }
+
121
+
122 bool operator==(const RequestHeader& other) const
+
123 {
+
124 return type == other.type && unique_id == other.unique_id;
+
125 }
+
126 bool operator!=(const RequestHeader& other) const
+
127 {
+
128 return !(*this == other);
+
129 }
+
130};
+
131
+
132struct ReplyHeader
+
133{
+
134 RequestHeader request;
+
135 TreeUniqueUUID tree_id;
+
136
+
137 static size_t size()
+
138 {
+
139 return RequestHeader::size() + 16;
+
140 }
+
141
+
142 ReplyHeader()
+
143 {
+
144 tree_id.fill(0);
+
145 }
+
146};
+
147
+
148template <typename T>
+
149inline unsigned Serialize(char* buffer, unsigned offset, T value)
+
150{
+
151 memcpy(buffer + offset, &value, sizeof(T));
+
152 return sizeof(T);
+
153}
+
154
+
155template <typename T>
+
156inline unsigned Deserialize(const char* buffer, unsigned offset, T& value)
+
157{
+
158 memcpy(reinterpret_cast<char*>(&value), buffer + offset, sizeof(T));
+
159 return sizeof(T);
+
160}
+
161
+
162inline std::string SerializeHeader(const RequestHeader& header)
+
163{
+
164 std::string buffer;
+
165 buffer.resize(6);
+
166 unsigned offset = 0;
+
167 offset += Serialize(buffer.data(), offset, header.protocol);
+
168 offset += Serialize(buffer.data(), offset, uint8_t(header.type));
+
169 offset += Serialize(buffer.data(), offset, header.unique_id);
+
170 return buffer;
+
171}
+
172
+
173inline std::string SerializeHeader(const ReplyHeader& header)
+
174{
+
175 // copy the first part directly (6 bytes)
+
176 std::string buffer = SerializeHeader(header.request);
+
177 // add the following 16 bytes
+
178 unsigned const offset = 6;
+
179 buffer.resize(offset + 16);
+
180 Serialize(buffer.data(), offset, header.tree_id);
+
181 return buffer;
+
182}
+
183
+
184inline RequestHeader DeserializeRequestHeader(const std::string& buffer)
+
185{
+
186 RequestHeader header;
+
187 unsigned offset = 0;
+
188 offset += Deserialize(buffer.data(), offset, header.protocol);
+
189 uint8_t type;
+
190 offset += Deserialize(buffer.data(), offset, type);
+
191 header.type = static_cast<Monitor::RequestType>(type);
+
192 offset += Deserialize(buffer.data(), offset, header.unique_id);
+
193 return header;
+
194}
+
195
+
196inline ReplyHeader DeserializeReplyHeader(const std::string& buffer)
+
197{
+
198 ReplyHeader header;
+
199 header.request = DeserializeRequestHeader(buffer);
+
200 unsigned const offset = 6;
+
201 Deserialize(buffer.data(), offset, header.tree_id);
+
202 return header;
+
203}
+
204
+
205struct Hook
+
206{
+
207 using Ptr = std::shared_ptr<Hook>;
+
208
+
209 // used to enable/disable the breakpoint
+
210 bool enabled = true;
+
211
+
212 enum class Position
+
213 {
+
214 PRE = 0,
+
215 POST = 1
+
216 };
+
217
+
218 Position position = Position::PRE;
+
219
+
220 uint16_t node_uid = 0;
+
221
+
222 enum class Mode
+
223 {
+
224 BREAKPOINT = 0,
+
225 REPLACE = 1
+
226 };
+
227
+
228 // interactive breakpoints are unblocked using unlockBreakpoint()
+
229 Mode mode = Mode::BREAKPOINT;
+
230
+
231 // used by interactive breakpoints to wait for unlocking
+
232 std::condition_variable wakeup;
+
233
+
234 std::mutex mutex;
+
235
+
236 // set to true to unlock an interactive breakpoint
+
237 bool ready = false;
+
238
+
239 // once finished self-destroy
+
240 bool remove_when_done = false;
+
241
+
242 // result to be returned
+
243 NodeStatus desired_status = NodeStatus::SKIPPED;
+
244};
+
245
+
246inline void to_json(nlohmann::json& js, const Hook& bp)
+
247{
+
248 js = nlohmann::json{ { "enabled", bp.enabled },
+
249 { "uid", bp.node_uid },
+
250 { "mode", int(bp.mode) },
+
251 { "once", bp.remove_when_done },
+
252 { "desired_status", toStr(bp.desired_status) },
+
253 { "position", int(bp.position) } };
+
254}
+
255
+
256inline void from_json(const nlohmann::json& js, Hook& bp)
+
257{
+
258 js.at("enabled").get_to(bp.enabled);
+
259 js.at("uid").get_to(bp.node_uid);
+
260 js.at("once").get_to(bp.remove_when_done);
+
261 bp.mode = static_cast<Hook::Mode>(js.at("mode").get<int>());
+
262 bp.position = static_cast<Hook::Position>(js.at("position").get<int>());
+
263
+
264 const std::string desired_value = js.at("desired_status").get<std::string>();
+
265 bp.desired_status = convertFromString<NodeStatus>(desired_value);
+
266}
+
267
+
268} // namespace BT::Monitor
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
Definition: groot2_protocol.h:206
+
Definition: groot2_protocol.h:133
+
Definition: groot2_protocol.h:101
+
+
+ + + + diff --git a/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.map b/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.map new file mode 100644 index 000000000..450b6e1d9 --- /dev/null +++ b/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.md5 b/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.md5 new file mode 100644 index 000000000..170ee1b47 --- /dev/null +++ b/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.md5 @@ -0,0 +1 @@ +6484843ad0d0fd32bcf56a18a3d91859 \ No newline at end of file diff --git a/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.png b/de/d79/struct_b_t_1_1_grammar_1_1_expression_1_1conditional__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..85d2f08ad33f7bad1d5aa85c1aa352630fa275e5 GIT binary patch literal 6745 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 Xcb~hwLpx8;gf literal 0 HcmV?d00001 diff --git a/de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html b/de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html new file mode 100644 index 000000000..79de065c0 --- /dev/null +++ b/de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html @@ -0,0 +1,195 @@ + + + + + + + +BehaviorTree: BT::Ast::ExprUnaryArithmetic Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Ast::ExprUnaryArithmetic Struct Reference
+
+
+
+Inheritance diagram for BT::Ast::ExprUnaryArithmetic:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Ast::ExprUnaryArithmetic:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + +

+Public Types

enum  op_t { negate +, complement +, logical_not + }
 
- Public Types inherited from BT::Ast::ExprBase
+using Ptr = std::shared_ptr< ExprBase >
 
+ + + + + + + +

+Public Member Functions

ExprUnaryArithmetic (op_t op, expr_ptr e)
 
Any evaluate (Environment &env) const override
 
+virtual Any evaluate (Environment &env) const =0
 
+ + + + + +

+Public Attributes

+enum BT::Ast::ExprUnaryArithmetic::op_t op
 
+expr_ptr rhs
 
+

Member Function Documentation

+ +

◆ evaluate()

+ +
+
+ + + + + +
+ + + + + + + + +
Any BT::Ast::ExprUnaryArithmetic::evaluate (Environmentenv) const
+
+inlineoverridevirtual
+
+ +

Implements BT::Ast::ExprBase.

+ +
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.map b/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.map new file mode 100644 index 000000000..ad9575ed7 --- /dev/null +++ b/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.md5 b/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.md5 new file mode 100644 index 000000000..b99e28cb0 --- /dev/null +++ b/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.md5 @@ -0,0 +1 @@ +a2eccaf6281c9a0d17b37edb31c70c2c \ No newline at end of file diff --git a/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.png b/de/d8b/class_b_t_1_1_stateful_action_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..95787c59c5f7a617223002f606ea63a08e918138 GIT binary patch literal 9042 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 + + + diff --git a/de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.md5 b/de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.md5 new file mode 100644 index 000000000..1b930e4e4 --- /dev/null +++ b/de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.md5 @@ -0,0 +1 @@ +4baea5f36257f6338f629079ae76a876 \ No newline at end of file diff --git a/de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.png b/de/d8b/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1d9ac82cf338f5ce081c7960e49c98c14.png new file mode 100644 index 0000000000000000000000000000000000000000..481f6fe21d9db95ba524402a610d99497a087956 GIT binary patch literal 13193 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 literal 0 HcmV?d00001 diff --git a/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.map b/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.map new file mode 100644 index 000000000..288f25064 --- /dev/null +++ b/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.md5 b/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.md5 new file mode 100644 index 000000000..da715b943 --- /dev/null +++ b/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.md5 @@ -0,0 +1 @@ +ce6c6343db582dba683fbb0d80f981b5 \ No newline at end of file diff --git a/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.png b/de/d99/class_b_t_1_1_entry_updated_decorator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3f90170aab62a47c4965012a4956bde0ce82ebf3 GIT binary patch literal 7943 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 + + + + + diff --git a/de/d9e/class_b_t_1_1_threaded_action__inherit__graph.md5 b/de/d9e/class_b_t_1_1_threaded_action__inherit__graph.md5 new file mode 100644 index 000000000..f1246e806 --- /dev/null +++ b/de/d9e/class_b_t_1_1_threaded_action__inherit__graph.md5 @@ -0,0 +1 @@ +bb2aefef68e1ea9338a10c94824379e2 \ No newline at end of file diff --git a/de/d9e/class_b_t_1_1_threaded_action__inherit__graph.png b/de/d9e/class_b_t_1_1_threaded_action__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ef6f1fdf8776b703936b591db94a51eb8315cc0b GIT binary patch literal 8351 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 + + + + diff --git a/de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.md5 b/de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.md5 new file mode 100644 index 000000000..85b3b3cc5 --- /dev/null +++ b/de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.md5 @@ -0,0 +1 @@ +a1d4f6165ad8cb4a165988289b38ece5 \ No newline at end of file diff --git a/de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.png b/de/d9e/struct_b_t_1_1_monitor_1_1_reply_header__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..faf0516b2c703948353a7952178cc0c6f03be5f9 GIT binary patch literal 9814 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 literal 0 HcmV?d00001 diff --git a/de/d9f/class_b_t_1_1_reactive_sequence.html b/de/d9f/class_b_t_1_1_reactive_sequence.html new file mode 100644 index 000000000..f94c07f96 --- /dev/null +++ b/de/d9f/class_b_t_1_1_reactive_sequence.html @@ -0,0 +1,391 @@ + + + + + + + +BehaviorTree: BT::ReactiveSequence Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ReactiveSequence Class Reference
+
+
+ +

The ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last: + More...

+ +

#include <reactive_sequence.h>

+
+Inheritance diagram for BT::ReactiveSequence:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ReactiveSequence:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ReactiveSequence (const std::string &name)
 
- Public Member Functions inherited from BT::ControlNode
ControlNode (const std::string &name, const NodeConfig &config)
 
+void addChild (TreeNode *child)
 The method used to add nodes to the children vector.
 
+size_t childrenCount () const
 
+const std::vector< TreeNode * > & children () const
 
+const TreeNodechild (size_t index) const
 
virtual void halt () override
 
+void haltChildren ()
 same as resetChildren()
 
+void haltChildren (size_t first)
 
+void haltChild (size_t i)
 
virtual NodeType type () const override final
 
void resetChildren ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

static void EnableException (bool enable)
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::ControlNode
+std::vector< TreeNode * > children_nodes_
 
+

Detailed Description

+

The ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last:

+
    +
  • If a child returns RUNNING, halt the remaining siblings in the sequence and return RUNNING.
  • +
  • If a child returns SUCCESS, tick the next sibling.
  • +
  • If a child returns FAILURE, stop and return FAILURE.
  • +
+

If all the children return SUCCESS, this node returns SUCCESS.

+

IMPORTANT: to work properly, this node should not have more than a single asynchronous child.

+

Member Function Documentation

+ +

◆ EnableException()

+ +
+
+ + + + + +
+ + + + + + + + +
static void BT::ReactiveSequence::EnableException (bool enable)
+
+static
+
+

A ReactiveSequence is not supposed to have more than a single anychronous node; if it does an exception is thrown. You can disabled that check, if you know what you are doing.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/da6/class_b_t_1_1_parser.html b/de/da6/class_b_t_1_1_parser.html new file mode 100644 index 000000000..e12d4539c --- /dev/null +++ b/de/da6/class_b_t_1_1_parser.html @@ -0,0 +1,159 @@ + + + + + + + +BehaviorTree: BT::Parser Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Parser Class Referenceabstract
+
+
+ +

The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory. + More...

+ +

#include <bt_parser.h>

+
+Inheritance diagram for BT::Parser:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Parser (const Parser &other)=delete
 
+Parseroperator= (const Parser &other)=delete
 
Parser (Parser &&other)=default
 
+Parseroperator= (Parser &&other)=default
 
+virtual void loadFromFile (const std::filesystem::path &filename, bool add_includes=true)=0
 
+virtual void loadFromText (const std::string &xml_text, bool add_includes=true)=0
 
+virtual std::vector< std::string > registeredBehaviorTrees () const =0
 
+virtual Tree instantiateTree (const Blackboard::Ptr &root_blackboard, std::string tree_name={})=0
 
+virtual void clearInternalState ()
 
+

Detailed Description

+

The BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/de/daa/struct_b_t_1_1_ast_1_1_environment-members.html b/de/daa/struct_b_t_1_1_ast_1_1_environment-members.html new file mode 100644 index 000000000..a10797ece --- /dev/null +++ b/de/daa/struct_b_t_1_1_ast_1_1_environment-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Ast::Environment Member List
+
+
+ +

This is the complete list of members for BT::Ast::Environment, including all inherited members.

+ + + +
enums (defined in BT::Ast::Environment)BT::Ast::Environment
vars (defined in BT::Ast::Environment)BT::Ast::Environment
+
+ + + + diff --git a/de/db9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat-members.html b/de/db9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat-members.html new file mode 100644 index 000000000..d09246468 --- /dev/null +++ b/de/db9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::string_concat Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::string_concat, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::string_concat)BT::Grammar::Expression::string_concatstatic
operand typedef (defined in BT::Grammar::Expression::string_concat)BT::Grammar::Expression::string_concat
+
+ + + + diff --git a/de/dbd/class_b_t_1_1_file_logger2-members.html b/de/dbd/class_b_t_1_1_file_logger2-members.html new file mode 100644 index 000000000..20e84f0fe --- /dev/null +++ b/de/dbd/class_b_t_1_1_file_logger2-members.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::FileLogger2 Member List
+
+
+ +

This is the complete list of members for BT::FileLogger2, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
callback(Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override (defined in BT::FileLogger2)BT::FileLogger2virtual
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
FileLogger2(const Tree &tree, std::filesystem::path const &filepath)BT::FileLogger2
FileLogger2(const FileLogger2 &other)=delete (defined in BT::FileLogger2)BT::FileLogger2
FileLogger2(FileLogger2 &&other)=default (defined in BT::FileLogger2)BT::FileLogger2
flush() override (defined in BT::FileLogger2)BT::FileLogger2virtual
operator=(const FileLogger2 &other)=delete (defined in BT::FileLogger2)BT::FileLogger2
operator=(FileLogger2 &&other)=default (defined in BT::FileLogger2)BT::FileLogger2
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
~FileLogger2() override (defined in BT::FileLogger2)BT::FileLogger2virtual
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
+
+ + + + diff --git a/de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html b/de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html new file mode 100644 index 000000000..b98b96d2b --- /dev/null +++ b/de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html @@ -0,0 +1,169 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::logical Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::logical Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::logical:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::logical:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = comparison
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::logical::op
+
+staticconstexpr
+
+Initial value:
=
+
dsl::op<Ast::ExprBinaryArithmetic::logic_or>(LEXY_LIT("||")) /
+
dsl::op<Ast::ExprBinaryArithmetic::logic_and>(LEXY_LIT("&&"))
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html b/de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html new file mode 100644 index 000000000..e11ad8ee6 --- /dev/null +++ b/de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html @@ -0,0 +1,169 @@ + + + + + + + +BehaviorTree: BT::Grammar::Expression::string_concat Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::string_concat Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::string_concat:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::string_concat:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = math_sum
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::string_concat::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
return dsl::op<Ast::ExprBinaryArithmetic::concat>(LEXY_LIT(".."));
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/de/dce/class_b_t_1_1_sleep_node__coll__graph.map b/de/dce/class_b_t_1_1_sleep_node__coll__graph.map new file mode 100644 index 000000000..c0a15f9c9 --- /dev/null +++ b/de/dce/class_b_t_1_1_sleep_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/de/dce/class_b_t_1_1_sleep_node__coll__graph.md5 b/de/dce/class_b_t_1_1_sleep_node__coll__graph.md5 new file mode 100644 index 000000000..ad824e9b6 --- /dev/null +++ b/de/dce/class_b_t_1_1_sleep_node__coll__graph.md5 @@ -0,0 +1 @@ +df7ae768fdfefbd284a27597638f5bd2 \ No newline at end of file diff --git a/de/dce/class_b_t_1_1_sleep_node__coll__graph.png b/de/dce/class_b_t_1_1_sleep_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7bcf0161195501300cddb5ea5dc3f37ad7bc0c92 GIT binary patch literal 11479 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

2wW&#k;vd~S|Sk`ow(ALm6!>U3k0V34M z$|_=PY)pRC3^qETR!}K0U&m7#`{qpw&<5!A=akmznVE5c(Km{O1ifzX1bg0V#( zFo-%OW&u$4r@>2U)wnr^AJ45Nqa$mOk$iy_WAw_sL0r}M_p3iS&aXY-g3dHRNnB@V zXGAHV3RGmXvm2Pq+S8L4Xx3q8XGhZo+M5O*@-R&%6`J3$HoXV7i<=%Nl{bDmV}Z>Q z!IOy7+Zg-84omR0qvI|J6LeR>2-?=#BojEKysZIE*v6oie}XJ4yvD(S4}m#jD%)ZV zGl%Fwa5F7n52BKiNMJIsQcGPht)YaFENnLC6;Xo%4Re@nnCbLXJVxak z%=w|S2;lTmVG50ah{zw1^`48RrKORzH7RnPpWh$w2#h%NV}uQ0bmZ%tonDO_mA1Av z41Dd;kmt6o&K4l?I@%uVP~GVEPYs?SNLsO;B*J-n|QjhIxq&X%BhL zr1GN^V?3CCg;69y(8o;x_qh_g1f^k~0@{YAlm;48FaE{oE@FYyg_58$X)O1kw@Ut1 zN=Vt6f`ca6|En_^KJWWCQtafX^Vu9mC^1V_xKR^L*P`1`)Uwoqz=YUXR}CUtw5R7UPeKak41Yv}vG08HjtL;wH) literal 0 HcmV?d00001 diff --git a/de/ded/class_b_t_1_1_tree_observer-members.html b/de/ded/class_b_t_1_1_tree_observer-members.html new file mode 100644 index 000000000..451a76740 --- /dev/null +++ b/de/ded/class_b_t_1_1_tree_observer-members.html @@ -0,0 +1,128 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::TreeObserver Member List
+
+
+ +

This is the complete list of members for BT::TreeObserver, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
enabled() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
enableTransitionToIdle(bool enable) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
flush() override (defined in BT::TreeObserver)BT::TreeObserverinlinevirtual
getStatistics(const std::string &path) const (defined in BT::TreeObserver)BT::TreeObserver
getStatistics(uint16_t uid) const (defined in BT::TreeObserver)BT::TreeObserver
operator=(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
operator=(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
pathToUID() const (defined in BT::TreeObserver)BT::TreeObserver
resetStatistics() (defined in BT::TreeObserver)BT::TreeObserver
setEnabled(bool enabled) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
setTimestampType(TimestampType type) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
showsTransitionToIdle() const (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
statistics() const (defined in BT::TreeObserver)BT::TreeObserver
StatusChangeLogger(TreeNode *root_node) (defined in BT::StatusChangeLogger)BT::StatusChangeLoggerinline
StatusChangeLogger(const StatusChangeLogger &other)=delete (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
StatusChangeLogger(StatusChangeLogger &&other)=default (defined in BT::StatusChangeLogger)BT::StatusChangeLogger
TreeObserver(const BT::Tree &tree) (defined in BT::TreeObserver)BT::TreeObserver
uidToPath() const (defined in BT::TreeObserver)BT::TreeObserver
~StatusChangeLogger()=default (defined in BT::StatusChangeLogger)BT::StatusChangeLoggervirtual
~TreeObserver() override (defined in BT::TreeObserver)BT::TreeObserver
+
+ + + + diff --git a/de/ded/struct_b_t_1_1_grammar_1_1_expression_1_1logical-members.html b/de/ded/struct_b_t_1_1_grammar_1_1_expression_1_1logical-members.html new file mode 100644 index 000000000..7b0af2b36 --- /dev/null +++ b/de/ded/struct_b_t_1_1_grammar_1_1_expression_1_1logical-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Expression::logical Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Expression::logical, including all inherited members.

+ + + +
op (defined in BT::Grammar::Expression::logical)BT::Grammar::Expression::logicalstatic
operand typedef (defined in BT::Grammar::Expression::logical)BT::Grammar::Expression::logical
+
+ + + + diff --git a/de/df3/class_b_t_1_1_consume_queue__inherit__graph.map b/de/df3/class_b_t_1_1_consume_queue__inherit__graph.map new file mode 100644 index 000000000..868c343e6 --- /dev/null +++ b/de/df3/class_b_t_1_1_consume_queue__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/de/df3/class_b_t_1_1_consume_queue__inherit__graph.md5 b/de/df3/class_b_t_1_1_consume_queue__inherit__graph.md5 new file mode 100644 index 000000000..0682a1acb --- /dev/null +++ b/de/df3/class_b_t_1_1_consume_queue__inherit__graph.md5 @@ -0,0 +1 @@ +2e0b5c0bf9721ab52ad5c51030f2562b \ No newline at end of file diff --git a/de/df3/class_b_t_1_1_consume_queue__inherit__graph.png b/de/df3/class_b_t_1_1_consume_queue__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2b971a4f29f164017dcd85b899379801a2795d16 GIT binary patch literal 6690 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 z ?I#z~94DZ! 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 + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/while_do_else_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
while_do_else_node.h
+
+
+
1/* Copyright (C) 2020 Davide Faconti - All Rights Reserved
+
2*
+
3* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
4* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
5* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
6* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
7*
+
8* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
9* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
10* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
11*/
+
12
+
13#pragma once
+
14
+
15#include "behaviortree_cpp/control_node.h"
+
16
+
17namespace BT
+
18{
+
19/**
+
20 * @brief WhileDoElse must have exactly 2 or 3 children.
+
21 * It is a REACTIVE node of IfThenElseNode.
+
22 *
+
23 * The first child is the "statement" that is executed at each tick
+
24 *
+
25 * If result is SUCCESS, the second child is executed.
+
26 *
+
27 * If result is FAILURE, the third child is executed.
+
28 *
+
29 * If the 2nd or 3d child is RUNNING and the statement changes,
+
30 * the RUNNING child will be stopped before starting the sibling.
+
31 *
+
32 */
+
33class WhileDoElseNode : public ControlNode
+
34{
+
35public:
+
36 WhileDoElseNode(const std::string& name);
+
37
+
38 virtual ~WhileDoElseNode() override = default;
+
39
+
40 virtual void halt() override;
+
41
+
42private:
+
43 virtual BT::NodeStatus tick() override;
+
44};
+
45
+
46} // namespace BT
+
Definition: control_node.h:22
+
WhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode.
Definition: while_do_else_node.h:34
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.map b/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.map new file mode 100644 index 000000000..ca2d8ff1c --- /dev/null +++ b/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.md5 b/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.md5 new file mode 100644 index 000000000..aeab4a42f --- /dev/null +++ b/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.md5 @@ -0,0 +1 @@ +a1e6d5ca3320cb83235ff019f6bf8a04 \ No newline at end of file diff --git a/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.png b/de/dfb/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..18573d7bcae44df6c78ae07337b44715200bb81e GIT binary patch literal 6432 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 OA|);-RwSbL=|2GTo8!d* literal 0 HcmV?d00001 diff --git a/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.map b/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.map new file mode 100644 index 000000000..3afe05e80 --- /dev/null +++ b/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.md5 b/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.md5 new file mode 100644 index 000000000..e65337930 --- /dev/null +++ b/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.md5 @@ -0,0 +1 @@ +9675a5fb5114696c0c538db27dd95fab \ No newline at end of file diff --git a/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.png b/df/d04/class_b_t_1_1_x_m_l_parser__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..704f6c280a5944761b8ba2939353399b714aee38 GIT binary patch literal 3408 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 literal 0 HcmV?d00001 diff --git a/df/d11/struct_b_t_1_1_grammar_1_1nested__expr-members.html b/df/d11/struct_b_t_1_1_grammar_1_1nested__expr-members.html new file mode 100644 index 000000000..79d9e26b8 --- /dev/null +++ b/df/d11/struct_b_t_1_1_grammar_1_1nested__expr-members.html @@ -0,0 +1,111 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::nested_expr Member List
+
+
+ +

This is the complete list of members for BT::Grammar::nested_expr, including all inherited members.

+ + + + +
rule (defined in BT::Grammar::nested_expr)BT::Grammar::nested_exprstatic
value (defined in BT::Grammar::nested_expr)BT::Grammar::nested_exprstatic
whitespace (defined in BT::Grammar::nested_expr)BT::Grammar::nested_exprstatic
+
+ + + + diff --git a/df/d25/class_b_t_1_1_coro_action_node__coll__graph.map b/df/d25/class_b_t_1_1_coro_action_node__coll__graph.map new file mode 100644 index 000000000..36b2352cf --- /dev/null +++ b/df/d25/class_b_t_1_1_coro_action_node__coll__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/df/d25/class_b_t_1_1_coro_action_node__coll__graph.md5 b/df/d25/class_b_t_1_1_coro_action_node__coll__graph.md5 new file mode 100644 index 000000000..1855b2a75 --- /dev/null +++ b/df/d25/class_b_t_1_1_coro_action_node__coll__graph.md5 @@ -0,0 +1 @@ +d34c67cacd4e59716ad25bf860e5ae95 \ No newline at end of file diff --git a/df/d25/class_b_t_1_1_coro_action_node__coll__graph.png b/df/d25/class_b_t_1_1_coro_action_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eec5f0bafcd2e8ea431ccc2e84b4517cb7d2cf17 GIT binary patch literal 13202 zcmd6Oc{G-9)b3-J`4t%o^-3XQA(_i-$P^+WbLN@MGntY^qzFaknT#(Xp%5YSJd|06 z3>nXUf8Te$^*if)>zx12IxNdtJnrYd_r3SN_P+KdQe91fl8l)QK@iH@iWp4H3D-<5-dO0J_EXb`}x2ERjEu*u(-YP9EB_$^> zcW1(A-4wHBkilRQVy4wF?{89gpwX13)wZ8=G%`voyIE}$Z(@WAn+@3g4>uGZ)IRz; zVosw$X_A07Z#O&I-@adJN`%O85$WjY9IiSB$T~R*{PC8&q?+{j^XJdB^F|-6P_>U1 zHCH}hUss_W3OlyCrDLX>!;@S24QlD;yHc9#ytcRtdC_^JHonzq;vQ7Fxw)j&)Zr0R zov*LG5;P<3N|lVNah*3Et9JhKdzpwr%$8k=pL&ki!}B3(?>=|z7n#g6|o=DTB>97`-3tyHFfHi+%<;H zFZ5)PWU0Ik&QORk{k!>7)MM?OnEOhEbzc_zW&ejaWmyLY2kh6cGi=Rwx2+79D?gYw zz`C1^*Sb}^{3JU(JQQ$S(h?OFeU;@nTt;+O#7?H(dt1QfM-F-`QJVy1tzWq8%78it zTPxJBs$AG+VqzL9w*<#LT^{JarStXeRP7WqZZ3p@Otc{;#Wo5qhexWhHc^e z4`DMFv$Y<-`SR}-mRaqCGt9jUXQf5O-V7oB3fGUpJY4#bd)2rR>61uJP2KDg|NSbg z*sz}a*|TSx->y%-%Hr4i@I^?HgG26*cfH-nhp*{kJSf=PY+DS2EgL^ZORyqczjb_^ z<=wk?NZ^MLLOc(uX-;+nPQt$>Ur)SITwY$Td;MEVbLPg*j>r)odhhRiT5Mus_{q`l zfUJ#%!HJ1F2^F>ihZSD& znojQStq~~p&R}{@iovq1$z0iRs#gLg_*rTxWNd6{=+y^U_iroPI>m-^&0&=9;)7qj zcrpA4b<^9sR?dx9V_bcCe++MGeYzPz7#I?-8YRDa6){oole~u4;94yaM!^&;>9f-~ zImuS_jv6-0}8YU)dk&lj(AMby#ie0R2e95c-JT5L+ zfz9uSowvWg6k`0dJs}J0&#ei5d8d$ccW&z6KEEZ$>by>ax2|t&G{J3` zn6{98uIAkTZqQukI#3)}zX8e}SNwlHy2 zEV1BNWQ0(}zw_5=lr>FrN`ztv<66R$jr%k;N<-Bo!Ls9VXy^qVo=#>}ol|Dvm*3L8 zjdQ<`r9-2Ud!!yHudLe90vDEp`pd|A$Bs^c0T~K~aN07ck48`Ov5*tC;Wb)4o^LzS z{%X{&gwawRn)gq9Do;W3oaFqSVu8+)Z5k9F#V+=e*i(FCf<}3|*85miG&*qFU*}e3 zq%@(u!`Xgr&+t9n!t>~KX~D7I!6?r&p$1n&={Dn0-Fn4nbowodT{1FC`jlRii)7e` zWT)&9iQPZ)J^F zJ=67;(1_+hpjY9U=00k9^!4!eDYEm7x+%ga)cCXUt3QRfl+L-jIGqagW8(i- zSst<+C*zhOwuDC4vUHDia9t+3lfGh1f*eR2DPy!&3pT$@j&$af+@XFIK&HJ;g~*uf zuV#=3M)m73p-|d+rK9GvL#t&yBW^UP@lOs+|6tC)?hJ!r{_J!a-FyE3e!c&XAI%dx zd$5N6oyD2Sn$sncFZ;kB>x1_;d0H#3!Zz0q?XupZz;@IK=hFDgm{%^C`GdgS-CZ^% zB_+Rnn0t_cDd70ml6n6vZe4kKVo2l#2E-_BnTjxRL{wb7xv#IhHaU|_QBkomQ#tXU z-ysM8n{Vs9`|(3d;&8pWq@tpQoWD*z)821q*m7a4#x@A44*;m6rcbJf{~X`%A()h+MA8h|8U6P za9E~fBkeLricdiBEg1I~l*~c`Sn{8((P!0_E{KR!DlMH)ugz`^7smmz4901DNxN?S z6FK7zmy5Ve_|fm+7Dh!nnpyZ0BteyCtov%2&G_QtVo7=Vm8%o2t;CRz`;BN&{Y(|; zF{p=%SzBY+s8iI!A#v*q-I@I8C+IL%O&hN4y8p+Tf?0^PsHn(lpn%EHcS8;U?RA#8 znAj~YB7J@RM~l5gMt<7~!ynAro=p#1riE&@udsb9&@C@<`Kk0q)H(fgqgypLm(lk5+S92iDbWd6bUqmiGCus`g1p zN|u^56GueoGH5`pAZYW0vu?BfN=s$R%a>sdN2`vWfSI@)+bwlK(UHjCM#AQ6oHWr8 z5FoMDc}-DOwFU08^x@Yymwq*jmUVi1x(F00D(%f(U24cHf4I`QW@>4koeD5=oUrXc zyw6{#3gudhb<5?~>URyxodpF2A+u}Flo3<2@+c?r2~+xbd$)&Co_+G6%5`4tM!<2M zsF+y$+Bo*-{`NAy3{*CNw~*(1vsBLtGDm0qJ;ST_Fz>R2!~;0^!^$z;a*N39Y|Btv z{;pE9wu{`{HZR;_n9+F=dd^iU7z`mXCG+FDI*HG1ZL?o5r#*&xD>x)1zu?<7%dYc) zi%Rr4k-e>yy5x^L2{lZEUz*TwU>y-N}FkxemwP_ouQ{lf!cFW}9}WN?P=3 zYHEJ3wAU}M9IbMUiI1m4LaXjq+K&#{rMj<<=sv$2ABYOHGK*P4SxaEL=lOpJz1 zsx-Q}z8;vEm^e%{sxPgkrnWZ|#ZSY^`V7EicBI0V21Q6jbU|8raz+GD_6b~o8PtCk zv-*{Gk+5GGjLK}>ix)j*=E{f+V42gePNs4%wKOSv=T*#mzY6ZLt<6oE)2Blg7OXsd ze86P^{HVZB2a61v!S|e|KM}pp&NhQW3J2tYpQPMEngYQ7m?!RBn5JJx`8yosah2Rz|D3 z3%ctIMj{mtY~-q`StS^ixS)zOUikhF7k`EUN83t9$AxJStj*xs8X6jkN=m^oG1Ma; ztV7H@UcQ#H-d`#2PKTEP@B%c8gTcNR8#TC89gVqmzthgYXEDnxZ1WiW4ObOfK`8@X z6XrbIYSJFhm9;qOf4~d1Ubw}#B$L*sOrFPo=T)I%6-QYcRru>FXlebpq@y$V&Uemn zb$y;a;5rF0v6TI)UPO+sP0MR>6e@xGKcV@*&E1Bl93=O`B66~Fb}T#Q=H{kmTB7>L z?GnTitqF+UnjcBnCTiyXlREKH+UgbIK9ETv81u2i-1ILdS&=D6#Yz_r3??*h`*fb( zAAnEs>y1Rn7e$2^s?AzAb+>3x+QK_ElbOVn>zstq=dFIc#bd2-m&9O@=A)uW6g%GB ztqa|pj3%qz5fO-c$5=v-hNuMOTRQJ zl9&48^uFGIVLRtjt>97qw`Vv*1MdIx!&3dMV0j06OCJ_Kypnn|%~V6`LHdBZivu}P z5u{VEeL{zq1@F`E-oOizYCvw@@_5?tCfZX?$#W@?%Co3;`2wIV)|}h8^PY46 z;yMZ9cZ#1&omhxE;DJF-S8YUu!}Mz(qJ>AESsxbB$fn?jr1lGF?%-)dJTxOmroA{( z3X+jmdJ&Djw(^oIyL9pi$sf^>vZ|D~i2Xe(^@e*21{h3L{!aF-0dHc7EJCj54f~@+ zB?Ji3;r7!9q4L>p{!}j-U=TNk? zS5>&SYlNTV7Jkm;MPv+a*#A_rVL*9Zf-c%jnrluz1*)w@V!_*4p3+a0AyTW{YeI<_fW~prxHL|Yg6rC3kpaG~H;0tYcIzIH` z%yfe0(#E>D@?5j9oSR*7s-zEELZVJ-v_vbCL8}ATO?(2dB4e-;cTDDtSTHe9KP97fDqsghM+XC?j1fb1|O1zt- zKl&C@g8<|4NP)Anvy-c8^1SMqXBTYqSInxpwcB>EM?)SiF1Ny| zSUO$OMeK{))w!mRm-35eAZ=Mqew5tY+HyYJa~=ygIokV`?5JLBDET-nEXgqW`Evvk zB9v0p$lJl?Qm|pv$SF$7mM8RA1T4GGsiaAb&+K1Pc@@ZD=!pjnwn(&o*~7?|E&Z8( z9ix_=)zMPV4O5jQp|1t2z$eU3o*a8*R_f@naI8i_meo?G)YBRhd}yEGN1>D1KID%M zhTcyIpn7PritPXzX;J4H!e5=QLjY>0>**Xo{$@HJ-`3nG)Z6C+BxFDf&w19p%OfJSpNQf zM$CIfN_4PMz!AMd46EGDn|R21K|$1Du~8fF5;QC<(R+KINDIJTcejG6Df$_k^s~c5 z-*RiT4zIyxOFe!Y9_}v}w^VK{7dN0UT_V2jFvjU|P@(I*Y|tx6 z82_=jU91QoBm%%VDa_Ty1@>hxcBx(L*AwwD$Kv^}WnuFQ5-s1!iM(yVlZcp@>nS%0 zI2;>B2l@H05!(kTMtKOZOpbQd;MALQ~0Od z<`WQ5H-tVMUCeUzVZ>7w@c}z%9Jg@v0tZ!8#N+Vrju&^NxX|c{iHS0^HmdSP@bsD4 zS$5!X=p7v$7ke|K-bnfB0nG9Oao_?a@ofkSl{caq7>xIyg$pJoCRu;M3Y>*{6>(H7 zVv10&;#Q|+V{=SeTV3Uq4WmF&Q&Vs3?lSoJ_;~G(dwi>G0*2}*uoZE@_q=ZPSRPQF zfQ~k5bQtSV44!r$YNm_0^-%2cq)5%9#kh!wiaVM#t?jK;hP&r=8z9!dVPO%589iEN=4M z3$kH~T3YcdV>NeweM`O!eaQ2np&@iJFW=Z;q5frd`KO%D_c8B%cGqa>={eBoG~dlg z3Z|={g?OcbS&O!VMZ*1e?;X6%vz|5_@s6UC3~L|JL7TG; zzI^Os{XZ{rU}Ag?cbPT6KOW4rCtN|J%N!@A1Q{t@R)$JVt0oJ*eEs~s1@nrD=>-P| ze{O2JNld|b9!SRL1qB6HM;W-7*BVZavB>k)(JF>v!>W-0=topKAW`oU1umv}13p1( zCHIm?*L1`CCH-0z#6%LfpCLNseU`U<)p4-z1_?h2X_ z{U68BfCl$v-!X%NHOsj#OSKvDfiqO#eboVnvusXIP6&eQf4_YF%C&i~27Hs0jO^1> zrfcovU65Lx*2ZqAyuM0=yzN_5X&`6>#&M(Xj`TaAFmd!Lq{W^R6ImSf1X;3t(e33* z6b^MoM9z>bJlwP&B<28%UMkpWvhp+fHtwVDpz(`?1GF+JA zu{t8$R}IZ!vVVh{f{L@>FQDFKAxzf6bzkPEBwu&@1mpnZkgP?@vm!!A{(m>kIWyNG zqbKuLfgfAA#aHkfdM|SLZhpNCs7i2-g~b_Kqq{6PY9N+fp~QVv5ArYy?xqED!PBWJ z@ztHxlvQE7q3^M{a1*c?(9^-L4I2dn*unh>J~&YBcMeSfLBlM-OEtCO*P_4Y<^+S8U)^=si_H1 zL_{Quyr89Kcftp_b`%2xNkBjV63UQ9K};}GGNj4*?fXYdWowI=2 zRugqKiw^J80*;vgAsL0N)I&##d6o1Xfh~-B*k@`WVkRIH1whT zmL%K^M-}wlbD}sWN(08_hpu*NdK!;`fdNRKB;Jm1-zdQvxF{C%*|D3OpEnyQ(Dhu* zOyoXvFos$XSFggb0=Goe2rjtfV_2gtQ@w~C>o$msj2fO*O?Y>FP=WPu9QGZlzZVVt zwzWT4_25IfalgWb{u!$znZEw$)mldDpu`ufFe0iNr|mFv8vlfa!vOn62NP z$agwYO%mcNhwCZ-GsOK3PTi9(M-FG4fvA)Ra$)1g-8%`@NA2l@%RR+L(tnl*sc}^& z;HNW`LM{%k+jT~~UvlvBQi99Ms;fUA#untMbNQ_q8X8vn{>6=z1fd4E8?D4WaAoIf z0N}RVg!c!V{`N;AuJcY%t-@P%9^O#m!UZqXbHqp;a1?v%&D6N$`A;yCPX2`clCD zmsdpt;x`5pk*`mMP$&5X<`%fWHWwK#%X2&+aYyewrmQ&!TJ>pDB=RQdZObb+sxR*l9^#opew@OAAhsWzF+ras> z+Oc%l{C3z~1vkdckm#@6Yiw?Yf#f-XZ~9|9Sl1(^*}1vLxLMm!NnCN0kC#`%zS=?8 zs+;9OS67$Z{`_z3?~mvX9(&2(cC%_1E?n^Z_1ZE|Vo2GhZp@>DCP7CPt1lmg>lDke z=6P{Yu)$li+DA((ld4lW#(D2@KqLO1Wq5d4^wENPY2VoRcn`#iO;H3-lhfs1PVk{} zhx8{<_9YFc*i+yBLyObmzz@*GoWFG4#01)!`Z`w-}Q#@&)X5&g(8KP zDSmVOsMweP%b?}Tm+N|1d~^rnR+JQNkWDx(e-59~$2zg)oV%Nkc0^ZqL?1X@Z05Me z-)&>QT=eg_wcBE%*tT4*SV~d*$HKri=f7MF+Ox{L!mjnc0oZ-r z=rK&wt06&Cg?nQy>61gZgrBHoi+j#jw+HA^>dv(knkHsC(TaTtJkJ(LNjLL3BBscw zZ5~JE3>3vKh5Z~i)n9yC>zw{D82`aLW4a*L#(=gqkMhHsCanyCu|iH!%`na;i#|gd z#&_ot7fi_+GUa>Q+6slb?ACWVF@puM^Qp23a#|dx1z4U|NQjF>f-zcn@rTc$i{6Jas|uUo!Vy$vPtHbP<8gy?Z@1GyMc4vsZ)cEZ3fd-0EwXyy}j>Jv20O{)iy*~+iX3+qo6 zPX##rDx#xn+xv z{yVG1T_cKTZ_W5+U-?4(cFv3tGoR7@k)^=%gWs$SBu`z%(pGyU~Y0Mz92$*_d3xlD(yKj#UR?Tz^T%y z;?G~XTVgN0A2s&~$`PS)WAPxYL;iYs&o1BNj?P1x>xp&yNoZHPI@SFUQkb11*|wfyE|QeQj@{b3zB zy<(-jMZ)xZd#w%c0tbmaUBLssk7kGeZTZ8Hu@*qa$V5B2>Ut&Nww4Fs@3_hg55@4A zEXjHeyEggu+S1s#Ya*Jd`D-IN?xdj$pK4o+^{3A!V&QhBmAws2Jfhbx#^lJ;Xv|jL zUKmmod^URN-2h*>O&0yQsgY5S@UgS);LU-ilc9?H>mp3~bT3bpw0>tieQ%G;|G}FG z1TMM$xqWY2PRXgpcXsSyMa#uk3k*)9blI8>2w>vbpfPQWFvOz>J{{z1*$!eb1135{bVX0KfTrd#l%2SWZp}eA1;&C z-^~qX*-G7cwYCJtgdZ+W_G^={r_!9)q^l%xOpL`n*DBvlI4Ur?cZYtRjb#d$+niq} zY1lK7InJ@3vUG+z!PlD)a@B1UF$tDGWe-xGUSGDSdz;wHly)j|d(vh#2_CPuz3=q? zF{g2)=H7=;-c)KzEe`3m1e?$VgV|*Ig{PCZv`%Ym?t-Upzzc0Ig<)HxqvFrw4ak-l zxd=YeeqQSU%b0#TG8JQBbkk3Wqrlt06R{<3iCY|k4bO}{6N?xT>}gvzHmtGLrI6z{;GhVsJzlrO`iC_}uMF`^TjxA*cX?5`thB zi1l*VICl!3j3eTXj3ImYIhNmoBXVjZa!O-2snWP}Z&Tut22vvaM9)d5t_C8uXXG&b zR(9`ISkH11ft&IODNzg*g$HIDDvXOr)oTPWL{&?UIo4l0p(YEN*x~EQ(0e?7)olpg zDvP4fCS$+rQsQ+uIAgq;v{VKO4ZA?`w^Zj&MY7?kr~`gvHmxB5dCL)aaK)rXOIcuS zxmx>33xh{PI@N@K79-hUFjio2*MRQV+1(u4iaU5*>ScAbXS@yyC|#ZE8d%Tm_Wi*<4Sc(hxD=5trWnh%==h=VN&HSDgkEW#2tD@7B%> zLyGW4$)|V`CS(GkAvgYGz?W=;3KM_L#KN%?cFvbuhK4XhXXkF3F7^^H*(!^`8lZ;1j4kTb|sdFT?2d&l$Fcks2{y@}-!(vVNy6WqFT z={{!@G%OK;9NLg0_iRK3fBj;hN0V`}tLHB@4(795FYtWNld)BZMI_3~{;ur^TuT)X ze8!<79`q?HTSvpwgQCHql*+97ZZ5=6_SZrc z9&uwI!l$jHfs3eImDx(AJ3Z3@h}tNpL`^|Vt<`E$M9w1$kFqaAiq_P|R|vgRP)DDL zIVbKZXoYM9bL&1dH%fS8*+`J?G?CM`+cf$VG^Hu_YA5VM>s@^Y#TDP#mp8xq*2j?)7*O|1Qh0DD3j1kUw7OB8G0wyv zfT(6DG`Oo;KC*0eWWm&hLXNqVQYmk&U`IxTHO8BzJn{s|S6 zX>HkOD}m^_E;zPW^mLR@R<4A&ao{P%p;@1RTi=MVu5z{G10VJh%D`JeA5Zo&r0Nz_ z?ln7QW6zWsunLiV48B!Xirn!ZGwQE7$d~qhQ8G)TS?F& zf2_FAPI*r>84cu5k3AO&IP zO&`2Jgo{I=G&pLviN=~ne>Q(t@A(}0*|eKb!FEvQ;VIR_CXH_&%8K`Cf~S=Pq%tq# z;&MqBn}sdKWeO4ZVFkDp>PmNBjJZkm-2}biJNC41r32gEq?Gy`4)zX>2y0_rIX<|v zK)xfZrFS#v_^j=qtk#(@aqSvyKkay`1){fJL6kesCN34ig?JULN1x?s^ibcdUw9gH zI$-k`drWRC_*(_(az5=JnL9*dKdziRS7lHOfuLM~i={>j#5TaAR_f8MH*5_Bk8Ox1 z=GFRbG~-2o&CR%y;y)s5Zr;yf9&WinL;vgS300sD;Xe?kjx!ajglo1<#YOdTE9dsvAJ+z*Mj_r`S9$ z9nHK(IEh~!g#X9rhRhMbLxjyWL-kB%6LU5<6{d~nnw){G2O$l#*-KW}JFl-z$JCyD z&k-9z=c!4!7B_*6K!htZOb`3a#{4dI@8{Fp!j*bSeUYr&jzUdt*^~L1^+^~^>M3&a zQL9z492>?010TpMYV`VXPzzXoesmm^8z;^LksCR(m)w$nl14$P1~mLkvG^QN|$TB^jU*iUWm z7%7OWYimD!&0T-F0p!IYOqMyimZzoyVc38F2Mo%oy3(Yn>kX-|U%x&yGBV+}aR#Og zXlRUk-pP_g&4VxiXa@OY5qo1ZGXjK@le2NqC?Fd8jC7E~C1{QU-DYBI3p1q{w0)IL zKN+w?3B6RY9E@wsFc!a6T~pHphlMHF-fGq4`gd7soM@v37~=KqL8D~DqYSKYyBlywLMtwW=paV|qRT=oOgs>*ZGPf&`F=h{$ubV(@#Nmuq?D$yVCQt57Ko zZL?}y5QfnB`uZXWuyU`iSyF*G@fm0hUK5SPbKU(8>Wn`NJ?(UUbV=z#`DFHxcku=`!wX6c#h03h*02n1OQiRdY z*KoizMz2h*Y1bQsO9k7!uJmzU_JVi!iC@m#^TJ$ha~iCM zfjuy-I7;YDy+81qRzoEhByQ(a{hhV(D3A`)!3?48tYcje zIL7PH<^QDnK&l{v`3{zP$|lWDtQwW(x5IS2T^x{5>zL~>J${uLmlZ(r$&8b5 zfM{ZRb(ON-(6OfuM_Hb}BcZY4kuK%ap_Vz=zX%LO3TY-agx!MA;I#&?X~ey zy8ACXU4i6*Db^Gm8?+_2K)qW6lg7S3j~^3)W4;b%LF(%3r-97v@z&Sd1y06pzaBEbMgjjp@Z}q{QZD+ zrDxJf^@8{!QBY7QC;tR=c;jMUb`J=PKm?n_TVBUgc(8*F2H`px8QBw_4r2l1^{J+z zYG-yhMMuAybD!f$xc6);CGK&15(GD42h|cVd^!Vpnk-FDgQ928o~_1WXLl!geU?nD z8MLsE7V*K|U~F~z=wSDHGQYGm8#1-F_6#>xJ0cKuTcQJYM%k{szzdg{GkPL$V={{^ zApglBtI3U4+V?B6b{?V=Vdp1=Bs+?pQNAf7G(wKwSYfQARTy)jG) zzI1noH>vNYBYHx}F zMqtUTA1eb+{11VbZ*kAmdcW4onJHj5Bml#;><6oRdwY#tT~yQ4)3{x(16;rayH%(m zF_B?xY^=np2MsgE8HjP5wyVUZKaZ^c_K3Nz0*|g7%pb%0^L2h7Z%WW_&V7A>gD~(V zCr}f@xXyH{G04KNrwU{nWH8PY@_FwBLNr_wgH%s1zOuGP1)Mx?aBx}ejST$i+_`fC zKnn}m4bh0DP=S~lqo>FGj72Pn zQWu+&LdnL)#+ixxPXIVM8fF~8)614yd|L;WSl8Ep2*DAG$j~_unj3GZXyvc}8e-5S?n`2OJY+Ec@T`-j{9d3-e#xbrblAq yO>f?u134GSt$WX>s3n@NGDrOD!>0CxBsBNNVP6LCZ}=x0 + + + + diff --git a/df/d2c/class_b_t_1_1_repeat_node__coll__graph.md5 b/df/d2c/class_b_t_1_1_repeat_node__coll__graph.md5 new file mode 100644 index 000000000..2f3e45578 --- /dev/null +++ b/df/d2c/class_b_t_1_1_repeat_node__coll__graph.md5 @@ -0,0 +1 @@ +50f82be1e2e6e2d9b881d6db4d8bc601 \ No newline at end of file diff --git a/df/d2c/class_b_t_1_1_repeat_node__coll__graph.png b/df/d2c/class_b_t_1_1_repeat_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7436a33bee95b505d0e681da21df0ca2706f1d33 GIT binary patch literal 7269 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 + + + + + + +BehaviorTree: BT::Grammar::_xid_start_character Struct Reference + + + + + + + + + + + + + +

+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::_xid_start_character Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::_xid_start_character:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::_xid_start_character:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + +

+Static Public Member Functions

+static LEXY_CONSTEVAL auto char_class_name ()
 
+static LEXY_CONSTEVAL auto char_class_ascii ()
 
+static LEXY_UNICODE_CONSTEXPR bool char_class_match_cp (char32_t cp)
 
+template<typename Encoding >
static constexpr auto char_class_match_swar (lexy::_detail::swar_int c)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/df/d34/class_b_t_1_1_sub_tree_node.html b/df/d34/class_b_t_1_1_sub_tree_node.html new file mode 100644 index 000000000..c94662fee --- /dev/null +++ b/df/d34/class_b_t_1_1_sub_tree_node.html @@ -0,0 +1,442 @@ + + + + + + + +BehaviorTree: BT::SubTreeNode Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SubTreeNode Class Reference
+
+
+ +

The SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard. If you want to have data flow through ports, you need to explicitly remap the ports. + More...

+ +

#include <subtree_node.h>

+
+Inheritance diagram for BT::SubTreeNode:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::SubTreeNode:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SubTreeNode (const std::string &name, const NodeConfig &config)
 
+void setSubtreeID (const std::string &ID)
 
+const std::string & subtreeID () const
 
virtual BT::NodeStatus tick () override
 Method to be implemented by the user.
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+

The SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard. If you want to have data flow through ports, you need to explicitly remap the ports.

+

NOTE: autoremap will exclude all the ports which name start with underscore ''

+

Consider this example:

+

<root main_tree_to_execute = "MainTree" >

<BehaviorTree ID="MainTree">
+    <Sequence>
+
+    <Script code="myParam='Hello'" />
+    <SubTree ID="Talk" param="{myParam}" />
+
+    <SubTree ID="Talk" param="World" />
+
+    <Script code="param='Auto remapped'" />
+    <SubTree ID="Talk" _autoremap="1"  />
+
+    </Sequence>
+</BehaviorTree>
+
+<BehaviorTree ID="Talk">
+    <SaySomething message="{param}" />
+</BehaviorTree>
+

</root>

+

You may notice three different approaches to remapping:

+

1) Subtree: "{param}" -> Parent: "{myParam}" -> Value: "Hello" Classical remapping from one port to another, but you need to use the syntax {myParam} to say that you are remapping the another port.

+

2) Subtree: "{param}" -> Value: "World" syntax without {}, in this case param directly point to the string "World".

+

3) Subtree: "{param}" -> Parent: "{parent}" Setting to true (or 1) the attribute "_autoremap", we are automatically remapping each port. Useful to avoid boilerplate.

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+ + + + + +
+ + + + + + + +
virtual BT::NodeStatus BT::SubTreeNode::tick ()
+
+overridevirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+ +

◆ type()

+ +
+
+ + + + + +
+ + + + + + + +
virtual NodeType BT::SubTreeNode::type () const
+
+inlinefinaloverridevirtual
+
+ +

Reimplemented from BT::DecoratorNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/d34/class_b_t_1_1_sub_tree_node.js b/df/d34/class_b_t_1_1_sub_tree_node.js new file mode 100644 index 000000000..85f8f185d --- /dev/null +++ b/df/d34/class_b_t_1_1_sub_tree_node.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_sub_tree_node = +[ + [ "tick", "df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b", null ] +]; \ No newline at end of file diff --git a/df/d38/class_b_t_1_1_queue_size-members.html b/df/d38/class_b_t_1_1_queue_size-members.html new file mode 100644 index 000000000..5b1367e81 --- /dev/null +++ b/df/d38/class_b_t_1_1_queue_size-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::QueueSize< T > Member List
+
+
+ +

This is the complete list of members for BT::QueueSize< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::QueueSize< T >)BT::QueueSize< T >inlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
QueueSize(const std::string &name, const NodeConfig &config) (defined in BT::QueueSize< T >)BT::QueueSize< T >inline
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
tick() overrideBT::QueueSize< T >inlinevirtual
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d43/struct_b_t_1_1_monitor_1_1_hook-members.html b/df/d43/struct_b_t_1_1_monitor_1_1_hook-members.html new file mode 100644 index 000000000..d96c7be95 --- /dev/null +++ b/df/d43/struct_b_t_1_1_monitor_1_1_hook-members.html @@ -0,0 +1,120 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Monitor::Hook Member List
+
+
+ +

This is the complete list of members for BT::Monitor::Hook, including all inherited members.

+ + + + + + + + + + + + + +
desired_status (defined in BT::Monitor::Hook)BT::Monitor::Hook
enabled (defined in BT::Monitor::Hook)BT::Monitor::Hook
Mode enum name (defined in BT::Monitor::Hook)BT::Monitor::Hook
mode (defined in BT::Monitor::Hook)BT::Monitor::Hook
mutex (defined in BT::Monitor::Hook)BT::Monitor::Hook
node_uid (defined in BT::Monitor::Hook)BT::Monitor::Hook
Position enum name (defined in BT::Monitor::Hook)BT::Monitor::Hook
position (defined in BT::Monitor::Hook)BT::Monitor::Hook
Ptr typedef (defined in BT::Monitor::Hook)BT::Monitor::Hook
ready (defined in BT::Monitor::Hook)BT::Monitor::Hook
remove_when_done (defined in BT::Monitor::Hook)BT::Monitor::Hook
wakeup (defined in BT::Monitor::Hook)BT::Monitor::Hook
+
+ + + + diff --git a/df/d44/class_b_t_1_1_precondition_node-members.html b/df/d44/class_b_t_1_1_precondition_node-members.html new file mode 100644 index 000000000..9859dd631 --- /dev/null +++ b/df/d44/class_b_t_1_1_precondition_node-members.html @@ -0,0 +1,172 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::PreconditionNode Member List
+
+
+ +

This is the complete list of members for BT::PreconditionNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
PreconditionNode(const std::string &name, const NodeConfig &config) (defined in BT::PreconditionNode)BT::PreconditionNodeinline
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::PreconditionNode)BT::PreconditionNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~PreconditionNode() override=default (defined in BT::PreconditionNode)BT::PreconditionNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d48/class_b_t_1_1_entry_updated_action-members.html b/df/d48/class_b_t_1_1_entry_updated_action-members.html new file mode 100644 index 000000000..3666a9aa8 --- /dev/null +++ b/df/d48/class_b_t_1_1_entry_updated_action-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::EntryUpdatedAction Member List
+
+
+ +

This is the complete list of members for BT::EntryUpdatedAction, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
EntryUpdatedAction(const std::string &name, const NodeConfig &config) (defined in BT::EntryUpdatedAction)BT::EntryUpdatedAction
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::EntryUpdatedAction)BT::EntryUpdatedActioninlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~EntryUpdatedAction() override=default (defined in BT::EntryUpdatedAction)BT::EntryUpdatedAction
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html b/df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html new file mode 100644 index 000000000..6b4699629 --- /dev/null +++ b/df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html @@ -0,0 +1,164 @@ + + + + + + + +BehaviorTree: BT::Grammar::StringLiteral Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::StringLiteral Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::StringLiteral:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::StringLiteral:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + +

+Static Public Attributes

static constexpr auto rule
 
+static constexpr auto value = lexy::as_string<std::string>
 
+

Member Data Documentation

+ +

◆ rule

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::StringLiteral::rule
+
+staticconstexpr
+
+Initial value:
=
+
dsl::single_quoted(dsl::ascii::character) | dsl::quoted(dsl::ascii::character)
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/df/d4c/class_b_t_1_1_timer_queue.html b/df/d4c/class_b_t_1_1_timer_queue.html new file mode 100644 index 000000000..39f4c2024 --- /dev/null +++ b/df/d4c/class_b_t_1_1_timer_queue.html @@ -0,0 +1,129 @@ + + + + + + + +BehaviorTree: BT::TimerQueue< _Clock, _Duration > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::TimerQueue< _Clock, _Duration > Class Template Reference
+
+
+ + + + + + + + + + + +

+Public Member Functions

+uint64_t add (std::chrono::milliseconds milliseconds, std::function< void(bool)> handler)
 Adds a new timer.
 
+size_t cancel (uint64_t id)
 Cancels the specified timer.
 
+size_t cancelAll ()
 Cancels all timers.
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/d4c/class_b_t_1_1_timer_queue.js b/df/d4c/class_b_t_1_1_timer_queue.js new file mode 100644 index 000000000..95eb4a90b --- /dev/null +++ b/df/d4c/class_b_t_1_1_timer_queue.js @@ -0,0 +1,6 @@ +var class_b_t_1_1_timer_queue = +[ + [ "add", "df/d4c/class_b_t_1_1_timer_queue.html#a386ac8a89de8315a3f81cb5e88c30cac", null ], + [ "cancel", "df/d4c/class_b_t_1_1_timer_queue.html#a5564436f2a8e071bfdf59be5daea279a", null ], + [ "cancelAll", "df/d4c/class_b_t_1_1_timer_queue.html#a663265e8c343946094e5d16a1b59d483", null ] +]; \ No newline at end of file diff --git a/df/d4f/class_b_t_1_1_logic_error.html b/df/d4f/class_b_t_1_1_logic_error.html new file mode 100644 index 000000000..864cd1773 --- /dev/null +++ b/df/d4f/class_b_t_1_1_logic_error.html @@ -0,0 +1,154 @@ + + + + + + + +BehaviorTree: BT::LogicError Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::LogicError Class Reference
+
+
+
+Inheritance diagram for BT::LogicError:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::LogicError:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + +

+Public Member Functions

LogicError (std::string_view message)
 
+template<typename... SV>
 LogicError (const SV &... args)
 
- Public Member Functions inherited from BT::BehaviorTreeException
BehaviorTreeException (std::string_view message)
 
+template<typename... SV>
 BehaviorTreeException (const SV &... args)
 
+const char * what () const noexcept
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.map b/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.map new file mode 100644 index 000000000..2b0496d16 --- /dev/null +++ b/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.md5 b/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.md5 new file mode 100644 index 000000000..1f74cf4ee --- /dev/null +++ b/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.md5 @@ -0,0 +1 @@ +63d1b41f19786a6c7628464c228af2c1 \ No newline at end of file diff --git a/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.png b/df/d57/class_b_t_1_1_minitrace_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4c030f8ed7e6c5d4e5172e53506efea911fe2f8f GIT binary patch literal 5383 zcmcIoc{G%5|DT=;k*wLWFUdY+OXRU{$u$<+nXZc1OKG343WTS*YAk;eA>c-%^1$;ax z$iV+?_OHC)i_Ae!OC54{{`Ub@kOYA+HtDFVzydNivH}fZ=FOeT(|(l^w_<+9>D}Oq zq4W%op%nLW$gD$)8IADIzmn`=mRWGDLVvrjUsdQJeEW+!L#a>}EL+E0N+*-w^TnVb z+xAB_?u)OfxMgEL*dsSz5l^9^vCbYz@5gozVMe3Nr+r(QUbth_a(3|M<-d86+Whp< z>byu&x{(adduOqmmIp2WD#@LgG{EM2AROT{}xXcY<~cE1k5%RMT4+x_f)k zF478CuNDO-A8iEE+8|E+`?BsnZ&8UOL)r8v3h1RO_zT}mipG)favu1G`ub<20|Fdd zURvt3HG|5$7s^&S(VHsy_#rAt#=61pg57A5sp9c^<^2pYZ`YH=F{NNzqQ*JKDSZCYf-neanLC(Dr>&CGOV};96sb}-;v3^@KS=Dai4iyjO zga3#Q=j$(YA^GlSDI|aX%%8Vet)Rn5Pjrt0kty>jJBWMrfv42FJ1edE_x`-}be zj!W8(f*w9<3ZP5sUUX;eTR=xMP(8?26yl65$PUtNI$AB3#m>*qqmTC1tVTe9%Cxn$ zzfSzAZ8^~wwX7-}-6^%Iy~N#@t>l*EyWGdY6G@A$^acb!eQvM&U`zwEu*WetFEWj9U>mXkd~IFi`v=op}TQIB#cDR0#CEDvi|F-;Q|9@ zs~UGBX$l_n0b!y2osfyTnwnbdmU}5P9Uae~^$ETjFPyk@Zz_*j*(0Gc8&uJVn?WV5 zDnCE}>+{25LMkUjXM)zmBp-KNMW&|Sl9G~AcXux-EGjZy{hXg4lc$#wV^QfGJ>B@6 zDyjQ3+VXC^8QYB;?ZI0pL41FX1e54P?mrvYCk$JKTed}FJUl9-lPv@@w#I{@Uy=Am zK8zGltdQ|onytM%Nl?Sh264;xG(DY7+_w3COW4VJ5n^Lf1_THDbfUkXMp;?8`4E3Y zlquG@6Nlpp4`&aD_KU}1x0(TtAuCja=DR25GA%P}3IvT>r%QhJvQsSc(03nRRcrQpS_)z*nF$msULt za4j$^XXl#|s9pNa&CL?qmh6veQImPcFAnPYT5QUhLF##L-qgHAMiv9shzZ``tS-b( zb|LmwO_50Cpz|RpSBI{*Jgwv7=4dqfHSX+mUzTsC&?pyudUA{%O?~%{-zI1!5AM4g zgpvn+Y%DG=&J(H@k+Csh!s_Z%P(7fw{-QN6d*o`armh|tun;Hr&PPWl z8iK}T$ZZTw*@RhGq!|{E^2*7XMYxjF(oCU0yd_m0#nn|8b(G)+D{uu zoQpJNwdM4Ds*5z6k*VpZJuZHLiH>d%Z~8@P^2Q;D)G|5CZRe|Q<7Igj6-W{Dvag}X z@R{H(rLj`0aeL34d!fHU5oat3ndHAsN>X!m6$1Mu?Uf^(z-b+woFu(xznfuu`}>!t zpW_6Sm2Y7yZ?fcPEPK?*IDT3 z=r+QlYCN|$20^k?#I5U|Z*lJJ?F9q`K=ut{@}DK^w&O7wgx%e$?hO}8I$GNBc88A* z4VG!G76nlkE?jV_p1gJpkCct;u!mpfoL4}=;j+^W{*}d>QCwl#At52fOIEd>$jr?9 z9v-Fi{TR#=c-`;4pxM*D#?a#$dI@py{BPe9#jI+e05(2-`qcIF=eL#0z-!?@>}GAx zj#7+g8lRW%9Fh)+Aw-OvOSPqD99w&lX>nIiPi|2WB@GQtjr&AvJjdOG)#7sZNyVVu zTPrIo9Ge$|rE5E9e?$Nvp4+I!k$nI)^X?s^04E!p?!$*H%Y9jVva;_%&vhhl^@B!v zC$LaMK~3Fm2mKnn@9BiK@F!DT;=$40(D-+l@sPh|oF1JRwGl`ez4v!`+M0L*pt^#v3aGnLN{`xQ@i zhp)2BzkP9$+y}rF;0EW)H{*)SS(?(&aY;^3O&u&I89Z$86AJ#bu2L{;1Xv1GlDDs~$z%m*XZ|{_ zB`1QMW`{)V_x(M1lO3r&7>1czsP!+R^Fp)}V`YfbS0Yea-hY+xLyv5D`pdE+H0kIp((__}v)g4&z1N3;0KJ>1Mm6bN} zEQW%Hrr_(>ZR9#OZE{kzc~t0`#pgo-@z{S8Sr7OZ8Y-{X$$FIi2|3=V&AQdLS0_f& zmWwhha;%n`zdLAo(T{HN!@{M+ z#K?vK(Q&$6n99%NVc6M*yMEd0Oyb=ai7q#Je_!FYBaqbQ=TImCR|eNG!2t@Ym*0;X zoS!3<=QF=_nj-OAj%Lo3rIgv`U%by;lUQY9GlhR@oL^SIY;fUJU)I(1pUdU!bew%d zi$&VR=TdQT=-iGezYIu@f=vAJngxC1Tl|)~S(td!%a{p@DvT<%szyk$PGZz6X@uZV zp*_>U?YaWrjp*0q)k%w)4(9Ud>EAp z<)Mx9{I$P4%zy3t4%98p;PF}q`QI-yijZH5TbNX`ZuR7WE%HZlbDBn#C)HWlc@|J4 zg58nzG}9^ADZ-od1TIl=HSWPR)&KY*1(E>|O>4|`k$YxeU_|x_eEEBEp4T%*g+9hvrHd6R6ojc6R4~n* zBBi)owr}%mYkCQsO6=3?a3AMg0%i$Ror>R!!In6#@f^H9F!Ke8C z*O8tbP;W&T8ybcmtl$QpO0xy+{(g~@!vz7Y^X~oonzXfz4Sk?mqc$!o9xf)yV%^-_ zgoK2Cbas-XY-j*=%o!k#7yu++x^&5}5EXdR(V za1CJhZa6eCHm0DY1ge8MsaqXTI*{F>kLun6jk|NWoFn2-MMZT5+&`Ci_d<`Lh*Q!v zte1<6UE3>aS;6n)wg}AmXW*lnMI&6y`)m>W)jnc+GGkmW1H&&UNW^D&(X+6)Jii-% zQ$XP5brCaY$bt9&FMYuolb*+3n3zZpU;m{7gE1N?5+dX3ZGtys@(pqx`1w_REB*ZW zQmL6!#n zsHg-423A|*8raQYFm(-$%YZR+0Zqz!Ow~P$07k|KU|}R}U411Ahkw z*86C7HaCK`| zEP4gRsfcaTxDjeI%< zpauatUEZ?vePQ7(z|qs52I%4g9N?j1k_Sz78odc^LF?=`9d zr0TmptI~u*(Wwp;n@a$P5v`d!*ZPu*UEUjlKp+76o{L?J%8s&P%ome_gM)>HmBCzc zQ&Ur5v%WgCQv#{MxDiFem2X~dGga>!1+*-%3KKOR8PscwiJ1fTl~u zI0FZ&wZA!iuIa4ngHSWhBkne2+XR9=`ZXP}oaqHQVd+&>(l_#J@3{RzO6 z{k3mU#-|luRV2Z~^TK~^tO6|E{u-E0NL^!NB@kOqjE`zPvl7isP20f|tdb6w$Rb{V z+!6p85?iSxfZ@6_C70aoIKMgFxQ?w&0B@Ia?4pHS<4{0rafPCLBwD66_n~ZYAqR6& zO{ATktE^IyAlJsm#_}Nt&{$@P{F0J42FfSz^fP4bp)7?!ECQFH8>U47b`YCadf4pE zln{B?a=dwWXJ^O7#bp*qt~ac=$>ikZ8hwE9!Fo=dM;?&BJ#eP)Qc`X^peY(L%J!|7 zmWbgOE_U_yR*94co?&RJ$;l5znf{505E2${wS#V-?Bf_fRkCn#^YZ=`-rIYh zL?R75tzKMSzDP??uNoAjp!yn4ot%*o`=G$&&C1-I3RnvyhKyT6A|dSL$o^m@nMy)J z!ok4-`1LAlLS|+ryt=wpBJ&5I{b{~$7%=-8Ud_=N88<4Q^ur%=ogD48jgP0$+&c&- zEOcT+eSVxEf5w2@)YQ~8Q!W0M7YxnKJMV5aolAbDpxy7&(^)s^nngkp zCRLVVKYsiG`eVB6=+D%)Wtyx9o1j6q<2*Y0+NgVbkgANVY>gH00I|S^!nbBh7uRP{ zR;(O*K}uQ)oYj&Udy&Iy=TdqbNYlyQ4F;v>I7CPHV>t)W*SOW( z1H2Kq%YGOBW~nFT;yGa6J6^v%gE$NAi09DL(Yb;P-RA(-qguqXyhiKtarp@x`gEl5 zvW<<6J|%oSe0c>~iNot(7v#5H4n59V5p zkpBjfu)e+?%xGpeHy?mGl2w&`s2MUV3o}}5&I+}IfVKppbO_ignDBLgQ2-Nse0{$Z z7S4i!OX)Xvmh0DFb~^&+ngSf>`Rw5KlXxjMx#@zjoMQ8GdJYZ@7)cct7IF&;k|%Ye z0p=tJL#i$H9Ub|>0T!2*<`x#(0P%oW-A{#nYzxquw8ZB8F*Y+J+wMLjF1H{)pyA#J z5|w@%lm6MG0g0Un`6j&KKs*AC9XR)rc|As1^xL;@oF}%{`a3 + + + + + + +BehaviorTree: BT::Grammar::Expression::math_product Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::Expression::math_product Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::Expression::math_product:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::Expression::math_product:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using operand = math_prefix
 
+ + + +

+Static Public Attributes

static constexpr auto op
 
+

Member Data Documentation

+ +

◆ op

+ +
+
+ + + + + +
+ + + + +
constexpr auto BT::Grammar::Expression::math_product::op
+
+staticconstexpr
+
+Initial value:
= [] {
+
+
auto times = dsl::not_followed_by(LEXY_LIT("*"), dsl::lit_c<'='>);
+
auto div = dsl::not_followed_by(LEXY_LIT("/"), dsl::lit_c<'='>);
+
return dsl::op<Ast::ExprBinaryArithmetic::times>(times) /
+
dsl::op<Ast::ExprBinaryArithmetic::div>(div);
+
}()
+
+
+
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/df/d73/class_b_t_1_1_force_failure_node-members.html b/df/d73/class_b_t_1_1_force_failure_node-members.html new file mode 100644 index 000000000..5290f90af --- /dev/null +++ b/df/d73/class_b_t_1_1_force_failure_node-members.html @@ -0,0 +1,170 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ForceFailureNode Member List
+
+
+ +

This is the complete list of members for BT::ForceFailureNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
child() const (defined in BT::DecoratorNode)BT::DecoratorNode
child() (defined in BT::DecoratorNode)BT::DecoratorNode
child_node_ (defined in BT::DecoratorNode)BT::DecoratorNodeprotected
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
DecoratorNode(const std::string &name, const NodeConfig &config) (defined in BT::DecoratorNode)BT::DecoratorNode
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::DecoratorNodevirtual
ForceFailureNode(const std::string &name) (defined in BT::ForceFailureNode)BT::ForceFailureNodeinline
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::DecoratorNodevirtual
haltChild()BT::DecoratorNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChild()BT::DecoratorNode
resetStatus()BT::TreeNodeprotected
setChild(TreeNode *child) (defined in BT::DecoratorNode)BT::DecoratorNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override (defined in BT::DecoratorNode)BT::DecoratorNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~DecoratorNode() override=default (defined in BT::DecoratorNode)BT::DecoratorNodevirtual
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d73/class_b_t_1_1_parallel_all_node-members.html b/df/d73/class_b_t_1_1_parallel_all_node-members.html new file mode 100644 index 000000000..4041d16e9 --- /dev/null +++ b/df/d73/class_b_t_1_1_parallel_all_node-members.html @@ -0,0 +1,177 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::ParallelAllNode Member List
+
+
+ +

This is the complete list of members for BT::ParallelAllNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addChild(TreeNode *child)BT::ControlNode
child(size_t index) const (defined in BT::ControlNode)BT::ControlNodeinline
children() const (defined in BT::ControlNode)BT::ControlNode
children_nodes_ (defined in BT::ControlNode)BT::ControlNodeprotected
childrenCount() const (defined in BT::ControlNode)BT::ControlNode
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
emitWakeUpSignal()BT::TreeNode
executeTick()BT::TreeNodevirtual
failureThreshold() const (defined in BT::ParallelAllNode)BT::ParallelAllNode
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() overrideBT::ParallelAllNodevirtual
haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
haltChildren()BT::ControlNode
haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
ParallelAllNode(const std::string &name, const NodeConfig &config) (defined in BT::ParallelAllNode)BT::ParallelAllNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
providedPorts() (defined in BT::ParallelAllNode)BT::ParallelAllNodeinlinestatic
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetChildren()BT::ControlNode
resetStatus()BT::TreeNodeprotected
setFailureThreshold(int threshold) (defined in BT::ParallelAllNode)BT::ParallelAllNode
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
~ParallelAllNode() override=default (defined in BT::ParallelAllNode)BT::ParallelAllNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d73/struct_b_t_1_1_grammar_1_1_boolean_literal-members.html b/df/d73/struct_b_t_1_1_grammar_1_1_boolean_literal-members.html new file mode 100644 index 000000000..5066b676d --- /dev/null +++ b/df/d73/struct_b_t_1_1_grammar_1_1_boolean_literal-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::BooleanLiteral Member List
+
+
+ +

This is the complete list of members for BT::Grammar::BooleanLiteral, including all inherited members.

+ + + +
rule (defined in BT::Grammar::BooleanLiteral)BT::Grammar::BooleanLiteralstatic
value (defined in BT::Grammar::BooleanLiteral)BT::Grammar::BooleanLiteralstatic
+
+ + + + diff --git a/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.map b/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.map new file mode 100644 index 000000000..3afe05e80 --- /dev/null +++ b/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.md5 b/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.md5 new file mode 100644 index 000000000..e65337930 --- /dev/null +++ b/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.md5 @@ -0,0 +1 @@ +9675a5fb5114696c0c538db27dd95fab \ No newline at end of file diff --git a/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.png b/df/d74/class_b_t_1_1_x_m_l_parser__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..704f6c280a5944761b8ba2939353399b714aee38 GIT binary patch literal 3408 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 literal 0 HcmV?d00001 diff --git a/df/d85/class_b_t_1_1_always_success_node-members.html b/df/d85/class_b_t_1_1_always_success_node-members.html new file mode 100644 index 000000000..5e802d7b4 --- /dev/null +++ b/df/d85/class_b_t_1_1_always_success_node-members.html @@ -0,0 +1,168 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::AlwaysSuccessNode Member List
+
+
+ +

This is the complete list of members for BT::AlwaysSuccessNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ActionNodeBase(const std::string &name, const NodeConfig &config) (defined in BT::ActionNodeBase)BT::ActionNodeBase
AlwaysSuccessNode(const std::string &name) (defined in BT::AlwaysSuccessNode)BT::AlwaysSuccessNodeinline
config() constBT::TreeNode
config() (defined in BT::TreeNode)BT::TreeNodeprotected
emitWakeUpSignal()BT::TreeNode
executeTick() overrideBT::SyncActionNodevirtual
fullPath() constBT::TreeNode
getInput(const std::string &key, T &destination) constBT::TreeNodeinline
getInput(const std::string &key) constBT::TreeNodeinline
getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
getInputStamped(const std::string &key) constBT::TreeNodeinline
getLockedPortContent(const std::string &key)BT::TreeNode
getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
halt() override finalBT::SyncActionNodeinlinevirtual
haltNode() (defined in BT::TreeNode)BT::TreeNode
Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
isHalted() const (defined in BT::TreeNode)BT::TreeNode
LeafNode(const std::string &name, const NodeConfig &config) (defined in BT::LeafNode)BT::LeafNodeinline
modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
name() constBT::TreeNode
operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
Ptr typedef (defined in BT::TreeNode)BT::TreeNode
registrationName() constBT::TreeNode
requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
resetStatus()BT::TreeNodeprotected
setOutput(const std::string &key, const T &value)BT::TreeNodeinline
setPostTickFunction(PostTickCallback callback)BT::TreeNode
setPreTickFunction(PreTickCallback callback)BT::TreeNode
setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
setStatus(NodeStatus new_status)BT::TreeNodeprotected
setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
status() const (defined in BT::TreeNode)BT::TreeNode
StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
SyncActionNode(const std::string &name, const NodeConfig &config) (defined in BT::SyncActionNode)BT::SyncActionNode
TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
TreeNode(std::string name, NodeConfig config)BT::TreeNode
TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
type() const override final (defined in BT::ActionNodeBase)BT::ActionNodeBaseinlinevirtual
UID() constBT::TreeNode
waitValidStatus()BT::TreeNode
~ActionNodeBase() override=default (defined in BT::ActionNodeBase)BT::ActionNodeBase
~LeafNode() override=default (defined in BT::LeafNode)BT::LeafNodevirtual
~SyncActionNode() override=default (defined in BT::SyncActionNode)BT::SyncActionNode
~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
+
+ + + + diff --git a/df/d93/class_b_t_1_1_behavior_tree_exception.html b/df/d93/class_b_t_1_1_behavior_tree_exception.html new file mode 100644 index 000000000..01ab17240 --- /dev/null +++ b/df/d93/class_b_t_1_1_behavior_tree_exception.html @@ -0,0 +1,146 @@ + + + + + + + +BehaviorTree: BT::BehaviorTreeException Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::BehaviorTreeException Class Reference
+
+
+
+Inheritance diagram for BT::BehaviorTreeException:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for BT::BehaviorTreeException:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + +

+Public Member Functions

BehaviorTreeException (std::string_view message)
 
+template<typename... SV>
 BehaviorTreeException (const SV &... args)
 
+const char * what () const noexcept
 
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/d96/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true-members.html b/df/d96/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true-members.html new file mode 100644 index 000000000..88b35d94f --- /dev/null +++ b/df/d96/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true-members.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::BooleanLiteral::True Member List
+
+
+ +

This is the complete list of members for BT::Grammar::BooleanLiteral::True, including all inherited members.

+ + + +
rule (defined in BT::Grammar::BooleanLiteral::True)BT::Grammar::BooleanLiteral::Truestatic
value (defined in BT::Grammar::BooleanLiteral::True)BT::Grammar::BooleanLiteral::Truestatic
+
+ + + + diff --git a/df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html b/df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html new file mode 100644 index 000000000..be4dd359e --- /dev/null +++ b/df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html @@ -0,0 +1,143 @@ + + + + + + + +BehaviorTree: BT::Grammar::nested_expr Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::nested_expr Struct Reference
+
+
+
+Inheritance diagram for BT::Grammar::nested_expr:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::Grammar::nested_expr:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + +

+Static Public Attributes

+static constexpr auto whitespace = dsl::ascii::space | escaped_newline
 
+static constexpr auto rule = dsl::recurse<struct Expression>
 
+static constexpr auto value = lexy::forward<Ast::expr_ptr>
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.map b/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.map new file mode 100644 index 000000000..ff77e96ac --- /dev/null +++ b/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.md5 b/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.md5 new file mode 100644 index 000000000..c383fcfed --- /dev/null +++ b/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.md5 @@ -0,0 +1 @@ +9457a6d6c0f27fef94c19f9819522423 \ No newline at end of file diff --git a/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.png b/df/d9b/class_b_t_1_1_always_failure_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72a5a80ef8e39773e5f52d671c24d9988aa29fb8 GIT binary patch literal 12113 zcmch7bySr9yX}aG2r3{TASFr(NDI;>CDIZijYyYt4G1U-2m<1ubazR&lr%_5hafeS zbi;k-d)Dus`#Wdd|L#5LTH?$*^S+0r)%%6#s$2xUJm&8XCy67OeSMKh zs|QQaR!QZ`$B>kPWwkqZ?-E2;hk8EyTJ3v$58g;-Ug^>cd_h&KUr$8-VqI{3x9v@p z_KO#(l?oqO2q`Gqe>Vko>&aXZbR@eiuc7!>r=N<#Qr_`Jrq#QZ;R0eRswXZkWt9qC z0u<<5$%%=+BA$CH+S=ypYERa~YmYW>rz^#EBuND#3QI~-jhf!p9Lxp>ynU;tq9WcK zFVbmkWn|QluUGw8Z;#W4HOI~1GrL|;eSN*4n6Pl{$B%?>uTrR`omzx5N_w9hIG}&! zb+Q)JNUEw5T_&JOb={b<9xwaw^QX$4J9h@1r#&}BR@c_tSMtgcDxbbh`+O@Y$#ohJ z97UZT@AEjLpVl2NP&%K%cs94UbGFV(vQVn!R9cq{yVbqhofdFNI3fE1G}G%^#kU&u*$q%fMUO z#f49=%E_odRbKnqv#jwf^TW3AyU)sPsjFQ#(q+SF($)(I{g#%@;ZE<9nRnJFV^mXQ zvN|^=Dw_gnk!@48o|`*6FAo0xW++otr4D0N49&8es%bymUfkT<d^XJ8N8e#1P zr)S91T`idpx89VNJ}9U^6U=*F{&Jz~%abqMZ)Ro;Wx{B>f8{-=;4%&vOHZCh?5+$i z=9NzwcYL~sOZRxqbGG??R}6nxVIk+)qR(02yLY&|q}Yay0av{CM$JOVx%^-jP)kkG zf~hRrwi6W%bFE=y1j$+j`pK|>$)5Y`$&QOXjYC5kSE&V`{#jf^Y42Aq#uJHa0eX(;2)!ALlwn z#BVo6a*dLYgjF+_P!hMV&fAmA=gf;PfN*(vSu$gQVz9z-QOU@{;@-D!-yZ4ceEqrX zG`m0TqlId1ZpIbYt$fvzDHu}Zw5-Mj&wFj5r|XoL=fn-2mEkrYrS)@VSGU6c^%owq z8?c?N3Ticto^x<;)YQ~;#Ih?J8YUhcXQ^i}v$6f@=AY)(mQ^KDN)Y`J8L3{`>Fwn; z=DJgZzZS&YS zMv7AUoTr|*&dKp4)ww>o_7R0@6+1svPLVw2WV?Uvg&P+et3vW-c_70CehT$he&w~d zwK2OMp2~z$wI@plYggDOHF&`W3+Wvp>m%~*>U!e*1s449@DL_F=k$fCDTUtR zoKmETrLReA=D* zWNH7oA5YR$g~Q#3h6bmNDQdW^%w}BX>C;cDHmsh>ZesZO_*@cbi6&xzTULCLw1#=U9_0~MAG|B?Xh*A%TjsOh=9S@>iFzbfY2_zrc;{A^7c~m)$5x{ zzQd|=c20<}cev7a>t9Qrgk~wS-H}|vzAB6G^N^=rvV<3v-i|d#B;3KaKi;r1PDo4BW& zQ<;5B;_Vpr4e_xRQwnG0OUr;(Um@&iwEM`CL z^r3N-4gNY~68^e4!fIVDJC@KG&UKpyJa1S3#HCL^1_p>_Wn~>vs%bh{Go}kH+4^2y zHI)j?zr(MVrlj0mUteEfm*Q?rA-5Dr|I91bFk(*Q9nkKuO|uT#$g88!d-G5hCF zGfd0{@kmC+k#DB>$NL+L%NYsmD~QLJf7C?+PRzy|-z1Ig0(j7qWZ%FFq;7kjl( z8`Jd(z=~5KD1fD!3oNI1#ANZq%-Cuq2&dA6Z z0H76gTKb-;n)3JWU&CGW5PC}i#ZE**@(9Gv@^rlz9Ua}Dg|kE3m(rzTJ-iO7J>A_5 ze0-YJNH)EyPp;G6!UX>3A9u4?+@> z=8tqzD5XjG<4_5^5wfzff=K+rY2??3c}601NeM6L zD@29M+AUjKTbTrvQtQ$F+fVnEQH#K71U~1-(*jOQ9|bvX-}cq3cFAgJ>+GCc9WBHhiv7~ldY^27}URVzPLIYAV|C}d=0kvsPSX2wdbtj9{; z#|gP+Z<9(lOij`FYUF5Ql*cVzbKl@#{5Nmjyf8C!Jl?ZO(ZBK|l)7`aC0OBv4wtUN zVGhR`J;)VpkfB5k+JaE>V`QWWr;H|vbZv*pleI7&#egH^+ITr;qok&$;z@a*zfUS+ z3JOa8S>L%cF@epz;H=fx%bAvzFmEELIN$YwrSf(x)(2B_UG#f!F~aq z%@Hl;BMP(fqp8Us)YS|ep)>_lG>EN>8_%cfyszNl8N(jkSshi6JMR(NAf%xQ1%2^> zl7As3Otf)&IziO?2;tiLr=WK4mS9|{$1b|aumNkg17F2xEv&dzbWmSk-_6701`$zG zT{F(*%RCOV%{OGn-d>};rJM3LNSS0~@~oCo@oTg1g^LGpTHl3)fNBzL=Hf6Yd`DD8W#xsxT|B*?o*&Px zhM#;ChvP7xml5{s|)AL@~zIR;M1%dQ@94!4u2tSt;*C57)eA$&3nTpn3*MH-e zoPtmYU%xKZ{XBdRSUy^XJXG?x4^v*ijH%-vSY9)?b`k45Jt-Vz7t z@B_&-cCl_hE|d%%E=8ywk;F$=YnbWlcl`4CJv3lc*fEv|*V+o7$SN%jiYm<6s(E;h_0WOz%{lIu%ERNazt5V~%nj1dRt zEV(~uZ!+A$S%sgB?a#^Kk&FP??W6JDw)KY>%o%!48|nB`tIo;xFHCut3+8I~7$9f!9bz7Gwh z*-5lv*;T~ysI7|(4({9*6%~!L(C10ZdsF3mjU-VX>2 z)GDi_k6IZv@X2$^oR9wB)iq{-zkExrhWi0$98sHXACuUnkVw&>Wc$6n{TcRaMmx8j-I+eyCot^VsC%JO1;F zJ#i-AeJ>2=XoW$Qy9t%Yg-lr!s5MBWjgEGf)2@q!QVB@f+j9b0@>=u<0H``F_E68P z$6N|ZE_~5`0}BhQu)I72bP+>-X-_nl|9mG3MVYvDbm5`>3=yIz(3Z1WZW zJ&;oYZ{GY~Sa=&4c)6hNh^5?ilBKlZTRgs}rzeSY!`RqYUtdJs*-@`u8ap%dZDC<5 zS65f`U{(`8M~yfrnY1JROT__#Vqyt!9}^1;c@-6vDC^?F!jC{io9LW^8-#@7P{$lB z#Mlka3kV2cU%ot$C~+~ATIdHy{fVTS+6}05E$w>~#KH*u1RNJWjhw;SyDfY%Tl$qp zdGFr6T)pbgZEbRAryD+$x#h4jW!9sTppbfcdY&YRP8zyH2}vRFir%hvS2OEaRaI;_ zUoXXOy6!3kcfjD_)0e&R-5CkU?6P|IZAQ>PiGaVcqTXKtONnS{d&lkS^(=i%MaU{E zD{<-C+S`qOnDA z^O(rUy9kG~6L)7|lXyfk)ae0)l57Tbx*(!)YxN8Ai`_Pj`*NT0fFJPX%NHy{*lL<6 zyRi~^5RbQnal}sk`pYRO5by2n8N;Y8ryU#|WOj?KN4fhz*ZCirbw$(Zlv*+b5E>6< zYoM!IW@l#uf`fx4sDFr(wcuPOzx|o*S+eM7oAEMIt$f{kMe$sxly}+Ll|pF6^q(>& zL?L5pxWVFiqODC1N&@6-fLVg~P1qV>w4DAN4+U0hrS*BFdR8N=pi0sMYZw+rK*p~7 zeR!A*s@}&oVhjv#fCkB}r-z5ZAR+PJotT^)nzpgAY47Z0Ey@F8<+2&$WmJyuiWl*u z$xMJ1`^sx!{4?ERARWE2*qgvaN7s<(T@)Kj1wX!93HWr_8};X+aB%4#Jc#o1!$Rnk zSzr17j_58%rWqL-ftC&gjll()Z(?F1WPSQm7xziww{OXy`*)W5{JUfL#dh|3z=C^E z%mfYz4pZ#;L95sxv5cLa9lUJC$#*|}K;wjy*K$yfI(}l@E=A@8i^le!_Q*<)T^6{p zS0YkaL`1;ntVSZnvvmzr1MCYvoG__PWsBD=Yn2DRK4(qeOgl%wEO_?p87|$@bbY-? zX!5`^Ml+9;+tG@h9o&Ttca@SaSM4;$@0p~YwzizEE)}2>==EQjeDiV4GSbq0Alz@r z2G)5WZ;hHIsA_9x(rD;=u081Q@2~JWguw9Mqs>m$AF3#hEVzP{9q40Ubo zclrfP{QTu=r()bRE>CR0vI3u}ImWK;p6zs* zSP1-$#+DXo>ybhUT)JkkhNSC}rvW)RIpCv&A1tMW4LYOPp4|aSdz(a>XdqpYl`EZ{ zX3=?VOk-qx93PgAh=_;|4RN+ggp#Y{<;vJNIC!v;`zjsHHbDVqnpn~WJak=;CFeE&m}yX7m#Ll+x-?vn@DO=Y z(bp@DMAngmt7va;PY9=N_HZ$QtXK3nH=57pE1~2&m@V*B*wI5dOjOj=(&pxw2XkR! zu=mIbc+&F+1F@m_D^G$^_lj-#c=wxNSdT$a@M~sf=H;GDuNd8bSj1D6a$%_z58RYb+Rr--zhsT=#qycYD+tFwO-aY5ZBq*cvi|;H$_`J>3jui)`TEg zSMcS!CH?a652NfjA4ch#M>d*q9Ea72+qj&aK~?z?`kBf4+|ORrEWPyvY?`-r#G&G} z*mzh9X*Z1)^5rp-tm}v0;_F#uMqCn^=;HXVAhZUtIkM|nwQnDE25ba)3fxZ(q?fXh zB(5V~$F16248J8#(%`s|oyGVui7)An2nVxZ6aD}e8+Hh9qUASgdqz zSyfiq_u#P};p#s!)IdvKB6;(9&gGrvkgn#3+fp`ICgs6=;@fzdtTh*A?tUzBUE)cS&iR`5hon|K>bLwHSB|h`RV%zUR{N&$!+JefP}#-8^4T{`TyVKO z0zYaAXTPRG%KcXp?Oy`hQwSg~>Mwf`B$X6KTSH0ffh>`_Dfg zC9bhhTS}|`(kQc0d{K1lL$}|t!rZa4kU!7Gjjes2_<;t!!Ufw;Rz>A!leJ{TV^SI# z{pGS(PyWpvR3NbV(-sb;YwLt*=8H^PkS3~t$m0{HmlVUtrk$UkM036doYY)K zep&>K4x!+AyBO~o3hBYnl8eG;Haa1p7&!Ym+aTR4y^md@hBQwOl;J~U`Ul(i?tlQ2 zuU>J}di|A%+BLNux`_r(R#R7hR%T5hi3`+&q4MrG_+-%{o_qlH^Dt(F^;FFln6Pgi zyOyQ3D3n&^cmj{vb^M!bGn1~GyVhz zvhMX_V&dp(L5lTL52wXlK9JqlElc`jo zU;7m-`K>Xlf(t)0lxg+7cQx?v@E&>}@fOr<;Z1vOUn?ssL-QGUEHmI-r;`Rxp+_zq=uC5|Nvd`O@5>g=m1K*v?aiNPlA!F<4b#=izt6#YdzkYoVzbpIM{2W$? zh=M{MmhkNC>`4sYHQ);F;~dMElG$I{P@h-u*5SS3+&KJKk@9_*yT%?Hg^V;iOI?3 z9zDW_3$=B0BBG<)z^WM912KnD<|P&bZy~!XvKnTWl#~ShATvbZ8t9Er#{L2db)4-D z4OKCiq?fSz7^z$D zrG6&y}cSP2jbgLVhJZ+cx0;)q5w3x^n3Q5?AhZ1Q=TG6w z?py2im2K10(}rVUqvYnoFMb+3s?|Pca)g-H5v-*YM$=L@Y~Tq@N@!(F~Okn<`!nIJ4Hl9Hvj%r89zTe z-pJLhjDXZ702`#8yoUPkTWqX%T1%BUtmLEPA$8BO&fT$ z6nxg?kXJ#__zA45eh^}i0V{yAka#Yw`gk%unfalRkRxD^8cJ4L8q`M*xT1sZP`??k zjugRk5wo)9yc$OhZPa#BQ&THo^YZWzL#&okuHFT}_xGI`I6A9g7OS){A*ZLOxPFA`1*jG?{EmRMD?>C1ZsT>jJ4`}C z^0$S|fYW7F+doAeY&naci5CFk6f4&*#Ky*g_vcZ0x(`_~nDse}gs|uCKsf=MGiCp` z{zly~JErmm#QJCEp?XGq<}k3er`eux>@5NeiTB!)-z~yevT)a^>|*Zh2ZL}(G+awS ztz*~-_7nN8mTuqsWN=Eszr_#&)TOh_%b;^38z{+NzkZEbCBS*8#dpO^q01l;z;B?! z!2~v~`DE1tuoQq}D5O=d=1-BVjF%U9G-_*l`ho~AcHPi_fP3lEC5EyGkmzo0ZJAG0 zaKSgiVF&_D_VV(gF&7J}tg7NR`EgY#_Ti@ZDaI}Z#;B>Sg(H5=0C||!@Y-am#vQ^i zcqn-os>Mhl9pnu6AlNQ=8aITNP$r3th-ii#{0|sdTjxIX*vW)4_MY=3lv10W9QEW~ zIZKaJap~44D)08h3fzSpof-C+Ho6RMV2WYC&(S^$T@()J!F&GhFr_y!7Hl-?^Jhj( z*6y(K>plR%l`B_fp#vaoFDg8o4vGkM+hb!W6=r7|{EcCWW_#jA`bQrGHp z03mZ+rxmrfkFb1lDlacT3;h5%olutFciEV_A4)4`>m(+LtNQdQJ@Wk2)d8HHq~Vno zNF=0XWZpIiLgY>g;CREr!XizSkJLSyxWy8GH)RGCcH`8PKJ4(Oi8MJGxIA>Zm z9@#h!r8$G2$$ez?`!>lDT_H=6ilI$jMgm1gHW5ZkXGv>ky{=P81zBVuIK7WonP1AE@XCOxWpDruD$Ros~@fwx9h%5!p2f@MIr-N zKQ}$Xk_1#cpikc?5PQR5 z=3jX_k1UrCqYl9%c>(OvtOa&y^#DT3l$4aqlR~}Ua-*Ob;)#K(;;U`u3hmdyUb;De z&svy6##P^?Qe9CIU2uen|2a6Gq!FSFN3o9H#0) z=0N6v@%c-4v=-ja`pYRQ&O^?LSaK4Kjf=~AUe1mHRU0b+=L`}}iXmksrRyjTgCCup z_>`0}fvinWPt$jTa`XUAE0VOs07sFTu+ajLD~#i z&Fw2+1cI<%`bh^m5b`FWrJ)?MAhjcukC~}ycx0p$*fN95At6^GKZ1@Dz<-FAhwk>n z=rA%bD0yaf)(=dCsywi4pfT%RVBqia`w0S$Z{hnOFS-03bR;Zd5~P0^8PV06uI=vK zIQcse^aC(&+B%dvcK~R$j_Z9AAWa5G;5y*FZk-ney$7%djb}+JueG^o~RUNJctUJ`1n5i zoXpYk+D=4+v?zWx|9GJ%E@uxF9i1tv3bEG{knT3Hwvee);-O@b+^8;IyeI%A z475d=fK#5f7Z)8Z=j6ou`SWL7Is`5Offm6Xvz}NZ=+k-l@S#1JLtftA*TxL$yeb<7 zX=I|_fVhkV76uBF0>c=}FX8dpYpb0JGWPx)Ee?!v{_PuvQGnwf=V_V4c|Af*;)7U)BgU z(coleDj}B;Fo{A&i_J`IZ1Tz|dCdu7s#2kkj6q)l2Gg`P-?=kI;W`u zFtwqsPVZU<6|p;+0#gP$>RnjaBGepdw!QuRHvkx52IOI7+}+(z<~e-mL`7*5A7x&! zovM+CxrIu?&CShzeL?_1BAsM4oDVZf<~uQ=3-#7xsN`Q)`}o4LQ9ZQBbY-#KzYouE zk`<=7sjQ=;Q|YZ41yMJclH=yAH1u^1Im0MA zUthdz@9LVNnWqC*zCXn1Ii1x`%Z)I@a>~k!FrVZ^wVua;zemACn4OEjHoCwe* z43IAw9;l8*S0#()G}exH{*x{t4}M?vcLv83Dnf>_>*Soi`%|7_u-fEZ_0B6d1><@Q zYxIQkF~37i1qnYzNO&+xD?PM>6Go;=0-t1PNhGRHfhYX&d@%!=%7h-|E28nSFV8ya3S z#k={zY;9p`@EbRh*{i*e`JjwJ4@C!)acn_d7X1DDcWx=mCkdoQ&};#68SS*$SI-9E z2l+g}r400YTt#!NF-$|<1WgzK`#AoGkf2N9O2DR>nwt7PsdXn#DG*v%V0a`qZ@yaY zXW0F71brJ(`6=Al)(5J>w!#1bnC=zm+PKTf`7^T&6rM43LZm6RwzQ~1<#I!cLRncE z{Ek7omQ(192#AUzh5ADy@D_LmC(s^;BSj!2Bm}!|wAz&eDmxWrmJLASF0eA>G&Mgr z{JjHZ764>1*aje}C9JL4u3x`CuP?w^*1L6Zd|d3jqKQeKVEMJ{k=~Unuoq%5_PWpc zzRw9%#V63R;dOqxf3k6Y#^Jg?aj#Sn>Jr$HcOUHbj+;_bQ7u6)Apj~9J9{YT=QpIR znuIrQ_~qr@hd@sFbY}o!K*xi>M#!^6GjM)#0<-5No=u3QfcKk6B2D3R&XBv6nw}mJ z9xeg63!sOwy#W4y78umuKzYCk2q`Y+fdWNiQ4hLEAm4z^sbzcwIvc7^Nf8zjb&@ym z>MKXb&D~uF0RakV=mfgWVDIhhY-(?pr^bW8@zvp$sXy^;D=RA?M~u0GF_3`n(m^AG zN^hO{KmZhm+0(#Q*Cf}_=pe}dTEl1;A>{zUz-`=&3k}6Xt?5vd;xN_y*l|BUn-H6X zC<<_*eRHn$9vfS#K|KgIi&OxY<=F0ibJ(7XWcpou^_I4JFlSXj)=%rgg@ za}#ymF+fh-+}uk5mq4|ozl?GLf1o~}3!@S+{`*R8ArL#LcPFhHCguyD%`HrCFjylC z?6O#(b7Wt>Oy8uv@$u}_$B*BY#ZCjDW$EgUi8v2G@0WgPvm%nj6rqqUQ%KNcec%L( z#1VB{1mT|gU!wPW+mDK}?efD@vt7=i6($O|R4GHDZ)KOV^C$r?Vuu;pH!pYT`Ts{B fI=w~r`NfCI*1Xtd?0wK9kC2yEdXz6|==Z+>%qA>6 literal 0 HcmV?d00001 diff --git a/df/d9f/class_b_t_1_1_entry_updated_action.html b/df/d9f/class_b_t_1_1_entry_updated_action.html new file mode 100644 index 000000000..2793f524a --- /dev/null +++ b/df/d9f/class_b_t_1_1_entry_updated_action.html @@ -0,0 +1,344 @@ + + + + + + + +BehaviorTree: BT::EntryUpdatedAction Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+ +

The EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since the last time. + More...

+ +

#include <updated_action.h>

+
+Inheritance diagram for BT::EntryUpdatedAction:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for BT::EntryUpdatedAction:
+
+
Collaboration graph
+ + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

EntryUpdatedAction (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::SyncActionNode
SyncActionNode (const std::string &name, const NodeConfig &config)
 
virtual NodeStatus executeTick () override
 throws if the derived class return RUNNING.
 
virtual void halt () override final
 You don't need to override this.
 
- Public Member Functions inherited from BT::ActionNodeBase
ActionNodeBase (const std::string &name, const NodeConfig &config)
 
virtual NodeType type () const override final
 
- Public Member Functions inherited from BT::LeafNode
LeafNode (const std::string &name, const NodeConfig &config)
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
+

Detailed Description

+

The EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since the last time.

+

SUCCESS if it was updated, since the last time it was checked, FAILURE if it doesn't exist or was not updated.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/da2/sequence__with__memory__node_8h_source.html b/df/da2/sequence__with__memory__node_8h_source.html new file mode 100644 index 000000000..bb1759a19 --- /dev/null +++ b/df/da2/sequence__with__memory__node_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls/sequence_with_memory_node.h Source File + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
sequence_with_memory_node.h
+
+
+
1/* Copyright (C) 2015-2018 Michele Colledanchise - All Rights Reserved
+
2 * Copyright (C) 2018-2020 Davide Faconti, Eurecat - All Rights Reserved
+
3*
+
4* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
+
5* to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
+
6* and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
7* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
8*
+
9* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+
10* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+
11* WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
12*/
+
13
+
14#pragma once
+
15
+
16#include "behaviortree_cpp/control_node.h"
+
17
+
18namespace BT
+
19{
+
20/**
+
21 * @brief The SequenceWithMemory is used to tick children in an ordered sequence.
+
22 * If any child returns RUNNING, previous children are not ticked again.
+
23 *
+
24 * - If all the children return SUCCESS, this node returns SUCCESS.
+
25 *
+
26 * - If a child returns RUNNING, this node returns RUNNING.
+
27 * Loop is NOT restarted, the same running child will be ticked again.
+
28 *
+
29 * - If a child returns FAILURE, stop the loop and return FAILURE.
+
30 * Loop is NOT restarted, the same running child will be ticked again.
+
31 *
+
32 */
+
33
+ +
35{
+
36public:
+
37 SequenceWithMemory(const std::string& name);
+
38
+
39 virtual ~SequenceWithMemory() override = default;
+
40
+
41 virtual void halt() override;
+
42
+
43private:
+
44 size_t current_child_idx_;
+
45 size_t skipped_count_ = 0;
+
46
+
47 virtual BT::NodeStatus tick() override;
+
48};
+
49
+
50} // namespace BT
+
Definition: control_node.h:22
+
The SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING,...
Definition: sequence_with_memory_node.h:35
+
virtual void halt() override
+
Definition: action_node.h:25
+
NodeStatus
Definition: basic_types.h:34
+
+
+ + + + diff --git a/df/da3/class_b_t_1_1_delay_node__coll__graph.map b/df/da3/class_b_t_1_1_delay_node__coll__graph.map new file mode 100644 index 000000000..b3fbbda3c --- /dev/null +++ b/df/da3/class_b_t_1_1_delay_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/df/da3/class_b_t_1_1_delay_node__coll__graph.md5 b/df/da3/class_b_t_1_1_delay_node__coll__graph.md5 new file mode 100644 index 000000000..3ae1ae4e0 --- /dev/null +++ b/df/da3/class_b_t_1_1_delay_node__coll__graph.md5 @@ -0,0 +1 @@ +aa4776ff81dfa575eeff168bc940dd3a \ No newline at end of file diff --git a/df/da3/class_b_t_1_1_delay_node__coll__graph.png b/df/da3/class_b_t_1_1_delay_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7d51aa1979b5acff6433164d31f88e786bc74c69 GIT binary patch literal 7247 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 + + + + + + +BehaviorTree: BT::details Namespace Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::details Namespace Reference
+
+
+ +

The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed according to the value of a blackboard entry. +More...

+ + + + +

+Classes

class  Semaphore
 
+ + + + + + +

+Functions

+template<typename T = AnyTypeAllowed, typename DefaultT = T>
std::pair< std::string, PortInfoPortWithDefault (PortDirection direction, StringView name, const DefaultT &default_value, StringView description)
 
+bool CheckStringEquality (const std::string &v1, const std::string &v2, const ScriptingEnumsRegistry *enums)
 
+

Detailed Description

+

The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed according to the value of a blackboard entry.

+

Note that the same behaviour can be achieved with multiple Sequences, Fallbacks and Conditions reading the blackboard, but switch is shorter and more readable.

+

Example usage:

+

<Switch3 variable="{var}" case_1="1" case_2="42" case_3="666" > </Switch3>

+

When the SwitchNode is executed (Switch3 is a node with 3 cases) the "variable" will be compared to the cases and execute the correct child or the default one (last).

+
+
+ + + + diff --git a/df/da8/namespace_b_t_1_1details.js b/df/da8/namespace_b_t_1_1details.js new file mode 100644 index 000000000..8fab84629 --- /dev/null +++ b/df/da8/namespace_b_t_1_1details.js @@ -0,0 +1,4 @@ +var namespace_b_t_1_1details = +[ + [ "Semaphore", "d9/d24/class_b_t_1_1details_1_1_semaphore.html", null ] +]; \ No newline at end of file diff --git a/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.map b/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.map new file mode 100644 index 000000000..b602502e8 --- /dev/null +++ b/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.md5 b/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.md5 new file mode 100644 index 000000000..1140d6999 --- /dev/null +++ b/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.md5 @@ -0,0 +1 @@ +fdfe4d83a3e6d5c6b69618271cf4cb83 \ No newline at end of file diff --git a/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.png b/df/daf/class_b_t_1_1_force_failure_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e236226d81d562ee52376b5490968add2417eaae GIT binary patch literal 6171 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 Hvkd+ZgY-e` literal 0 HcmV?d00001 diff --git a/df/daf/class_b_t_1_1_inverter_node__coll__graph.map b/df/daf/class_b_t_1_1_inverter_node__coll__graph.map new file mode 100644 index 000000000..1c18632a3 --- /dev/null +++ b/df/daf/class_b_t_1_1_inverter_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/df/daf/class_b_t_1_1_inverter_node__coll__graph.md5 b/df/daf/class_b_t_1_1_inverter_node__coll__graph.md5 new file mode 100644 index 000000000..7ec21817d --- /dev/null +++ b/df/daf/class_b_t_1_1_inverter_node__coll__graph.md5 @@ -0,0 +1 @@ +3c37dd1dd4fb5edfe9480701b02371f5 \ No newline at end of file diff --git a/df/daf/class_b_t_1_1_inverter_node__coll__graph.png b/df/daf/class_b_t_1_1_inverter_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..25838d179b33ace569b63c27aea035f71b89289d GIT binary patch literal 7102 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 b@$6cC?Py~Av7Ihhkb|fwXv$a0ng;zB{C?{@ literal 0 HcmV?d00001 diff --git a/df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html b/df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html new file mode 100644 index 000000000..29d1f3d2e --- /dev/null +++ b/df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html @@ -0,0 +1,122 @@ + + + + + + + +BehaviorTree: BT::Grammar::BooleanLiteral::True Struct Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::Grammar::BooleanLiteral::True Struct Reference
+
+
+ + + + + + +

+Static Public Attributes

+static constexpr auto rule = LEXY_LIT("true")
 
+static constexpr auto value = lexy::constant(1)
 
+
The documentation for this struct was generated from the following file: +
+
+ + + + diff --git a/df/db9/class_b_t_1_1_run_once_node__inherit__graph.map b/df/db9/class_b_t_1_1_run_once_node__inherit__graph.map new file mode 100644 index 000000000..3f8fff25b --- /dev/null +++ b/df/db9/class_b_t_1_1_run_once_node__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/df/db9/class_b_t_1_1_run_once_node__inherit__graph.md5 b/df/db9/class_b_t_1_1_run_once_node__inherit__graph.md5 new file mode 100644 index 000000000..35f7f72f7 --- /dev/null +++ b/df/db9/class_b_t_1_1_run_once_node__inherit__graph.md5 @@ -0,0 +1 @@ +7a8e5175cf0139c6a61686708c7af878 \ No newline at end of file diff --git a/df/db9/class_b_t_1_1_run_once_node__inherit__graph.png b/df/db9/class_b_t_1_1_run_once_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5b84154ec4a8d681b66ef8e719de1408d016aad2 GIT binary patch literal 6347 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 ayt)ea>U9>_K8F8JAmpT#rHY?C5Bx897Nctb literal 0 HcmV?d00001 diff --git a/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.map b/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.map new file mode 100644 index 000000000..eaf2d5573 --- /dev/null +++ b/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.md5 b/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.md5 new file mode 100644 index 000000000..081b77fce --- /dev/null +++ b/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.md5 @@ -0,0 +1 @@ +a22c0cf49df9e6995b7dfa571a1fc902 \ No newline at end of file diff --git a/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.png b/df/dbc/struct_b_t_1_1_grammar_1_1_boolean_literal__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..15dd4c51bb8f7fb344cc8b45217af3a9a3566435 GIT binary patch literal 5113 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 literal 0 HcmV?d00001 diff --git a/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.map b/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.map new file mode 100644 index 000000000..9f8a040c8 --- /dev/null +++ b/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.md5 b/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.md5 new file mode 100644 index 000000000..d2e6ceb1f --- /dev/null +++ b/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.md5 @@ -0,0 +1 @@ +75cec0f2a9cf03406ef1703ad7653876 \ No newline at end of file diff --git a/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.png b/df/dbd/class_b_t_1_1_simple_decorator_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..342921e3c60e73c820e434a9be9a9e53b33705ea GIT binary patch literal 7969 zcmch6bx@Syzwgq5l!SCCN|$s!48UkJS90^jpZ8GeI}xKG@frX(F& z`2zh>C^-r7>&5pt^o&oQ$nQPN_=qWIaJHK6@^fHdyam6&P1n5JKKgVaC`-3Q4=vk{ z`u+R&_*BnAi?j=tmXrUc|GBoe7==6@hh@4L=~hld9_ zTZhL@*4mNoAx^*gT*uOh3r(J`l+KLy9**goyDfF$D#X$%r3*Ph&TcOEl+@K-#;c5) zACeM7czAd$EG!_D65hOqhK7z))nOFo{-4vGn}4;M7#UH2{rYv)3JqMZr%)6AQd#*C zFK@hMZ!Dkts%k<)LTUNs#a2Zk3>KM{#W2(0QV?`|BXM)KOe^LQ5gLj)kRd7?NB=xk z+>0B8VKvaPPElT7Q%|oaS3b&nw`q;qA1VHB`!C{j{;{xdN?X7s2?K-r)_7U}PP(v* z_4UQEx3BME2L{oo;esAryC>HPtsI*?c&JP<&uWMB4SuVVV<4@k^M0zCVqa2IDHURMa2@C5bPqgOtB&}gl|!4X{lHrw|Se1=fIVO0I*Q+F$P#3Dh5@yW59!#5VfXt-e0+R<_w}hb&D8hLw)vmGb@$WL zOMdI-rm3W)^lt2R9C$u*3W|cGz;*%MD6uX)LPBd0C&<5l|0+E;wCMe|`GlON-?-1! zJIxr;z8(8opRZqGwtCBvC-U~+y_J;}$GPS)iQA)%5n8FhS!+M1sE1rjJv1(FKyDwR zzG!8LxP3swz)oE|zqlZI_)x*uSIlePhlNEgBip<^aP?%Xye0NzXJ$s%MrAk`T?<8v znXMQ{f3!W7_#>Q%^uYtS?jBE1#F2mlOkt+pDNVpGp*x*a)kVX2r_OV0Jcf$jni$l? zn>TMV-MCE}Usd^=nbEhkwb{ZxHZ(NIw`fIPUHP|cI;4iF)696n;W0Jy!^YmiIeS`!Rnyfz=Xs^u2mui z$&8i0l=Q(wA(weoJ-vqwbMMmS{p97bATDj^`RDc~+M8!w_L^v-o|{SMVX+Yre;30U zRzZK&IYdp4CLUdI8r4RCIKG|poEUBo3KH{J?*Kh6JXRiOCyu;~z`^+@3G! zV5ysof`XKU?ug8jYLqC3m_5S+(J6F3vO-@d3f461tPmU~3%NChhX%)-H z3kLm5CEuv&kbA=hB*aXm@xk|AhhfUy<6vfdVZem;pc4-_f?rcts?)BvumUDhW6s@q zF5AAehx`4rnQzMDVv{j6B~{hd;=LxF#HtBQu{_q=t1J<^!?5|42zGrZ=_IY7(Uyrpd8{=0;-5DQYK-L6r~uZe>NW^GwC) zbf^^wc1NlNH09BAA7ga2e9=k1{K_goXJ)!&5jr`B(N=w361x#YAKkA-l?`EP5^m zbXnb&*p-pO%JFQgg}RY75BlzvUG78Nh!7}L&nx>L>L-_A?ag`a*xm)}kU)egI6Or- zIV-10ow;7C5!GL8_-E6b-oqciXPU8c1TbK1EMp80sZF6XTn*+N19l3!_8PN<{uRc< zT&ezs!?>!KI+=1+=lLnIM?Fw?DUpgbJS%2tcdOG)rs>;FQ*)K4e#AD}i)Hv3p6vz? z@G5;%Pu|Zz!6g;NaU-0kCYv-<6@h`IEDNzyWY<}L)7UeTGbJI;taE@GL-0w6ZJ5!9 z4fAm3Az$7`tRyirij@fH?Z~iO5iLdkV^1DPdf)=ZFk#gxj5{t@Gyvg7Vog({31eWn z;as%ZxMMA9yp71KQ6}ICZj}ghvY;q=&lF>DL-3bKZ~FTEAX?Vbad*)p+7>f#M=G-2 zU_QIn@zKjy$5`c6f6T;*h0!LA4Cm=0uxDWggDXSs+rGb;k_V!(@nK8K^UThI`zZ45 zTVYT&!eRGKhJ$GvKLp&ag1lNoD6Gt-cd>WT{oluQTu?iG?Wjp5YzV|Q!yM45L!e!? zY!*mzcVq?2bQosyQQ+xe7{C9C-7_A%(LtBGYn+8&>hy2Y3j@xVnc|Pzik&2!+tc@G zjZsW{vJS_G{){CauM|T;?^?$XmlaJ9T_$zDcFZx;y%aMaeGmPztV z*AcBA?S61~4CQ4-M@g#M?8Gav6noWxC41o=Z9z+;>fcx|qa{Sx`40aU8bzI1PFoNb z3$|YjL@m6Yw%6YZwsV*(x4&rbkQJPEP%{r<%Xsckt6o~yCOFV|P&3WqBxM9-~z@y#*T zzzk&zO@3LBQH+oIOzEVStR)VHf~p_F{*o85)@&ihSu6C8NL9b)#>_ziYZmfGpnBlx z=iqf!D%UDEat;dZ2>;?6a~EMKtt5l3?yiBK79<;^zdkN!&d2F<-VpP<9Ce~72UP1X3E#U7b% zENK0a&XS?`sPPhwEp7#t!SI-&0bYQBkF&cKryuyf|!-uC}B=R9X z#i2_L`74sIr0()aP>rNtlkw)-e;tmk;&@-ByY&Wb0dkAuvGm*QVFP2hf!K%ud)2iV z?f2T1ZOq#5wN_<;i4vh31UhB-l=xQ$g3n3&i0~ZL3m_Ag(;S)I9%nUpm-T<@dv5U7 z(LH)S8a>bpZM!BnQcoBsEX9hX2xG6uYcS)2RAI!u2jHZMHc%L)Ljoh!Iq*GK)E0RLA#vJXrO!-l(z+`nnl7 zfsU}#$W_&U>sq~lb1ucGu=j}iZ{;-TK<#{@Hhj>pr;P`&E6Iq&&m{)F+W8Jw^Ym&y zsbfo^{_}OQ^3Ah#EIqd0wZnzd7M>^-MefJr*GWt>}Gvh#qw4}1y zpUltxb8}Rz+}XpLIsYnV#Hes1NQcNomEoCJ0mN&M!wm+cAJg0$ZNb+}!R(^4&A_=T zxnZt#eMCaM7EjQ4<^$W4V9f}{?84R2(V4>>m@B7IxQ~+np286VPe2jdJVtXv&opwU z*LW$N5xe^HyX5T^3QYli;HwzxQ|H~z=?hI^7Z-rO+G{Wn(Z!Da_s@;@#q@tEudS-Xm%+5gw#LNlE$A+q)4S zPTr0NxXcsr7Exz=7b#Jk|3EOY-pl_h6v`t^Ti)?m{U$^7H9C?IyUAYxO7|^4f7)#5 zm+1AxTsR?}vY{arq|B%;*SNtM`Sp4F?pzD1UwC2vU!uBDqjQ#IfB_(drq_TQ0p@;> zfWYc!JX16!A9~1l(FO)UKD&B)s$c)W{tyzvQ&N#58@{x$p`@invb($c@S260+4Tp3 zuz=z(eXatcpI@K*rAh@!V&D*dYivxt(JfvM-ieFw(Hbn(xg| zV#w8%W6)`Z^(|mYw37a*;NyeMl8VD$ELne7R{Vt}0Iy|!@+2%FVLFJe>EL90DrDI9 z-|>X`+CeWv!+Lw=P)-n`#`ZiyoQ;bMD)=!xJp2Oa6XXcslfV1>p-xlPc>~pGXlR?6 zUh`F{r(LA#h4N7k1w~9-g7T6s&eyWOWMyStpt5cqzv}Dh<=-5{1r-8HSNw^Tr5Ktn zWLT;VK27E}E$)e9r~o`k@)+DaeFg}jQS;jieZjZ?UJ8Q9e@RHNaOU9T)EOQg-rTBa z*Q>D^)RX;)uPG`jYJaxB$Sx*kL_qaSt{*0-Vr6X&n`i=bl`Q+>bgv>84%dD0;zeTb z!T!F6`zlg1Fffpvg{8NZGh0hrd&d`Fna%U&%ICO1>RKs=R#fXb3dwJOyg9}$Au+qV zHb`%0XJ>!9JEs)uKPa}w7fQadv5}OL0tlbQ#9=rQ!|K_=GJ)Czi-<@nP=?h$C~HWP z7CwzobeVC(Gq)wV-By&^((Xr+|=?lYjg6&2=H*^Z^ysuMu^rn3NO>b*XEC`wux8B_-+g z_4O}~w`}Hfr9fUF5+{?EoCcM_;4biA%MeguALbE$s4LXq#HIh_W=m^p1`ss|K%wpr z$r3HDu3FF2Orfqmu|wxVLc_yL*4J&v0Nq{L*(porG}PLwKHiZbq!au0XJmvXquhlk zH%W^_zg!2Dr7~L{;K%tNK71JMj-u$_$?`w^v^iM?*HSKule#fDKR++JPr;o!)A#$g zj-g?iva+%ksFLEs!k@E3fIE*hxR~c9X#vTDSJ?0o2GreXv*%WlR!aRo6&2O$Nq+3| z;$lv{%R)IJtw^?ngv98tM3${>8OP(yq@-`cn>n<{wMj=u9?zaVqb_YITGrW`YZ1PCjNRF$Qsahl&47Y}0#Yg}JIP-- z>kI8tey6)wj#5EmgEjok?C5`LY}Egw+Mm6-cV|=pAzQ`42(9xwbrOIp13=~g47y^{y?>K?r zmpGku2kHbP+s?BcIho{U?|0Bmu>rc-92gGpi<5(cq7gIq>2cH=vb@rI*fYRt89Y;158u3kxGA%!B4E9E@fbe}r$$Ht~awWC9li zzC=QDvbD3zT(cl3uYaqnur)!ejA@{}q(PIYOB{rD`x^)7yVSN_Y;r&jQ79iUVEeab zd~f8w^gYLEI$urKm6i_P94Uws^E+|OwAvEKp%QXTg$X$sg^UPZ#zjVI0cov^@H^GZ z3cM(imja_&cW0(S|GDpx#^=wUi$R<>%NpjNHMmUID%CkmsLg?~TMW`=f3!ZlYI*pD zL!aHn#f6-Tst6qeW9;wukg;>r+83>q0fOr4YGlCm(TIAn``Q3IGqc<=@SZ$(XAQyF zEoyRKgQcWN_*6Hq!W>4kWkQhpRn+2Y$IA@iD9*On~ZHVT}-4?ELiz(lm?VMiG2-%>6S9ik*m@t+rTf4bz#cjK7cKd(76J7?y zm+TU&+*3^WAJpW3LD`brp|Yw}r;o^$`_1;YBY;(RMIt|45hJ(fFzj~sUw>N2G`n-q zh6Q%^6yU=-=H!hqTETZF_{7#CsL(PiWA>2me}~G#XP5sdbp_=6>agEXbl5Wc?_^H% zAsk5F5-tfuD?Ej)NH<0Gcq6tRJS8D!$-$R^G@>~xFK@QzjJn)mzUr-xe9pZxzLMq9 z+rqYHa%Lnmqguy3Qa(DfG}|Nxg{PbPp9`O&4NrZ*`khVHNHMbbpRr5zuC_YKyND`wun;zyZ^6*{Ktg+pB;ezov%cS z1;Jf`t%4D)u)OR`Hu9&4ruQArP^_a^ju#i#=kKr1{9e51Y=faTuW*In!`_H|JIjE8 z06P6NUeT73qlzr^(6+Ez2?}nL4qJhzXyX`KWhyD$`mL-?8QnM6ms^=UYyaQWxI5Bz zt?S~8wyQ%GM4#;efcaEDOYHWWixSzMODLw?eCv|3-9EdXC8u$HG+Z$b{S`0e{_*k3 zY5VPSuQ^W&0EbAJV99q+0&ENpz0%6*ThLvTtv>tUcr60Qx2-g=nBf*4C#ekBp!_Wu z1Xk-qIVr})vH~j75a;&mcYvM54cjsU$JVMZ8I0jUFesE?y!hbL1k6#1=g)oqzQ@_# z^*cXY@z|YBv-#?St*)*P5aFeonh;Kxp{^7Qcyi#>?XRSmSAzfm2YG$2rD1->)XizS zb`bzFGbbm0$l|7ifn9yD4nHNn$Ht$qp&^aHiw%~RaV0gi)jpo~e_<46h5V)(8q)9H z3GrJaI|c`df-5U|J3Bj(TRbL>@$WHkp1J;&hI|dW@$o%cm$9~f3asF>%S(Qr!#BXn z>;_|&m5q&wojuZT4?zJPL2k`@FUMp^_#^;AMM6pWv+ENn&6PwUfHW@S`u#bt1x*tZ z)roS`G!eH)0Kh$yJv}{FU=HQ4k*R!SdBKQ{#OURcaHJWk_9l} ze>A!+@9*ztS60T~xv~HwA;9dUk_wanXRh*Ay~|mFde$oNvDW~nTmAX@F>nLh+ob@v zWfl^82pxH;s`?KYmHR&mWMIj{KX*VS_zq1e^;P?9cf5sRV3?tWMW#K57noUD9p5_Ems*wi#- zvInL)I8n&ozpsQGC+~3nQ)J}QlucG1Kr8@*q`(jbEFQT9$k_hR$8kedmWsf#HmG-` z;%VJSpP!%iyfANh#|3C{S8wm~%1Sq2M+Q|ESc4L%Xi<;jjfn~dfFvukP41XDI5XQe zfT)7-@d2dr_xGP{50dJQV_*SP1MC_WcXtPXIjyN&^=`*#ywvc=_Eb&(^3GgKN;pGc zDyRv3Yz*Ll25)#?0FrK4XHUK}T?Ypqt!kEJ=JxisShxX{$_9W7I2oVsku7ldBO)U~ z zW;8JwnVf+ErOiM_l>v*G7!0VQkz!qrj|4Oy!IlAVTGPxn)Zw9s_dX-w#8P+10OyaU z;{OQ1Dcuhm6chxBjErA$bP-}zkU?=hv3Ja~M z-~rTLHI?^$ZLI(x2>r_h^b)C{=|@Go_$cx3a*Yo@kPRmkG}v2-B_$^h1GSbFaAF9* z92gi_1*M}36Tk%!58%CN?W-Sb#j{esCM$$B@8_>yi=g8z=9)cK)1IwVU!EKvTP<~c z3f_ocZoj?e!NtYBTb6k2%_HVL?VXQJO-; z%hSCzpaH-T3CyXjC9Axt%gv9~hK>mI#L)CQR3P-$B0BXJtgNiOy}b=ulLfP)`h4iN z$F{=_VEJiYQ$Ty#CkKy?f*b(mHrW;+4wfzUyo^xI>(GgeU9gqPTtP=i9}6I43CxHwIRe>t`Rtu+}L zS*7o>y)`mb1}GUY0A7Ll0p#*{i@$bnQJKR;IglDPV2&yro9gK)*x9j#g@vug>oojW zK@gtUpQzj)^NR<|j`EgWvHy%d>zk|dV>R*M3WX1)B8kEvDF+qYw+IPTL?Iz0UKnYla zeb&FVwM4*eK`F0K)fD)Ym>K){h$^!IC~))id;)NSPW+t#=koIM4a?jj{sCw!BnJ-Q7CU(rKb1amx|X>O0fNePw_nW8X0+~y>F(i* zb%1r#89>keYO6k0PR?%t+kn@wwCTISRu-scVrqH-6b48MGF^CZ$(`8v`ffvZH~Oa? zD!_j4KSOWO!Ni1?M%ekEOVA|^EdQWo;X3wUxmWn?3=~TvIFkXwSCE3o>>F4o9_`Mh zgMfZ-MOME4;SJDss?LFeiHQkZzhZcKl!cWw0*K6ayR&wD3wjG~Zf>op0dZuO)Pg@b z2S0y}X2p+{!W#1o$$$%Q=!j&Yk7vOX@0;^ADlre%>&w%L7P6cW@D5M9u(YsP>Vcsu z2Gm_bU5Rlci1h?6bxTXe%x?}U5GurKFHinE?+C5T{hoNVxrdKCoFGUUA03UaIR5{3 h%6E%pxgR$S6l8>-YR1iD!Ok0^B(Ek{{^He#{{z3HtegM< literal 0 HcmV?d00001 diff --git a/df/dc2/class_b_t_1_1_consume_queue.html b/df/dc2/class_b_t_1_1_consume_queue.html new file mode 100644 index 000000000..88da36693 --- /dev/null +++ b/df/dc2/class_b_t_1_1_consume_queue.html @@ -0,0 +1,384 @@ + + + + + + + +BehaviorTree: BT::ConsumeQueue< T > Class Template Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::ConsumeQueue< T > Class Template Reference
+
+
+ +

#include <consume_queue.h>

+
+Inheritance diagram for BT::ConsumeQueue< T >:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for BT::ConsumeQueue< T >:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ConsumeQueue (const std::string &name, const NodeConfig &config)
 
NodeStatus tick () override
 Method to be implemented by the user.
 
- Public Member Functions inherited from BT::DecoratorNode
DecoratorNode (const std::string &name, const NodeConfig &config)
 
+void setChild (TreeNode *child)
 
+const TreeNodechild () const
 
+TreeNodechild ()
 
virtual void halt () override
 The method used to interrupt the execution of this node.
 
+void haltChild ()
 Same as resetChild()
 
virtual NodeType type () const override
 
NodeStatus executeTick () override
 The method that should be used to invoke tick() and setStatus();.
 
void resetChild ()
 
- Public Member Functions inherited from BT::TreeNode
 TreeNode (std::string name, NodeConfig config)
 TreeNode main constructor.
 
TreeNode (const TreeNode &other)=delete
 
+TreeNodeoperator= (const TreeNode &other)=delete
 
TreeNode (TreeNode &&other) noexcept
 
+TreeNodeoperator= (TreeNode &&other) noexcept
 
virtual BT::NodeStatus executeTick ()
 The method that should be used to invoke tick() and setStatus();.
 
+void haltNode ()
 
+bool isHalted () const
 
+NodeStatus status () const
 
+const std::string & name () const
 Name of the instance, not the type.
 
BT::NodeStatus waitValidStatus ()
 
+virtual NodeType type () const =0
 
StatusChangeSubscriber subscribeToStatusChange (StatusChangeCallback callback)
 subscribeToStatusChange is used to attach a callback to a status change. When StatusChangeSubscriber goes out of scope (it is a shared_ptr) the callback is unsubscribed automatically.
 
void setPreTickFunction (PreTickCallback callback)
 
void setPostTickFunction (PostTickCallback callback)
 
void setTickMonitorCallback (TickMonitorCallback callback)
 
uint16_t UID () const
 
const std::string & fullPath () const
 
+const std::string & registrationName () const
 registrationName is the ID used by BehaviorTreeFactory to create an instance.
 
const NodeConfigconfig () const
 
template<typename T >
Result getInput (const std::string &key, T &destination) const
 
template<typename T >
Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
 getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
 
template<typename T >
Expected< T > getInput (const std::string &key) const
 
template<typename T >
Expected< StampedValue< T > > getInputStamped (const std::string &key) const
 
template<typename T >
Result setOutput (const std::string &key, const T &value)
 setOutput modifies the content of an Output port
 
AnyPtrLocked getLockedPortContent (const std::string &key)
 getLockedPortContent should be used when:
 
+StringView getRawPortValue (const std::string &key) const
 
+void emitWakeUpSignal ()
 Notify that the tree should be ticked again()
 
+bool requiresWakeUp () const
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static PortsList providedPorts ()
 
- Static Public Member Functions inherited from BT::TreeNode
+static bool isBlackboardPointer (StringView str, StringView *stripped_pointer=nullptr)
 Check a string and return true if it matches the pattern: {...}.
 
+static StringView stripBlackboardPointer (StringView str)
 
+static Expected< StringView > getRemappedKey (StringView port_name, StringView remapped_port)
 
template<class DerivedT , typename... ExtraArgs>
static std::unique_ptr< TreeNodeInstantiate (const std::string &name, const NodeConfig &config, ExtraArgs... args)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from BT::TreeNode
+typedef std::shared_ptr< TreeNodePtr
 
+using StatusChangeSignal = Signal< TimePoint, const TreeNode &, NodeStatus, NodeStatus >
 
+using StatusChangeSubscriber = StatusChangeSignal::Subscriber
 
+using StatusChangeCallback = StatusChangeSignal::CallableFunction
 
+using PreTickCallback = std::function< NodeStatus(TreeNode &)>
 
+using PostTickCallback = std::function< NodeStatus(TreeNode &, NodeStatus)>
 
+using TickMonitorCallback = std::function< void(TreeNode &, NodeStatus, std::chrono::microseconds)>
 
- Protected Types inherited from BT::TreeNode
+using PreScripts = std::array< ScriptFunction, size_t(PreCond::COUNT_)>
 
+using PostScripts = std::array< ScriptFunction, size_t(PostCond::COUNT_)>
 
- Protected Member Functions inherited from BT::TreeNode
+NodeConfigconfig ()
 
virtual BT::NodeStatus tick ()=0
 Method to be implemented by the user.
 
+void resetStatus ()
 Set the status to IDLE.
 
+void setRegistrationID (StringView ID)
 
+void setWakeUpInstance (std::shared_ptr< WakeUpSignal > instance)
 
+void modifyPortsRemapping (const PortsRemapping &new_remapping)
 
+void setStatus (NodeStatus new_status)
 setStatus changes the status of the node. it will throw if you try to change the status to IDLE, because your parent node should do that, not the user!
 
+PreScripts & preConditionsScripts ()
 
+PostScripts & postConditionsScripts ()
 
+template<typename T >
parseString (const std::string &str) const
 
- Protected Attributes inherited from BT::DecoratorNode
+TreeNodechild_node_
 
+

Detailed Description

+
template<typename T>
+class BT::ConsumeQueue< T >

Execute the child node as long as the queue is not empty. At each iteration, an item of type T is popped from the "queue" and inserted in "popped_item".

+

An empty queue will return SUCCESS

+

Member Function Documentation

+ +

◆ tick()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
NodeStatus BT::ConsumeQueue< T >::tick ()
+
+inlineoverridevirtual
+
+ +

Method to be implemented by the user.

+ +

Implements BT::TreeNode.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/dc2/class_b_t_1_1_consume_queue.js b/df/dc2/class_b_t_1_1_consume_queue.js new file mode 100644 index 000000000..d5b00dae1 --- /dev/null +++ b/df/dc2/class_b_t_1_1_consume_queue.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_consume_queue = +[ + [ "tick", "df/dc2/class_b_t_1_1_consume_queue.html#ab19b8bfa150b60b6d9c726b96500cbd1", null ] +]; \ No newline at end of file diff --git a/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.map b/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.map new file mode 100644 index 000000000..f02f2f425 --- /dev/null +++ b/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.md5 b/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.md5 new file mode 100644 index 000000000..5cddad138 --- /dev/null +++ b/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.md5 @@ -0,0 +1 @@ +8a3e4bd707f58cfe989b18d7a6cb883a \ No newline at end of file diff --git a/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.png b/df/dd5/struct_b_t_1_1_ast_1_1_expr_assignment__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c396be60814733c6a8ff52a071abd4eefb5bda9d GIT binary patch literal 5120 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 + + + + + + +BehaviorTree: BT::SqliteLogger Class Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+ +
BT::SqliteLogger Class Reference
+
+
+ +

The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file). + More...

+ +

#include <bt_sqlite_logger.h>

+
+Inheritance diagram for BT::SqliteLogger:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for BT::SqliteLogger:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Public Types

+using ExtraCallback = std::function< std::string(Duration, const TreeNode &, NodeStatus, NodeStatus)>
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SqliteLogger (const Tree &tree, std::filesystem::path const &file, bool append=false)
 To correctly read this log with Groot2, you must use the suffix ".db3". Constructor will throw otherwise.
 
+void setAdditionalCallback (ExtraCallback func)
 
virtual void callback (Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status) override
 
+void execSqlStatement (std::string statement)
 
virtual void flush () override
 
- Public Member Functions inherited from BT::StatusChangeLogger
StatusChangeLogger (TreeNode *root_node)
 
StatusChangeLogger (const StatusChangeLogger &other)=delete
 
+StatusChangeLoggeroperator= (const StatusChangeLogger &other)=delete
 
StatusChangeLogger (StatusChangeLogger &&other)=default
 
+StatusChangeLoggeroperator= (StatusChangeLogger &&other)=default
 
+virtual void callback (BT::Duration timestamp, const TreeNode &node, NodeStatus prev_status, NodeStatus status)=0
 
+virtual void flush ()=0
 
+void setEnabled (bool enabled)
 
+void setTimestampType (TimestampType type)
 
+bool enabled () const
 
+bool showsTransitionToIdle () const
 
+void enableTransitionToIdle (bool enable)
 
+

Detailed Description

+

The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file).

+

SQL schema

+

CREATE TABLE IF NOT EXISTS Definitions ( session_id INTEGER PRIMARY KEY AUTOINCREMENT, date TEXT NOT NULL, xml_tree TEXT NOT NULL);

+

CREATE TABLE IF NOT EXISTS Nodes (" + session_id INTEGER NOT NULL, + fullpath VARCHAR, " node_uid INTEGER NOT NULL );

+

CREATE TABLE IF NOT EXISTS Transitions ( timestamp INTEGER PRIMARY KEY NOT NULL, session_id INTEGER NOT NULL, node_uid INTEGER NOT NULL, duration INTEGER, state INTEGER NOT NULL, extra_data VARCHAR );

+

You can append data to the same file; this allows you to store multiple experiments into the database. Yn that case, each recording has a unique session_id.

+

This is primarily meant to be used with Groot2, but the content of the tables is sufficiently self-explaining, and you can create your own tools to extract the information.

+

Constructor & Destructor Documentation

+ +

◆ SqliteLogger()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
BT::SqliteLogger::SqliteLogger (const Treetree,
std::filesystem::path const & file,
bool append = false 
)
+
+ +

To correctly read this log with Groot2, you must use the suffix ".db3". Constructor will throw otherwise.

+
Parameters
+ + + + +
treethe tree to log
filepathpath of the file where info will be stored
appendif true, add this recording to the database
+
+
+ +
+
+

Member Function Documentation

+ +

◆ callback()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void BT::SqliteLogger::callback (Duration timestamp,
const TreeNodenode,
NodeStatus prev_status,
NodeStatus status 
)
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void BT::SqliteLogger::flush ()
+
+overridevirtual
+
+ +

Implements BT::StatusChangeLogger.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/df/ddb/class_b_t_1_1_sqlite_logger.js b/df/ddb/class_b_t_1_1_sqlite_logger.js new file mode 100644 index 000000000..f1742daff --- /dev/null +++ b/df/ddb/class_b_t_1_1_sqlite_logger.js @@ -0,0 +1,4 @@ +var class_b_t_1_1_sqlite_logger = +[ + [ "SqliteLogger", "df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d", null ] +]; \ No newline at end of file diff --git a/df/dde/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix-members.html b/df/dde/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix-members.html new file mode 100644 index 000000000..6cf96a7cd --- /dev/null +++ b/df/dde/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix-members.html @@ -0,0 +1,109 @@ + + + + + + + +BehaviorTree: Member List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BT::Grammar::Real::invalid_suffix Member List
+
+
+ +

This is the complete list of members for BT::Grammar::Real::invalid_suffix, including all inherited members.

+ + +
name (defined in BT::Grammar::Real::invalid_suffix)BT::Grammar::Real::invalid_suffixstatic
+
+ + + + diff --git a/dir_0079e7ae641af117c6a457ee281e6635.html b/dir_0079e7ae641af117c6a457ee281e6635.html new file mode 100644 index 000000000..02ab41b40 --- /dev/null +++ b/dir_0079e7ae641af117c6a457ee281e6635.html @@ -0,0 +1,147 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/decorators Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
decorators Directory Reference
+
+
+
+Directory dependency graph for decorators:
+
+
include/behaviortree_cpp/decorators
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  consume_queue.h [code]
 
file  delay_node.h [code]
 
file  force_failure_node.h [code]
 
file  force_success_node.h [code]
 
file  inverter_node.h [code]
 
file  keep_running_until_failure_node.h [code]
 
file  loop_node.h [code]
 
file  repeat_node.h [code]
 
file  retry_node.h [code]
 
file  run_once_node.h [code]
 
file  script_precondition.h [code]
 
file  subtree_node.h [code]
 
file  timeout_node.h [code]
 
file  updated_decorator.h [code]
 
+
+
+ + + + diff --git a/dir_0079e7ae641af117c6a457ee281e6635.js b/dir_0079e7ae641af117c6a457ee281e6635.js new file mode 100644 index 000000000..396a17b87 --- /dev/null +++ b/dir_0079e7ae641af117c6a457ee281e6635.js @@ -0,0 +1,17 @@ +var dir_0079e7ae641af117c6a457ee281e6635 = +[ + [ "consume_queue.h", "d8/dff/consume__queue_8h_source.html", null ], + [ "delay_node.h", "d7/df1/delay__node_8h_source.html", null ], + [ "force_failure_node.h", "db/d0e/force__failure__node_8h_source.html", null ], + [ "force_success_node.h", "d2/dc1/force__success__node_8h_source.html", null ], + [ "inverter_node.h", "d0/d54/inverter__node_8h_source.html", null ], + [ "keep_running_until_failure_node.h", "d8/d5e/keep__running__until__failure__node_8h_source.html", null ], + [ "loop_node.h", "d8/d9e/loop__node_8h_source.html", null ], + [ "repeat_node.h", "d1/d4f/repeat__node_8h_source.html", null ], + [ "retry_node.h", "d0/d88/retry__node_8h_source.html", null ], + [ "run_once_node.h", "d6/dae/run__once__node_8h_source.html", null ], + [ "script_precondition.h", "d6/dc8/script__precondition_8h_source.html", null ], + [ "subtree_node.h", "da/d6d/subtree__node_8h_source.html", null ], + [ "timeout_node.h", "d2/dae/timeout__node_8h_source.html", null ], + [ "updated_decorator.h", "d7/d26/updated__decorator_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_0079e7ae641af117c6a457ee281e6635_dep.map b/dir_0079e7ae641af117c6a457ee281e6635_dep.map new file mode 100644 index 000000000..7b36724e1 --- /dev/null +++ b/dir_0079e7ae641af117c6a457ee281e6635_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_0079e7ae641af117c6a457ee281e6635_dep.md5 b/dir_0079e7ae641af117c6a457ee281e6635_dep.md5 new file mode 100644 index 000000000..5b9dfd20a --- /dev/null +++ b/dir_0079e7ae641af117c6a457ee281e6635_dep.md5 @@ -0,0 +1 @@ +75604a2f298289f38973b1d30875620a \ No newline at end of file diff --git a/dir_0079e7ae641af117c6a457ee281e6635_dep.png b/dir_0079e7ae641af117c6a457ee281e6635_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..8d69325f5abe067e07392a4a2ff6744ec36ff575 GIT binary patch literal 3300 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 literal 0 HcmV?d00001 diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef.html b/dir_1573ea42ce800d213ff17f25e5e834ef.html new file mode 100644 index 000000000..1ba9dee93 --- /dev/null +++ b/dir_1573ea42ce800d213ff17f25e5e834ef.html @@ -0,0 +1,141 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
utils Directory Reference
+
+
+
+Directory dependency graph for utils:
+
+
include/behaviortree_cpp/utils
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  convert_impl.hpp [code]
 
file  demangle_util.h [code]
 
file  locked_reference.hpp [code]
 
file  platform.hpp [code]
 
file  safe_any.hpp [code]
 
file  shared_library.h [code]
 
file  signal.h [code]
 
file  simple_string.hpp [code]
 
file  strcat.hpp [code]
 
file  timer_queue.h [code]
 
file  wakeup_signal.hpp [code]
 
+
+
+ + + + diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef.js b/dir_1573ea42ce800d213ff17f25e5e834ef.js new file mode 100644 index 000000000..885a158de --- /dev/null +++ b/dir_1573ea42ce800d213ff17f25e5e834ef.js @@ -0,0 +1,14 @@ +var dir_1573ea42ce800d213ff17f25e5e834ef = +[ + [ "convert_impl.hpp", "de/d78/convert__impl_8hpp_source.html", null ], + [ "demangle_util.h", "db/d57/demangle__util_8h_source.html", null ], + [ "locked_reference.hpp", "d4/dd1/locked__reference_8hpp_source.html", null ], + [ "platform.hpp", "d3/d60/platform_8hpp_source.html", null ], + [ "safe_any.hpp", "d4/d53/safe__any_8hpp_source.html", null ], + [ "shared_library.h", "d5/dd6/shared__library_8h_source.html", null ], + [ "signal.h", "d8/d39/signal_8h_source.html", null ], + [ "simple_string.hpp", "dd/d3d/simple__string_8hpp_source.html", null ], + [ "strcat.hpp", "d7/d3f/strcat_8hpp_source.html", null ], + [ "timer_queue.h", "d2/dbf/timer__queue_8h_source.html", null ], + [ "wakeup_signal.hpp", "d2/dd4/wakeup__signal_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef_dep.map b/dir_1573ea42ce800d213ff17f25e5e834ef_dep.map new file mode 100644 index 000000000..b5a4c1cf0 --- /dev/null +++ b/dir_1573ea42ce800d213ff17f25e5e834ef_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef_dep.md5 b/dir_1573ea42ce800d213ff17f25e5e834ef_dep.md5 new file mode 100644 index 000000000..f0b6673a5 --- /dev/null +++ b/dir_1573ea42ce800d213ff17f25e5e834ef_dep.md5 @@ -0,0 +1 @@ +c159e3fe3e46133ff2b4379197b117a6 \ No newline at end of file diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef_dep.png b/dir_1573ea42ce800d213ff17f25e5e834ef_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..a50a85264a1f29ca89c7b456e0a807fb4b420378 GIT binary patch literal 2590 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 R)qsKzWM*s)tu?$8^A7>K?o9vy literal 0 HcmV?d00001 diff --git a/dir_235a16759d8d8fc57a402b291db0fa77.html b/dir_235a16759d8d8fc57a402b291db0fa77.html new file mode 100644 index 000000000..f726b7321 --- /dev/null +++ b/dir_235a16759d8d8fc57a402b291db0fa77.html @@ -0,0 +1,125 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/scripting Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
scripting Directory Reference
+
+
+
+Directory dependency graph for scripting:
+
+
include/behaviortree_cpp/scripting
+ + + + +
+ + + + + + + + +

+Files

file  any_types.hpp [code]
 
file  operators.hpp [code]
 
file  script_parser.hpp [code]
 
+
+
+ + + + diff --git a/dir_235a16759d8d8fc57a402b291db0fa77.js b/dir_235a16759d8d8fc57a402b291db0fa77.js new file mode 100644 index 000000000..00ca1ab27 --- /dev/null +++ b/dir_235a16759d8d8fc57a402b291db0fa77.js @@ -0,0 +1,6 @@ +var dir_235a16759d8d8fc57a402b291db0fa77 = +[ + [ "any_types.hpp", "d9/d04/any__types_8hpp_source.html", null ], + [ "operators.hpp", "dd/dcd/operators_8hpp_source.html", null ], + [ "script_parser.hpp", "dc/d4e/script__parser_8hpp_source.html", null ] +]; \ No newline at end of file diff --git a/dir_235a16759d8d8fc57a402b291db0fa77_dep.map b/dir_235a16759d8d8fc57a402b291db0fa77_dep.map new file mode 100644 index 000000000..a998235a3 --- /dev/null +++ b/dir_235a16759d8d8fc57a402b291db0fa77_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_235a16759d8d8fc57a402b291db0fa77_dep.md5 b/dir_235a16759d8d8fc57a402b291db0fa77_dep.md5 new file mode 100644 index 000000000..c09887a8a --- /dev/null +++ b/dir_235a16759d8d8fc57a402b291db0fa77_dep.md5 @@ -0,0 +1 @@ +bb7d2805bf9b73c13545c26bd5d0ca53 \ No newline at end of file diff --git a/dir_235a16759d8d8fc57a402b291db0fa77_dep.png b/dir_235a16759d8d8fc57a402b291db0fa77_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..5afff8cdfa6cea0684ef9f2591ce2d92d02aa1e8 GIT binary patch literal 3186 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 literal 0 HcmV?d00001 diff --git a/dir_65bce70eeebcad5aa886bc98b14fc221.html b/dir_65bce70eeebcad5aa886bc98b14fc221.html new file mode 100644 index 000000000..c4369b098 --- /dev/null +++ b/dir_65bce70eeebcad5aa886bc98b14fc221.html @@ -0,0 +1,141 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/controls Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
controls Directory Reference
+
+
+
+Directory dependency graph for controls:
+
+
include/behaviortree_cpp/controls
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  fallback_node.h [code]
 
file  if_then_else_node.h [code]
 
file  manual_node.h [code]
 
file  parallel_all_node.h [code]
 
file  parallel_node.h [code]
 
file  reactive_fallback.h [code]
 
file  reactive_sequence.h [code]
 
file  sequence_node.h [code]
 
file  sequence_with_memory_node.h [code]
 
file  switch_node.h [code]
 
file  while_do_else_node.h [code]
 
+
+
+ + + + diff --git a/dir_65bce70eeebcad5aa886bc98b14fc221.js b/dir_65bce70eeebcad5aa886bc98b14fc221.js new file mode 100644 index 000000000..d7f2b4a21 --- /dev/null +++ b/dir_65bce70eeebcad5aa886bc98b14fc221.js @@ -0,0 +1,14 @@ +var dir_65bce70eeebcad5aa886bc98b14fc221 = +[ + [ "fallback_node.h", "d3/dbc/fallback__node_8h_source.html", null ], + [ "if_then_else_node.h", "d0/d5d/if__then__else__node_8h_source.html", null ], + [ "manual_node.h", "da/d76/manual__node_8h_source.html", null ], + [ "parallel_all_node.h", "d1/d31/parallel__all__node_8h_source.html", null ], + [ "parallel_node.h", "dd/dae/parallel__node_8h_source.html", null ], + [ "reactive_fallback.h", "d2/da9/reactive__fallback_8h_source.html", null ], + [ "reactive_sequence.h", "d2/dc8/reactive__sequence_8h_source.html", null ], + [ "sequence_node.h", "d0/dc6/sequence__node_8h_source.html", null ], + [ "sequence_with_memory_node.h", "df/da2/sequence__with__memory__node_8h_source.html", null ], + [ "switch_node.h", "d3/d2f/switch__node_8h_source.html", null ], + [ "while_do_else_node.h", "de/dfa/while__do__else__node_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_65bce70eeebcad5aa886bc98b14fc221_dep.map b/dir_65bce70eeebcad5aa886bc98b14fc221_dep.map new file mode 100644 index 000000000..16722e886 --- /dev/null +++ b/dir_65bce70eeebcad5aa886bc98b14fc221_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_65bce70eeebcad5aa886bc98b14fc221_dep.md5 b/dir_65bce70eeebcad5aa886bc98b14fc221_dep.md5 new file mode 100644 index 000000000..cbf0ca44f --- /dev/null +++ b/dir_65bce70eeebcad5aa886bc98b14fc221_dep.md5 @@ -0,0 +1 @@ +7a4a850bad1b944595a0a1df02785fbe \ No newline at end of file diff --git a/dir_65bce70eeebcad5aa886bc98b14fc221_dep.png b/dir_65bce70eeebcad5aa886bc98b14fc221_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc83c7bce00e7d189d4672c4241e63e6f01555e GIT binary patch literal 2975 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 e;|GPF((t!| + + + + + + +BehaviorTree: include/behaviortree_cpp Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
behaviortree_cpp Directory Reference
+
+
+
+Directory dependency graph for behaviortree_cpp:
+
+
include/behaviortree_cpp
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + + + +

+Directories

directory  actions
 
directory  controls
 
directory  decorators
 
directory  flatbuffers
 
directory  loggers
 
directory  scripting
 
directory  utils
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  action_node.h [code]
 
file  basic_types.h [code]
 
file  behavior_tree.h [code]
 
file  blackboard.h [code]
 
file  bt_factory.h [code]
 
file  bt_parser.h [code]
 
file  condition_node.h [code]
 
file  control_node.h [code]
 
file  decorator_node.h [code]
 
file  exceptions.h [code]
 
file  json_export.h [code]
 
file  leaf_node.h [code]
 
file  tree_node.h [code]
 
file  xml_parsing.h [code]
 
+
+
+ + + + diff --git a/dir_7bd192d5a3f968f9ea7d18b0796c3811.js b/dir_7bd192d5a3f968f9ea7d18b0796c3811.js new file mode 100644 index 000000000..79cc9a7af --- /dev/null +++ b/dir_7bd192d5a3f968f9ea7d18b0796c3811.js @@ -0,0 +1,24 @@ +var dir_7bd192d5a3f968f9ea7d18b0796c3811 = +[ + [ "actions", "dir_84e7dcb321defd2b6d86aae3d71dd2bc.html", "dir_84e7dcb321defd2b6d86aae3d71dd2bc" ], + [ "controls", "dir_65bce70eeebcad5aa886bc98b14fc221.html", "dir_65bce70eeebcad5aa886bc98b14fc221" ], + [ "decorators", "dir_0079e7ae641af117c6a457ee281e6635.html", "dir_0079e7ae641af117c6a457ee281e6635" ], + [ "flatbuffers", "dir_be504959e339b6de8c9618e774fdc689.html", "dir_be504959e339b6de8c9618e774fdc689" ], + [ "loggers", "dir_dbe048a79b774cd1d4dcb0e6934684ec.html", "dir_dbe048a79b774cd1d4dcb0e6934684ec" ], + [ "scripting", "dir_235a16759d8d8fc57a402b291db0fa77.html", "dir_235a16759d8d8fc57a402b291db0fa77" ], + [ "utils", "dir_1573ea42ce800d213ff17f25e5e834ef.html", "dir_1573ea42ce800d213ff17f25e5e834ef" ], + [ "action_node.h", "d7/d68/action__node_8h_source.html", null ], + [ "basic_types.h", "da/d1e/basic__types_8h_source.html", null ], + [ "behavior_tree.h", "d2/d9d/behavior__tree_8h_source.html", null ], + [ "blackboard.h", "d5/d71/blackboard_8h_source.html", null ], + [ "bt_factory.h", "db/d81/bt__factory_8h_source.html", null ], + [ "bt_parser.h", "db/d85/bt__parser_8h_source.html", null ], + [ "condition_node.h", "da/d52/condition__node_8h_source.html", null ], + [ "control_node.h", "d7/d10/control__node_8h_source.html", null ], + [ "decorator_node.h", "d3/db1/decorator__node_8h_source.html", null ], + [ "exceptions.h", "d4/d03/exceptions_8h_source.html", null ], + [ "json_export.h", "d2/d39/json__export_8h_source.html", null ], + [ "leaf_node.h", "db/d7e/leaf__node_8h_source.html", null ], + [ "tree_node.h", "d1/da6/tree__node_8h_source.html", null ], + [ "xml_parsing.h", "dd/d5c/xml__parsing_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.map b/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.map new file mode 100644 index 000000000..69ca443d4 --- /dev/null +++ b/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.map @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.md5 b/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.md5 new file mode 100644 index 000000000..7aea531b2 --- /dev/null +++ b/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.md5 @@ -0,0 +1 @@ +c2b78a2fb4bd2112803016ae69bae34a \ No newline at end of file diff --git a/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.png b/dir_7bd192d5a3f968f9ea7d18b0796c3811_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..acdd7c55d99b33c8a514d6dc4a3ab78218bf633c GIT binary patch literal 10146 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 literal 0 HcmV?d00001 diff --git a/dir_84e7dcb321defd2b6d86aae3d71dd2bc.html b/dir_84e7dcb321defd2b6d86aae3d71dd2bc.html new file mode 100644 index 000000000..6316b6808 --- /dev/null +++ b/dir_84e7dcb321defd2b6d86aae3d71dd2bc.html @@ -0,0 +1,139 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/actions Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
actions Directory Reference
+
+
+
+Directory dependency graph for actions:
+
+
include/behaviortree_cpp/actions
+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Files

file  always_failure_node.h [code]
 
file  always_success_node.h [code]
 
file  pop_from_queue.hpp [code]
 
file  script_condition.h [code]
 
file  script_node.h [code]
 
file  set_blackboard_node.h [code]
 
file  sleep_node.h [code]
 
file  test_node.h [code]
 
file  unset_blackboard_node.h [code]
 
file  updated_action.h [code]
 
+
+
+ + + + diff --git a/dir_84e7dcb321defd2b6d86aae3d71dd2bc.js b/dir_84e7dcb321defd2b6d86aae3d71dd2bc.js new file mode 100644 index 000000000..eb80d6d79 --- /dev/null +++ b/dir_84e7dcb321defd2b6d86aae3d71dd2bc.js @@ -0,0 +1,13 @@ +var dir_84e7dcb321defd2b6d86aae3d71dd2bc = +[ + [ "always_failure_node.h", "db/d10/always__failure__node_8h_source.html", null ], + [ "always_success_node.h", "dd/dc2/always__success__node_8h_source.html", null ], + [ "pop_from_queue.hpp", "db/d84/pop__from__queue_8hpp_source.html", null ], + [ "script_condition.h", "d4/dac/script__condition_8h_source.html", null ], + [ "script_node.h", "d3/d86/script__node_8h_source.html", null ], + [ "set_blackboard_node.h", "da/d65/set__blackboard__node_8h_source.html", null ], + [ "sleep_node.h", "d2/db6/sleep__node_8h_source.html", null ], + [ "test_node.h", "d6/dcc/test__node_8h_source.html", null ], + [ "unset_blackboard_node.h", "dc/d27/unset__blackboard__node_8h_source.html", null ], + [ "updated_action.h", "d6/d2e/updated__action_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.map b/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.map new file mode 100644 index 000000000..ce083516b --- /dev/null +++ b/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.md5 b/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.md5 new file mode 100644 index 000000000..c47d9b2df --- /dev/null +++ b/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.md5 @@ -0,0 +1 @@ +5cca26d8d2605e4400cba795a684463e \ No newline at end of file diff --git a/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.png b/dir_84e7dcb321defd2b6d86aae3d71dd2bc_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..88c5cf288c73175cc6865953f8132e076b6694af GIT binary patch literal 2669 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 literal 0 HcmV?d00001 diff --git a/dir_be504959e339b6de8c9618e774fdc689.html b/dir_be504959e339b6de8c9618e774fdc689.html new file mode 100644 index 000000000..5a0934d09 --- /dev/null +++ b/dir_be504959e339b6de8c9618e774fdc689.html @@ -0,0 +1,121 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/flatbuffers Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
flatbuffers Directory Reference
+
+
+
+Directory dependency graph for flatbuffers:
+
+
include/behaviortree_cpp/flatbuffers
+ + + + +
+ + + + +

+Files

file  bt_flatbuffer_helper.h [code]
 
+
+
+ + + + diff --git a/dir_be504959e339b6de8c9618e774fdc689.js b/dir_be504959e339b6de8c9618e774fdc689.js new file mode 100644 index 000000000..436926b47 --- /dev/null +++ b/dir_be504959e339b6de8c9618e774fdc689.js @@ -0,0 +1,4 @@ +var dir_be504959e339b6de8c9618e774fdc689 = +[ + [ "bt_flatbuffer_helper.h", "d5/d7a/bt__flatbuffer__helper_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_be504959e339b6de8c9618e774fdc689_dep.map b/dir_be504959e339b6de8c9618e774fdc689_dep.map new file mode 100644 index 000000000..daabc9ce1 --- /dev/null +++ b/dir_be504959e339b6de8c9618e774fdc689_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_be504959e339b6de8c9618e774fdc689_dep.md5 b/dir_be504959e339b6de8c9618e774fdc689_dep.md5 new file mode 100644 index 000000000..12f0e3f0b --- /dev/null +++ b/dir_be504959e339b6de8c9618e774fdc689_dep.md5 @@ -0,0 +1 @@ +6e0f2fe3f0daff7c0ba90a7dd14bbb0b \ No newline at end of file diff --git a/dir_be504959e339b6de8c9618e774fdc689_dep.png b/dir_be504959e339b6de8c9618e774fdc689_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..dbf1a472c5965c684c212ae2327ebcdfcb1f220c GIT binary patch literal 3207 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 + + + + + + +BehaviorTree: include Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  behaviortree_cpp
 
+
+
+ + + + diff --git a/dir_d44c64559bbebec7f509842c48db8b23.js b/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 000000000..72dceb482 --- /dev/null +++ b/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "behaviortree_cpp", "dir_7bd192d5a3f968f9ea7d18b0796c3811.html", "dir_7bd192d5a3f968f9ea7d18b0796c3811" ] +]; \ No newline at end of file diff --git a/dir_dbe048a79b774cd1d4dcb0e6934684ec.html b/dir_dbe048a79b774cd1d4dcb0e6934684ec.html new file mode 100644 index 000000000..52fac94a0 --- /dev/null +++ b/dir_dbe048a79b774cd1d4dcb0e6934684ec.html @@ -0,0 +1,135 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/loggers Directory Reference + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
loggers Directory Reference
+
+
+
+Directory dependency graph for loggers:
+
+
include/behaviortree_cpp/loggers
+ + + + +
+ + + + + + + + + + + + + + + + + + +

+Files

file  abstract_logger.h [code]
 
file  bt_cout_logger.h [code]
 
file  bt_file_logger_v2.h [code]
 
file  bt_minitrace_logger.h [code]
 
file  bt_observer.h [code]
 
file  bt_sqlite_logger.h [code]
 
file  groot2_protocol.h [code]
 
file  groot2_publisher.h [code]
 
+
+
+ + + + diff --git a/dir_dbe048a79b774cd1d4dcb0e6934684ec.js b/dir_dbe048a79b774cd1d4dcb0e6934684ec.js new file mode 100644 index 000000000..7cc24046b --- /dev/null +++ b/dir_dbe048a79b774cd1d4dcb0e6934684ec.js @@ -0,0 +1,11 @@ +var dir_dbe048a79b774cd1d4dcb0e6934684ec = +[ + [ "abstract_logger.h", "d1/dbb/abstract__logger_8h_source.html", null ], + [ "bt_cout_logger.h", "d3/d22/bt__cout__logger_8h_source.html", null ], + [ "bt_file_logger_v2.h", "d1/d0e/bt__file__logger__v2_8h_source.html", null ], + [ "bt_minitrace_logger.h", "d0/d55/bt__minitrace__logger_8h_source.html", null ], + [ "bt_observer.h", "d3/d96/bt__observer_8h_source.html", null ], + [ "bt_sqlite_logger.h", "da/d75/bt__sqlite__logger_8h_source.html", null ], + [ "groot2_protocol.h", "de/d79/groot2__protocol_8h_source.html", null ], + [ "groot2_publisher.h", "d8/d1a/groot2__publisher_8h_source.html", null ] +]; \ No newline at end of file diff --git a/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.map b/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.map new file mode 100644 index 000000000..8f3cb543a --- /dev/null +++ b/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.map @@ -0,0 +1,4 @@ + + + + diff --git a/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.md5 b/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.md5 new file mode 100644 index 000000000..3aa370388 --- /dev/null +++ b/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.md5 @@ -0,0 +1 @@ +cbc0d1abd663058adb1d4786590f86aa \ No newline at end of file diff --git a/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.png b/dir_dbe048a79b774cd1d4dcb0e6934684ec_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..47b99b3cc14ed41b84c362087e276af663e52370 GIT binary patch literal 3063 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 literal 0 HcmV?d00001 diff --git a/docd.png b/docd.png new file mode 100644 index 0000000000000000000000000000000000000000..d7c94fda9bf08ecc02c7190d968452b7a2dbf04b GIT binary patch literal 756 zcmV1wr-rhpn+wxm%q2)IkAYsr{iGq<}_z5JCD4J;FN?6Qh;@TCubdp(_XdD-^ zG_#)IP7_z6hKNdx5^+FGArwLWTWCG!j+oKji?U!hxA#d-ljgkN`+e^@-P+RWG{Bx= z2iQyYTtEf*o~ySWrIVW}HWHi0_hd4~$E6Jx1U`>Owo}EYJ1O>iZvS?!z8}B}QwLMA zC3Keqf1c}K@?C`X>68b(EUzYUYAS&OH^VPteZLPr{S&|nQvp@6W4GH-1U8!u&7l~A zx~RUSNH+>7@q38W6!BzirtjLFCzc|XGx)EF#G%^pWION*k@?vP<2O>|XkCD3ujl%1 z{55JSVkw{~HbX>iEZ2%yJ2eHj5Yh8OTpzs0A2;tZ^x!#5D+y-es{k1&0|Ns9-|+Xt ziGiTsZ8(^nUo#wdTpIDkb-Zp(3|A*FzW}GZ5SQD-r^R`&X@`26E3W|GyrwDIZjtQ& z$g5f8Sv=VgVtDien@J(!^BK+#l;s-LgP--p7C;7;E!ysXcXK6?+9D>_-B(?Wm(U zQbNm-5TyYxIU=rs0+)!ixqzhuxw(AqKc3?KKX32{D~Qibp*r0x&Wux5-9WCMMRi3U zTd6dOCQlj>a;gr;gLwRKulT&(m@^L{&HkSC(qH05HSSf$YEhynGvH zWNez``Z8FJXE+BSg=%ak{OR z+Nylcb{?evLYLuE1_HngYw0g%LC#=$a@?4~Tx>F9295Q>9UJ|_6v-KMw;!YZSgGj@ zR8fRov=hJ#QvsO@xw*{0%zH@OKVEUrsummary { + list-style-type: none; +} + +details > summary::-webkit-details-marker { + display: none; +} + +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; +} + +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; +} + +body { + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); +} + +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); +} + diff --git a/doxygen.svg b/doxygen.svg new file mode 100644 index 000000000..d42dad52d --- /dev/null +++ b/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/dynsections.js b/dynsections.js new file mode 100644 index 000000000..f579fbf3e --- /dev/null +++ b/dynsections.js @@ -0,0 +1,123 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); + $('table.directory tr'). + removeClass('odd').filter(':visible:odd').addClass('odd'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +BehaviorTree: File List + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  behaviortree_cpp
  actions
 always_failure_node.h
 always_success_node.h
 pop_from_queue.hpp
 script_condition.h
 script_node.h
 set_blackboard_node.h
 sleep_node.h
 test_node.h
 unset_blackboard_node.h
 updated_action.h
  controls
 fallback_node.h
 if_then_else_node.h
 manual_node.h
 parallel_all_node.h
 parallel_node.h
 reactive_fallback.h
 reactive_sequence.h
 sequence_node.h
 sequence_with_memory_node.h
 switch_node.h
 while_do_else_node.h
  decorators
 consume_queue.h
 delay_node.h
 force_failure_node.h
 force_success_node.h
 inverter_node.h
 keep_running_until_failure_node.h
 loop_node.h
 repeat_node.h
 retry_node.h
 run_once_node.h
 script_precondition.h
 subtree_node.h
 timeout_node.h
 updated_decorator.h
  flatbuffers
 bt_flatbuffer_helper.h
  loggers
 abstract_logger.h
 bt_cout_logger.h
 bt_file_logger_v2.h
 bt_minitrace_logger.h
 bt_observer.h
 bt_sqlite_logger.h
 groot2_protocol.h
 groot2_publisher.h
  scripting
 any_types.hpp
 operators.hpp
 script_parser.hpp
  utils
 convert_impl.hpp
 demangle_util.h
 locked_reference.hpp
 platform.hpp
 safe_any.hpp
 shared_library.h
 signal.h
 simple_string.hpp
 strcat.hpp
 timer_queue.h
 wakeup_signal.hpp
 action_node.h
 basic_types.h
 behavior_tree.h
 blackboard.h
 bt_factory.h
 bt_parser.h
 condition_node.h
 control_node.h
 decorator_node.h
 exceptions.h
 json_export.h
 leaf_node.h
 tree_node.h
 xml_parsing.h
+
+
+
+ + + + diff --git a/files_dup.js b/files_dup.js new file mode 100644 index 000000000..f1749d909 --- /dev/null +++ b/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/folderclosed.png b/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/functions.html b/functions.html new file mode 100644 index 000000000..74f5ab460 --- /dev/null +++ b/functions.html @@ -0,0 +1,275 @@ + + + + + + + +BehaviorTree: Class Members + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_enum.html b/functions_enum.html new file mode 100644 index 000000000..cfde28012 --- /dev/null +++ b/functions_enum.html @@ -0,0 +1,105 @@ + + + + + + + +BehaviorTree: Class Members - Enumerations + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_eval.html b/functions_eval.html new file mode 100644 index 000000000..aaa14be33 --- /dev/null +++ b/functions_eval.html @@ -0,0 +1,106 @@ + + + + + + + +BehaviorTree: Class Members - Enumerator + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_func.html b/functions_func.html new file mode 100644 index 000000000..fb7e4d81d --- /dev/null +++ b/functions_func.html @@ -0,0 +1,265 @@ + + + + + + + +BehaviorTree: Class Members - Functions + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+
+ + + + diff --git a/functions_type.html b/functions_type.html new file mode 100644 index 000000000..c49f4bc36 --- /dev/null +++ b/functions_type.html @@ -0,0 +1,105 @@ + + + + + + + +BehaviorTree: Class Members - Typedefs + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/functions_vars.html b/functions_vars.html new file mode 100644 index 000000000..71fef8d6a --- /dev/null +++ b/functions_vars.html @@ -0,0 +1,110 @@ + + + + + + + +BehaviorTree: Class Members - Variables + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
+
+ + + + diff --git a/graph_legend.html b/graph_legend.html new file mode 100644 index 000000000..138bf52f2 --- /dev/null +++ b/graph_legend.html @@ -0,0 +1,165 @@ + + + + + + + +BehaviorTree: Graph Legend + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/graph_legend.md5 b/graph_legend.md5 new file mode 100644 index 000000000..76a6899d6 --- /dev/null +++ b/graph_legend.md5 @@ -0,0 +1 @@ +68a0ee42d4e53d2fb70be66ebb5b1abe \ No newline at end of file diff --git a/graph_legend.png b/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..a235eb6ca74ecfcbd656597c72d38d2018ee5d46 GIT binary patch literal 22495 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 f$$vfcH}1PoCJO$(FUNwS13yz^D%;#5==n>) literal 0 HcmV?d00001 diff --git a/hierarchy.html b/hierarchy.html new file mode 100644 index 000000000..6852dc543 --- /dev/null +++ b/hierarchy.html @@ -0,0 +1,253 @@ + + + + + + + +BehaviorTree: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CBT::Any
 CBT::AnyTypeAllowed
 CBT::BehaviorTreeFactoryThe BehaviorTreeFactory is used to create instances of a TreeNode at run-time
 CBT::BlackboardThe Blackboard is the mechanism used by BehaviorTrees to exchange typed data
 Clexyd::char_class_base
 CBT::Grammar::_xid_start_character
 CBT::Blackboard::Entry
 CBT::Ast::EnvironmentUsed to encapsulate the information and states needed by the scripting language
 Cstd::exceptionSTL class
 CBT::BehaviorTreeException
 CBT::Grammar::Expression::expected_operand
 CBT::Ast::ExprBase
 CBT::Ast::ExprAssignment
 CBT::Ast::ExprBinaryArithmetic
 CBT::Ast::ExprComparison
 CBT::Ast::ExprIf
 CBT::Ast::ExprLiteral
 CBT::Ast::ExprName
 CBT::Ast::ExprUnaryArithmetic
 Clexy::expression_production
 CBT::Grammar::Expression
 CBT::Grammar::BooleanLiteral::False
 Cstd::false_type
 CBT::has_static_method_metadata< T, typename >
 CBT::has_static_method_providedPorts< T, typename >
 CBT::Monitor::Hook
 Clexy::dsl::infix_op_left
 CBT::Grammar::Expression::bit_and
 CBT::Grammar::Expression::bit_or
 CBT::Grammar::Expression::logical
 CBT::Grammar::Expression::math_product
 CBT::Grammar::Expression::math_sum
 CBT::Grammar::Expression::string_concat
 Clexy::dsl::infix_op_list
 CBT::Grammar::Expression::comparison
 Clexy::dsl::infix_op_single
 CBT::Grammar::Expression::assignment
 CBT::Grammar::Expression::conditional
 CBT::Grammar::Integer::integer
 CBT::Grammar::Integer::invalid_suffix
 CBT::Grammar::Real::invalid_suffix
 CBT::JsonExporter
 CBT::LockedPtr< T >The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object
 CBT::Grammar::Name
 CBT::NodeConfig
 CBT::TreeObserver::NodeStatistics
 CBT::ParserThe BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
 CBT::XMLParserThe XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
 Clexy::dsl::prefix_op
 CBT::Grammar::Expression::bit_prefix
 CBT::Grammar::Expression::math_prefix
 CBT::ProtectedQueue< T >
 CBT::Monitor::ReplyHeader
 CBT::Monitor::RequestHeader
 CBT::scoped_demangled_name
 CBT::details::Semaphore
 CBT::SharedLibrary
 CBT::Signal< CallableArgs >
 CSafeAny::SimpleString
 CBT::StampedValue< T >
 CBT::StatusChangeLogger
 CBT::FileLogger2The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency
 CBT::Groot2PublisherThe Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2
 CBT::MinitraceLogger
 CBT::SqliteLoggerThe SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file)
 CBT::StdCoutLoggerStdCoutLogger is a very simple logger that displays all the transitions on the console
 CBT::TreeObserverThe TreeObserver is used to collect statistics about which nodes are executed and their returned status
 CBT::Grammar::stmt
 CBT::Tree::Subtree
 CBT::TestNodeConfig
 CBT::TimerQueue< _Clock, _Duration >
 CBT::Timestamp
 Clexy::token_production
 CBT::Grammar::AnyValue
 CBT::Grammar::BooleanLiteral
 CBT::Grammar::Integer
 CBT::Grammar::Real
 CBT::Grammar::StringLiteral
 CBT::FileLogger2::Transition
 Clexy::transparent_production
 CBT::Grammar::nested_expr
 CBT::TreeStruct used to store a tree. If this object goes out of scope, the tree is destroyed
 CBT::TreeNodeAbstract base class for Behavior Tree Nodes
 CBT::ControlNode
 CBT::DecoratorNode
 CBT::LeafNode
 CBT::TreeNodeManifestThis information is used mostly by the XMLParser
 CBT::Grammar::BooleanLiteral::True
 Cstd::true_type
 CBT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >
 CBT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >
 CBT::TypeInfo
 CBT::PortInfo
 CBT::WakeUpSignal
+
+
+
+ + + + diff --git a/hierarchy.js b/hierarchy.js new file mode 100644 index 000000000..f26c9f23a --- /dev/null +++ b/hierarchy.js @@ -0,0 +1,170 @@ +var hierarchy = +[ + [ "BT::Any", "d7/df4/class_b_t_1_1_any.html", null ], + [ "BT::AnyTypeAllowed", "d4/df1/struct_b_t_1_1_any_type_allowed.html", null ], + [ "BT::BehaviorTreeFactory", "d6/dcd/class_b_t_1_1_behavior_tree_factory.html", null ], + [ "BT::Blackboard", "d0/d51/class_b_t_1_1_blackboard.html", null ], + [ "lexyd::char_class_base", null, [ + [ "BT::Grammar::_xid_start_character", "df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html", null ] + ] ], + [ "BT::Blackboard::Entry", "d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html", null ], + [ "BT::Ast::Environment", "d0/de8/struct_b_t_1_1_ast_1_1_environment.html", null ], + [ "std::exception", null, [ + [ "BT::BehaviorTreeException", "df/d93/class_b_t_1_1_behavior_tree_exception.html", [ + [ "BT::LogicError", "df/d4f/class_b_t_1_1_logic_error.html", null ], + [ "BT::RuntimeError", "da/d35/class_b_t_1_1_runtime_error.html", null ] + ] ] + ] ], + [ "BT::Grammar::Expression::expected_operand", "d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html", null ], + [ "BT::Ast::ExprBase", "db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html", [ + [ "BT::Ast::ExprAssignment", "db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html", null ], + [ "BT::Ast::ExprBinaryArithmetic", "da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html", null ], + [ "BT::Ast::ExprComparison", "d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html", null ], + [ "BT::Ast::ExprIf", "db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html", null ], + [ "BT::Ast::ExprLiteral", "dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html", null ], + [ "BT::Ast::ExprName", "d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html", null ], + [ "BT::Ast::ExprUnaryArithmetic", "de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html", null ] + ] ], + [ "lexy::expression_production", null, [ + [ "BT::Grammar::Expression", "d7/d86/struct_b_t_1_1_grammar_1_1_expression.html", null ] + ] ], + [ "BT::Grammar::BooleanLiteral::False", "d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html", null ], + [ "std::false_type", null, [ + [ "BT::has_static_method_metadata< T, typename >", "d1/da6/struct_b_t_1_1has__static__method__metadata.html", null ], + [ "BT::has_static_method_providedPorts< T, typename >", "d0/d56/struct_b_t_1_1has__static__method__provided_ports.html", null ] + ] ], + [ "BT::Monitor::Hook", "dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html", null ], + [ "lexy::dsl::infix_op_left", null, [ + [ "BT::Grammar::Expression::bit_and", "d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html", null ], + [ "BT::Grammar::Expression::bit_or", "da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html", null ], + [ "BT::Grammar::Expression::logical", "de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html", null ], + [ "BT::Grammar::Expression::math_product", "df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html", null ], + [ "BT::Grammar::Expression::math_sum", "d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html", null ], + [ "BT::Grammar::Expression::string_concat", "de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html", null ] + ] ], + [ "lexy::dsl::infix_op_list", null, [ + [ "BT::Grammar::Expression::comparison", "d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html", null ] + ] ], + [ "lexy::dsl::infix_op_single", null, [ + [ "BT::Grammar::Expression::assignment", "d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html", null ], + [ "BT::Grammar::Expression::conditional", "d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html", null ] + ] ], + [ "BT::Grammar::Integer::integer", "d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html", null ], + [ "BT::Grammar::Integer::invalid_suffix", "da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html", null ], + [ "BT::Grammar::Real::invalid_suffix", "db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html", null ], + [ "BT::JsonExporter", "d0/d64/class_b_t_1_1_json_exporter.html", null ], + [ "BT::LockedPtr< T >", "d4/d98/class_b_t_1_1_locked_ptr.html", null ], + [ "BT::Grammar::Name", "d7/d91/struct_b_t_1_1_grammar_1_1_name.html", null ], + [ "BT::NodeConfig", "dc/d26/struct_b_t_1_1_node_config.html", null ], + [ "BT::TreeObserver::NodeStatistics", "d7/d9d/struct_b_t_1_1_tree_observer_1_1_node_statistics.html", null ], + [ "BT::Parser", "de/da6/class_b_t_1_1_parser.html", [ + [ "BT::XMLParser", "d8/d05/class_b_t_1_1_x_m_l_parser.html", null ] + ] ], + [ "lexy::dsl::prefix_op", null, [ + [ "BT::Grammar::Expression::bit_prefix", "dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html", null ], + [ "BT::Grammar::Expression::math_prefix", "d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html", null ] + ] ], + [ "BT::ProtectedQueue< T >", "d6/dee/struct_b_t_1_1_protected_queue.html", null ], + [ "BT::Monitor::ReplyHeader", "dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html", null ], + [ "BT::Monitor::RequestHeader", "dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html", null ], + [ "BT::scoped_demangled_name", "d3/d8c/class_b_t_1_1scoped__demangled__name.html", null ], + [ "BT::details::Semaphore", "d9/d24/class_b_t_1_1details_1_1_semaphore.html", null ], + [ "BT::SharedLibrary", "d2/ddd/class_b_t_1_1_shared_library.html", null ], + [ "BT::Signal< CallableArgs >", "d1/d73/class_b_t_1_1_signal.html", null ], + [ "SafeAny::SimpleString", "de/d34/class_safe_any_1_1_simple_string.html", null ], + [ "BT::StampedValue< T >", "d6/dfa/struct_b_t_1_1_stamped_value.html", null ], + [ "BT::StatusChangeLogger", "d9/dbb/class_b_t_1_1_status_change_logger.html", [ + [ "BT::FileLogger2", "d2/d7b/class_b_t_1_1_file_logger2.html", null ], + [ "BT::Groot2Publisher", "da/df5/class_b_t_1_1_groot2_publisher.html", null ], + [ "BT::MinitraceLogger", "de/d4f/class_b_t_1_1_minitrace_logger.html", null ], + [ "BT::SqliteLogger", "df/ddb/class_b_t_1_1_sqlite_logger.html", null ], + [ "BT::StdCoutLogger", "d1/d52/class_b_t_1_1_std_cout_logger.html", null ], + [ "BT::TreeObserver", "d2/d2b/class_b_t_1_1_tree_observer.html", null ] + ] ], + [ "BT::Grammar::stmt", "d6/db1/struct_b_t_1_1_grammar_1_1stmt.html", null ], + [ "BT::Tree::Subtree", "d3/d23/struct_b_t_1_1_tree_1_1_subtree.html", null ], + [ "BT::TestNodeConfig", "d6/d58/struct_b_t_1_1_test_node_config.html", null ], + [ "BT::TimerQueue< _Clock, _Duration >", "df/d4c/class_b_t_1_1_timer_queue.html", null ], + [ "BT::Timestamp", "d0/d59/struct_b_t_1_1_timestamp.html", null ], + [ "lexy::token_production", null, [ + [ "BT::Grammar::AnyValue", "d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html", null ], + [ "BT::Grammar::BooleanLiteral", "d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html", null ], + [ "BT::Grammar::Integer", "dc/d75/struct_b_t_1_1_grammar_1_1_integer.html", null ], + [ "BT::Grammar::Real", "dc/d13/struct_b_t_1_1_grammar_1_1_real.html", null ], + [ "BT::Grammar::StringLiteral", "df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html", null ] + ] ], + [ "BT::FileLogger2::Transition", "dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html", null ], + [ "lexy::transparent_production", null, [ + [ "BT::Grammar::nested_expr", "df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html", null ] + ] ], + [ "BT::Tree", "d1/d79/class_b_t_1_1_tree.html", null ], + [ "BT::TreeNode", "da/d61/class_b_t_1_1_tree_node.html", [ + [ "BT::ControlNode", "d6/ddb/class_b_t_1_1_control_node.html", [ + [ "BT::FallbackNode", "dc/da6/class_b_t_1_1_fallback_node.html", null ], + [ "BT::IfThenElseNode", "d8/d08/class_b_t_1_1_if_then_else_node.html", null ], + [ "BT::ManualSelectorNode", "dc/d0b/class_b_t_1_1_manual_selector_node.html", null ], + [ "BT::ParallelAllNode", "d3/d02/class_b_t_1_1_parallel_all_node.html", null ], + [ "BT::ParallelNode", "d1/dee/class_b_t_1_1_parallel_node.html", null ], + [ "BT::ReactiveFallback", "dc/d04/class_b_t_1_1_reactive_fallback.html", null ], + [ "BT::ReactiveSequence", "de/d9f/class_b_t_1_1_reactive_sequence.html", null ], + [ "BT::SequenceNode", "d9/ddd/class_b_t_1_1_sequence_node.html", null ], + [ "BT::SequenceWithMemory", "de/d69/class_b_t_1_1_sequence_with_memory.html", null ], + [ "BT::SwitchNode< NUM_CASES >", "dc/dae/class_b_t_1_1_switch_node.html", null ], + [ "BT::WhileDoElseNode", "d7/d54/class_b_t_1_1_while_do_else_node.html", null ] + ] ], + [ "BT::DecoratorNode", "d1/de7/class_b_t_1_1_decorator_node.html", [ + [ "BT::ConsumeQueue< T >", "df/dc2/class_b_t_1_1_consume_queue.html", null ], + [ "BT::DelayNode", "d4/d56/class_b_t_1_1_delay_node.html", null ], + [ "BT::EntryUpdatedDecorator", "d1/d7b/class_b_t_1_1_entry_updated_decorator.html", null ], + [ "BT::ForceFailureNode", "d4/d8c/class_b_t_1_1_force_failure_node.html", null ], + [ "BT::ForceSuccessNode", "d7/db8/class_b_t_1_1_force_success_node.html", null ], + [ "BT::InverterNode", "d2/ded/class_b_t_1_1_inverter_node.html", null ], + [ "BT::KeepRunningUntilFailureNode", "de/d22/class_b_t_1_1_keep_running_until_failure_node.html", null ], + [ "BT::LoopNode< T >", "dd/d32/class_b_t_1_1_loop_node.html", null ], + [ "BT::PreconditionNode", "d7/dd5/class_b_t_1_1_precondition_node.html", null ], + [ "BT::RepeatNode", "d6/d78/class_b_t_1_1_repeat_node.html", null ], + [ "BT::RetryNode", "dd/de4/class_b_t_1_1_retry_node.html", [ + [ "BT::RetryNodeTypo", "d1/def/class_b_t_1_1_retry_node_typo.html", null ] + ] ], + [ "BT::RunOnceNode", "dd/dbd/class_b_t_1_1_run_once_node.html", null ], + [ "BT::SimpleDecoratorNode", "d3/d37/class_b_t_1_1_simple_decorator_node.html", null ], + [ "BT::SubTreeNode", "df/d34/class_b_t_1_1_sub_tree_node.html", null ], + [ "BT::TimeoutNode", "d4/d20/class_b_t_1_1_timeout_node.html", null ] + ] ], + [ "BT::LeafNode", "d1/de2/class_b_t_1_1_leaf_node.html", [ + [ "BT::ActionNodeBase", "d3/de2/class_b_t_1_1_action_node_base.html", [ + [ "BT::CoroActionNode", "d8/dd4/class_b_t_1_1_coro_action_node.html", null ], + [ "BT::StatefulActionNode", "d0/d1f/class_b_t_1_1_stateful_action_node.html", [ + [ "BT::SleepNode", "d9/d33/class_b_t_1_1_sleep_node.html", null ], + [ "BT::TestNode", "d5/d7f/class_b_t_1_1_test_node.html", null ] + ] ], + [ "BT::SyncActionNode", "da/d73/class_b_t_1_1_sync_action_node.html", [ + [ "BT::AlwaysFailureNode", "d0/d9c/class_b_t_1_1_always_failure_node.html", null ], + [ "BT::AlwaysSuccessNode", "dd/dce/class_b_t_1_1_always_success_node.html", null ], + [ "BT::EntryUpdatedAction", "df/d9f/class_b_t_1_1_entry_updated_action.html", null ], + [ "BT::PopFromQueue< T >", "d7/d3a/class_b_t_1_1_pop_from_queue.html", null ], + [ "BT::QueueSize< T >", "d9/d8c/class_b_t_1_1_queue_size.html", null ], + [ "BT::ScriptNode", "db/d0f/class_b_t_1_1_script_node.html", null ], + [ "BT::SetBlackboardNode", "d7/d4f/class_b_t_1_1_set_blackboard_node.html", null ], + [ "BT::SimpleActionNode", "d7/da7/class_b_t_1_1_simple_action_node.html", null ], + [ "BT::UnsetBlackboardNode", "d1/d77/class_b_t_1_1_unset_blackboard_node.html", null ] + ] ], + [ "BT::ThreadedAction", "d2/d61/class_b_t_1_1_threaded_action.html", null ] + ] ], + [ "BT::ConditionNode", "dc/dfc/class_b_t_1_1_condition_node.html", [ + [ "BT::ScriptCondition", "da/d26/class_b_t_1_1_script_condition.html", null ], + [ "BT::SimpleConditionNode", "dc/d49/class_b_t_1_1_simple_condition_node.html", null ] + ] ] + ] ] + ] ], + [ "BT::TreeNodeManifest", "dc/d6c/struct_b_t_1_1_tree_node_manifest.html", null ], + [ "BT::Grammar::BooleanLiteral::True", "df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html", null ], + [ "std::true_type", null, [ + [ "BT::has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >", "dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html", null ], + [ "BT::has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >", "d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html", null ] + ] ], + [ "BT::TypeInfo", "d0/d34/class_b_t_1_1_type_info.html", [ + [ "BT::PortInfo", "d8/d5e/class_b_t_1_1_port_info.html", null ] + ] ], + [ "BT::WakeUpSignal", "da/d2f/class_b_t_1_1_wake_up_signal.html", null ] +]; \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 000000000..a92db08c2 --- /dev/null +++ b/index.html @@ -0,0 +1,105 @@ + + + + + + + +BehaviorTree: Main Page + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
BehaviorTree Documentation
+
+
+
+
+ + + + diff --git a/inherit_graph_0.map b/inherit_graph_0.map new file mode 100644 index 000000000..642daea63 --- /dev/null +++ b/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_0.md5 b/inherit_graph_0.md5 new file mode 100644 index 000000000..ea24c83ff --- /dev/null +++ b/inherit_graph_0.md5 @@ -0,0 +1 @@ +72f6597186d32c5edacb1b963997b080 \ No newline at end of file diff --git a/inherit_graph_0.png b/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..361334c5959eb0f687aa59cf9c4d26aade84879f GIT binary patch literal 1223 zcmV;&1UUPNP)*tlVyNE`k-9X*9TAYbrQ50p{3)*ccio&Z`ui|uh2Wt84&`s0;-9!!0P1FG0 zL=8wdoxcaK*UQV7FTdO{B?YtD%!LaVu-ol?`t*sas;Y#0_w3ojlP6D-dQMMI4|nd| zp`)XN6DLk+QMx8*V&a=OZ!j8-csw3HfBsA`805^EGxYcOW4GJ6dGn^4d*j9p($mwq za^(sDk`(v8pAetVhY*6>w{QP`CIaN;l0f60ZXJ}}Mfq?<4s;X2SAS){igTWA^ zJ$m$rzP>&lK76=t4DkB(Yv$(W2!%ov6cn(qus}{uj=J8`(t^X`ARG=83Wdnc&84la z4U5G>S63I$pFhX%_pA9UD=VBmdzSn6?{nb5fi3mEEob8D>ME0ylN>yFFsb~RnHhq? zV8R%_yy$v79!w?^=gys@v$Hd1JroMzbUH~(OT+DUv$(j3!{Gp+tgMVcAi%`Lgqr{0 z!2_0;m$z)-y0~1fzgk;c#rJUf^l4!>n?-qfxj26OxX8@R6z9*M7au=h8@$BrZ0L0SL zk`O|O>gsCY^?KEHo6RQte*bs%dH3#J;c~hDS?if*U+1GokK*xoh(@DKO-<3>-j1Ru zT)upH)4djp1&hU!Fn;{_F_B1wnwlC_o12?saBwhYXcZI`sMnd9nEFJ@jx0kxQIt&KGmTLnIO+3mr^5nX4b8|D<+1cwpx3ja8NF)Nly?giA zzkk2FmYSN%vuDpRo6V}Wckf4pvy53~iwlncpqq4G+U@%BqTU*j+b+Y_1CSJdO zo$T!Fm + + diff --git a/inherit_graph_1.md5 b/inherit_graph_1.md5 new file mode 100644 index 000000000..7e0724051 --- /dev/null +++ b/inherit_graph_1.md5 @@ -0,0 +1 @@ +96bcaf7ba5df7cf909e0a9fe3895b3ec \ No newline at end of file diff --git a/inherit_graph_1.png b/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e00cfc3137a22372352ada7e9bc5c240f4acf1ed GIT binary patch literal 2270 zcmV<42qE{0P)Q{e zhwpW~$%8l?&fgpkC-=V#i{%eyCxCyxS4=6$3B+RYtVhH0=Mo+su2RqakK_aML9)y#*n<2Gh>VOxadEL)`B&22-3_5oh%aBh=wv>&Ab$fMKYomkjt;f*uS71F zqoSe$BO@a^nNMw(JriPMV^LLAH9jGa2MY@e1O^5|BoaX`m&4oJTdl92o*wSpxuex} z^7Hd?_Uu_CB_+Yb!$TLL>omTfVK#F69nncaK6~~IrlzKdii(0lp+IG2B{pu{h?0^L zh(sbJBqT6nj~_n{BO@amK71Gez~M~!ZeA@ZDJdW#oH=twXAh0X>n-g5c}x zi`3NADchT-+%!Q%NKa44jvYI&bLUQ6ym*nZm6eqtI5?P*v$L}y6bd1e$p8S&&CT%k z_J%^C&??^1(NUzProzX^2a%DHXliPjQLLJnl{4hGZ{P6l-8(E@x>T$2ZEbC+tgKWk z1LI%RM@2=!%*+hCcI`q&Muw8TrltnL!ND*zG(<#11U`NG1RozC0D!x@JJQqBm2Tdp zOP3&%$zWw=r8X{Y{Ay}yuy^lX=;`SpBqRjQ&CPIkcZXaq2LL1{CL$ࡈ_`}glh zad9yM0s>}~nhlhvB z+}xb5T)9Hs-QA?GuTQnLwT!*Dx0ehI45+!eS?kf_E?4P(m6eqd zkH@3l-d-XivbD9P>({T7TrMYLV`EB6N}|xvP$s{`#6%(@jq!GNb`qD%rRUF|GxnUE z9HslLEn#6{6dD@3V{-lJUXn(t^aqM2N*=96WeXqpziKefq?;>oSe|m&;TndD~ybcAUZl)X*`F+!RyzrVQp=#b#Cft zY-|LV%f;%|s~Me}n;R4g1>U}W3uk9%h(sckm6gH7!~_C?0DgXc*tBUA#>U1_US5uv zm>2*+Lqo%~@fsN!!O+kUD^{#vY_6`Z8e^OZIxEPDGvow=gM)~VkJqXoH6a#@k(`_i zdwY9E_weCEh{a;1hc;aUvVQ$~ELgAr`T6-MC@8@8?c2fU^EF;u8^4L|@Ozoh=fl|8 z7#t1}lFPY)Ry8d66`2N8{LotH0PX6%E5g9L!yym`au($dn% z$;pZI_4VoAy?ZKiQ5D~GevXcgBoGLwr>BRAh#ow6Ks+9g>g(%Cp-_;6g99ZdCNf*_ z$jAttK7E?xa=F&IO}Ays<#MvNwx(mpjxqKF2M&-xAfVCFQ6eIe$z;Uka>>TVhRVy! ziHImDD2QxrZE4GvEsUS0c;#|ASy@@p$&)9Eh-h?llmY_-b-HEitf|S%%VWA`Yinzi zl$0PnJzXo`>6#j`SPU;OFXqra0iVyus#U9I)Bx<;w-1etjj*$`gS)%C&in)d0hTXc z&TNm#$;ohVaDbkk9`f??P*hZeB}u3QPJR0=mYHvr?SW>ZrWL?RJ0m!^32_4SdNnTb=U zPQk&!0X8-^O5ORa@FOc^U0oeXBodNHBvesRK`&pvobsukpuWDI8X6jubkj98RaI5g z($b=GuExejs;jFbBBJW*YU=FlWNf3Oqa=|?XkcJ~(T$Cbk+roorKP2*%|%sw)A>!T z%zb@*R8vz!U0q!&=WT0iqw4Bv`ug=NqtiCG+S*$B`0*oSn=BKJuax!m_4MM!3zhf& z)vH%jU0uz{eSLi-kw~b!yIbpcCm0wQpxWA6l1imCJUmPiiG<{GxypIep>BoLNkRTD z+`fIA=FOYObhNtgn|xGY(T-W~vgbNpUS6oItVCQ~92PEIIO~2aKgJ(Zkfo)iv*P#k z>C+#Ymqj(~U;D7kDcFK!nNzR@$ug&43zB6{!4@RToI-7vt?vJ3Sy*P1DFsPH|6=?X s1z1>SmH*co3kwSi3kwSi3(HUOKWc6aj>apM0ssI207*qoM6N<$f`O+<_W%F@ literal 0 HcmV?d00001 diff --git a/inherit_graph_10.map b/inherit_graph_10.map new file mode 100644 index 000000000..9b134639c --- /dev/null +++ b/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_10.md5 b/inherit_graph_10.md5 new file mode 100644 index 000000000..8276a9132 --- /dev/null +++ b/inherit_graph_10.md5 @@ -0,0 +1 @@ +7736cd1da904fed8e185fb4c067aac7d \ No newline at end of file diff --git a/inherit_graph_10.png b/inherit_graph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3791d80d4b34cd15559133336b2f213aadae1eb4 GIT binary patch literal 2526 zcmY*bc{rQd9{!5jHI^zJrm1vcY?YvvT-7GF;2JxjQl%B9mL>>QN-LzPy=X11Hfm|B zQc94T+9#M$qmyf*&vTyVob!9ndEfW&hQ97n-lS5z466KC$s+pIOk&*rs*H#}%P_E6Ls*9CWIHnRy&&bG-1rCm1F;JOj zef##U>()i`ZYPmQd~UCHwm&IZT0-SuP;Fimu48SCl1zS>I+vB69{27Y!k2Q@c^fBa zZCu#Letd3uqE*C~a;PaX1lY#KV|s9Q?aa_wdp9?OZE{J;O(GFxW+o&cAfThCM{a6r z!nEh*4f)e`b%x)E7!ruwu5^`;dANu4SFgm_kF?M}KCnaz#lh24BG)!? zWrZjtBy>^x@oJ1N0^uDHK&`^}2mpq`ElaC%)ipIf;7Ju#Rp_uVz0F5){q-4Zsy)rY$w@H7N{DK9@8wIiz|r?ELAKuBCvlB; zQW6t|>+0%2OfMJ=c`O#YxiT%W&Ksui`Fv~&27}2(9O>rN*Vl*B+0NV}Kr;N>%uM0y z*W$|Um(FIYsH;DKn!41VFD@>QzIx3E&qtK@np(6|L4HMxUtPibmOHa9n?v!{0*64Ocleyr_%)tTAZ_L{&iErEf7oV$V|oHVHE*&m}-ct}!es%zQp zopr6-%aaKMD}&>QTdK^R zoGc_o!W(|~?}Y(z*2VYCV21#!V#khYqS{gM)2gavCXZ`tYdx^9oMA|$l6A3ce0==e z;-c#g;s~&~xVXFi@Qh6bxY!VhEc={dn*6j=QH9{oqTldh&3Qx=JBnpkk;AzI%X5{kB|PeE)(`D%!?I;oPHUnM+{+e{UzEsI*kV+SqI04OUP?L*rk!R)lak901(DeVa2p z>>C*wiHddVi!IeNG`!!PZ*U3*6Ce->71h;ktrUo=vax?bmkg1JH})m7;1@_V&>!42 zS$w{Zu!u-yzsQ9Fh4(E7rnJY9`|RF(mTV#!)b5d zLIMH;M8(9Kx7WA~T%7Ts-%k{Jcy8Bb_y(UJS5~GGJW|(Od!?QvRZviHGd%q1JFiR% zMZ~q-BjNpf@^Yz$v4MesIUY}5`Pq3E$MVNI#?8_39*bq6 z!}{yX7b=aWa`fm?(Vvi?#o|E&^id9a52vYTU!N@5sT#d zdgRFHXfL=_|HgoAlywxnOYew^sv~$wxw*&1B_t|i5AKZAM?f0y?6q`sh(1V4Qjw*e zl%5WeWAI0BdC(njzK%&;IDEMa@WU$VBRmC-Q6zr&r-DoPqj7uZw8YVd{Okz z)E!-UdHJt~!Jpcr8-ggwg+)8v9oG;#tW8Qvij=sx_$JZCCA$)Ry2=cLKaI#uZbaZb zu}az2hruW14rqaF&&ki9+FG6cYG}uMSl7~mVsIsfhlZq&9TWES^aMdnwo&Ca*LnH- zs^&tpqI}BY*oPz$$O&(Me^D@L4u07H-HKBaq~uD!Oa)D~|MTYwkaSiU4BWojEOQJD zz0b+PfmZd##?SBU$jFG$nwFMULPEmfSmp?*Mgnh0|2wBr&>&>&=n0)(CF}RMtU9~~ ze20dIY0l~l+?RuCwt_nrJFlw;1AfMRL{G{2PqZWe79sP;L8Y{Y*qoLHQ7|%feIeF{ zQ_qWZALc%>>SZ-IA0m-R9e@7WQX4W3Ch<}dM-jx7ZJkhEtrxw!DYLh?r*`g~<>kvy za5I-m(jEpE$WhJI)YLBGa3{X=c!d4kTV@s(E4(CybF9A7U%_A|cswaLH@9ne{Ea<@ zh&G)$V{FaxW|9OFanb{Ij&ty)FeYjmE_IOSv=97$% zcUBl#QSr>rD#8{R%lmg7{%`91{8HH3+FD|Ae7b4sOyeX}H{cWKh##>!U^VnlN%VJz bC_WH~sXpgyqHuN#EZ6{yxt$pu<$dozy(-zn literal 0 HcmV?d00001 diff --git a/inherit_graph_11.map b/inherit_graph_11.map new file mode 100644 index 000000000..70d3a3ae5 --- /dev/null +++ b/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_11.md5 b/inherit_graph_11.md5 new file mode 100644 index 000000000..3ffd5e56d --- /dev/null +++ b/inherit_graph_11.md5 @@ -0,0 +1 @@ +bfead3c73431975d16b83d2f50dad1a6 \ No newline at end of file diff --git a/inherit_graph_11.png b/inherit_graph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f58989d7881ec4a6ac9281909d32c0f60b035c53 GIT binary patch literal 3989 zcmZ8kc{G$^`ySiS$eJx%r3I5+BFdJ1OGw$rh-?!g6tbnP*%F1w+GG!z>_cPhYoQ_g z&Sc3ljNyCye&>9Dd^2a>_nbNBeV^yPuj{_9>xnWp(q@A3!XOX`ldg`23Ap3HPnH1+ zuEPJix4{jH)YsO49G`r%8w!&l5EeaM4K*|W3}VJJW79`__$GNOS58)W5zZ(vxTRbq zqq#9_30+*QzTMp->M%_-3{`=Ph!!ug5*T}LME}s*GIh7a*JqrdCKf)+bpaNs&c>GH z3=uG7twOf%Q>G>N=3j|Z!@l)BTIk&nTO9W``um=o5s<~$jF93v4GqVFTghu#Vq|Qr z&y2!jYi*uZM7_I)P$K;D<#~0AGUJdgKR#|&;ct^tO5dYXM~M>s?I__ zJUiIF8F;W_`^Q{q~K^w7|f{#9WMPc6)h9{A2EyFR*~! zHSF)oM|bbtql?m@R#8!T`SPWz7+1|}zB2xuS=%hs*f;yR_Cx{1-PNer*q6Dv4%+Ed z*_lZ~l9DV90efv*^Ie}tRxhM>vGMRkCJWy|Zq0S*7#PegmfAH54i67MsCMOqgv|2R ztGKIrc}ZU}{6HHJ5TK!O(wM!f$&Bm*EZcM51D+gk3jr-4kKDT#(sjc-*&@91s zbrt0rPPwG!0f>c#Nn|n&W4K z4D3;~)6>&wQubl0PMvQ>G0%74rPkl6A3b_>>B^NH42DPLaDzrrIWRIIfwenJrO8mH z=ziJb0cO*&uCA{1xEPo5)!YGRR$kudI6nC;zqm{#znSj$vZK{*+&_@gVEGHl9ofbr z3F+yKetv$%7L`!YyvKtDAt4Y@Igj=m{!pXB@Uk*VBoc{maXAG^=$h9tGSYH%yj)*j zU+($~K1v{bQ{Vzny9^cB6RKPw5FvF}SNP!25Y~&Inudl=P*5WBzNe?ulP6CSGBcU9 zwY7_F>bQD)dzp}%_4NrKataEdHIM(OA0JVAK9rfk0cL!tA~Se~k{|Qt=4RMSDdeL^ z_+!w^xQz|Z2No6=u3zW6{hAqfxc@IPEiJOzZ3Ic$m}X#RZi`^#rj_Y>Cmx=eDez9h zCi?3AQp8}ME@`c@Ps(jrto@-30C;NryEiIH8V`Du9;2_Xpr|M$CB^E!&EOU7AkZTzUs+jM;XELutfr@@H?_JNLm&{Ypa|vmG&3_ZQ|s&TxESu)A5mu>lq0Ah z**Q7XR8&-+et!69&a3?;R`Oz2-->b45KQ2{%r#!7$v1D_w7nCzl5%J}4YmQm+bUwr zMX|B5Ee+-~p6s==Q;(LOKAkgt(WxWpvbQp6isrfCM9`ki3K*6B{r$xFc$S@&Uoi_k z>Ds}^6u?|zK+SL134EQ=ZU7^Yz95i`xQ(Qdm@bHk-8fga4PfJU4 zLKzwui!G{NP!6tlq&d7s6MJwGIy`#^ug#0*7rWD> z!yn3={f@!(*G#^++Ao=+N7sY{qtreykoe+ge^Con8+@#6VQHD9{%ML_Whri9VR2Vi z_tgB{TtaoV+^y%^k>|=vORosI`o>1KkBz09n3_gKe$L4W17g!W0>k{)bklKJfiTCe4Wd7VXhk6a#nz7?96mxq|| zOcC!?R8nGm9I!KHQ|C(uajv%1xx@}>-k5F$v|xx(55-^#nIC3VRuFA&)tO?{hvS2DK9U-n+{`S+}vI^4Lsb$Qw#9pr^}j-)DejD z0BfkEq$G(%LbSX*<-gvr2Z5NNt2(4jqobqGvqwoi-*#?XC)P~9vMtjF0@TF6y|FQc z57=3uoBI6}X?;}vj@!f((macgPfSQan44U~m)o}@92~-j3h&&8r%*%q`T3`&rXUTr zlZeI$+_CkS($Y4J*KE1xw7Q0-CYC_p)s7eB6tfC>g=@TlJO0<6=B6Dq){~F^(9#Y_ zG`+C!YJA+feg27mKmcQ#VX{rpFW9@h9n{K1gOb9V+kt^MYkii568IE-L?8$-RHT)n zvV_#s*FZv$Lj{H>QuG7qRq3!(QCS%diU6Ip^SXki0zipE^JMd{=7XyLV81ef?Pe8|-)Q-W3rM2{A81`4(6F z!(cFo)!~xB$&;Q;Pg8Mob5~M4#EHIz3O-A$K(tgfjNvJtOG1;K}bk+HSZrfzCw1qg=ud0E*rpFVw3c)l&7GSb>g14;?a&AkYN!OEZgbE@AN zwu&QMc1dnS;YWY*_`gt7?qU7E@q8kMON?tebLd;X`aEw43ycaSU0^8@bdCn z`c=g3>gJZtFN+%-WGC+uTY>g%u9h|Bl$J6>!>K^q-M8(#7z^bhd>=oSaD4dCSW64) z=;SoGvpTX2OewCnr?0QDrA1xMPMSdT?WMo`!i{nEjJ+oEnj?$-KMpS?x{;7YKJon_g zs@=VNoG0rV8Zxonx@x}n_m4iyIpw^yHTPP-^^b@brkj_9z+!JxQZ(<~yT{b_(^alx zeoHH6qM(ffM)&8tw|4)1D=YnzZ4n98(2-;`>gm&`Zxa(Qh|F2#pw;WJIqoNVs_=#^ zN&YyK6<=5=4D_3%{pI-j(Q!cZZ8RDk79Tr0Aq;JO>02bqQzlqY%`kg*&1fJ>L{gF- z?}hPOx7AMHGFd7<`uhJVXTT_ySMDUCEIZ5c5Fz?7@TgG=NBVVCSY2H}GI3?a^~aAN zAV@U#_A<-7Kkew~2nkX0``e7gQUMTV7qvAs5HmlbJ{J|yY^<@(eUNjLdU5CvoV2B@ zOTRq1`Ua)Bk|h&Z?$pdonBcAF=izXeoSa;mlAi=9x}~)hSZmuG0k?O`aauI*4WL$5 zR;SO(&^A$a(|=cdDK7p2tkK@XgN2@+{^hGzGe;Eip}$qo&i3{XLbcoU`Z^0AAK&3t zmt;c6!zl%35HlnsBy{xjsM$_EWM^k*Wo3n&yb(;4i;D|!#^d$ihg3fz4uIIv(^Jy1 z3j&0wh)5)`MV-Q-0pYAb^^01uQ+6|%ich26-QAZCc2>7Rd`b!rr*XN)YikQnF^Lzv zC35j%xR0U$icl5hjzXcoejOB}V6oV_)m8nGQkz`BMPofZn1B*6i%6|E{JM31>s+Lv zq{huz{LtF(N;L3|=$IInpP%nKt#5Dt`vm!I$t z@6A-we%@f~`4~_(RnqPX2sebL;HIezkUK7=cA*OjUV$vzJ~8p}H1u{lC5Y|X&Q_`E zWlitTW^iiN8jr~Z^2*9e`|$8Pz;03_7>A({Dw_7TwpT`3%HsVOQuJJa8HY7u!|6>y zA7T!=Iy)Iu!)tzO86@Xi4#MGZv>|XfoU{pCu2Lc?UEYHo0-Tp?(r;(w9(8jQ=i`_% zt$ko*PDIk*x^Y0Lq6Z#}-YR&l)kS>;`_f&7>1yuOZ(Q-IN*i;Fo%k<65X9pE6Z zP0({>0P%jsw*%L_qv5saXjpf;JWE#a(G8#&!2iE_OinEAQretjnk3V~#Px6z0G=TE zX+3zr1AKL3Y2e~RM@RdG?)Uy%bEhEZMMY16N>wP^XPEgFLPkd)%q=c5_9kXz#CCTZ z+zceKP6qyC0+Qm?oAEp61xVGP1Tous9-wCZ%RV}WhB&}Js+;6PSxL$GCLPPc#f1gv zxpU{l>>By~)+aPU+A%M)MVV(<+t^6kx6lTXreF6vUo%FVJ^23Qa#&ax?Kz3+;gL4~ zLy|PuKaezLU>Vl+{%m749`gTEHPa7?o{HX|Z0_CD1bRKUvZ4oU@S=x@hvJht1~xXz z{$kcc2Z!50-VP5Xn+}t1-n>cb6U;Xe#o_VEAQ4(vStS=179#xIybq#220cG3AYcf( znfvipfQgwIM;RGR&fN608UTBaNJPC;uC_E(Q&T&6XE;4e!Ftp2#G2eUt=v!Fy%$Z^ zCmPUqvXrY3Sn5z~t01|**(H6$B~~3+Y-n+Du`|eF9DICTWI|duNF{VnA6Oj*vDI%y z_y+WkvQX~KPtLiyJ)37lL1!JYNjYasEG;`#IAw0Nw6rJ^>Vt0{e<_(Q>oi{mYQ#9f zQS<6PZlsr?&Qyx$%Ksc5KXs@pDJhX130OqE4=-8UT~$^$@xzCMmRS4$9$^3P9DArw ZQdx_P%yd){C4+M|L|4;Dqf{Lc_8)Kq!5;ts literal 0 HcmV?d00001 diff --git a/inherit_graph_12.map b/inherit_graph_12.map new file mode 100644 index 000000000..356d317a9 --- /dev/null +++ b/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_12.md5 b/inherit_graph_12.md5 new file mode 100644 index 000000000..d07d1c85e --- /dev/null +++ b/inherit_graph_12.md5 @@ -0,0 +1 @@ +2705d5a69c8115993085288d46916b13 \ No newline at end of file diff --git a/inherit_graph_12.png b/inherit_graph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..c16fdc2d14d7170b011e232e6d75cfee3783da6d GIT binary patch literal 2892 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 + + diff --git a/inherit_graph_13.md5 b/inherit_graph_13.md5 new file mode 100644 index 000000000..414ad880e --- /dev/null +++ b/inherit_graph_13.md5 @@ -0,0 +1 @@ +6fbfe5021e2f2bd8c0d51ca9df30eb1a \ No newline at end of file diff --git a/inherit_graph_13.png b/inherit_graph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..ffef428e5db51dce304b7f7c7a6f9dede7f1122b GIT binary patch literal 3350 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_14.map b/inherit_graph_14.map new file mode 100644 index 000000000..3dccaf42c --- /dev/null +++ b/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_14.md5 b/inherit_graph_14.md5 new file mode 100644 index 000000000..07dc7b0bb --- /dev/null +++ b/inherit_graph_14.md5 @@ -0,0 +1 @@ +90d4c268cc37a7cda0e91c2c904311b4 \ No newline at end of file diff --git a/inherit_graph_14.png b/inherit_graph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..dbab2451c3e7e34d2f18a20a43aa9368a628034b GIT binary patch literal 1683 zcmV;E25k9>P)3dtp)kvf0^LJAm@}bwNov$7Zu7Js|4eX0zGgbUK6TIZF@=MTJF^l1e!= zDXEl0lafj~G%2Z+v*6u#G-_&U(BI$xd%(0bh(sc&)oLgd3iy0JD3!_u`*OKlbaizt zI>+SXB<|h2hgYv&VRCX35{U#dnG7nG3S2HX5zAP1=JwrcwPM@0ZT@ZRRhXHXL0?}V4jeduj*bo}6be`@7Ju7@h6bdkr^9420RR{# z===L1!^6WUDJj8*4I7}-=^&9v@cHv+Jbn5Ut*xzSYimoyGM1ge!9n!&^q{7u2JP+b z{(7g=iR|p`C5$XS2}w!-$jZusTrLLyC=?1jfBqa#o;-n4sr1(a!20#;AruN(b#1rKJTgUcA7*efvWGZz7pH+VucHTU#3*J$i(Ri3t=H6`{Ji z8ay5^WDLc zm&0$!@_XOSW;2~85tQ_aNa;xtCi^W`qsc4OxVZw z?%lglRaJ%A*;$N^j-s)#5jL9*=g*&Cw69n!hFB~PSr!Nc006Jo3yDMm0LahJhs9!n z)9HlKXk?AGW5*6wd1z<|R;v|5LqnLFn!?!F7&dL%#A+jzO8u`_uU-v-K!B{QELPq8 zV?r!_B8ej~_Hg?$pFkkMwQJX4Hk(miULJHk(R=Xz{d@fU`4g8eU1E*FFbqC?_<*fj zw+6)!jij6@0pR=h@2Ib@k0>d_$;->bs#UAd)zyW9f&u_QW@aWbGcz$WGZWN4E$z>e zrlzJ)SXc|f_0M@Ko6H(jd=4Ko}emrD(#flZEudm0| zt5@N0I9UD0$H&8t>+yInK0c1Rx;m7WmSWegT_GO;NVZtx2)8eRI2;a|nwoIq#tnS= z@+I!M!^z3X!S?Oj(cj+>nM?+`T#llmBD{V378w~Cag7Zm@SW0bw_{*n0E7^@-ER1N zK0J8vAfmpD9q3Ia6L>rxPM$moKA#VXL;|nZi;0N|T)%#O!EtkPa&YkAK}e-iNTpJ^ z-EQRN<-zCk#lFxO#2QB=H#+kb7Z*b=m*er{$8pac4wuV?-EN0Qqrsg!cd&W$W{ixC zK&@6M~O-d@|(4?eN4oylbY literal 0 HcmV?d00001 diff --git a/inherit_graph_15.map b/inherit_graph_15.map new file mode 100644 index 000000000..28d1dcdc6 --- /dev/null +++ b/inherit_graph_15.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_15.md5 b/inherit_graph_15.md5 new file mode 100644 index 000000000..f5cefb304 --- /dev/null +++ b/inherit_graph_15.md5 @@ -0,0 +1 @@ +ca6b6fa641709530cd6312be31395adb \ No newline at end of file diff --git a/inherit_graph_15.png b/inherit_graph_15.png new file mode 100644 index 0000000000000000000000000000000000000000..b87f74a253cb7a00345dcda8588948dee972c2ae GIT binary patch literal 2906 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 + + diff --git a/inherit_graph_16.md5 b/inherit_graph_16.md5 new file mode 100644 index 000000000..2e297fb65 --- /dev/null +++ b/inherit_graph_16.md5 @@ -0,0 +1 @@ +960295b73c57ad2edb40ec8d1339410b \ No newline at end of file diff --git a/inherit_graph_16.png b/inherit_graph_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2376c6982863b1ed66461f7ac0fc62dc06861905 GIT binary patch literal 1597 zcmV-D2EzG?P)P_d#FR?l$L~ z^V-+W3kLUmc0QlI&*8m$?z#5@6bgkxp-?E4|2s@%K(E(J7=|fX4l$IKhe#yy*=#mP zcq~1#6T>hi48z{|5p}{z ziRp%hhOlwtMl?1y;>V94a5|l+s;WX?UmsK|6*!Iy^|e?m$j;7&*=z;?Fih0_=_p1< zMo?KQEd2a&vPb7K?eYuC6Zh_V(iL-McZ{r%#{8jvYH-x7#5S z{k|g5>-F&a{k(QfO%2>`H(V|kE?&Hd$B!Sw;c!4C5`kq|Xti3Dm6h>w)M_MWKexu*O2^()@Le~)e3wk6cx z>-ECvbjED^d_MH|_v7;A%RIx)A{L87$Ag1|&}y~F%*;enQxkUW+J*Z1dT<f= zE|=rbp+j&u9K0Np$po=jjI(FY!tHjWva%AFE?q)xZ7mKSJP4gmhyMQlMdc)-BT{?3 zdHM9|6DleyuzmY>oI7_8t5>gv$z%cm)Ya8t%a$!TeE2Xpj)PvWPfGV(byAMOU^sT> z%o(x}4jec@^7HeFQmG`RrKKb%Cx;wAew<8CPe=7Vdh{sK>2$o z#j>cJM07-Ik2fzKkB4MuXOnN=zJKy<~L9s*@;ItCbiGhVDp@ zrEGcKw{IUB8yhh*GlS95QCz!r4K|w%=g*&?H&-f^LMoNUY-eR<0Ra4dKUkIp0LbNX za2yAh%Z29VW?rq`yLa>2!^6X{TCEr!9!4M#z}VOr^78U{ePl9O=y?75^~lP~fM4Gj%w zX=&kYAd;o9un=q3tl{l&H*emI^73*h6pE<+>FK}!M}a^9B_$;wgurMt!eX(Yy1E+Q zzklcDL~dph+1xB7Cs7^Y+7sdC&6^k+8iL7W!oa`)_Uze%pFe-b)w9sCCNdWbWy$W- zc|0C$*svj?zFl2iIC0`c%=W5PtI*cghW7S$^!E1h^2W!<9`eM{8>WDWld3kwgYimP8Lj$&M-HJDF-k`a; z896yQ0Df&;nwpw$|Nec**wTZG={(H5l=hm%Ty!Ywo zV=#)~P}5NahnkKeIMj3$!J($32o5zJMR2I;D1t*xM-iMkpGX*uMj>@j{vx7GM+kWV vK(h>5C@T<=NaR~?4HOE6LZMJ7l+^Pt$1P@{BG);H00000NkvXXu0mjfF`*4; literal 0 HcmV?d00001 diff --git a/inherit_graph_17.map b/inherit_graph_17.map new file mode 100644 index 000000000..3155c4c19 --- /dev/null +++ b/inherit_graph_17.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_17.md5 b/inherit_graph_17.md5 new file mode 100644 index 000000000..f8476f65c --- /dev/null +++ b/inherit_graph_17.md5 @@ -0,0 +1 @@ +f7aaecef755f929447dbc65cf2b25ef6 \ No newline at end of file diff --git a/inherit_graph_17.png b/inherit_graph_17.png new file mode 100644 index 0000000000000000000000000000000000000000..0d88b9423e3dfafee12d76c6feac185111c27f32 GIT binary patch literal 2035 zcmV!lU*3c|M#4tX1P*{=@d0>!(Jwenvc>%O!vWLQP``R zIyFVpLPHE|3Y8i`pClDEFpa0AqOu_DLw<;+TTP>UA+#(LEo`D$sd=6c54+iXdAv1E zdpJKB>|E!Z>-?|X*Uq`_djlvG3WY+UP*y+8bc0f<6fq3**GhPH5Qm|*w9?0eL6*YM zsMTu7<#IfD@Bm?9VNj`5?AWts&%(yW201x7004%W@mz3L|KsE1OCgohT83DRad&tB zE$h#QR;xu|VBm_aZ(vE11pq`M5kf*j003cOVQ6e@#KVUV5gs1S+5y19!2tq+z{FNp zSBHj%2GrKp&f1=iTCK*FD_1Z$I0zpfALQiZVBNZP002S=Dk>__*w_e$VIY^w5g#AV z&Q&Uvh>D7WPN#!Lqk&K;#Oc$g;o{;lYb?g}_xB?%E)EwiTwr&Z%F0SKH8r8CstRUi zW>6}Xh>VPcR;xv8Yb!iFJdl@{2YY*a&iZ!m-i;S8UO=nWVq|0lot>R1Dk{R&t5@OW z<%QDHQUJj1+qZG&&K(R74kd$+FZeU%!4uPfrhA zU0pei@9ph{TCJY5ZOp*H0764U;o;$djEoGdS+fSIsi|y#T3Q-PN=l$mC=eML36)C4 z?qa~d51kSd6Jcp-iDSo(VQ_E|QBhHxbP9z+$mMcGM@M6Lco-Uu23c8INJ~qDnVA{u zKQ=a&O`PuTZUhGhvpXXfeev<}u&}T|R#p~NDis_Z9idPtpi-%zR4M@g1qB7j&dx?i zNC*-V6421lfFnna%;{(A)~%dkTo6e~Nzuv4$z&l!L_`oLCnqA4$w*L85V5nfBL@#2 zB;UV(pD}jt-n}F-G10{K?%g}`?Afz9+Yu2FBr`LU5JHGfrz18tHe_sUjO`yC9VLVi zGB7Yecs!oT+{VU6!sqjeUau#F5F(XINnTza+yCLi2Lgb6`t)f=EXFUxd_o9OC=?_z zGLpEtxsl74FPp?7l}b(G`|;xk5ekLm`t|Fa^%-I{;Opy4s;jHn_R!D}F*i3STCJ9~ z>GgVIVPQeKySwM~!-bZX7LuHtOlHfCB|C<8?AU?y^mI&3P2ug^wO;PH6y^YdfJ2L=XWa&i)H z-n?Ot4v9p<_S@On0RZ%RJ$qCbVll?r+M0b|US1B7NCZDWKV)WR&d})Z@6W!su&{u) zw>LUEIv^5>IO+5D_WrMr3mqLDn3$Nr$&)8d>0XER zRkIime44;pXOsix)4lj@*;umF ztFNzzPNxGQ1iihz7#|-;O-&7_xeF<9g+d|n^Yf9AkN{_AXS{y>8rj*|>~V7K+BF)Sn2L}gudV0>f4ZeEy z3Vc2vVzHRD_4f9nzrUZ|&ZoC!G8tqt843#v**SfEedz1!gS)#sTWc7Yn3zCUR~HzD z!RF1IO>}598aO*UW8=n+0D!5fDKs@TAs`?CR#sLfu^1zfNH8`whR>fro75yDBO}mi zwea`%hqbjeyuH1Vot+JZLV?cCPPn?dvWdJHeFi>${D_{O9#~mf!Ngd z5R1iFyLRooe&)mQ7lrcj^7$WtE#_`$IT;=vChOO)C$+V;D=mc+QmK^G)YPoBj79Tb zcSEcCx1lp<&cM^t6Wg|JWAAtVhT + + diff --git a/inherit_graph_18.md5 b/inherit_graph_18.md5 new file mode 100644 index 000000000..9010afc5f --- /dev/null +++ b/inherit_graph_18.md5 @@ -0,0 +1 @@ +e1f24819a4d21827653116dcb3322326 \ No newline at end of file diff --git a/inherit_graph_18.png b/inherit_graph_18.png new file mode 100644 index 0000000000000000000000000000000000000000..6dcf9eae30f28ca87fab3db45e19d8a23477d1e3 GIT binary patch literal 2137 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 P00000NkvXXu0mjfXPqva literal 0 HcmV?d00001 diff --git a/inherit_graph_19.map b/inherit_graph_19.map new file mode 100644 index 000000000..5844453b5 --- /dev/null +++ b/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_19.md5 b/inherit_graph_19.md5 new file mode 100644 index 000000000..d050e353b --- /dev/null +++ b/inherit_graph_19.md5 @@ -0,0 +1 @@ +c2640f4d3928cdbd6f90b5461fdfa3ba \ No newline at end of file diff --git a/inherit_graph_19.png b/inherit_graph_19.png new file mode 100644 index 0000000000000000000000000000000000000000..e2460fd081f202e6195256247bfa27de229cfc6c GIT binary patch literal 1748 zcmV;_1}piAP)%Q;nd)-`T=i1o;7z_r3!C){L{}kCogI=#+A(P2|n+-9HpAU}X z{;=Ea{~d2jo;XP+ll>->$$tO$WHEkbB9TZNfd7oQ#T8W)yWKwHf*3zHcDo%emn+WB z&4L!jFAggzhUBoKVn_}vs{cdudOdF4x;10_v!a>=lgWgRj*i)uF=IS@_z-@-f5!Ho z^4FgjYHMrJ*Vp%B!{lUSWMp9X?%mL6GzbQR*tTuklxvfclF-%FC1`)E)rzfKxAJzs z-w&Nmht$+mbar-1kqUqxSF%#6f!NEZUgTXj^ ze}6xgE?qj~@ufnt+uw>6E1*`Zq0wkiS67EETehIHvlAT0L9JHvpY-%}D3wZnoS&bM z*49>3R#x(RO&kM2d3iZ{dU`NCJPZH`hr@6<9MJ3aaaxE7&CSgyD=R~Jc{y5IT4MZq zy&l)EUq?ej1B#1_VKf@y^Z9uH_}gDYLj$~CFB%&gp;oJ5GMNO&xOVLtY&ILVZ{LnP zckT$vQwWJ-C-P6^)TvXbs;WXD5D=|pGG?Tw8XXj?Ns;jG!nwpCJ z`}gDh`}Zg=F6RCH{r!0R_ALNl=gys2zI-`KN=jg}+4v$B5@XMvJ(x3R4lEW6RRF zrKQoXUAySpw{LNCOG`_sy1F{XHat8`_wV1Ia$HbQKy`I>!e_C1^ z0AOTf1PX;BpdF+!mb0)YS)E?fuz`26`Z?~5Yj z2f|cyg~muu7Js}G&k+D0LrCnobLR@uR$pI_3l}cHVzJ=#>C>XlBM~$9oXYKXW66>w zg64{8U`tC&(bd(3`uh4w{aIOA$jr<{Q&SUfJAV8)va_?1nVBgfgTGj`Xc0br`t*-u zNYSV#iY-)|QmI6DcQ@|cyNA7d_aYn)i_-CTNcK(D*475M+YKUu&*wuh7{tYk7X_^q z)4-;rq{Lmx6aAMiU4l-h!<8#n5DteCi9~Sq>Q!*u^sb?biV9dP7PPmwW6hd1ICJLA zv|>ons3*#g<2b?E6bc2LPA3Wr3!&5L(AwIHl#~>4ha-gPH0lEb1LSl%$?0@bcXu~E ze*BoefB!z|T#v^?Po6x9u_bC?2L=Y{#fuk{?)UNIN4k6WZk#PDmS-_*hQg@`LEBDx2ld=|7Y qenL2o`(w5>Fc=I5gTY|@iu@1Lb||2?PffJ|0000 + + diff --git a/inherit_graph_2.md5 b/inherit_graph_2.md5 new file mode 100644 index 000000000..252a864f7 --- /dev/null +++ b/inherit_graph_2.md5 @@ -0,0 +1 @@ +c6190fc2745af51a408e71a09c0c41a1 \ No newline at end of file diff --git a/inherit_graph_2.png b/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c641f748bf803ca2b49a7945329008efa2291d61 GIT binary patch literal 2048 zcmV+b2>}vQ*9py@bB52h>BVoX_{zB6A>1gmbY)KY)P8f(z~+y zLpRe6%?j;3oJFNpf0SS@%M8rAc?^SeMcJQaigQz;w4^MPnvpHCj1sTskDkuGsncUx z?t$wAgI({xbM41@*#=M)MNt$*QPk{WMpww?axaEq{+f+oD2m79^{UnCM$k&zkz$)VQn9A8F81~zQifY{hr&SOlE$<&!MXAm45 z%y}M58%;o)I4H8mkNHWnI<1~D-)P^naG z-~9Z1I668aFE0-Oz%XNePq3)CxEO>GoI7`JN=d5KY7rI|#<@RWeoUqoEm}0Cc`OME z3Yw95tj(|N^<-uwNddsi%L`($7yu9x6N83^2Hd`V8xo0xtp|X4^X9?D#l@_yy1E+m z_4T-V_3F4~0BCD#LtkGXT3TA*@9z(T!GQVm=dOHwHI-8gKiee|2|7ADpwsE#?d=VfN`>z3Zj_dm;?t*3*tBUAQc_aP zj;*$~7B_F+#K(^x5fKrAoSYm81cFJ|w6xdL^;_;qKY#v=7cXAG$H#|L|5vYGp{c3K zVj1}HMQ>JC7Tn$4v3c`mR8&;3Z3cq@t5&UopPwJHv$Nsg-~fd}0RTu!O2UE#3y_$Y z2$f0&xm?b9&55+Mv_K}4!OqSOnVFgB@9#%KLIMCFG&B_F&!0zMUmx55+O=yi7!2&5 zw6?b5&6_u7^QESy!q(OnyLRnDU|=AWN+pVmi;^Kid@w1zcQQ zkeQhYolb|>#=RyHco3= z+UpsYo}T{qjvYJ5RIFXQmUw!4lIZAY5*{8-TwPtsmMvSz*RNm4^xe2|Baz8uW_2%L zz9f$xJ+fFH92_L>?(XFM`}c$pLOMG;$>PO}$;ikEA%qaUUQZky9m$t3U(Ck*6dW8( zE?>Spr8P~D$@FD38VMnUh(scC@ZdqV|LfPU2>|l$-8(`EA(4@h+Y@!{4GqM`#)fkYB9Vw3K75#M*Jv~Z0O{@R zW$UC;Dap^zCxj3(Ffc#_0s+x#wQRf5Xe73_w&eNq=bY9YZ?Cy3D=Q=E>FNI&os%}6Qns$IuMhX` z-Gf9Tfk-5RLZLuVP!Phy!x0q~g`}jUX{~8`Os4GZ?b-MK{{HNHS65d6KQ8NTZf;0R zOT)>NCvo7w0X%;E7&@H}w{G2cNeE-*p(9jT$967=%NhhOLt5H-`1ffvK)-^UZLakP_-y9Sd7vuQx<7jVh$E8b`P*_-q zj*brS`TQw8oSB;Fo)nn)p)WZ(8QIy{c=+%kYHMo|7Z+!C4?P|mn}0tJ7Z(={4-aE- za1c&TP5^)pA3m^cTw)lneWL!(&dy*M2K)E#hn=0BSzBOWAg4Kgb+0G#+rB5&>-CsB zcP^*C)z#J5x^?TgWxZaHXV0ENCX+!d7PBvfLII6NgST(rqP4XZckkYXKp;SHa4<45 zGVtWd6ZQ<@?CgwzfdS5I&IAVs2P7vaZWq==NlV!`6p`xM!9v&Vzd-g26yu1(=7KW&( zDCFkmvX`QiloY5`Dnvv?K&ezty5{I(GJV~-bBFVuq^72#va%9{5Ug9bj`KJG5C{aQ zs;a`3D_0;C3gPGHhq}5tR8>`h$NN3!7CxVknwlEa)zx9)!i5M84TZbAJ9>J0z~}Qh z%`x6yPuG}pb9#FE-web2L;tEr{b~REt6oicdAZsDN$Jm`l+~k2N?ARcq?Fa8NlIBg znxvG~qe)6xJ({GH)uTyDSv`xt-DhNE{K+^d%AzqzN(gxfVACwbLQ&xHc)hb714U63 eMNt$*jrL!-iI<}GYd#|Y0000 + + diff --git a/inherit_graph_20.md5 b/inherit_graph_20.md5 new file mode 100644 index 000000000..00d1d8280 --- /dev/null +++ b/inherit_graph_20.md5 @@ -0,0 +1 @@ +2083b05806e891791ea27911a2ad1276 \ No newline at end of file diff --git a/inherit_graph_20.png b/inherit_graph_20.png new file mode 100644 index 0000000000000000000000000000000000000000..10c5fdbd28f92ac866ece61f8b883761853836c3 GIT binary patch literal 2594 zcmX|@cRZVG8^^S(B$`I2@s1B{0EILON_wjvtegfZ`2g@lAK<*qf+ z4(~-`A2^DmVEy*hMSUu-WQWhf*qdN$w~Yl2Zn&oN&aWJP=;wIP ze)||vwIM&rH-;QLB%LBJkQe7lIWT(}PDV&r7ZBo4)W_%f(}(E)2Yz`iOCYlAtK<~+ z_?OLs+kI{@Z5KFH)uY}~Se7${k@~jajd~PQT@@Q-?e~?@ER<2%v}RB@(@eMhrF=Ej zUPiw&GptL7=4oOGV+1-hK0bal%^_`T3#%>68u;U=WKyo0D$~8}Npl5_h=>rAmfmx_ z;WV**+!%bNxV62FG6?(7U_MjrIw?Zg*!cBne1;u?Kv=c<$`+c4ANec4yO)FWtVl?J zRob;-Cw?9r9Aqf@-E^)hFYmoPKU`f|c`-aZT(3rHD>0`7uDD-Rnc?0z}$?WrtkP~ z-ekRv`@B-|%+0MgTRDI~^+T?a*#6O`Y1zqbi@oI{+fn$#j^Mt-jWOBhUyb6Z=|rM{ zwDcH-69nhsVPRnj1tfx0H8mkWj<@MULPEl>*r0UYdrJu`EB3?L%G?sf*cMY7mEbe$ znn!eSIGmY>C&6cLNlhdbP(HR!*ck20RSRQ=!x@RXeewl=$_fezIk>wgd2P=)PzF-i z*XLg4=L^ayD186Mwb0;Bj)ZaZr)XCPo_jui{MddXAJf{XmnInsSd`+41Oz~8tlW+k z9!jzciHpbh2=Jo30pA67CJU(RZ{3VU+5%TLDls#XAacrM*&g4#fm>|uJ1;0Gz#n}z zmbCeYp}oDmwJwdi*u3;?bddO0k41$IW=6)bpV1SK&ja2)^A29{cyls}UD8U`%gYNw zP*+!X?Tfvxv@nz|y?L^`AVR+7G|XRQqSM#cCuiRY`nY|}#>S?hl?cy^<)V;}-sIU+xGI zb#``EBv9igKBLiSm&tbqpRI&hCqjRtkH=!qXWIgNVv~{@tSq0JNnFQhYO=BzV=#2r zBGAntzwU0R1pSaZePfmBv+aK$t)@m(VN(|ye~f-hLW1ls&kmwvV$@7c|FCQI4c%R6 zSR2n%x2knYn5)C#a2^E0EhMggVS!sPg&`&;W?*cLe15nAV>+~{U`OXM2L}g}r1<$k zFc{4DJLOtnP!J8s&d!e1aWCgC2$W?Q)gE+_IsMc%exg9@ewH(V2T+o9cIK<(_dWcO z`1*Bjdpqy;Y}G~u3jaMOj~07=7L}*4WfEEH)PUt%$rvP6A-oc~Q@I8%LV zaasO(xWRpynS;aGm|)ejHC ztiB6&PCd|b{4{U#a4F5}=-{AhAVr9UogGqQ1{D<*WdPHKRBUYzM zOqrn}Qj64{LMzEgbl%xI=M3)vjcSQmKEQTsYwPNo8Z}*AD8jZG3>4boAZ)yp5nBQ07M`yZ4teZ@VuU85%O}8MzoR>Kz7Np4F%!fV}==BQ<7WVWCM! zM|X67=$yR>V8t+7N#|jEU>?fnn~}LWvCFQ4@Dz&`1WYjB;!~xzljG|D^Rg*)@ijs) zUn_~%7Z5RaQ0iEJ@aT$Eu8aFH^20>-FVTb%?d|e*+E^qz7D% + + diff --git a/inherit_graph_21.md5 b/inherit_graph_21.md5 new file mode 100644 index 000000000..6c126bdad --- /dev/null +++ b/inherit_graph_21.md5 @@ -0,0 +1 @@ +5d174d0cf700e3e84b3c4e04df035869 \ No newline at end of file diff --git a/inherit_graph_21.png b/inherit_graph_21.png new file mode 100644 index 0000000000000000000000000000000000000000..4608391c7ac6d9ac2cf6b1b073dc4e6e4b6fbd31 GIT binary patch literal 2641 zcmYM0c|4SB8^<4p&K&Dlrm>SP99tR;vZRshqa%)eUyei8?2YV^T|!1odP!tSwzBVo zLn6jjB#x0$wn;KNxA%|t{XC!Nx$i%o&wbz5_4{4l>rTa)8?v(qus{&RZgdTM9gMT! zm4u%GUxDa4MlhUlGcm+MKTn^sj>99U~NltP?1d5)FR_mLz>5PKNh%AhYx=XC@{x zDaGk2|Fn=#*8lEoP-S(Z)jEL>Owki7R6@W{_=}`0Wn$Ua^G5ZYoF4fX=o62bFGbVX zjQ{iYi7BS{FCy+Fpp0ZdB*Py%@TO&e>G$6#8yirc^5O26Op#}JEtnUHq*FX` zcvy#1R&Fl${{H@PgDRV?!pp>$FVXk&^XXPT0h|^V7X5>R;^N|rQ5_;C1&YGKwIwCO zY4`3$QYOa6`g5gB$R{*fm>;>G!Q9-uHFB>))qw$$l$7l5>r3z-^-!s?Z9J2clVjcJ znidx%q#cDmK0eMS5Yj1Al?&6gP0Gkhu-oC`p_r6Z(nV{<0trb;rl6o8iT074J~`42 zN5_nv)gcKfDdvuj4jBan0}l_$n~SY+ckjYM!ovK#yri+>Tr}#!FAxHr-Z`XJ)z#d5 z_PjY^S+d}I71rNhp%YK{Wmo?rK0Y4f-(<(0igmjoSi#3PR9mY^&m$6u;w^LIMK9k~$?U6kC zLlXV>n4YOAn}|-#-Su@ZNYB|>^uDnaH#c|s zj6VD_9`(=@rt_ z(sGzYS`oT^baa%Rmj|n|Vrg^8+}#ZxUvj4(9pI|pZAD~Ug(bU|O;I8!N+7c_F_)}s z9a7WN*=Py=PcgQ=fnl6N7%15lAtI7_co?zR6_&ANPKJD5>g(RUF6u%{ABpsuVIg11 z{rgyX*SQy-{ZmtUiAhO0%&cb->gwt*f>y7-U0U)-hf(L7Jbuuqgic_I-F?c`xdm`O z2?~Ysq@p6(lz_Eyhef=9Z!PjBb7i5boLjR1Hm;gmI z!nXK+`?9ei#=*gXeQw=&+wS=TjHYI8OTdTR=4Lf({w2XohDS%Q`1(GZYtzxu z`MR^i|H9v8eXIy^Z(w+Q{Hm=jzoO$S4=c8+>goiXO#fnA$ed0pHvav4Co~!@hQaVb z2n3>gWNC2`g6y83T^-6&f9=$%23BxyC{4!rq6Iv>ydD#Yarqs1x`4K}Ho4K8(>qg7 zOb=iIzhP-*V^dyM2HD!$Mw}dLY;A2Nr&E@{oq^PD#%yhdYL1oaiZ(PfWRpA) zso2)21G#AV(6BHOARM0G&E3q8rfuWtDdphk7@4saGO1o4Mz!Nbp;q4zuSl=CHSl$I zb^?jKeq;)3CEvLN(RfC#6G}=ZCnt9n)Z}+~pkq3n3x!GnEScF(=f8-vwoV3gRAx&6 z-g^A(84HLC4u{`qX;BXj31NWfbUG$-SJJSuu1-nhQbc$2FDDz*gp;&1mc`E7g21kD z4vu6~>Aq^4IXT$G76?n&YLqoW!rQi>eM4C`AW& zo5RVdn!JJ!bXxFoa&m#6XB5bDb1NSQ?w$VK-q8W}i#N)XCRSDb8Wt877#P?+*XW&7 zQj$@0(c5ivx{6TA3wd~WEKgVcUU<=)qr$8>*`idZK_%o!`_iTC;$l`MC8cYU-11KC ze9_;wJ-@jH5)R$QYyXfR1TA{y%NNd6EMshJY`Tc{!;*mUfRH1@bZ1!~Ksv5`V*@KW zq^zv$IncKxfvcs5W~QgJXX~6pj>a7KtDikfZYP5XivX`bJaw*{&3pJzVE5wyYkAZC zf`U9y=*>&BvxZ=eXiJ;wcb`Dn5Hv(}V#GK_bv`+yDKzxVP8=OYNjOjYs)EW}-EVsN zG8^=b-Gk3I_h~ZOXIhuA1e#n9;O!~G0NXX9FOa{8>f#X~qWvgsC3*$z9%mmCoz6i@ zO--F-j9V5ximmN}^$j?ePkxn~!O8c1jjaVOrQG3hm%HkgLhU0;g1WC7WGO@x}Ne1vpHnDZi in*ZOx{(BKa{bZPdjC3Vcd)L4n5i&9`$JXk*#QzH+lmxB- literal 0 HcmV?d00001 diff --git a/inherit_graph_22.map b/inherit_graph_22.map new file mode 100644 index 000000000..f04acdd65 --- /dev/null +++ b/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_22.md5 b/inherit_graph_22.md5 new file mode 100644 index 000000000..8b83ab40a --- /dev/null +++ b/inherit_graph_22.md5 @@ -0,0 +1 @@ +2f46b2400e50b34e91c62277a273b0c3 \ No newline at end of file diff --git a/inherit_graph_22.png b/inherit_graph_22.png new file mode 100644 index 0000000000000000000000000000000000000000..436266385fee74f19067076a84f0aef6ee7ff57a GIT binary patch literal 2153 zcmV-v2$uJWP)zlv@|a|Ic_EDji7!)5$Q7q#^pj?unX-`XRa?W@Z}V zWyB;QFI^l-t1lvE540$Fgt&R7>=I{5jEVnaif2s z&GgGo48!bX7^eK^$>R8hgaWv`(6A^W<|!yB_~B|eejOr_NUxpulXY1g-o1#5iu&nu|IrDdR;wYC$)M3_ezg=9xm=Ev zloZ6q#v&mh0ZOG30RaI&ZT=;HWqb>1X=!L`YWf_|)D#X54v2_|fWN;#)N1ut7i3~$ zg6Gel8x;TAwQF#3abfKukqCZ%eh3W>HO4XwVsvyAH*elVeSJM9CnxdOUwgsCv`}<@6{`~-e@$qqp#bTqxHUy(2M0U!QkeZqb0AQF!@5c1TZ)j*hT3Q+&K77d9TUuJ+?CfleB^X3^ zcQ^Lz*#kQ}J48oELnstNrBWd|IT^{x$vAlM;CIh4G&BTDOG~zGX=w>>Z}0DpYbZuZ z2mlZYh4A(D1pxT_`$Hm;;OWz+2nYyZ?EtW5%^Fx+TkF`$%F6Kg@nhV+eOqrE03stJ zQC?mSsZ@&HyLao=Ktw1kEQCZN0mCo|3JTIWhqYQQ^78UfTU!gEP>AsG@I^81-@lIs z4<2B2bQE4*UPwwxf|;2a03a$V3eL{XsIIOCkN3}Mo0yo0v9U3OG{nTjVBfxdXl-pp zb8|D+u3d}t^mI5nI^xWkGpMMj01-iIDh^;v|261Vlg^9JCT!<0|1DRk4JrdJu)*hF+M(yqeqYGjL*u- zLP<#p#9}dQY;2I1mj}6Aj`H$yynXu?b#--%l3^YzD=ULEG&eV+s;Ua9si}yMk4Ir) zA)6pajvRqPp@3Ga#mSQ=0RT#+5=lu(>^yOCacFLCMn*;k#>dAI78Zt{o}M392gSz5 z9*T>Lqi-QFFpwM^9LUGVhj#7SMK(4z6c!dn)6>(7`UVFFQ*?B+j_u8xH}vAgizVBE zfq|5so=y`J6Xf9FK*hzyL`3B2=}9>`IYdM>I5{-^|-`~$_AR;<`{5Xk3BGxaL%gMsRf{2LTy?aMI9*;UZJ6ZpoJ9l)(8%kVU z9L2`Q9{Te68*PW!zI{6q6B98vH;3NdUSwrup`f4uCr+GLcC4eLBODzamu%0oV#Nwv zym%4m>FEdw3DNO&b#;Nq<6+B|Ev#+Fjvbhtoke$dH>Rehz~}Sf=H|xw7Z!pFg#sFl zhW%#F!!Qh#N+oPSI_&N3p;D<35fK3s6B7VHYHBJ>O-&IV9u7XA4+jSa^!D~*^XARCdiCnE8on1Z zGcyzw6(J-f1Vu$fn3$Nr)~#Cse18A)L->D+%C@#Pl1il{l}bq_lTl}9CuuYqy?r}6 zI!K{V=-8GkD%;xHNTpKgj2RppB&k$NeSLj8cC}hf9UUF?>eVZ~8YU+vsimcb1_uXe zW@d(@QYop`YMnlPeSIXC%V}(EOz#>r8V$9#w^L(dBYpVrVUho98su_04GavhZLL;I zQmK?CCnt%BsH>}slu9M*9~&DZnM|g44FdxM)X>mCd_JGFTCHBKOR-c@x#%#9jg39T zFibgjAL93szMH=R)OO-@rM;P500000NkvXXu0mjf^48(0 literal 0 HcmV?d00001 diff --git a/inherit_graph_23.map b/inherit_graph_23.map new file mode 100644 index 000000000..1137ce93d --- /dev/null +++ b/inherit_graph_23.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_23.md5 b/inherit_graph_23.md5 new file mode 100644 index 000000000..ac1bb5f07 --- /dev/null +++ b/inherit_graph_23.md5 @@ -0,0 +1 @@ +60ed31c78fe876e519d5d9cf0a790b39 \ No newline at end of file diff --git a/inherit_graph_23.png b/inherit_graph_23.png new file mode 100644 index 0000000000000000000000000000000000000000..e9152544bd909146022e5616aaae955cff278f65 GIT binary patch literal 3081 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 H&o$;hA&m1> literal 0 HcmV?d00001 diff --git a/inherit_graph_24.map b/inherit_graph_24.map new file mode 100644 index 000000000..23a569a14 --- /dev/null +++ b/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_24.md5 b/inherit_graph_24.md5 new file mode 100644 index 000000000..9f46ea47c --- /dev/null +++ b/inherit_graph_24.md5 @@ -0,0 +1 @@ +bb1ed9eac111e8d6eacb431bf302f90e \ No newline at end of file diff --git a/inherit_graph_24.png b/inherit_graph_24.png new file mode 100644 index 0000000000000000000000000000000000000000..648aabb5ab6cd91f909542686d8f97e72881149c GIT binary patch literal 2505 zcmYM0X*io{7srFCM(m^!Yb!#PR-<%6)!1U+^M;y?+FD`_wO3WCs#p?RwY4u{R4r3# zH=!ueYSl7~wp2T8s4wj-2IS2>@61BF% zV1Y;n77{E7ybY(cR)8SrV{3^49sPL9X*GEukWhj(#sn8zyk7XL-GAm`L%lvG#{!*E z77#F;PsmF8rI3%NvVSGQ!Ck@$C+J)`rRRm<%S=z#-m@a@l}i!qMRK21{d{*A%IB%%HZ?Vg zT~-PmcO!YDhSJy8)`DmuyibBkS?whH;#EaOYmp&Ov!lUrGgsH?VHwud_=^ zLdFO`zsAEekL28Lpx_o>gMD7`q!V;cOi++!752=Bk00rHh(NvGp+;9%SGkjVxoh2z zjoWLkqW2H>cc@iW%ox*OP9k!^br5JX(y)a0O)VxSCf5r2;PK;OE^)5QTpmrVa;bB5_VZJVii%qHr$w#824B8(^7mI~F_|Ko zWfs(mH*f6lo#CpgYHC;$6F$E3hYw*01OyB&XE3~0Ha4cm!#HEg%}q_p)mUo`W_7xO z+T46$^oYAf05WX@1>#$V6M1F+x^k~aMyMnbxVfdJ$~*(+oRHAd*LlZ>^C#*hSsrb5 z7MACvUNtl0hE<1FO$F|gbu0n`&J5D&c@=ngPU#{&>*SNVy5#52w-T4oy1IaZGn@|e zMb~1|J7NH0F`}r>vhPN=@y zbmP?w!n@LnXU`;}qoYX_%Kf@JO)M7sW$CSao+AB}87+c@K>)>NZf-iZwY5PdB~407 zO5!3!uPU#st}ZW6)>zPKn+p2+`Y#v1asZ!TFwDh8>f+J%vNX`n%gor_FUnuJ@f(4w ztE;v$TJ8*9Lqo%LBGG}xVinuh;&M|`j!jKZPyGFdXWBbQl$&)9EHr1x~_M()NMvapX(g%Guwu;c9 zUVeUpfN-O2VV_Nb#{2Wuj#y7mPn?_wE$&z=o@{vQJ7?zRWhIZ^1kog85aMocZ!cvY z=m$pO-UuNige)Yj_F`ltW9x01QQ3a5ukSIClSY2rym{8`Z_HPMS%z>$EiJ79inyq# zc}U1P;(QPJ`}b&!xw$eDd42eRVeDLs>$th4rggRJ-ok>4wO?(uL=3ZA10HK0gJ8MDgMejcfr5Cs|PYb~fj=1169lhLU`6a4?92 zjyJ84xU3}p>eZ__a_OT-GI%_GY;NvHV!MJ1=8p4TTeo?;l0YMH*4CIjn`$h9Vtnca zpaY69s!+0f+Od?ezq9FH@eL4O61;ohX5ggwJL!=XGTREd`;8^s=-zpEvc^$GOG_+h zy50nbgYpXq{G%kAnvQR<@bFOjahcg!_cujoaRAdD5p1!a_>-(D;{zlb8_)q2DXBQN_dhbxI$0sf>zF~6)3h6AZK0P!!DXpri z3gpkWsRo0=#=gF)_e_-mm@)u@KX?F*jENBd1qKFooLlN!+WPV(kxEq=Ej1JdjRm&q zMJ$QP7$xvx6)wk0SW*;{+_l(it*x!3tSrmeSiL`KG(Hd@QY>#*8_j-aH1SW(0Q9Tj z_L@3OMuytb0u>VzBaz92p9fO+c{D*YA0LF6f*z>JEwivtZkQDw{JwdRnc|)O`MW}f z%y~5efzaIEj_$Da=Dfe4qLS=4S{x7=?2le^jE|4!EDUB`YU}Se4UddOqS5F={Rp+r zjt4rym0DZ~qPF;$jZ4O853&q*TVB zE}+#$=Ph-vl3^SMa1L{M*;>c%O*w$gk~xhAS6j<0CDkNjH}f+1hKIj7dWy8LcX`~1-UvZ6Ps3E}bO6)2 z%y9iztZ=}C+uvBW*t#h}w(FHE5#&hmgNw}k{QPZzYQMh@_N(BZ4RE&-~K z@UIJAnM$&59FFdeeCC)2r-xt#q6C427>%m1-o-KHx zGGC-8_o4XzzX?AGbul&V_h0cs9bVc_PbQUucK?R^d;f3v`R@$0cy#}cfKj=u+eOUN RP+&F#S(`gx8cn_K{tII%$+`dl literal 0 HcmV?d00001 diff --git a/inherit_graph_25.map b/inherit_graph_25.map new file mode 100644 index 000000000..7fb75dbf5 --- /dev/null +++ b/inherit_graph_25.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_25.md5 b/inherit_graph_25.md5 new file mode 100644 index 000000000..4ee9ed9f8 --- /dev/null +++ b/inherit_graph_25.md5 @@ -0,0 +1 @@ +3e97db67becbfba9a03aab6423364a22 \ No newline at end of file diff --git a/inherit_graph_25.png b/inherit_graph_25.png new file mode 100644 index 0000000000000000000000000000000000000000..658ab37b9373804dc3a40e964bdf5742c65af680 GIT binary patch literal 2604 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 + + diff --git a/inherit_graph_26.md5 b/inherit_graph_26.md5 new file mode 100644 index 000000000..7620ff8ce --- /dev/null +++ b/inherit_graph_26.md5 @@ -0,0 +1 @@ +f951a758ef56890411f7721b78e6c9c7 \ No newline at end of file diff --git a/inherit_graph_26.png b/inherit_graph_26.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9d0e4c65f79a7b186b9a5a0ac813a2153775a9 GIT binary patch literal 2154 zcmV-w2$lDVP)sAK~#90?V4>!liwT1znc#j&St5^oH`?OqE=F*;zo}0p%R6%et+^I zSWO*bnUUrrX}v0l3Ve|cGK-AgA4>@=OnZ@(I^9am@&U4()iiTX@TvK5{x8HEr?Y8I zEC2WB)y}!D>zwboxptrH9BzPyhK7cQhK7d57>xNH5{bl#!C(aZ4ly);4>FnTzw`Ud z=XWp|i~t6M@$c$LqWOz4o=me86cnti6q>&hg+c+DOlHu=TxBgZYZyA2XiNs3Of)8A zO(c^=NJ~pYLqo&Nfad1la=D0&jYUvU5Og{nLPA0ojWshf!?S14 zemMT<=qO||8D748iHV5``1|`qDwTrGW}8C(ijbC;1{W6>Bqb#+ut_8ma5$XbplW3? zNiwyxw7}lp9!W__n4Fx1TrS7{{rmCw@nZx91tB*#m-4-E;R0AJ7E)7F0RRlff_u{i z96o#)YPA}vsi|PI*{H9thd>}eYip}1Tva%9#xg5T} zz5sym@Nk?ze_n6?v9U2+ym%1`g#sK72U%HJaB*<~0AyrjpsubCOePaN9uH!%7<=~Y zp<*Qx3Btp}@%r^^D3wa2q@-Z)-n}R*D?@pCIfjOYAQTFboSX~`3kv|i)YKHNUAu;w zni@DcIUzbaddbf!F)Z_`%TGpBz z9UWm|VS)Voe9A|o(cs9DBPc2=0*}XAvi`+bk(y~_WCR~Re1NN~>yrFcDi!2%xxu!L zjSXyUZ1D8yQ%p`yQaLE_@#{)vx|C(9u;G?Z|;ToM=NIyGeb0{i5ya>T2TU8;x~waiO*( zL+yS0_Mx@46`wzUMpIK0ii?Zk<>dvXQVDl=cL0EghX>_vXJ-ch&}y}?x3@=UXD4pn zyot`vP7DtZqqnzrK>_UJ<3s&!Z*RxM#01WsJ*(%#U@*|p(E%2V1uH8nczb(OHa|bV zr97rZncczxz|ztZK0ZEZZ*MoK55Th51k7x&QBhI2bm;o)Hf1Oy;9HWmp931G2Uc=YIz z-j)E&oI+<|v)N!U7)Vb~hn1C;o}ah3H`Ho1#>dAoK0Z#_wOZ{jt!;k1R;z`rt*t?Q zKeHxa=1;j{!v;Kf@Bn3HWjK2DsNNjE%8K1HH8nM1lpwi;Mdu&GRwYo2j(46irP{AcR1rQbDKF;qKkLONupCfcN(H zg2&^*(a{l1CKGLKZHSJJMpRUk(Xsh_J`Nl>0C#tHxVyVUrBY$rwrz_Z+ku(8uhP;| z96x>>g@uK1baX^lR~KSqV_{}y1}2k<;^JaNMn>Y!ojVvA89_k6!cV|vpUGT`ii!-* z>EYo4Pft&9I2^RKwc+yR%kc8@GTEAD5sSsh&d!FLn;V2ep;7w?!T0K9$s7Ut&W;Pd%ZpGu{ITCJw)j`?k1=7zbw zy&Y3iQ`o$Dv)=1jp-{lt*%_NQZ2~a!rl_f@fuElr)~#CyV5SZl92|tFrzgh7#_;9K z7wW!ee*9c|dV0{;*9ShI4;vdBJ=@sW7~0y};N;{4TU%Sy*49EG5WvF1LhqT(W%usg z=;-JGhr^+2oZ0!Ut*z0~(E(RiSE}y&k-nc<6Cng!wrs(vQ>T!UlCnUbF=jtODJ(2B zenI#%r#YIxhsw%IVr^|r1_lOxDt=W?b2NWG!NI|h%jL+*%35+gyBz3b`afc&zf4#Y zUk%Xw8PLf@V>0MuqA?kCGSQd}I+ + + diff --git a/inherit_graph_27.md5 b/inherit_graph_27.md5 new file mode 100644 index 000000000..86359c097 --- /dev/null +++ b/inherit_graph_27.md5 @@ -0,0 +1 @@ +ae7b19fb515db578ee77694fb0358027 \ No newline at end of file diff --git a/inherit_graph_27.png b/inherit_graph_27.png new file mode 100644 index 0000000000000000000000000000000000000000..fd5d33e88505aa0c8d146dee36ff725a1e3fb78b GIT binary patch literal 3042 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 + + diff --git a/inherit_graph_28.md5 b/inherit_graph_28.md5 new file mode 100644 index 000000000..60e0d1157 --- /dev/null +++ b/inherit_graph_28.md5 @@ -0,0 +1 @@ +8e2a493c3741fdbfd0068288310d7230 \ No newline at end of file diff --git a/inherit_graph_28.png b/inherit_graph_28.png new file mode 100644 index 0000000000000000000000000000000000000000..c2706ffb94688ddf5716815f24417b60ef55d05e GIT binary patch literal 2732 zcmV;d3RCroP)#vgEAQV0~CB|;(`uLT9s{X3Nr9| zm9}J)R_JD2M|83P3cAEBj%7<0Bh=0KuDKOo5;XB8P1T~MREi_QSb`Jcih@w&Wzdp7 z_YbeXOKEvsk$cDa{Plaz^YVMn`8_>7=k!;A!C){L3}_~dNUfn{PIhbmzTc?=Tk`1p9_=jU^_d-m*sKp?=*ojU;lJf6qzV;&?YC&Om5Vdu`B5DJC3 zd-pEl;^I(UT@3)RSS)zwop*fEl?fv%DhfF{Ir!|e&oE`m6t4Z*vu7wQEX2i&7bh?~ zcRD&caPHhW1OxW)ZE-mot>RDbLLFa>2z-K3JVJOE+%Z z@M_y1Z_nEsI-QQhVlfGYLQ*P~WH1=W<#G+{Hx!2s9U_%V^{;_7J}zteuC6XTeE1M= zzWL^e>>C;yU^1D!%7KA_2n-Cw)vH(0*Vo6{%$zwB0I*@h1_TEOBPl5f`T6-!DwP0$ z)YMeu=jS6QCkKlcFGgZwBJSMz@2}An6%|mc)tEJF7BVw4QCV4u)vH%y*REYiPEN+U zb?cCxo(`kY=;o7_mIgmRKPZ(-)YsQz#flYhI2-_gf`S6<*s%jrsT5nbY(Z&hDdciF z=bxFGiJyP|8FINCOP4Nn)6JMM1F5O0C@wB`8=J$24@0F=fyd(w+oyrtxpN0?ZEc*~ z+uI9+!N85gsA3jYh0mwQA6NkCv2_6jWAL!e}&N z?%cUhC=__>t+$YumxsE#I-lLgD`TDMMIsSNBoc~?i=#Pn=FsNNo2jR#$HUg!C;!o- zM|Ah@-9hE+*RNA_bTkPB0*Z@^qp!aDiXJ_B#OaqVT}nre92qjl{QP|SeMN2rY9n*tgIwHpHB}TJ|rTdn>TNgzrR1(Y_<{g zY2ZvR5{c;AwQHQ**w{z_sI9GS*nEkIG#U*7Ael@?X0v&aksX?m&h!Iuxm;v07-;R< zwFH2^{r1~Y#~5s;_sNRXaSS&_uZ7ssW!r*i|k(HI@X3yjC@awO? zLLd-e+O%m{xNsq-TefVOo2^(Z#@lbdjh}w{3H$c#Lve92)~{cW*I$2q#C;kmwY9ZF z<{KU!j-;d{)YsSJ{Q2`}Z*PZOE=OWwBBoEDKBjw)l;_W%veMm?Mq*5s-|M};i$ji$cQPGbSkw^rQNQ4hR{19PbVJImnL3Vbw$L6TBvlFqg zu}~-!$jHcmKp?=SOP4&B0t5XSSOBnf>sIXEy&K!NZ--8&!=+1?M%AbO`1||2EeX52y147%@&y2iL;{IK zf|iyRoH=s_-+lKTR4NsclanEr%du+JD)9NfSs^=}PF%Ti1t(6NKxt_yVq#*TP$+QW z!UY5d2KwY4FB!LUdaKon*|TSl$oAB!Q;^AIUgegS78Dj1qPx4B(?59d0L{(K5Q#(p zUOd3o)>cm6*w~1+wl?JE<{}{>0WmQ#USB*K3rCI|;fl4atPEze8SlRPE+Qi%5fv4M z^73*>BoauaQmk090##L25DJBuKYu>nc;gNH@WT%P0GG>!@4x@vBmSmMo6yp$&i|w3gE@2Rin|Mq@)Ck7ca(-KmLdhKKK9;5fO-ph(JR_0~Re> z#BDhL3iIdBM^sc4f`WojQ&WR)zWD~x(b3!(q@|^yxVRX>!NI7nuZKdRfS;cq_JfYs+UefFJ9>;`FpFSnMUe6uN z_GhR*Su7U%sk^FF;!tJS*wiG;m-!0m|Am~^nBXG}U+(K99;tmqk&jzLdvGBPq=WgZO1E5oDciKq;~KPMm;2E*s@`TWL- m&Vj*TFc=I5gTY| + + + + + + + + diff --git a/inherit_graph_29.md5 b/inherit_graph_29.md5 new file mode 100644 index 000000000..e1cda77dd --- /dev/null +++ b/inherit_graph_29.md5 @@ -0,0 +1 @@ +1c5d6389510bba4e05a8915745614788 \ No newline at end of file diff --git a/inherit_graph_29.png b/inherit_graph_29.png new file mode 100644 index 0000000000000000000000000000000000000000..a318aba0a693e764ea81b11eb003ba22513fd4a4 GIT binary patch literal 23141 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�h-Ga|=#RczuVWdn2+p|iC_3ZCoZV**w-PqaL zq0!E{3B!npY%$tz`F#u8IXf2@*V*|w7i>`^71LK&LdqFYQRdKHLGy?Nh{5grOJO$D z2^uS|P-CJWKQ*;K%*8w8DF1t?@osp{v^*g?kU!kQD%#kyNjvrPZ}WEr1bW@CG~G+?$1wJiN@8B z;OnGAb2K?0Sq#(h^Xs;~kS;ls;)wlq7thL(4m<^x?n z%_aGC!QdSEto$xC`L!>cZ#7CL|L(4BlJ`f>ZT@_tEX}dk+N1t);#2J0Th?*EHsgoC z3~ZV(bK;pgIj(tUGun~QH6Kin(FtnvTSF8GI;kaAwq@ZTr)-8YhS;T2fX)Ob>( z*iSH6C99U^bU%>bsq#lfsj_&(z4DcfhL8R5cR-(0>?leih+o}EVovFmurdutl?>71^OsM3INKK4X&Y*7 zfa3k~pkWpYFAT71AL$Q&Uo}6$B^~O@5}^=BLgJzEh2Urp>lSmjPl=hY4}RU~=%E## zC@_i8d!H4o?_xUp@5y<{^N|`he?u>JP&@uCWG%xqR(g=$O8c!m6o^-+1f5J4V=MaL z8#7CVn2g?GBUP5JS+nfxe2D{uXQyrNBM*Yfd{Amz4ToyNG#+uuHt&ftxhXmS3~) z4FA&KpPP6mp#AjWGP$z0)}};OJTLOoor{|+@4x!a>A_PF`UClXsm{dk=92I$ox5*x zSY8o!M`QXp|6(2Z6Wgt)3sL}!H-sJ|5zpojgFd8SdXBQ;c0bnW(jmqF_P$% z`8;ke6j+8jn2lD#(Mt}O`%pl#ESN>o@vV`du78wk9`8t4gBRxjqn^bS1=HCqNMrf; zT^l|AQFRNOmozj_-{=9gxekANdUk&+Ecdxn-a-CKPYxusSsV=wugvS88%h286J|}FD-s;4Z`BC$h|B}%+ey8ct#`GuQlo3t2s7yL zANZi9JsaiXm9cY%y|*^jn@v!~J(sg_lMy2vm3BD&;D+F+jE>-e1_)S zhiALob38P%KXgpv?(^qq(!oxeV%xb<9D#c%HyS;hu**BY(rw)bE>&MAeaFTic76t*+~4UW8G|!DVg73 z8vk$O^Qlcij3M@)T9Nu%G&OzOqGuKcFm*Z7 z$y2(#uthpIYSt<+G$`-B(L&h;ED6%9VVw~JMwvuzY@U%DZ)99fs~UPYW^pD3<@h@s z<+v?5E}7D|)mZq9LA0og;hYw3l|NQD&dPZ}HIxp``fnmk004GdmOYBW!u5BF{B}}f z;@UpSWmxfTa>cqoTafd1HkC>1obpos1vbx3K+7yr5+5YO52!G36`O*)|ES)LirP#G zFB-)b%EP;_J%fk7Cssv)_1Njm_j{R#Qi|3asF?Dj3GU)J(}Q9x+5m0)?sfbQt%%I` z1B|j}M3}8Oyx0m_N`sNR1yTG0A|Nk-_C?HTUFBg;#)_U2!AUJ5@o!@zY3H#|a-%l) zhDEy!*SMy}!f*8c4vQ+`$!lj9pAKnwx!=gxNS)U4o z()TK82k~Ikl*WV{6cs-dIecm@o~DF#Ycl)U4YTLZ2W-8|T;N+#2ok8X<*IOWSY}+# zN<;q+jB*h(us%(J?&M;9DIKK|w*Pa@lbmeSO$~ zn2cWk(FFXctE*dI-Qk;-CTB0yXmA}*H3tY>k|`uLRX^a5%~Ux(4Nb@1S;br{AP^s* zr*8YkB!NLep1+bUDDFM;937Hw5QH(@Ym?)lNOZma@5YFfG)qZtC$qu?&LOA%hE2On zKzUJ%Y2KUo#%Y51m5np|hj$(-fGHr-Zp&K(T;J4EPj8LmU(&Y>l#BCs#J(La+i ztCQn`s~k7NMiRxC#1t{k_}8mRMN~va@f&uwCCDO36b5eK8*}vm`qj z=q-`pqE-9;^Fpv2G`0imGTiu0q|JL{9*l{Wzgs0jmj|7V&CTO^vUflsH`+Lf7Cs>Z z!1(sQ@V$H@N&%P3$-{n@3IZ}RnaPiu$>1)1_CA$j3Na-E9EKEMNM!s0aX;?}#)cm_ zt*5(lLvgbMf{ye<{_N}wNz}Yf_lCX%od`F0T%I`s0+Rv=+_YWZ>~VS6gZuVcSzbOD zAT07aT0EV>Ck;@GfXn`&X{2TwVi-xDy-#GXo=XyG;l?Y95MlJ1v%T}Ys)x!V+pU58ca-pZAr)_;%Ge!1e!(Q z;NZ}Fat(5iZlwtdn|}T3;`J3Dm}ILPqq&TluYRR_{{B^EF>?QFG?lWYrDZ@hz+w=) z1i?Ux?t8HU&JtR?Syjx34;?WNo*n%Djbx?>B)f&KQ020z1}?+E<@s+A`5(iInNJj{ zf)8*AvWq%UEF-^vu0SA1zP=;pdb`plh<}$mm|62W5kh}A zawkf(qv120K=yfai&D?z`a}P2_-?;VwiSj%MS@xE>n`q1f(*t@LfH?uQ>gz8FqPhZ zXGr5NMJKD_5qL?G!FW4^F|^~(+WdipmCn%uu{!9VF-1j;O(ajBK1C%uyDQ?;2o{-9 z-7W}O^g=?HDcgQ)@!G2(s;n$8Ke)bFyv~C<{Q#zUBq>J%Tqx0WE0FlxckVpbKRG>3 zL>gHM%IO01{-9(ue%qa`wW0;Lie06!t*x!){8wuC*K^S7`g5a2m}zKk;NK?_yZXCb zQBp6js7NdZmZR-9D@i0get9{$h}|>>g``)Lt=^}5#9}A=iw^n?uG?BDtG(}OkDz|B zsTq{gD&s*`>#r}*bMiK;S=S@_HLffg54stK_Ejnj24WR!UM^GYv9`);P}7O-h@zzG zJ#Z-gpDe)5pc|sNjyreygVrONSXDoTF!WtgFhrqJ#qh03oHkPXtOQODIDWB?rhVQ* zteC`!Liok3s?vSmNKIWG8yA;l^7%x$VQNea0Wi!)k3$+*#VKH4z_Br@AN~IEORMFm z`~_H=KzZ+hMir-~ki;1P%8Zet<5D|{!oxeDel>o~0GR}BX>-$R`xRfZ0#buSyK#$% z{F${iGwkSz3ggB4JtuX2_)jYfGwnzlkK4|Y zhY@N*cd7CoA{oybrIAL?1h#S<_HuZ2AI_}*)tiIxC!>t)60T7<)oMica@gbC4TzJ& zUcpNL8cGd?0yMms9v}6Yf!-VzcF=*#5hvFY0+PcmCMKqO{IiZ1=H?K;0PfummLJFv zNBe%)vs!z*yNde@pW$(XRzjI3?46L5M3%s+8wgDu$(OUUvv(Fgr@noQ$7?$+2D)Y6 z@Gv_suc)Z#eXorN89qm{W8>qpii&HSg_#fO=z;}Yx4u=HJ`-@;>4mgKclaF!q&#(f z)+1_rk*MKITZM$y%rTW~cy}ZP(Jk78m+S-Mm1Ztcj>SeF1IBau{3o=WWaWy0&@t1Y~}%7vO_>nJCVt3{;%wUst3#ht*Jk>)r5c4orAe)r+5=I#6q{-A3lF3 zwWDrre^N+$@;*2iomsowmi)C#J`i|hKmoc+M02y?i0~-|Sg(wgLqOD<)-$|8#_fQ@ zSY3Sq!3)$?S06sm7@_X1r^<(rnGuLWfXGn2>vx{=>w2c%j(pMQ_f2pCYONU@C$MTG;)t`b*6F)ycgF7dA^`fE| zL#ohsoX4yh=i?Y@kjrQR@>C>&1KVKc2!{5H8 z$cg)F4q23_TaqmFK+m6p@D-w@Z>Q{OmCWz_5GLCHZSxr6%a&2k&3o!HS%(`qo+i3a zEtTP2p#&Q#&jT;H&q}A0U5|=OfMO6&B*jLeY+-?kVoFo1R{8U2z}k%RvihE)bDTr# zIp}Q+UdJ0>pol#-^Al}5Eq0kW90Zs&5J(zik|XopPnjY3J)!K8wrz~pw%%5hLJW1u ziXb6#vHZ0W(Q%X>>tl;Qsti!%B}|bbIb`|NWR27vK1+RP1pm~$6#-|GgN#oH079c! zEd&J(^8nQ4ABIK?E^0-HuBF#mc??>3gbQIZF|Vs0Y}t5ky#uOR5o;5;?2vhiT# zK;n=(^(iAWiwuEj@A+?5Lr#e`gT-V^y>6I5@60l}*^66RHuGLZ;u^E3S8@lhT!gZs zz6t!D(@6T>v-{@hTO&55P^UAM(zh&tsFLCcaPrU`SQtb~821^;gp3vT_JnYFqH(oi zDJY{0;`!2v>`j44<>{T{d+uI_{9|)Qu?Vnxv+|raw2A(+mF>>$rr#-tqh zQ4+7Rl#rqP{g&)}0;d zEie$gXT-;0#r#M#ZknDM8ThR*p-=vi*T-tlhyuKu8651I^PYoFANYtobbsH+8CopR zVzaKAGaX6SEPv!{){P&MS=8cif#oYk+iuAI@-9YUz-!bCiNn;}QPex?m=}ZWJO4@} z1)N|0gQ|GOn9C6IxQtW#-v|{U;c|YQS3BVs%aadYE0(3A+I0GjHppGzF&U? z2A0R?W^29d;k2eLK`a#+H5EDGthm1ggS2DisT#%D_l;sQ0;{e`C#pn+3AU+CzCC_j zqJjC{8#6$goPb5=$euOsF)3@}4<4sS1n8wCar`U}hDr~^?n;tOeOIWNQ&z>?x8 zKfEvP@htdWqQFAr%{em~dgJk7{w0D4G_C1;B9^$7tjYcd3KVbmmArI^CyDOdQP|$d80UZwTAeffTqOsic~OFA-;n( zLODK!tcE2N$L7aqZG_Az(_EmBuv}qAL>eAK>4o^pxs;Cn9IlFCd+Cu=wy?9WZl#k} z+oWRi{08=6El!En%Z;C{xZ^7p1j|pCFajjonGk*3luWgcuGB2NHx<P{1n^mF23^Zp5(`h^GAe*EsaW3;)~0(L$K~ZGM0Yz ziWAy+F7P%9Y3bSe*SmF7ubiEKc9R;T?|3(C_@ki7C@ZhSe|B|t2Eo`KD^_Qyw;M?P z`~bYuD9Q@EhyHLu5LnvD2EsS@`gA@xH1y}%S~s#|U!AXe!atjfZGOd+C8c?g{EE$G zcrwYumI)~GfvT#i6I)~L7{v8WqVpj zr#m`3*MLAJP8oSC0-s|8gO-_Rn8j|o@+sip{+(=Y#S+W@7cyHA9h+(M6GehTn~VQt zeSZ>9gtyB9gVb&H@eCk!Z*FczmL%Wi`!6gi>LCpcsz0z+LQ2XZmWmc}c)!Q$ zd+D>E(V`La>p+Q?08!RI2P3EkmT%Df5x}yaKq?C0cZB{-s3WH&nCGZ5DJlI9ZU4T4 z9T9A5@LHCm2j>8SY+e3LalgdjXgNRyzcn}{1j*~9-jbP4Em{IZR!A3!hwU@k?Cy}0n``IpeL`^| z^?VkHXRdVgR{)b18J=$-<@tlSp}>l7!)u>NNLUzI27m?W9$Qbu0N|F>()zABOX60D zbdz);9{GNNMY}u>Jesi7)KsALvR8-Eene+)<_Z+a!A5bb;*ye<9srISIo~rruC7(8 zW2&!&WKl|)B5bLA4kSQ0kP*vxV*u9N7}d6xFH@p%``R+-UH<+RqMuR_T=?tw$#H0#0~qhVS3a+oyj{ zPQK30HutW9KU)o1L*RbX5KeXeHJB|KNdn(F-st#Ke0%P*H(#djUnU6K`~pvgLf9(~ z7R})F{QTnL5o{^F275(Fae8cIhm!GF5+ER#c_W7JOI&oca@8L&!Y59=A$nqaFBLsVFp5()q!ujVWckWt<}g}ldy)YJjz5n=5tk$fWX(mJN58hVr5_ZQxol3{FZ zPgl{J*T9OO#Jqp6x>I!xd{r%c7py2YZYjlaIq7103=WP8)K0cXj~;mfy55z;IXQv^ z&G>k1hOqa_&!3%e;mD0&u~mvR9`S_^5J*xFnG_&%hfvlemJv*)L9=~*#bS3RyCX3e z>e2*UnUQujFq5wC?n3~4)j)msn%3{n&Hv~5LfW)D#GY{B_;M(gDj^g2Y>#oO&QyDPT&qIG(j!}8NP%dw%w0f zQ@DR*!~lAXO0gO}{Bjp~m`}~j%mM_oOLe{=lSeC$D;a*RK+F=4gM$OqAQXQfn?TM_JQdK?dWz&$=^v>sYbwesI z`VFRJ$c((yyL-f5&DX%)R#sOfVjn8nZX?&r%j?tbg9?^J6gX)x-Q>(b5{Y4KZ2X_? zz5u0N>38i5#8LsMOF&Eg76fgOY99BaNBmB!VP&O7uZJ^)2lnQhAq1QchA~KgR4#jS zGj8mlZ$M^Zd3{|P+HQq_C^+H}a_Jo$%!A&Jv6ld_QU*NmMi31BTO0=4E{|}LwAN{@ zpZ=@u$W?Ok|C~U8Fia1OzCoBkxNjrmfPF*5g2-4fTqDU}_rVHC%OdB*+?)X#m}_n_6IXGA^5q zicF9L9%*8V-tC<(m)uZmn&sRG%ZWu@Y&3cNZIsJO&lCKtW;`TT(o_qTarPR&AIGF}%JhqMN)W_M zG<7U$Otsx^mY&{ZpmF>aRcf2U7=l_&+<0)h(OhyZO5hY9qnB}L{bNWBER2p%op%S# z#J6fuEk6>8FFeVUqu(n*Q3k7*0Ev?$akxWC+opC}u6% z(>ro&cw~X5*LZ)uEqvc>@AUAeToNme=u1hJZqcC%qG1{ZJmr`}F#$|zf)l20kpLGA zX$Y*Bf-l#@<}@q+iCT@~@D9-me0;yu`o;iAHH65{!_{ z(k!AuHR_zAP!)U+33RHZTPUm~SjutZa*or?6dEziuXLV%1h%jyZXHiCW`3+Ov*uZj zm^wNr*5X2XMJWYenff(lpGsWe3VC%tws|Rc%Ryz#>6^{mqsrv93>2DVi~76L*9JqG zqP8j!bNlzlD#2j-GCxOd$k$1`Mw;U_qtP9kugRo0-#?r3*>So}SytL^CXo=#QP^Ng zuSZly$XZkq8-y*APMkAVVIbo`(!a<_V(8d8Gx3!! zw((8j6H*NfIA=5&T<2k5f2#@CoJQLiNK?$j`k{q!!Pog%L&Ff54eU>ojz z@MERpRq34Fwvc9{0duQ9q@6iJ82U*}cn>5EDnEIBZ)WMjC=vdtB|p1k`wQ`p(LTkM zWmrzfxs&0iSdI6`$6`~XvSSMb51;1`uJ5ojIU)tC63y(4$*lXBM*jFqAxjv?m@TRr z#3=M2#jlsntScuaw5oj1PAq{u&uED@2b}p?1KIkdkMKC#DxI2+`Ltd| zx4W2FOXPI*U~-k`734=Z7vYBC;V7HsFfMSFh8YN3_e9Xh6ScvzR+z1A8(6gdgMf)~ zaheH#DrMexl+QUN1C#1Y2{jncG#*x7j45a5XoZD#%L%{iCP(8?+TTa#VQiot_yTEB zoI(52Sc#c2=tp5-p>-tmDa##F6D{1JPHf$b?BFyho_~E)PL`sDG=YwZ@fV9EJ=64v z$zvi8{bhfwAk~(A+h4h161sLF9KGhMKE|$BZ4es6cCYi=0xO>+V zGhfP3o)Th3FCb(kws64);P)=S6W#nLSK9w|@`|XbqVI(naDwjdneX2}RZzfdyS@^H zB%{m5w*UqJ>z|CXhzJQ)mmb$W|N1uD@A?Y;#*JCS9)KZmcE}v4;uP^S$%0sM3{%$? z?AQZ_Zodir_=D&qle$&C?Pz>8(1@L=v=VX-e(vAW&38H%VBde{a=3J^HuIVJb6JEc zj#+WnV5Nj^aq!4U`g$nFvx&Osw`2Vp|9`k>gs-rzFNmhp!oulrw2TlRA0POeJOHF= z2w%E(r(Tz%Ak(}s(2Ue60ob{o-me6Dmaq*W*`}$i*4M4QBpkR z{kGAhjzQislm?|zZh`D7{=7|-gDi*pr}#wRnaN~N_n;x_bG%oQTqE=8&zHlGJUu=f zha0i|#qCpEJrexh?7ICG_)`bqB^k(KzA**s&hnxd1|S@VsbafkK%(MvHG7almfwp^I$Tg|dJmIF`L36f3`uZSvFjVq|9 zn9~LyANIYw|8pQ?%fJBtZ^VjgJYVX@x}@EOtb?n7h|cT#mH{5}a3HT9kO#Ndu_dVD9$-RS&Q#|c zI@;)ELk_~&BT&X8XSatUgR!Uc_Uih9L?51foQ<^u`?Ah!sfV)hHuD^2Av}>XF&hUG zGpnAr4c34ll<-+uX%>N*C(mLP3FU>!*nKe?9JT~xIGl|%45t^|jL z)jBL10e-h#(`Ik58ka&IfYcXp-HL;Aaq>=1)pqmAk1T-BNCG;u5L|~?xPhxLkoP;C zoaGUVeSNZU%#9XKJDHKafvEeumI#El^;_uUXYZu8wfSXN#jpO4xySd{L1wW-o73^> z)MIA8V?nGdJ+!M7T&v@R?xczAo0 zHqAkv6E?IIoSg%f4X^XpT8;*SGlEP{mz3B9ICP#b4*3d0E??H(o*k?dgMdGBaPI9# z2%I&0f3dglnY@$J61eAo=Lfk`hX9&~f<^|&-|G9${yNWZhYPSbiS@w`1M;%}IKy>w z6q>YC^-*58$qiI2T8q#k#l#4sD47q}H@b9{##qhr@uHBa4NeWSz{$+^fzi>Uk!QP} zh@da+PlB~O@2uhz;ieHA``ycn6679^*mKJ4cnM$`Y5Tj;V|arV2M1qeAz2C~kBnX- z(*mWXtku=kuUv;xmk$S%ZBl!-`-knJsl}-wW3%-F94!A&PProR`fqL7;LJ=i@;7U0 ziZzPIG!MNzJmPfhm2H)jqAo1Izs4c{R+?d5aeG0lW83k;$M)S9wlRODu<@xqB9h<1 ziJS5wuYPrx+Ul>NMT;vz6TyO|6VFERyG53U43=dia!Rq}<5ZEcE$JRFL8M#&2lE)3`~p4_v`@z9xCLrmr~6B92_i76t`ve*pB64 zBafHBT!Nzm$YcWq7-rz0VR)xWDvwoQMFj_ZKusAWBu*`V)H1cUw*GG}s%i#@;ZUR2@WpZsiW#IdoYT-!AG8Ga-NVPvkqa! zsQP#t_V7zbI684($k;%xT(PDHD5(v(;_CMHK=sRkq{lW1|0f?kI6Ym5)IqLdDlZ;6 z?_1zQ%R4&&Or4W>?e4)Y1>d$pEVNb_nW=#8395!UC{u96xb@$OKG>DwNZtg^xCt6H z@<`&t@x|ZwjYQTjMUlr&;3y`DfuTUck=`V{y#tItE<7{~3k%rALvRG(c_beT3vTa) zo3UEc=PLdW_y0JOlmBP_v|zN*b(D^6STM>X;o^+aF_%f6nD){AA9`=io(hxRK32$` z;(K6(&M5&n?5W`8NO@$d2@6v&+ZkqzsB<7Gb~1ax15IkHa%IJNk}+2I{J`t0e&^`X;vOpU?*(|Z z)=#{tBR2mMQB+(EMm`E2^7JVg0+t}wmxTq=;rOEMLqj*EatT3FY4rUk@b`E#2*N2H zaBSq0N!cDZ0`>(5BP(lgdU|@FE1smJWTV^eJvhLfrEzsd|NF|WbrFQc<)tP6A3yZK zNG1`-LK^G%Eu^PMB9QKA1aau0Qd-#2krN{kPR$SU0XGQA2%Stn-8bEx!k;&KV7_X zy*fOZ)JWR>5|N2=rtmrR&C;!3I02pn9`gA;k{gyRgx~4W!yY+Vyqu5B&83C&D7c^o z8npV{g$>mSO@7FJf9EU}H8$A%8!Zk-Jx;)=R7VcF-{?|^Rr=(=!p4<7jS1l`qN%+D z#eg~m{nzSCXhRCsdy+u>y7#6i^}LG9^uQ}6uE;O_J;edS|i_hXUn_^L%%;+t}5%)`3+KRpRf zuxMSFDPQMJswG~f7Yjy~yszA7&^2ff5LjUzS?Txs#Qu*et*&hYJBL+7Z14_hB;vBk zlE+PAC&$QX-5S@`+|l*M!J<$k%l773VtTS-U8<2kVIP7S-PFy%|4eI7VRw0fsho}z zzx@t^9d+Y&VdH|}h0Gp>!hMM@(u%66KeJXPsVFUo0Qy5;ny2vg;u5%2t&;g*f{}sr zpuT6>Dnw<5%_lN8f0uIFQxsDb6C@|k5bc5zVQg&Osq_DMQ}x)G_J&rNu_{nK$j~#o z<6Q*}h;$;0xtTT^Ho1H`34T4q42yKK*uru!k5LT4CX6PC?piOtzG**`fN21z1+EPeSMm6?V z5z|Ua<wdBc}4w_2r!Q9~Apa z);ijP-SK~f;I5jN=VfpHR5#GI=#~tqV_8U_sQs$sSXcMu1RjvW-rLf3Sfn46`%2u# zI`^1DZknSe-7vxNw?a8s3qrR8## zseAKq35^%-3@Fnk&x5*K7Uz6Ex@_U&4zAiz>v+RO zzR3NqN{w=euqO-9o;r_=h38`}{>ZW@q@ChZb7UWGJN<2$AVMZ=6dLV4pVDnuiWm9A zIjt@?!VwR#JFXjF2gSFrBS|@*EIYDMuh&j{&x`H$?>LBo+ui`3({^IG%{8y(X+mbtNh9!PMwBTmEeA` zo^&@ye9vJ1sS39)BPG|@bzRYyxW)1uUu^%~&m~1A?_}oBav0wW(#GC^b+`KGwzY+$yibamliSZZsqWl7Gx*4}GXCc9z^W8q( zRLv_@6GN#k_ASll;eIGd(!o0V`j^_uEw=?g{FB5wbPBy?J%xL`@hD4L+W-E21n#_X zK>sY|y?{FSYhM&%GtUz!34^QZ54v3rS^Q1vGFmYYBwZgDe0;>j!!EYkOHtP8>EU5A zmM6>o_L8Ol-P)@pD!R_;(tHr{{UHaKQpXN=wAOVVUO}?CDaQ8T4f;vQOSNc0*U6cg zyMR`ldQ1$%nk1i&4)c@QklI{!`K|oxRv>^TP8~!X6|(#AD(*#TJghl8n}}FmyMG~y z!5t|I)y<9EtQXY@f~3z4iIHE>t$ZhO^{-rFCRvA40o1&rC)*oZ*DImZx(HaicJ_mC9&($iDe$0a8xcL08g zc(H~V93mxH*_(;R3_=0NvkQDMQyZJvot?F{HAY58|NMMs+#%6iSo%S z1lW0!;7|N`LGe|Gp^7s-Lt}HpPg8(dYg?AqJ)<7Zq-G!uS?gQmJE?*^Cwyc=!a#q&Ozvn*Ss5FE?lE8%iV%~o^*A*9SX5;B{bZ^z+klss z_ZV1p!>8+EWbiU?)Y2n@>??_RtX)!+i0Wo<)|mPybNr@(^x`@_J)*tqEJ4>TB9tt+ zJK;)uAedG#eIJg1;Shm?gR^BgJTO4}0G(3Q*T9;Cl{IgAT8D6cxvs8`2pBGq{MZb@LAd~}zvas(DsXFS zXsEck@!owWwb=wR_!yY3_l71lR4pxA{?>2)sIzf7-WWBno0^zV@%0r+hm&u3m_dE@ z0I1Y8HHqgN9fOcw!sO)S&0j54q!?efumiTr_gNkA5ikDa~e!=l~?!+utwu z*XGLi4>1PB>ePxg{;&hkh*c}j6LjC35Io7eI%fF4syO#>sP^`aFK1CPa+soMM9LwG zh)9l6b~c(sY3zv($f4vMgF-nZNvTAMFp4OVYA7SSgT`TYAt81}4yh!k-h2Ii??3N# zx%_3US!;dQcRkN@f9_k*yxDA83wI}#oVr+9;R~son3#maP1n@kp6L<(S*=I|Q0fI@ zi*nC`q?8o38%}oHO@GLmjz3e?4;$ZC6ZTD=Lc!5e2}eJ_(#kpX>rGg7yxl2sC%9Zy z+7zs`VEa;Y!v0+x6dZg5j#GW2c~bU0q$< zRk2)X^5UefLqVQnn}nNsm(B@k>h z;7^*HrHCHX(D3&QEnd9X+t2xkfk8KvR^3Bw8l;z%Ah0-~(O;~6R6c>=A#5fbK3{&r zh7It5veMF|CPv;#UVFc(IZJC7ZRt~gsmKY+P@qg<(rD$|?-qX=oF^tZJW8v@k9-eQ z8|fzQ5mUhVN#&X__wrK1#AY5Y*$gIR{=x6c~;i;L^loj?5kQ3^J+iyQyJD7fnpQ0%Cm(f8Nybp9Zxpzs8E zV*c!$-=X4JOx*4V56Q!{(qs%_&%(N4blv^7pU3a1%@uIMR}2dWuI%0$X>)#z!r39x z8{n#5y63WkRMVAG)i-b7dSV}X*4%99GYbMj9!gD7NOgXGKTE0;YJWXLw+CTHEmf4b zI+eQ-VPU;Uj=EX&Yj$Ej7D(pt9J456B_*Y?rj=JWp1Dy|v&6u_fVweMmxSJ3=yZEO z+f=2xp1P3R?zKNz5kq|KqKCP;=2O*=cBdRXR2$Lh;_j|_SJ~v)7na}Qo3r>Y@o{lN zklD1OoN)*0fUuwkV$f~4uI?%_p2iY*-<-6!RcH&(riJ8lD<>}0LmONLQlDK~y2{LK zjum_%u^@@j6DJ#w(Z!l!^*0EWaJMxOLHN7@_v2$SX5AO z5}g+kf_7Cx!*zpA8Vlf}(oqKo2Q};q5(^g=ARxdIQ=BN=t^R=lYf?>YZ)-aPu2)1@ z*b%rjI=J+Q4^3|r6xc`2S2nv$dTBAA`i|MAGhQV5Oo<-@#nT?|A~4}xzriCo*Z@3t zBKcQ1`CKq|kVi?+^2PSUy3_+ei1d-b(18~t{$mSzd<{$r6OV5yaCC8LV@F5O%nCTJ z-^4f1o1--`IJ)9WE9(zu=A5;>bF-?8*YP*r1?icYBBk`xpj7%leq>^9s6Jge8it|c z>ni`f86TlkF9eDZp0yvw32cRZxXY72AOB9Ntkkdl-m=vwbWFw9*O%xr%?bS6qJ}Mp zhMt~Ir$2l7(i-#@hQM)ygNHB<_5=dfLIvwG3G|=`2~8N2s4ibF;N|6o%{Uf$O?apS zCdWKs^`PnKEW|!y6CQ4iw6+^&7~xlI>pgiajwAgq|9Y>bS!(s!vkrrgGZz;gUj>PM@x<2}f;*2Py~;7Sg*T3>>5Pfu zP%WY!K#sA%vE{Pa^YOUoy;bA8MC|9hm!2=n!jUtIv$s7%0y}Z0pQ44P{aZg)GlfpWF(pQ!@*Uj_FW21T3c%I=}(ws(v^PxL# zT+dWfo80-gl4tkKJZ(o;*F@lU_jdkdUpnY(cC!Y}H{Z>|QSeNq`SwoVWLFzOWfSAS z^4x6w8-AUR^E16{k!J+2wRXmaD5{TUr1d(cpVr1JIl69r&e9$$7+JbKDU%2L&URH( z*P*KCb|kskvaBXo3QtM&Fs-%e4Y(K%kI(A;Leb4$s{KOU-P&M|79&TTT0SL2(Cd-Ky3RuzO zyj7BY>LTsbz$*g0($5oP7ooiQk*Y*weSTc)1mfU`T9m{R{0+^bVK!` zrv+vfn3qc@9<8v6Jr;XkHDo>i2zfdgyid>CiCQu91wDcSqYpmzYMP~F1`CsC;*>pq zTwkM1hNDSH2=`hVy8HI}FJzmdOJ!%Y?mP2wDJvx2oEr0-n7djh>a%EN;_B*(@)2@* z?0H(hEqr$#=c>qNp`J~|+%BhBs+r2m4jG(i%>_qO(*l)RRbdw^4SB)ePHhao7xM!x zM|{~sA5f<#+||7@$M9rT3B(JPiIvqcI3JT*pN6cpW$vMpAHQ$7?peWZR<)q3D1$1V zKt$4=P7M!-U03G+-#2@pBGYTU%|N1d0Y{1xCOD@ZlOGyg7t-(PO%_3h`Mg$!P_H)e zO~7??k0w$6^>|;*3!dvr@=6`n(zy6VDf5Dku)gp%(Exe#SYBd$@S0OYK_8h{Fi+ry zi|-IMT_92~P%FVXA2Te$3T|k4)7ZG|jVXC^J>@?&)t%H$7|FT&{j&7rMRCRDWjUk6 z9CC5S6}1#?(i)Q(f$&ch3anT>e{yYL_WjlV#_D3^r4|A)xvF%~Jddb0YZpt~^j=xV zvMag1-YL)~#6I%s6jRZ9-_mV)jx$H#TC>fbHhw-K{)9T@YLS>_x^W{iDY|M>i&HtS zN9R`!D<_oRnOQYWQO!AYDW0u*1sNtb*Y!lmMHXIcm!S?oY3B%)y(ko$mHUjFwc@{w zWIcWZZfmlhIxZ5Gxvk!srN>vTot@}(ENKsF{PZ2?z@=u8>qQLX!ZelmGt0o_i7#A; zS|Mb#bsc1*jES1GuC6Z8>BBF5+y|kb)%)CjcoJ-9eMiRdCatyE|Tsat}WjFz<&64qKU(V6|vJ*z+eq<{)K zap%rj5SSl;P$ix|Z3&^2#Ixd9g~5jw;!^$yun@;~%)smSS+k-4;Pu+tjpEA#kQfu5 zh2E;uUsXdx9F2!9fZ%duWlB>3PU;=~8H~!IYpM(BU*U%sWxs+;r zR0Aa`nBg?M|B>LL3?ev_udSoQtquG38tf%`KyX7&ok-jK`eI!(r@MO@x}pY1b}wEz zhCD#@!#p#3(gYmKx-%P%)cDT4mQ+WHYM%e(# zJC~JZi*~dU^&!F0XiIb%L<5(5mUkdB_iDk~wyHfm9#0>z+QBfG z+w$op?(K!uZqBlyKPgPpwuej!t9StC4A6a4M8}})?FinDzUA|NT0N9kijtCVkghR6 zOocTbzIT=q?yga|y%tR267!_P{3Xb&wlkQ32>Yc$_%j27xM@B~ASA5V^ zcYsz85-i(SjEIhoM%2{oyRSkp?AuJ-&i{@KHQ_~V`BD$|s zU{F1oJ3Z35#$d|GvWZR?MX8jZzoK@c!$)Jyn#SjA9w(zW&n+&NfJT8ItUYh916$zD zf`lCp*BWwP*84mdsISOh%eTaUzGr$(kd zH10aGU6WQ)N(MZJn)L~uWyG_jw((s~p4^tRaq+~&gi&ChFzDaxyYGT}FMZMFFPJ&T zNH2WlO^p0;#lh+blgZ4uH0_3x>%Utf_W~xy%w)ZJ + + + + + + + + + diff --git a/inherit_graph_3.md5 b/inherit_graph_3.md5 new file mode 100644 index 000000000..75e885fc9 --- /dev/null +++ b/inherit_graph_3.md5 @@ -0,0 +1 @@ +637c935197ba9610ff258fead18e6312 \ No newline at end of file diff --git a/inherit_graph_3.png b/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0be1c853b6d8abb64b487afe699561542f99b1 GIT binary patch literal 29702 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_30.map b/inherit_graph_30.map new file mode 100644 index 000000000..cb5500d0e --- /dev/null +++ b/inherit_graph_30.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_30.md5 b/inherit_graph_30.md5 new file mode 100644 index 000000000..4a7bd8b86 --- /dev/null +++ b/inherit_graph_30.md5 @@ -0,0 +1 @@ +c77179237ac44da2380041f8b0965a48 \ No newline at end of file diff --git a/inherit_graph_30.png b/inherit_graph_30.png new file mode 100644 index 0000000000000000000000000000000000000000..e078b92d9a9ee3fd746ef18e8c1249871a3dd9bb GIT binary patch literal 2445 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 + + diff --git a/inherit_graph_31.md5 b/inherit_graph_31.md5 new file mode 100644 index 000000000..16b6ec25c --- /dev/null +++ b/inherit_graph_31.md5 @@ -0,0 +1 @@ +03970db2b6ee383a6f1499a451375bb4 \ No newline at end of file diff --git a/inherit_graph_31.png b/inherit_graph_31.png new file mode 100644 index 0000000000000000000000000000000000000000..40e82dea53b427e6999d7dcf22904eadd603acc3 GIT binary patch literal 3665 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_32.map b/inherit_graph_32.map new file mode 100644 index 000000000..2c7ad0912 --- /dev/null +++ b/inherit_graph_32.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_32.md5 b/inherit_graph_32.md5 new file mode 100644 index 000000000..26f77d055 --- /dev/null +++ b/inherit_graph_32.md5 @@ -0,0 +1 @@ +df1b642d15e3d25a54269db82b4113e3 \ No newline at end of file diff --git a/inherit_graph_32.png b/inherit_graph_32.png new file mode 100644 index 0000000000000000000000000000000000000000..c1641d4155607ac44858f8f58e6309f61a0d576d GIT binary patch literal 1746 zcmV;@1}*uCP)Mfw6in=!TLKyvnY^+_eCrMD>@)WsdJmh&}pGHEA2p@2~>LCKf>o_n&+v%emtMQ zcHj4N-OsgW7rQSfNF)-8L?V%lPd0o)tya6rWU_#{NJcVy^78WjJABS|_=HR*3y{fV z|CybXBy(u|Vi=N}n>(|qNalpWU?49q?~iLXvz&|MA51C+iAX92iAX92iRfQZ3`t2z z6c-oIbsB%YQU98lj5BA>P*G9wdqZ1WR;^k^OiT>n;o{EurB zja94FI6FH}?@dgDMx$Zx-o2<)syWNS8mv+bwY9Z4IXRJ>oXp_hAUd56l}g3KhYtx4 z4@axjiq~Ggd>MOtd(zU<0FcQ>{OZq!!!rk2+tyassckjr~&ZeiQhXV%=5FH(DvCqAG_qc!mK3!d1 z1O)|g^5jYE?Cb#0>2&1eUcbrm6f!$wTWYc!9ZeSB94xZBqStIRaHe;SQux| zo@L*@eMCk^a`fm?UcY`V#$;qu4g2js$5 zE+9&O-)VYPM{4i3me*@UhwC@A32p+lpNXWE)IYfvZ@R8&+D5)wja zXedEJLDbaL;NajuWo0E#o;<6H=@yKXlQ5+RdO#ru|)mZI0|*}i?dRra=e&maf_X0w_8{(kcF^CuKL-3D^H zjQ79BRJ3G_R(7@HJS6RDu z?X>s(qhrU8?T?R-7bc^orbZ|!DG^FaN`x0LUI_K|^}@iwz#p%D^X83UGMOyqK79Bf zl$V!}Ivy)l5Cp+!Gzyf z-QC?I);@mxDCl%L;oG-wBi25B`Xs!1^-3@rjpAHGLxWISS}JsQb_#86Z5C@&$#MPq z^+JArzR=UtBNz+@;rsXRBk~xJUauG807*qoM6N<$g77_C;{X5v literal 0 HcmV?d00001 diff --git a/inherit_graph_33.map b/inherit_graph_33.map new file mode 100644 index 000000000..2cf3eb603 --- /dev/null +++ b/inherit_graph_33.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_33.md5 b/inherit_graph_33.md5 new file mode 100644 index 000000000..e6abb55d4 --- /dev/null +++ b/inherit_graph_33.md5 @@ -0,0 +1 @@ +87873f5640240df9afc813dad933bf10 \ No newline at end of file diff --git a/inherit_graph_33.png b/inherit_graph_33.png new file mode 100644 index 0000000000000000000000000000000000000000..16eaa1573317c60cf505a308b370cfad2ed414ba GIT binary patch literal 869 zcmV-r1DgDaP)29@$b2bVj)Zr6+sQA5+sFKh%A8_B?SM1UGNQ* zNGyVHsE8n%!apKvYhW(}TA0{qyO^LDtzwlRTiK|E2pY^S_TH=-C&}t@T`%WT<(%g{ z!b)MNyQO5>F@met(k?;?sL<=A+5wa^Ke1*S|lUvp-!Vg!m+c`1<>{^`U(M z{(d-75a@rx;qaU9<|7LP0?*F>^_%zczo!C~Oa&^L3RE%`sAQI(^1otkZjMAE@#BDY zJB^Kv3=R(B^?JFzy~XGAS@zm&Hum=Ro~^y6_q|97^yK7(+S*!z!64aemUui)Z*MQL zSPZY%%kuJae(loI64lk!%+AgNAVk5v#m~*z?Jw?qFH!;pXliQ0Fbn{^UN5`5yX@@j z;Pd(N^8j^qbvPW3M{|)#glII%#>Pg$xLB{>@8|OJlB1&|4i68Rnwp}gr-#kWO}4hS zxVpN+aX!8*U;2>f$OzGBl!1YPd{3$RYe{>Dnx;uInIxOdl1ioU`FxCxjg{5g z*VjjPcemxZn4zH|78Vu&xVX4rWo3o^{e3z*Isnjho%;HE(&;n~hoflS<#PSXDL+eE zpj};E1cO2D@9)WEGK4}Q!r?IEFMc5YlIM- zo}QvGp1oQLrR8>_yTIY7VIX^!yT9@I? zzK150Nos0p%32$VMCkADw;Y$NwY8PDwl)%p1iG$c7zQ4XhvVa8G)*g6mqA*frfFgr z2D+}}a=D1bVyv#Nmeu>x52dGUHXEjCvc0`cb8|DDot-o^G?2+;u-R-S>oOF4ksBQy z{Vas|svh4J7YGE%<#J!v*47?94^_9GlBqx?Q-MmR0+mb!DwzsYG8L#~Dp1KR@8zw2 vcUFok2sD?=edEVJB9s#T%}P-eMUmtmexWb9DckZF00000NkvXXu0mjfDl(?6 literal 0 HcmV?d00001 diff --git a/inherit_graph_34.map b/inherit_graph_34.map new file mode 100644 index 000000000..835c62ade --- /dev/null +++ b/inherit_graph_34.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_34.md5 b/inherit_graph_34.md5 new file mode 100644 index 000000000..d9f25be3c --- /dev/null +++ b/inherit_graph_34.md5 @@ -0,0 +1 @@ +355d700ac191c46e6b6afdf7c1536e76 \ No newline at end of file diff --git a/inherit_graph_34.png b/inherit_graph_34.png new file mode 100644 index 0000000000000000000000000000000000000000..12746f66acd7036a8a663be9b76daaa131f798d2 GIT binary patch literal 1518 zcmV(vYMRrUZL535y7>KpOInXMJqJO@< zwEjT3X@!(U3xmY%GNP+)T)U7iD&if|MR}2V5s^CEz(T@qOp~als1aID@p&(L-&1oP zx6?Lf@cUey=l49%kM9Ftemgto01O6$!C){Le?Hv&1-IK>$Z_1Ze28HzJv184a3B!q z`gu(^zlh_wZ5+qlUp!firOe#iTnNBlKd&X3=6?c#K+Xj*mNtPv0MTePX(;GV*=y18csz$|YHCOgyLRoO^XJbetVxnY_4V~hwTBKJqU!4Egta?&?vTsnQjC>) ztE;Q&!Gj0X)YL?K_UxgKjt(LsYHe+$6DLm4zJ2@X`t|D+kH-`CSt!4dmeJ8s0zlz# zIAOofpFhjjRaI3KiA3Z$7K@Q6iuC2n7a}6ESS-}s+)P)mUZuTz_tJ$67ieT;goudz zem@xu1}Z5jAyE|R%$YMen=>7no14kw@%%I2BRRRJnVg)&+qZAAVZ(;B>fgP4hj2Ko z7%LHpL~!!tN$B-@)YsRetgH-vzaN(_U4kS@ICbh29zA-5W51MzqqRaI43 zw{9Kw@81uf&j+{LowGT!%I}^uf*_D6ie$IjY4z&WbmYhp`u6QxQthu!nxUZ~>hA7V zjFoyV7E8hjH#Rm#%a$#pXf!IXO-xLXUazNtfq|6ybhJEq@`TK0GZ_p9vfJ%+<;oQr z8XA)Gf*??Pd%GMD4-XRn8Xq5*HUB)r^z<|p6co_Cd-sTl$Y!%qOG`__+_{)D9h6R* ztlZN8Kt)9b>gwt+H#djD!9n=_egpymoI7_eWp7bY5sHe66yt@kTCMVRe}6w_W@d2l z;>Cm-j^ps=%^UDMzhK^EGNshAefxIw_4VQX`}gSW?Zxfew_!G$5sgN%Y15{(G?$l` z%h!6n9#*Rr{r&xmI%g(i%`}CDg^(mkj=z5WipIvqv`mu;I^B;Ec%BExacF30!1CqG z6Y9#!$`Fgi7R;+b5CjNYbRFNQzgkTnRw= z=00C@{)(JEr|IqO#i~`S(yG0C_b!eeJ*pU|OG!xyN=r-8)6)Y{6d_3x91aIwzI+Lu z=TqiWX&D_I#f=*`Ff}zL=U=~mjggTN2!a3rFquqv_UxIQ4+eutI$K&=WaD&pcH+g0 z7ud052Y~N}7#kbQ`J9=MHPeJbAxM%0Q50b^nb6kOhFiC8rPcepH^TGLYPAT3LU{P_ zA=a;7kMi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/inherit_graph_35.md5 b/inherit_graph_35.md5 new file mode 100644 index 000000000..e0ea6004f --- /dev/null +++ b/inherit_graph_35.md5 @@ -0,0 +1 @@ +c10d87db8c8525b0833ffe3521ce23e9 \ No newline at end of file diff --git a/inherit_graph_35.png b/inherit_graph_35.png new file mode 100644 index 0000000000000000000000000000000000000000..a0f51889c730160dd2de48009085bdefa2dd26c5 GIT binary patch literal 212020 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_36.map b/inherit_graph_36.map new file mode 100644 index 000000000..ccad5bdad --- /dev/null +++ b/inherit_graph_36.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_36.md5 b/inherit_graph_36.md5 new file mode 100644 index 000000000..bfeaa0143 --- /dev/null +++ b/inherit_graph_36.md5 @@ -0,0 +1 @@ +6d02d69f71a1c0a89571d47305c4c0c5 \ No newline at end of file diff --git a/inherit_graph_36.png b/inherit_graph_36.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbedaefb4b85b4e6100626ece03c103b23b1118 GIT binary patch literal 2265 zcmV;~2qyQ5P)MeOG|&P6beNJ+S}V9kw_H!*uPl|g`zfS@>13jva%xwl*3Y8`U+1`#Sj_az&d!FOo*vTD(f|M~){^HW z|A^Dn{OPf4SSbj^5s06crW8C9gyxL2qv_zJLF& z*7;mrUFF)}zJ0^SjT_Y#Un-S?%jK#q9-zi!gQcY+sION57qFNvW{M`&m$Dl027Ffafc8yn2c%|RlOKqwTVsHjLTRz^k!T3TAb zX0u^qV}t1EXn1>jGk&2^h`_)=bar;4y}cb~W@gCD%!IYIH30czLqTU6@*;ll^Cwze+YUXJ$mc0@-yC4>e z!RPapY91OI0-w)^ot+&{ojL_wU0oz3Bme+HLPB6}ZjPX!Ac)0c2!%q0d%9*~V`Kk{ zi;E+x;lP0d#KOXY`1tq`Pft%`WMo8+A3si}rlywk4Gs<_F)=Z6wt;~G^8ESpW!uY* z-LYc_Nl8gz+9M+)gu~$wsZ`3?WHK4i($XUD-n~=mUsy|KW+s`Km>?Dw7NoMWk`O|O zo0}UcC@3I=5Hd70MA&S$oW`c6CZegSNn|n^85|rWY&M&8cXu=X>gs9&fPDG#WmP&} zzkW?NZ{AF%r>BWPARy)C<>dbT`$Sh)SK)WDfLJUh(b3Uzdv)Q$1*ZM!(7{7;yhsrwtt;5;b84eB(C@3gETU#6M+_|H$NbT$ELrF;q z`uh4XK0c1Y!9lqK41in#YGh;t0FcRKFg7+`5^pieGz$a*BqSuj)zuZAo}Tdb_C`oZ zh|;)g;g_6w0bp`+5*IICR4IAaf~Mv_OE54n0E@-K`Sa(Yt*tHB&&9ED6$}gvl=>ILX0uUPScts5JbeB7Rc;Of07LJaN zu(Gm3ad9yKV19lc*REYtS?6McgM-oB+>ETOEQRa-`0*n~M@NyBm4$$S0JyumLn@W7 zdjD2JndXj;4m^1902~enZfQ@Ax&j*jk!@$4* zW8-i*sH&<$Wo0EC92{V0XNS7FI#g9vfz4)v!{MN^vJwRa1#otD#@4M{F*`e}vd+bD zI2`bJJmyxv7zYOj96Wds_V)JRa=Ea#w}+07&Z_rsC6sA4Gc!YRaWO0{Ey3k-;qC2> z)YMc)^Fl%C<>iIM#6-1dT5>Iqjg9?_#bVv2uS8P*7g%^DvaGCZNv_g&8z}1*n!J>C z3r$|ix`ie$W!*xPm$Gi5$xB(c(B!48TWIo9)-B7v+aMB&ey0u!Wz{T6UP8z-0KezI nE))udLZMJ76bgkxS(g6*uB8!@g_5-t00000NkvXXu0mjf+oK~- literal 0 HcmV?d00001 diff --git a/inherit_graph_37.map b/inherit_graph_37.map new file mode 100644 index 000000000..7987c49f5 --- /dev/null +++ b/inherit_graph_37.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_37.md5 b/inherit_graph_37.md5 new file mode 100644 index 000000000..16190b2cc --- /dev/null +++ b/inherit_graph_37.md5 @@ -0,0 +1 @@ +00a603c955a574b157cc35342fc0cda0 \ No newline at end of file diff --git a/inherit_graph_37.png b/inherit_graph_37.png new file mode 100644 index 0000000000000000000000000000000000000000..9cff7da902edbec6287c8b15df410fba7aa8c467 GIT binary patch literal 2896 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 Cw6 + + + diff --git a/inherit_graph_38.md5 b/inherit_graph_38.md5 new file mode 100644 index 000000000..4f06e0e30 --- /dev/null +++ b/inherit_graph_38.md5 @@ -0,0 +1 @@ +eca0f74b2d53d7290ed1e8daa736b2c5 \ No newline at end of file diff --git a/inherit_graph_38.png b/inherit_graph_38.png new file mode 100644 index 0000000000000000000000000000000000000000..760feba61c9b5762af0c5195e99305f21c9dc378 GIT binary patch literal 3105 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 + + diff --git a/inherit_graph_39.md5 b/inherit_graph_39.md5 new file mode 100644 index 000000000..b929cd7be --- /dev/null +++ b/inherit_graph_39.md5 @@ -0,0 +1 @@ +b9cf5c96f4432e3d5b5ed7e56e64b568 \ No newline at end of file diff --git a/inherit_graph_39.png b/inherit_graph_39.png new file mode 100644 index 0000000000000000000000000000000000000000..a1cfb88a3f10d654e54c6fc0f7654c00e49ba1d7 GIT binary patch literal 2527 zcmXw52{_bSA0BSGQ7WmFPsy&qSQ=vsr3qshYYd684M`|M_DsnT%5rUk8q1KKY&B#X zGS<;W(_}D~LUv=D!S}!4eZJp$&N_H*9%{hc4q9BIJMC(H)|f%p-Ia7&<01G3~X z9-xeZ2Im14kBhMZ9CY|kdfQA)0fBf^5%8PV!T6=DNOS91;ci_Is`&Vma+rY&SGC^J zG$S|jW2bFmu9V=LjLxdg^SyGVse{i$=S59vshTvC+YkBggoq%T4N|sy<}9 zy+sNal^y*aK#p?U>r9G}YZSc4yP4bGi=CJs7JfBoOr8pbiZ! zRAI2kYfSPQa@x#dU5c$|WhJ<@v=rAVytb((4D)65Rl9b_a3eErpwU-oG+Ks<^d6gy zKp-wwSLWr3j*N^*Fb-!@%+v#ZohFmXHA|CiSknF${WqgI`{~9U*JR))gt2k{+qY2$ zm!HCM&iuw0jI^9>#Y~S(-e#4eQwx5i)HWqIci9ThU^s3qkN2uggmtvGf|Qk&XJ%*L zjV(TVM}uCua$}9-%M%y7@M)!`1Fcl$Gp^|X5n{1e1w}=cc6PWPH+%E-7NZJO2j zM#5l*HdR{LBCe~O_x?S2ePhF&{-eo1Qzu+g@iRxIuCC4#Dy*lc7kse$6PJ`Es=S?} z6~y#Y4_;~B9`dS7O;6vLC+0n#AC_V=nW)bZ+JZ7jkvrObm}^PeTNhy2{4YD&_O~Yn z;guT5zXS$%Y$rT+PM@Mn99L*QKv*K!M>3e%2Ko_XEqC#3j<6=}Ca!Crx0|Il^1D?w6Py2fh+3|R17ricDL zY*&|lZupiRhr?0I?&s`GCv}p^)QO2CB=HvU>!V*oVh)h>A0Cv{tLrRQC?1a&(K*<0 zt*NcW#l#kWj6J0Tis`I%>p2skd1-2D3RQ07;_9jaJfR|K zl{<jZ^D`O?={KqBE;i(|Fn>_Bk|34jqYii&2r zb_cOv=iLqu_MvKO*E|M9K+obUukPtu39LH=1K$~bR7I?Uw-CeGs;o){b z!2f}Hudb#^;zmbp^lsgvdP0G1E0uu)Dm;ig{65U%M}OF`Hi7a198XAU|p1lgoGZ~dmNv&Mra_-_OSsr`F1a>nlx zP{iSWkYhOOP9FS;#9V)N_lNsm)x&m_3=&1A${QHmG4MMmR4m}Js8s5&08QZJC{nO8 z;Lv8~<_IHRyPS=|=Aym!cD=17dbhD+b0^?v;w2G)@+A>2y?-g}u-TzIgE?BZmw&Ph zR$5wgG_|yN`S{kWf`WoV>xjsl1?S@@PDm;#z5eh43W!%$PRa~0CUjmmdY5z{j<>KP{`|rQeb@q03Ugxk_Y+sgY z{OYP7AZmR*J#HKh2MA=!Pkkmo!pjRRB_*YvgVY$UOSx}to!WgZEo`_9&a5gYkV*U$@9|6`X8ad z3JOxn%5R=OKLS8pQdX9_eN&A&2wNCa$}|aMFEvO?N%hogEjMC|i)9lJb;`D}(j;5a?g!nGcQ($}x!j~+jdR>}O<60QZ% z2*4VTlo1mXgX`CZZ+p`qadRTnwwT#b58b`eljRRtyqx}ec$)WqBzhB`dVbY=tY7=G{G zcAS>Un?uyRfoVQ)b3Rmx4i5_WiTM#u2jb*PEHO181$jO{-oCEmoJ8ER0C1mL#TJOife1% ztKK<0E`c+uPWVXqrs7UH%bcF3F0wd)WPXIMG^eJeB?Q@b5aPUERneE?y0Ud6b%HWFT;hmQU)MLQyH literal 0 HcmV?d00001 diff --git a/inherit_graph_4.map b/inherit_graph_4.map new file mode 100644 index 000000000..831392a14 --- /dev/null +++ b/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_4.md5 b/inherit_graph_4.md5 new file mode 100644 index 000000000..0e513dd38 --- /dev/null +++ b/inherit_graph_4.md5 @@ -0,0 +1 @@ +f4f4ab86cb14cfbaf89061cd845a166d \ No newline at end of file diff --git a/inherit_graph_4.png b/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4ff24851243b8edd919bd088f560077e9016a8b7 GIT binary patch literal 2328 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 + + + + + + + + diff --git a/inherit_graph_40.md5 b/inherit_graph_40.md5 new file mode 100644 index 000000000..0753429ac --- /dev/null +++ b/inherit_graph_40.md5 @@ -0,0 +1 @@ +fb0a6fe0501eda04d8fcfe5e76444290 \ No newline at end of file diff --git a/inherit_graph_40.png b/inherit_graph_40.png new file mode 100644 index 0000000000000000000000000000000000000000..1d58785b0eb3a529aa9a7f0eccf457436d94ce4d GIT binary patch literal 33121 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_41.map b/inherit_graph_41.map new file mode 100644 index 000000000..ab55c623d --- /dev/null +++ b/inherit_graph_41.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_41.md5 b/inherit_graph_41.md5 new file mode 100644 index 000000000..11ef426f4 --- /dev/null +++ b/inherit_graph_41.md5 @@ -0,0 +1 @@ +73b88e313732cecca6a4acb82d6f2442 \ No newline at end of file diff --git a/inherit_graph_41.png b/inherit_graph_41.png new file mode 100644 index 0000000000000000000000000000000000000000..d7bcd93726a1a883593543dca78ff1e0d184fe96 GIT binary patch literal 6274 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_42.map b/inherit_graph_42.map new file mode 100644 index 000000000..25888c4e7 --- /dev/null +++ b/inherit_graph_42.map @@ -0,0 +1,5 @@ + + + + + diff --git a/inherit_graph_42.md5 b/inherit_graph_42.md5 new file mode 100644 index 000000000..c09b542a2 --- /dev/null +++ b/inherit_graph_42.md5 @@ -0,0 +1 @@ +7574dff067789ed85a1a0840412c0c15 \ No newline at end of file diff --git a/inherit_graph_42.png b/inherit_graph_42.png new file mode 100644 index 0000000000000000000000000000000000000000..763e0de5c99d50a76f3cc9262f8f87aa09a7f197 GIT binary patch literal 11033 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_43.map b/inherit_graph_43.map new file mode 100644 index 000000000..0750c80d3 --- /dev/null +++ b/inherit_graph_43.map @@ -0,0 +1,5 @@ + + + + + diff --git a/inherit_graph_43.md5 b/inherit_graph_43.md5 new file mode 100644 index 000000000..58e91ca77 --- /dev/null +++ b/inherit_graph_43.md5 @@ -0,0 +1 @@ +f5e2bf4f50f881360ef62369447416c7 \ No newline at end of file diff --git a/inherit_graph_43.png b/inherit_graph_43.png new file mode 100644 index 0000000000000000000000000000000000000000..6faeaac2a34c9f10083d963add36d563d5ec9a21 GIT binary patch literal 10534 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_44.map b/inherit_graph_44.map new file mode 100644 index 000000000..e380c50c8 --- /dev/null +++ b/inherit_graph_44.map @@ -0,0 +1,4 @@ + + + + diff --git a/inherit_graph_44.md5 b/inherit_graph_44.md5 new file mode 100644 index 000000000..d53c60003 --- /dev/null +++ b/inherit_graph_44.md5 @@ -0,0 +1 @@ +74704479f75e06810a98b1777925b690 \ No newline at end of file diff --git a/inherit_graph_44.png b/inherit_graph_44.png new file mode 100644 index 0000000000000000000000000000000000000000..e445e3e0c4c735e6734d63b2075c797abe02a619 GIT binary patch literal 5175 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 + + + + + + + diff --git a/inherit_graph_45.md5 b/inherit_graph_45.md5 new file mode 100644 index 000000000..10f540b71 --- /dev/null +++ b/inherit_graph_45.md5 @@ -0,0 +1 @@ +8aaec3d00d61366af469f066e85c7c69 \ No newline at end of file diff --git a/inherit_graph_45.png b/inherit_graph_45.png new file mode 100644 index 0000000000000000000000000000000000000000..aaaea821b29d67f97f9bf2300e99d5d3e4c69d05 GIT binary patch literal 19166 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 + + + diff --git a/inherit_graph_46.md5 b/inherit_graph_46.md5 new file mode 100644 index 000000000..5c803de50 --- /dev/null +++ b/inherit_graph_46.md5 @@ -0,0 +1 @@ +7701def5728b060643c4ba7f4827763e \ No newline at end of file diff --git a/inherit_graph_46.png b/inherit_graph_46.png new file mode 100644 index 0000000000000000000000000000000000000000..a998681c14ffe759d32aa65683df47ce8fcf80e8 GIT binary patch literal 5450 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 + + + diff --git a/inherit_graph_47.md5 b/inherit_graph_47.md5 new file mode 100644 index 000000000..962b2c73a --- /dev/null +++ b/inherit_graph_47.md5 @@ -0,0 +1 @@ +d9f4dbfccbfe5f587ddbf373a8c014d6 \ No newline at end of file diff --git a/inherit_graph_47.png b/inherit_graph_47.png new file mode 100644 index 0000000000000000000000000000000000000000..c6912bf352ff0500cbc023797dabd311eb5e3879 GIT binary patch literal 5605 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 + + diff --git a/inherit_graph_48.md5 b/inherit_graph_48.md5 new file mode 100644 index 000000000..b0b4516b7 --- /dev/null +++ b/inherit_graph_48.md5 @@ -0,0 +1 @@ +e13d4d29bbe972f1f9eb70dde5e0b73d \ No newline at end of file diff --git a/inherit_graph_48.png b/inherit_graph_48.png new file mode 100644 index 0000000000000000000000000000000000000000..135fb7eb87dd615904684fe8fb7183714f672cfb GIT binary patch literal 2536 zcmVP)H&T;hUC6ygViMq|_uRE=odFpuIAHF1y14n;@|)*20q*s7pa2`(t-{a~0drO*PE z<#m1u$=q}9@;_%zZ{`jIaBy&NaBy&NaB%$H@Qe)#g~FT1<4x@gF&rG`u(7eJRjE`3 zZEbeOop?OnR349aq4#8Qa9B=DOUp$7OWNAn6>%#nmFkZR;^62CDwPUqwYr_%rVq4m za99cD=lX2t5jlP!A=k$vr&dtrm)~#Ei zP$-a`oZQ!PtU_-TSXo&abUNK1UBeXp?Z?yM+lj8w)YODy$BrQ{FAvSl&6qM}3X+nN zz~}QV8h`)(eMlq{EL^y-%WGe{bP0zKAI9$8yD@Frv@VbDF6LrZC=~GU@aQ!?mS9eE zVqzkqqoXlr&YVu?>2I-FrHErv<~k)Mg~Vbp&6qKRR;^k^4<9~c`8+*6$-~2g#9}cWKYpC?<>chh%9Sf= z;lhQqZ{I%p@#6<;jq>tx^78T`olZx5KA-e@J^*>H78SEG-ulp3Y-}t=MMcrsvuE4szkK;JrKYBmR4Szn8#d7U_wO11@#bhuTs4HYS27{J+LE+v8_qS65fKy1L@_?c4bI^Cx2;Ja{m3 zEtAQRmX?McJ9Z#2Fc48uQ79-VV0@vWp$G{HL0VcGX3m@m07y?y$EHo25D^i9)vH(I z#*G_TzI-`rZIw!ewQJYH-Q68amoCML6DL^y($Z4M<#ISWIwC143Gd#$LsV2006-)X z;pow$c=_@r)BohjlW1sYfRB$4YHDgwR8++H+O{o;+4y<2w6qjTr4nv#Zb(W>!jmUY z5E&VXty{MuCME_87A$~VE=OKo9&60Xl`COuYYT-!fmg3yK_n94$B!Q-??q=hGpBj+ z;>Gav^u(e?i;$L<28BYwXo!o8gM)(u)~{cW@#DvvjIE{+8_C_>of;Y%h=@p|(a`A8qp78( zg&89h3TgZH?M(ai>(>N;+0CM(qiM^QEsS3v5YUk$M~H~1y1JSQ3kw;aaob$X#=E3Y zD5TWXRHl9N=1l@XwY9a3EhZ+0cJ1258Y7p>nfCYZ-^s(ngU+8n-);>{a%N6*aBwhX zWo1!YghC;$Teps7GZkA$dDiK4WMgAPm6er@KRY{{bssFHqn+3)&%}|Dk$C#_DeCI# zP+ne+Q>RWLARqv0wHkhYe$Z;Q$jr=yR;xv0VeWwQljYfm!=4Nc%xRGV&@pyRt z{5gDmeUY7=jjvz7A|@t=@z>SW;m(~qm_2(oV;ehmEOR|<*f0Qq!C=7f;lq)foD7*v zhTXe&BR4k}H8nMejg18Wj2blxqehKl#u~TH#cYbU_8~)tz{$x8-rn9Uo55gUjR_46 zWv(3@91s)~1dT@1t(O)IpYczcG|B9IUBN0v+=`c% z7reZ@FmK*G`1trBCnpDM*RI9XsZ+6H#R?=QCc?$V1=p@!V;(0=!RPbAVQHkRd~G>Cz=!zI+)=mMnpr zn_G`#PDx2I+1FT0XWCjZE^33pU{a$cIWwoZBRzI@=F6m`v3x!s-@bjr_wU~^XwV>& zG4+%lKNHv2*JJ|VhzN*8B2-jVfY0Znyu2JQUc7)@E=NQ}1oNjt`-!mT2bl z`S|eRgH`qW`}@P&+Z%@u9|i!lw6x&h!Gl&^!zu?myIXQJYr>(6mE?&Hd>({SirI0Od= zW7e!$$jHb*KtMpde&%v!iRRV=xJV?j+CQD_?d_43m4!Wf_8=f20RQ~+559f-2Eei% zzFTzXU`O=(&{0uQL1krS^zq}zcK&D2o>6{&J{b%K(&==p1Bh0urRUF|o1C|%riMyN zO6c?F&y20OxR|P{s!aCRYPD2RQ9(pRB_$=S*KWUl{h|jC9#B(L6Ju*>X(3-nT4!pBx<>>DRAc?bh#% zjt+KKE8>C5ty{Oq+1Z(S%h8``E#iUB#2f=2u827XJRKhF5)%`9QwIk}w`o_zM3fKU yzkQ&EgTpK~Ha4|=t$~AsgM)*EgM)*kzwtlejM6#CJbyF*0000 + + + + + diff --git a/inherit_graph_49.md5 b/inherit_graph_49.md5 new file mode 100644 index 000000000..0e0f57fb5 --- /dev/null +++ b/inherit_graph_49.md5 @@ -0,0 +1 @@ +39c559a94f60089476ebd4e4feecf2ef \ No newline at end of file diff --git a/inherit_graph_49.png b/inherit_graph_49.png new file mode 100644 index 0000000000000000000000000000000000000000..facd309e5165e13a338e272127db24e0cce4c314 GIT binary patch literal 9541 zcmZXacR1H?)W^vx5kh1pGLyac9+6SV$lgN879z<`LU#7vd#{kavNy?I+50))e%JHQ z^ITn*_>RxG&wb8$z2D~(p!`e*8iVo5B#@Q6}Rue1pv znGD}mxr2STL_wt^eyhSuO)I(;kG@%}9c=NNR3C8v&yU5hXQhrv@FJ?Hi;Ihd;&5V# zBiUjzG1kX}@$qpXoSKGruISY8H9>lKZ-~=6GJgpdr`?!69}Qh(_3X=MIA)fzp^=d_ zxlff+ad9!tqent7NI%*KN+Hg+_+C!@A>yQQ5g#NGFL2Y{3P4=L>t}cG!k;bZDJd!A zWfl?nty!$U8A;)#$kE{Y94A-jJIF9`=)ojhfx7i>cE{VV#3dx2>WuaEg>Fq% zMo%w@J{&{<*7G)q;gXJzh{zQq%?d0TSH$Kq>e#bYC zj^*^)#fE5c+}4XhEDiKd)tvGSQI9pn4Gka0W(;O3QMQMY=Qi4KlEer&KdE)vN-=2t zSa-4*RChFKm8aL37|UgKmyl4Z(erY3tT3se&+GbJkNfqwsJi++iH}$YC%X%6NBg=9 z3k!nho23^gOJT6=Y>w+M)bn1dq~*zkQKYx)=m-e8A3b(>+~wPYxa7U@pM8C_j~=1f z+S=x>XQrnY+s-xIjed$xNZ3}p)6m`Y9%XH=QDks%@NAIC`{z$t;p+l>cNf2;WFSi;~Z}rE~ zaNeF~P(40fNzyPdFt}%uot-lR-g5%yhJw4TF^i0qyw7&D4FJ>y&P;jX~-#;o%-X066aZ0|3AHP!)bE(aQR}bAF(xy^pTNhBLZCa z|3r=_Ha3bdYghd4<(Z=q5uv2#wN#x>Z@|gP`(~{e`mZqj8ZCI$-Rz5@A|D?$vr!^KUm+!X~r(N;-ev;P}9~{>RlJED*iV=Iv%TiNpbYEoO=B5&pZel?f*6t`~ zY5{?`JLLRGZItheN=vDqJPF04mLAAbp%5T-GXA%pdU_O)u+UK)*MB8j3}>`?u3lg4_m59a z4d-cc)IVls4uSoROGc)%S>k&B$H&L#jgu2C3rko8ol=Sg$<@`BR7G4wL~F58hxx#F zWV62bWV8N6V>2@&R$|^a^GFmF6!&;!nBp-a5)u^Q>WfQDnYcn>9iKOPzB}5PE2Lxh z3uHo(52;Rb?7B-z`czeQX!6n1D6ED;LO&>1fq%pbO0s`CZBJ+SB?x4GRb}Mi(ZD9- zRX*Gp>u*;PBC(GQfsb|gC!``jPs~rH=Xvtv$=i+55QyEE@bLGUnRFYY`K69838QFe zAn%DuDy1CRVyYVIlAOjziwWFZOLM+#$)W_GASIHx(EEjnwaPGfD4aT5j$40wy}{b8 zI8|XS_v~4PBXQ)%|Bi5LE~O@QFUqID37z&vqqg|nsPC2rDaEEuPv7$dwwrTGFZf9> zO)1N8tdEp>zfhzeNwXtpyVtjUgsOX5zeq?J^xt8KqrbZ$ml6u15p%IJhO{qNhuqR* zs1(HT_p?C;z7+-@}Iw zKkB!k?EF}gLnKMok9KR7SDYbU$genAuVS&rQE1U-M=S8F_4tT6vW=8oE@I!D(5roR zF`q}~ti3&=LZF-Eip{&fp_GzQ{IVGhyH9}M-cSW+OTF6Zh2RmQx_^>4*YR05@xIP{ zP{fL-V!E@IGv6NV>DO)2JNL8ECmQ_-Q*`M`AXclb46o-X=e;-rv!a#YXmX1|p`K?A zH&yQZJ4lx}1M_RrOO-k_!Q=;&kMZ#wNI1!(zc*lz%zdmeW%%LvK+X3BK?iFQA%3=b z+Mkt(3W(3%@oFgUpTG+|7Tr3RPpX!Y%szO_O2cL4;o;$tf2Fygcv^8Pk{WODekkHo zlqe^^C}4OmEUI1RBZ*qXapsae1MQaiS`|DLjkhlk7ATBbGmM_lfR*p;rRV9WVMzSg{|1Ie_{=v__z z-QwlX!)R;%rhlEp#w!0`Jn+|S{P7{p^YRR5xF8GZ$*YFy1)A}+p1PKGHfhi0m=$}7GzPLm9kgBu0o0@?k;Am@#==_5; z^rA;Wp`!{-gL+=VXvCGeBLie>4=V5DM@sqenm}77(hy!7z@LdIwRp*xyoiXTe_ z+1SJ+*@EQ${rh2Q?;<*Xgpv#V?Cf-<*}5K7%h+Q53(J*hjy4 z`VOVA!sXdv_VdiX)Y%t)$~s<4i;JrhrF77p%M6T1gU&?MF5T{YWJw%keD(2Ut8&he zJqGEGy?skZhkuRZ#*NQ0F`da0{_;9wy}kK8x!v+sjSpE#LL_Bm_S=Z`2EL2=p6fOW zwy%1|gk@KM{*22>Ix8(GB9a6>b*R`#CO$si+n-X8O0tu}Rs3&d<7Ehuo=3Qt?-g-n z1bsmx8yg#U@K1ggTXi*itOJ$6aOa(&IlQwQbL0F4=Y%9Afk{b}+uPf}fB$}SvTM*D zLfQeH7ODd+KfhMt`Hb`2!pe$Fz1tzuO)RY6zBs}z^G8fKWMpKVHplmxHljO-XIS>x zxGLYBJ8f>})z%!Uz=9>b^&lLrY>*%NfYiEH#Yowro_^)uo_QO8n8>j4UD|g7q=Q zOr}t`US3`vQ!$P^-LyB>?GzeAXMcak;9z)$Vw@J4^;Dym2%_)I^%d$h_Cd#88_g$` zXK1)Q(gpy^)+*1@rGqAlPxowodpk5bI$9UlbE4de2xxV2G+&!IM7qLy>SJoEQ8*i8 zUR+#UcfNKduiYXlfHs_^xaTVBu;%nztiZc7&X|}OR5Y|T6Ijnh=xV5_s4vTs;^TvX z_Zk`+)UBuLcE$?z=%}fE?=fqwE>+mh2_qeC&vXMc?ExxHO`RvVS5{pzf1uwTpcDj7 zk(81G78S0mujg~#CL7LFGW+?N3W4X4b)}9Q>UYR^MTavK0|EjT&UYGD(xY`#)bq7~ ztELuv(e)v>ezdji0fZ3L!d~y`W@+pRA>{!EUtVkr>WSkCD|l7AxVfpIpnyd#;AH%# zCkF1erKQDutbn|^xmmQCbnI)+h)X=d}Fw$rl4hHS-zy zmxu`0t@1Hq9vhv2%LFc~dkAnDFET(v0JuUtZ#V>T)jx-bSxYikJ^#Sk#ogUub%1Jm zW`@u6g7I|d0>Z+^8cigc!^?IW&O?EOBEEbP z_wcCml(+4R=YxFx3{ecHmiZJIxR~HPi#$JfeZ|vw@%Of!ot>L@&^=~Dp!Ln!`nc(7 z9k+wkW++g*`%EsuokQtQW4NtJAeQk0&Y`evi!DbO;nLb*ORNs2Vo=M38jlscg1alV znc;^w)Y1wcjm(r=X=GoPn+nPUBY_gSSP{8im@rFv#Kjc}WwOL&&rpa8uGtK_QB_S% z%GVT=?x;N7dJ-9#4%Nz6<4JI@#qP&8aA(yXr|f#3r;n(ps4n`iFL03d|Ma$Yb_M|S zvBH%?164_tj;w0*!$qSwYhC#ffWJ9i9kJ7Rod~Po05Xx=b{4A%Vk)PgP{!+L04fXa z2gC%#2oI`unZ@wq$%BJ~GF}qHhS%&d-#9JqLIqol)X)_h=7c`tPd6QZdL$3-B7XwhG~CdNJ0WRaK5pr=@8Un_Nk9PA67RC z8#5qLFLqmTuqcJ&p*s>x&AHzXk)~Bj>;a_}!N|j2RS5UpM z3244Ug>oYW6d&A35b;X%_C~t;8{G)>+cRElv^HJM0pjW`ycz`PT;17vZrc%Jy%8B} zwoygp;9K#!P@YlL=JHDbhU#&RLNaX zWC(#V>%JqDp%CL!UoQk&zNI;No`dJnBR^0AC2oh7mz;_VJPEKNzD{sAeWsE)kSGun z6DzZxiUK{ku(PB0$0b4dU2ItyC#}M_@6q)KLr)*;HN+nryd~jzQf1QQ&@YrpCkkJg zu6K`yJ01e$V6Rl6m&ujSvFb22xV8SND>KrkR;&3HIong|z;uhZI8!OF1+*QGTT=9f z^I;uiV9S6ikB8F?rpj!bH$H}HV3XZ#Qr>9NeQ$j_@*4B)TjiFXNg_1B{YK8+P5lZ^}&Q5<RN$F3PS@gtm1tB#2&h7MK zCy(yQIq^^Sva-|D)8lon9D93vi1(q-L-{6VHX*?OIrHrc`jNok~NZ1q%e&61<%TyWKi996OWDS@;QH{ z^YpRXpM5;g=r=JjTbi5SSI&9X>MSzmUovSF0JvGOu@QWi@V^7iN?VV6?)vEH=&YgM z^O7G0X1_7Yd;~@Qix~|KF zh}sFE&TnLZwho{yCnxuIbwEr{gpRHwry^PZ;SyxJx6dsHxY=PGsyV2Mrza=+>@mC^ zCqe_A z?$f7FT&U>WZr`|b)br(G1M}Md{-k!8AM;B~>)d*>tQlM$LqmFk3q^hbf#_4QO4DAF z0^Ry9zuQCysZSs$%1@-PTW+(k8nt7AGVh1}F;Qe75wOK&I~#wxzXG|FdX2p^QHroZ zwAn~Zm~tCU>TN>O(r9K~marEW7ZKfcEi-BKdJZ;kD+Z-U6R7mVAHpmw{W;^9$89(w z7vCF+$U#Ct*9P1?++*3gK2-@T#Py=VN%)M=7RR&hVPJDEtgXq3i{Aj&eo?4PPJetlsVU?XUP9RnSHxL<{6OwR!T$rOM`A%@)#aKVt1#P#~}_&$fJ zLcp9or8L*l;Z)MW;2)HI>bozP(0mDl(dxWw^)FQ-x>DWm@3%t+{Yi@$&WaGrbD(HTL<{OoDekKy5nU%y@mpKpS*klS%~xG@2s z3&Lh}1N_|KMlUbvU}7;~*i~4efGun&>#M8giC$N(uo(St5QM$Tq@Gt~DcGf|?v+m- z=DzY7>FwrtICM=`mtFl?w+-fxcgW?-Ek}rj+&GnlPicgOg%J%O2osNlqzgzuMZVa4 z@Zo5op6y|US#N9`oc@iSox#!OL@)SOxiF|<+ z1NM#qP6Xnjp`n>yT51JNayX2IKwJo*$HiU;P!v8serr6R1L6qRmpfjNlfvLX83V+f zVR%|ZXeH|#Y9SmMS=k3{Y~er^#bDQg?T0AVVEX~#D(OKltj^P^{sQtZM=iG<9CUMF z$*D@)6_C3J8)IP*g?@Je;WOy zCsBx$p4aEz-MfZ%T_v#YZ`Xg_@-|C!{RooqE+u7{Y9R2-0JyIYGan&RK-;#y4eH3_ zKc3Li#l^)BY&YPf2$VgZ^Gbq4E^cr4fi7B|t#=RD`^qWZHo}a^ThE})M z*S-jJ>0&B;`J+g``Nq|0zZd)KaaLIL{edN`2Efur2KFFp=s^-+RdX@vEN(sZo2y84 z-{#ZySItQBJPUxE&JPI=Ceu+(XwHpHu)=m*whA85#|^YJCtUfesINc&eQ&8_iXCh3 z8)N)+cw(ZbUPPO<0gy9&`o|}lCC26XMtF-V*#~o<+FCU^B)c&xZfJL0B$3$uOix0m z-h41NT6_zf&!x{FehbgI^Do<#)cHGMoctZ5q@u7gNhr80e$hZfRjuUb+(RJ#!Uoi} zS6gXEi-;5 z+4Z`>!1tcNeu@A|FEYyKppUJEjj2r(CdD~oz6Wz6hE&^02*Xh2J$V&s&Iad;^2rG0 zm(zJ-Vlf={*tAo0G~kBiY-%lrrB!v0KUI+3u1~1V^2mEfAtM#_<%{9ouNPETpRh2z z9$t42QVv!bQ8tmXB0HHBWHlM3kRwLH{WW>3FFP@oJ39wQXHQR=Bfa=|{N?-Q zBv+kPUWR)7OIAFTGBuJ@EsKDFcIGC%=LeFhRG2coH=jJoDnfO{lSN_Yl;sg){9M4v zPDWr6dP?b_xcjWFLYtJwlc|&PQ@7Y(mRCy zP;H$1j8s9ADFlh&)LaT5KV9~;tni*{mEZ!?a@2}<*bOCY!LKbCyQo@Lfg-7cFQ1Pu zqZnvcKlQ1>jF(x$3gl=)BUs@=F;gHR62>0syM9JaVd>_RSye6CD7(<(3!9(N=Ra^oc0*1yccDj% z^?_T&XmeFu3ii3Jyjv@0*M8>-?+YqNuvbT^Nip_b{(m?S+;Vy|2=%j{6ouabJVx0fzl)|*pREMaihLJ z$q@>o$Ou}*5l5K7E?5_5tUZYfacVLV?;EX1-YMi<6c(L=9~a@1`SBX^j4kfPI}DVN zzsboN3vInY`&|Ne_D=p?4F&bnq`{*b{gSVrD~&ULT)r#|YLc4AfC<>ob9vdJp&?#} zjQQ6Q85YnAFuc6HHn(mImw+YF1SW&L&UGhUQX14`_41whc~M_}In(4)EO!xd_^@*R{+4Mm;WA%(q7FO!9xkK+Iwg zfHl`3B+sDw{5kT=N*i*RL4ptP6~Oq$o9$^nc6N3|NgmUKX$(+Kan5C3onR=15Q2bU zn2K*>W3xQuA0~YE2`IG4^rh9DJm56O)bzKHlNP)vOYRLk(#Sb2a1=%Wnm!qF^xw9L%d zV2uIDJSD4jkFni{*o;q17_brtemy-uNBIn&2gk2BmMawoVCfaltNMJuAS#)pUxo$A z)?_)gu<&fo8DdU~up%=vhe3Hg>^`=4bWDe^=+wEWu(+RZRqh=f(bCdNvyk%H(}2Gq z4AgGC(BcP9pxxFa7cgg642PM^dUhs25z6`Tjv34-e=jeu-Rc7pep%Ejxfp<7;koT3_QP2jf8}{jd&KI!+*Iu`gy7}_R#P!_!cw|9w2!G zS>L^PuN_+W-r?agkY7(cUj#U!+FaZSLb$%V)TwtPBqAb0AdHrlR(J{cJ?zFmaY0Xn z`uk(RSZcWyN5uH|&+tbT9M+SZxrX!sh{{UE7!N~47+~GG{My?=>D2??kaO;+qn#ZU z4UMD-iTw^tzF^XbaF#C5k3r$ap9k)N`2%;pu(j0-mkL*80z=FT=zf0y`I+szGI+rS zL0Dl3%M1t^1_Axw*oN9 zLg-+a)9)R}SdJRg`mb!1Ca^L2-pqS@N*Z;2WsvHES+pNmEiey;4OR@+6N3HV5)Mzf zj|=vT{+r7$AYvy{^X70}4UX}Ay$;s_MwDeIq7BXyb(g^4U%q_#6dIagHCAv;Xk>1l zb+w=aUI^^Sb_gY4euCjgM@?x=BTZ$EjE&nV?zJaIxHmL zX8pkeczHHMH85ABumlzaol z!+#HL?7|&ZyYAD%dYX9R&I$ySSIOo7sd>BB0#7Xb%q?u_N)$p1yM~k~cL^QsjpG4x zHhyG}pO^P@Qj)FXJ1g^8X%GmvaB%1t8Rc0t!;WB9Vz)WY7S#Q% zJMOZ3+{1Gl1LKZ*$@nP*~jYVCvx<)f zgji#tu_5@q!IUBtFp?nQvFWLE-G`dY2Xg@CXiox}e`9vSKzNV@o0OY|pPxi=I7_pX z7ADnjQ#n8JLea5FUQYX>0==#;FRT3)CWqBD9nI6c*tx!90iWql^-3Z&2S>!oi3^w% zh(UcoNJ!hv3^_e7Gk8x%gVLg+h>5UhGa;X!Mh5r*abWi?EGc~D<90)<_Y45 z@ptK`LnW^>e86QIZtf^hs9;#MK~=qliOI7x^ZgK}Pk%CW#kYa6tgs|FiDh?MLeTp@ZZkBZTa&rm#9AU{=bKJc%<=RqWseu&I%c>?N7zX`tQ4f zs`A<8nMz48Gfuey8M9UqDuy`4|9RR-{Dt5(W&8a*e(@XbFW|W-Bsr;Pk_F=WKK}zp CP~;~7 literal 0 HcmV?d00001 diff --git a/inherit_graph_5.map b/inherit_graph_5.map new file mode 100644 index 000000000..50c110562 --- /dev/null +++ b/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_5.md5 b/inherit_graph_5.md5 new file mode 100644 index 000000000..b56fbde02 --- /dev/null +++ b/inherit_graph_5.md5 @@ -0,0 +1 @@ +b5d11275e927334a25b8dacb2832e84c \ No newline at end of file diff --git a/inherit_graph_5.png b/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..43fe50e0cb90060a8f7940a4c43bb013c31bc1f1 GIT binary patch literal 1665 zcmV-{27dX8P)t@Z`Yj2Q9Boc{4A_3LtfYE5wt5mA^#VAHH|0s&mW3gD8{~6Pa zPEx5<@hX+-uZ1g1vXHo3t{UJ!|BQ_>!3Y+MW!?*tEG!m_g|@b~F>z%PYLWcQkS35w z6G;9b6BHE{QD0v_Ct60Mk%tc-&ied9@a@|-l9G}b931>@tv|*DFJ8Rh^XJcVqSe~k zN?%{!tj{k54u^xr#zubr{Q28j6Fwcxgu{mq^X%EPUxFG90RaKz=jW50oQ%WaASESb z!oF&?nn#Zw&01gb`^DJd!LIKYY(E6{4S z9xv17;Z_xA@t2tid<6%7pys8lLa zQ&TY*4AZX7Xf%?Mk-^KCFKKIQR^|x71`Zv48)5Vq#+0 zwQCo3b#>I$)p=+*olc61im0xx=G3WEZUX?6mX@Mct1%jlynp|mO`A61a5#Wpi`3Jn zPqSmk4${-pF`LcqnQuC^wYIimFc|Rm_NJtygoua;_U+rprAwE{%gZA=I-0z^ys3ZK z*-}tYkhOR3UNIB4Zrv&Z0s=&0VxmY$ND#}HFBdsEIbvvNXiRQqW~SJ)XOBnh)2C13 z>C>kZwx^>X7Z)e0s;VZe(QGyggTWw#5aR3CuR^2Ih{nc7j~u(*E`$&wGBQ$Jym(Qh zrKO4V^mJjf**x+hBO^WT;m403LZ{P-n>TNYzP>)8D2hk@4Gj%KqtS?gfq^M&8__>_ z@SwZh+uJJ?MG>!Gzjnv0R;vKSmoHx?yywwWR#u9Ff`U7v$9&HI4mNDqKyh&~E|-gs zA3t*PTNC-o1NAbaeEjwT%!J73DsD`}Qq9K0ZW5M7U#dadG3`_iUJ#H37i)@82<*Ow%&K zTpPwI2r<1|KLHzvu#=TxySs7QZT%n|-g!AXm zk6FMD3=E8EYqeUmS}nuF!`N&#mM&ciK!1Nf09vhf%GyTIX#O6WWy_W^G&ID}&=5X8 zKI2~hcbK<*g7)_I34h?xSglr%h0f^qO!a$udg$-(r>v}ujEoFoV`DvDoP>mg5FQ?m z$z;OmbOOI-hmprn0G&=pV`C#tO-=0Hz1y8P!sW}C-2>6o)Wq}W&)KqN3!$N*1P2Fm z=FAy)Zh3h*VPRne2M14C+jxY9g%KDS$hmXp0C2fnoIQJX(mpd`&Srv|ni|^M+Yv(0 z-QA7D;o$o9>(lBxorU2{^g}~K*|u#PAt51zgoM!D-Oajn>)Z=BwOY-sTerx~%_T4} zkd-S};&QpTckiBuj=#S@j~_oKEiH}g>};%7D_&k+z^{P`4-ZGD)6v=4NqKoWYuBy? z;Kq#`WM^k{`}S>|PA4vxi#vDjpeV|ewT*|Dmls#BUL`X#lWW(mVYl0fkDt3wKE^zx z7Zem^sZ^@J|)uBoc3^7x+MkJ&bs%pPe1i8O&knm~dyfdpv+3DN`-qzNQU zvSV0SSh$dNNEVSXCJ;h20smcuS|kgAq9{F!U4uj-kw_$xe<%L~6Ibe;A>f`;00000 LNkvXXu0mjfwy-iZ literal 0 HcmV?d00001 diff --git a/inherit_graph_50.map b/inherit_graph_50.map new file mode 100644 index 000000000..66f168cac --- /dev/null +++ b/inherit_graph_50.map @@ -0,0 +1,5 @@ + + + + + diff --git a/inherit_graph_50.md5 b/inherit_graph_50.md5 new file mode 100644 index 000000000..a21d5e6c2 --- /dev/null +++ b/inherit_graph_50.md5 @@ -0,0 +1 @@ +cb4b74cc3cc6122f22f67b745159b7e6 \ No newline at end of file diff --git a/inherit_graph_50.png b/inherit_graph_50.png new file mode 100644 index 0000000000000000000000000000000000000000..4476c3c73795ee7649c51e057d4ac4d71533dff5 GIT binary patch literal 12147 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 X4@Y}#!5|Mz(IYAf_vMRajeY+Q)>lg_ literal 0 HcmV?d00001 diff --git a/inherit_graph_51.map b/inherit_graph_51.map new file mode 100644 index 000000000..e57ecbcd9 --- /dev/null +++ b/inherit_graph_51.map @@ -0,0 +1,5 @@ + + + + + diff --git a/inherit_graph_51.md5 b/inherit_graph_51.md5 new file mode 100644 index 000000000..bbb842eee --- /dev/null +++ b/inherit_graph_51.md5 @@ -0,0 +1 @@ +e875042c4e7822d8ff9e4d56421ad904 \ No newline at end of file diff --git a/inherit_graph_51.png b/inherit_graph_51.png new file mode 100644 index 0000000000000000000000000000000000000000..fe39f35a8202545033caf1e5d699f83d51bb6967 GIT binary patch literal 26747 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 literal 0 HcmV?d00001 diff --git a/inherit_graph_6.map b/inherit_graph_6.map new file mode 100644 index 000000000..a8798f621 --- /dev/null +++ b/inherit_graph_6.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_6.md5 b/inherit_graph_6.md5 new file mode 100644 index 000000000..b49623b51 --- /dev/null +++ b/inherit_graph_6.md5 @@ -0,0 +1 @@ +6e89711f9f62969fef890fab266b941a \ No newline at end of file diff --git a/inherit_graph_6.png b/inherit_graph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5de96c653f866079c0baf9b1454b0cbec1ae39fd GIT binary patch literal 2376 zcmV-O3Agr%P)nS!K~#90?VM>$Q&}6we=WtJ60M3$wcUO-oJnUS#^ABJU%7xg;lFoaryG)4+%9Idi3bQ zym|A8iHV`As)}*r#(A9U=jX@y^XD6#U*a8(Yv{=4&6|mch-h$rVqzjwr%oj{HnutB zc}3|ICntw9XU;Hg z+&HBlpmXQWXti3WzU=I5PMtc%p+kq5u1EEWqoosN{06oP|;`RS*hxPALJ>({R*D=Q0w!N86k zJ6v>j@7^7Me}B@`)0Mm>B_&LsKAp_WOnUX|<#yk`&@45q&1U1lg9r5P-P@~ptJO+= ze!j;);zeaVEiH}3ix)Fw$PnhwpU=sYCpmfYq*IQX zni>`@TEwA4hgiRUy<%2?l`B``=jVsXWa9q)`-~Vdf~u-2;KL2z#*G`9GGz*rCQZU@ zHY-;YZ?st~7K}zCty;ArIXRgD0|tdzm|TE)fwC%$+;;qt>u47K?=i3l2M5kT7%M!iB;Y#*ZH_di3ZaMvWRJqNAflr%s*3?AfzLWo4yH?6hgq#DWD2ocbO; zdL%Agy5zC#P5#KpNRg3|;ZdX6Y!*hNQ3xT#>({S^MxznAxw%d;Hk(ZdAw+n1xcKFl zU&O?T6UC%SlSFxWxl>$tc(~JNc=zs|(CKvI@ZrPa#fuk0tyVkf&&kOV8jVJjm6bK9 ztv3Ji<;#`!^XJcnTCEm0Zro7%va_=VAYQ$C<#x^LTSLd6T20~M;bPsobxQn`Cr_O6 zM?^%3%*;%eb#T-vgb-7wP8F+Gty0>dp`ju@J>Bi+u8)Na7m9?0gqd~y*<>Zbuwlbk zvSbN%yPby*AM)dmKeB7rE|x7@*5KUW;9!D-gFUtzlfSsQn4LR!Qe0e2d3ia{pFc;Z z(*aOaRD=+M=;&ytIc?gsQMOmFUQKXtFolJM`1$#{l(~4gsCl-n~miL`1#XY8f2&1g=8~6}$M@fVuf)}onVG4WCND3KfByN0v17*)8X8KUK7H7e*_1d_2j?$^7}}p9~y0kR3aA zc#Jg~jijcg(!YOyMvNHIU~XSMNJa z1;EXlH_>P`gocJHeO9ZLXV0D~by?lEH~Ftzxq?oobE*Yz-MU3-X(o<4ob z;K75H@!ERWX0u^17?fJoVzDSj26+4SEtfA}#$YherArrOylvaI+`fIA-o1M(HD4|7 z-@m80xEPg6MMy}9%UaZ@t?vG7si>%+sHh0NUXNC*B`+_J=;&zt{r!DfLr22G!synm zo6A1!b~_g?Tp%(slGd$T1Mu|eQyx5cK + + diff --git a/inherit_graph_7.md5 b/inherit_graph_7.md5 new file mode 100644 index 000000000..a65a9727e --- /dev/null +++ b/inherit_graph_7.md5 @@ -0,0 +1 @@ +2bf8ff3acf890ef508f5cb492d94d46f \ No newline at end of file diff --git a/inherit_graph_7.png b/inherit_graph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e6724a47931c58f0dd13a8f52905d8ffc0c5284a GIT binary patch literal 2533 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 + + diff --git a/inherit_graph_8.md5 b/inherit_graph_8.md5 new file mode 100644 index 000000000..359740387 --- /dev/null +++ b/inherit_graph_8.md5 @@ -0,0 +1 @@ +1b52a7caa01b413942f5ef58c8b7a308 \ No newline at end of file diff --git a/inherit_graph_8.png b/inherit_graph_8.png new file mode 100644 index 0000000000000000000000000000000000000000..84592e0a9fd400dc9384823b11d1f4223c98b461 GIT binary patch literal 2458 zcmV;L31#+)P)4j>Q+1OkCTAP@+I(F?Af!wRtkYI3Q?(4C@LzlYU7Qt76Rdqg%k^cz!6d` z1Oi9?b;XjClY@$iir+1R@Gs<#FBbFSsH>|(M@PqRR7BtcmrZT7ZG1Lw!+wTcyLO?r zw)RIrJ|FJx?np~ZLrhEzdV6~j8yjoW*TKO7ckkZi9N$1lNC*lF3LuloAQp>uGBPsI-rf$mTn>#!gS@;vyMBB=f5>?l zPR#SBR;v*f7G`(M?`Bwv1pp)x38JH;0RS;EF{rAl!mV4k5E~oI^aFsat1DbwTuk~( zOG{BvQGv^sFI#P!$2TS?CkOHI@raL)x2f&gwQIP3{W?B>{)~u-2yEH11p`hqA0}0#UVXCow4`#_v85S1Z8F!LJ9nT|D#7FN z@Yi2|Aw4}Ek&%&144F)Z#Kc6@*VjX(Qb8;hW8c1g@bvTq0Myjfps=tIA3l6QU|=A2 z?%at96DC;X?a-k^Xl`ysetteKUc3lDKR=u~bH*aKZ24f*GgN-bGs~ARU(nLhg6Y$z za~j{))`psz8k=o*no2KVpZM_*qbCp()ql}d&5^mL3FGX`6?ZiT78iH{!#G z4@gW*1ORk)c4Fbeh4At5!KO`{FmBv9WM^kHzQ%c5v0??>+}x0qlmvxB0hvr@F@{S% z?CJR>WM*cr%F4>3e}=`27t`+U?sQaC6dfKOPEVRNiC(j24c*hzV=*=*C56t&$S~=9 z^X3ix=+PsaZR7ZczlRSW(lkxep`oF4QBe^y*0}xY(U+j3knLNi;Ig*<})6{mJc>PTzUNXF`bo_MO&+lVLOJ+pFbbD zxw#k^7(i=lD-Iq!h_h$UV)N$BtiGO}o+e+F=56En24>Ej$r`t*sR@03eb~NzyGcJq zQD|;%hL@L@O<#>h10Iiu;NW1UFDxt!{r&xT_39PAe*FreP>5NxW-)f-u`ge~v}@<8 zZSLH;R`n^BN+cvC;PmO!ShQ#n)6ZosZDBr_Mx#MtVIedc4Rksk-oJlu@xX1Ihe?wr z0r+tVF=x&kWM^k1Ffb6|;o*pkjKqo+D>&(}23tOYf`aVonLK&&pyxL5OP*N(K(E(h z|Ni})ie)hIx!~;V42q(#XU`r8g+ddXzrVj-Ul$h_^!N8er_(X#?5?gZ#wHL5(9_d{ zZ{NOQ?AWmYek8?sZZ%bM`xpX=m7A#nRw6rwH z<#LEbBHX-r)8rTi*uNMkC@8?;!-vt((17#j&m%uSAJ3jWgM)*E#aOlr2DW@~jWZN} z*?X4y`g-QZijC6JQmkFO)@FOKNTpKv`T3!?wiZ!QQHYL?Mnpseo<4nQarU?7>*eKz zW5IB|j*%Vr;}wu*`hEMLAH#l^)| z3uU<0vc0_>U0q$s%gaMTLIOfULZDWwIs4bu)#3K-+Ykr@2nq^HCqpO{;>3v)j8^0KC&RUtQmGV6mMnp< zuP?&F!r<%c3nwQh&i-Pt7$;AjghV1iSXdY$BO|e6#}4LbWRBr7AtE9IIXO8Nc7Z@( zHy?nt1D*Am|^t@@%;I7@cDd5rBbG^t*s3m z9UTY_4Yk^CXlQ_wlM{S=d@SPC)zv{P7BgpQ^R|KZ_I7l3c0wwZV*L2=R<#=w92|^s zQn&0_wV2F@Zm!Xtvnu&xzc4@OIvv`pUXf~Qxm$ny5Q&M2fbd8ckkXY??23a1_lQ3 z;K2ighK9n?(GdXf_U&7|eft*P-rgq94c7AX?%g}Iw6ws{(Gh`xfmX-Z%Lf-dY#4r` zf9~8li`p2LV)?I9U0n@tZ*RD{xuLhW7pqsVMqgha%FD|+*$JZ$d&M$r5BUE@CQO)s z$jC@IJ3B+G)xyoq4Og#TSO^4;kYXVaIAZfQOfHv?qz(dM)MHUBG)?~x!0O+ig+L$>2m}IwKp+qZ1i~Qs YKZjd-8yPIn@&Et;07*qoM6N<$f>P_CU;qFB literal 0 HcmV?d00001 diff --git a/inherit_graph_9.map b/inherit_graph_9.map new file mode 100644 index 000000000..bbc1b51fc --- /dev/null +++ b/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/inherit_graph_9.md5 b/inherit_graph_9.md5 new file mode 100644 index 000000000..48bb98518 --- /dev/null +++ b/inherit_graph_9.md5 @@ -0,0 +1 @@ +8ea1b007b4eb14fb3522d3c97086a122 \ No newline at end of file diff --git a/inherit_graph_9.png b/inherit_graph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..70dfd5328c584292f8ccbe7f10afcc8f23138e15 GIT binary patch literal 2718 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 literal 0 HcmV?d00001 diff --git a/inherits.html b/inherits.html new file mode 100644 index 000000000..67c63539b --- /dev/null +++ b/inherits.html @@ -0,0 +1,459 @@ + + + + + + + +BehaviorTree: Class Hierarchy + + + + + + + + + + + + + +
+
+ + + + + + +
+
BehaviorTree +
+
Core Library to create and execute Behavior Trees
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ + + + diff --git a/jquery.js b/jquery.js new file mode 100644 index 000000000..1dffb65b5 --- /dev/null +++ b/jquery.js @@ -0,0 +1,34 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n").css({overflow:"hidden",position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split(","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add(this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,e,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0),i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth()-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e,function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/menu.js b/menu.js new file mode 100644 index 000000000..b0b26936a --- /dev/null +++ b/menu.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+='
    '; + for (var i in data.children) { + var url; + var link; + link = data.children[i].url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + } else { + url = relPath+link; + } + result+='
  • '+ + data.children[i].text+''+ + makeTree(data.children[i],relPath)+'
  • '; + } + result+='
'; + } + return result; + } + var searchBoxHtml; + if (searchEnabled) { + if (serverSide) { + searchBoxHtml='
'+ + '
'+ + '
 '+ + ''+ + '
'+ + '
'+ + '
'+ + '
'; + } else { + searchBoxHtml='
'+ + ''+ + ' '+ + ''+ + ''+ + ''+ + ''+ + ''+ + '
'; + } + } + + $('#main-nav').before('
'+ + ''+ + ''+ + '
'); + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchBoxHtml) { + $('#main-menu').append('
  • '); + } + var $mainMenuState = $('#main-menu-state'); + var prevWidth = 0; + if ($mainMenuState.length) { + function initResizableIfExists() { + if (typeof initResizable==='function') initResizable(); + } + // animate mobile menu + $mainMenuState.change(function(e) { + var $menu = $('#main-menu'); + var options = { duration: 250, step: initResizableIfExists }; + if (this.checked) { + options['complete'] = function() { $menu.css('display', 'block') }; + $menu.hide().slideDown(options); + } else { + options['complete'] = function() { $menu.css('display', 'none') }; + $menu.show().slideUp(options); + } + }); + // set default menu visibility + function resetState() { + var $menu = $('#main-menu'); + var $mainMenuState = $('#main-menu-state'); + var newWidth = $(window).outerWidth(); + if (newWidth!=prevWidth) { + if ($(window).outerWidth()<768) { + $mainMenuState.prop('checked',false); $menu.hide(); + $('#searchBoxPos1').html(searchBoxHtml); + $('#searchBoxPos2').hide(); + } else { + $menu.show(); + $('#searchBoxPos1').empty(); + $('#searchBoxPos2').html(searchBoxHtml); + $('#searchBoxPos2').show(); + } + if (typeof searchBox!=='undefined') { + searchBox.CloseResultsWindow(); + } + prevWidth = newWidth; + } + } + $(window).ready(function() { resetState(); initResizableIfExists(); }); + $(window).resize(resetState); + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/menudata.js b/menudata.js new file mode 100644 index 000000000..308e13f6e --- /dev/null +++ b/menudata.js @@ -0,0 +1,98 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"a",url:"namespacemembers.html#index_a"}, +{text:"b",url:"namespacemembers.html#index_b"}, +{text:"c",url:"namespacemembers.html#index_c"}, +{text:"e",url:"namespacemembers.html#index_e"}, +{text:"g",url:"namespacemembers.html#index_g"}, +{text:"i",url:"namespacemembers.html#index_i"}, +{text:"n",url:"namespacemembers.html#index_n"}, +{text:"o",url:"namespacemembers.html#index_o"}, +{text:"p",url:"namespacemembers.html#index_p"}, +{text:"r",url:"namespacemembers.html#index_r"}, +{text:"s",url:"namespacemembers.html#index_s"}, +{text:"t",url:"namespacemembers.html#index_t"}, +{text:"v",url:"namespacemembers.html#index_v"}, +{text:"w",url:"namespacemembers.html#index_w"}]}, +{text:"Functions",url:"namespacemembers_func.html"}, +{text:"Typedefs",url:"namespacemembers_type.html"}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"n",url:"functions.html#index_n"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"w",url:"functions.html#index_w"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"h",url:"functions_func.html#index_h"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"l",url:"functions_func.html#index_l"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"n",url:"functions_func.html#index_n"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"w",url:"functions_func.html#index_w"}, +{text:"~",url:"functions_func.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html"}, +{text:"Typedefs",url:"functions_type.html"}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/namespacemembers.html b/namespacemembers.html new file mode 100644 index 000000000..95d903d45 --- /dev/null +++ b/namespacemembers.html @@ -0,0 +1,186 @@ + + + + + + + +BehaviorTree: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Here is a list of all documented namespace members with links to the namespaces they belong to:
    + +

    - a -

      +
    • AnyPtrLocked : BT
    • +
    + + +

    - b -

      +
    • BidirectionalPort() : BT
    • +
    • BlackboardBackup() : BT
    • +
    • BlackboardClone() : BT
    • +
    • BlackboardRestore() : BT
    • +
    • buildSerializedStatusSnapshot() : BT
    • +
    + + +

    - c -

      +
    • convertFromJSON() : BT
    • +
    • convertFromString() : BT
    • +
    + + +

    - e -

      +
    • EnumsTable : BT
    • +
    • Expected : BT
    • +
    • ExportBlackboardToJSON() : BT
    • +
    • ExportTreeToJSON() : BT
    • +
    + + +

    - g -

      +
    • getType() : BT
    • +
    + + +

    - i -

      +
    • ImportBlackboardFromJSON() : BT
    • +
    • ImportTreeFromJSON() : BT
    • +
    • InputPort() : BT
    • +
    + + +

    - n -

      +
    • NodeBuilder : BT
    • +
    • NodeStatus : BT
    • +
    • NodeType : BT
    • +
    + + +

    - o -

      +
    • OutputPort() : BT
    • +
    + + +

    - p -

      +
    • printTreeRecursively() : BT
    • +
    + + +

    - r -

      +
    • Result : BT
    • +
    + + +

    - s -

      +
    • SerializeTransition() : BT
    • +
    + + +

    - t -

      +
    • toStr() : BT
    • +
    + + +

    - v -

      +
    • ValidateScript() : BT
    • +
    + + +

    - w -

      +
    • writeTreeNodesModelXML() : BT
    • +
    • WriteTreeToXML() : BT
    • +
    • writeTreeXSD() : BT
    • +
    +
    +
    + + + + diff --git a/namespacemembers_enum.html b/namespacemembers_enum.html new file mode 100644 index 000000000..2d292e601 --- /dev/null +++ b/namespacemembers_enum.html @@ -0,0 +1,106 @@ + + + + + + + +BehaviorTree: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
      +
    • NodeStatus : BT
    • +
    • NodeType : BT
    • +
    +
    +
    + + + + diff --git a/namespacemembers_func.html b/namespacemembers_func.html new file mode 100644 index 000000000..17f4972e4 --- /dev/null +++ b/namespacemembers_func.html @@ -0,0 +1,125 @@ + + + + + + + +BehaviorTree: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
      +
    • BidirectionalPort() : BT
    • +
    • BlackboardBackup() : BT
    • +
    • BlackboardClone() : BT
    • +
    • BlackboardRestore() : BT
    • +
    • buildSerializedStatusSnapshot() : BT
    • +
    • convertFromJSON() : BT
    • +
    • convertFromString() : BT
    • +
    • ExportBlackboardToJSON() : BT
    • +
    • ExportTreeToJSON() : BT
    • +
    • getType() : BT
    • +
    • ImportBlackboardFromJSON() : BT
    • +
    • ImportTreeFromJSON() : BT
    • +
    • InputPort() : BT
    • +
    • OutputPort() : BT
    • +
    • printTreeRecursively() : BT
    • +
    • SerializeTransition() : BT
    • +
    • toStr() : BT
    • +
    • ValidateScript() : BT
    • +
    • writeTreeNodesModelXML() : BT
    • +
    • WriteTreeToXML() : BT
    • +
    • writeTreeXSD() : BT
    • +
    +
    +
    + + + + diff --git a/namespacemembers_type.html b/namespacemembers_type.html new file mode 100644 index 000000000..d13e44c50 --- /dev/null +++ b/namespacemembers_type.html @@ -0,0 +1,109 @@ + + + + + + + +BehaviorTree: Namespace Members + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
      +
    • AnyPtrLocked : BT
    • +
    • EnumsTable : BT
    • +
    • Expected : BT
    • +
    • NodeBuilder : BT
    • +
    • Result : BT
    • +
    +
    +
    + + + + diff --git a/namespaces.html b/namespaces.html new file mode 100644 index 000000000..d07f0b20a --- /dev/null +++ b/namespaces.html @@ -0,0 +1,202 @@ + + + + + + + +BehaviorTree: Namespace List + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NBT
     NdetailsThe SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed according to the value of a blackboard entry
     CSemaphore
     CActionNodeBaseThe ActionNodeBase is the base class to use to create any kind of action. A particular derived class is free to override executeTick() as needed
     CAlwaysFailureNode
     CAlwaysSuccessNode
     CAny
     CAnyTypeAllowed
     CBehaviorTreeException
     CBehaviorTreeFactoryThe BehaviorTreeFactory is used to create instances of a TreeNode at run-time
     CBlackboardThe Blackboard is the mechanism used by BehaviorTrees to exchange typed data
     CEntry
     CConditionNode
     CConsumeQueue
     CControlNode
     CCoroActionNodeA good candidate for asynchronous actions which need to communicate with an external service using an async request/reply interface
     CDecoratorNode
     CDelayNodeThe delay node will introduce a delay and then tick the child returning the status of the child as it is upon completion The delay is in milliseconds and it is passed using the port "delay_msec"
     CEntryUpdatedActionThe EntryUpdatedAction checks the Timestamp in an entry to determine if the value was updated since the last time
     CEntryUpdatedDecoratorThe EntryUpdatedDecorator checks the Timestamp in an entry to determine if the value was updated since the last time (true, the first time)
     CFallbackNodeThe FallbackNode is used to try different strategies, until one succeeds. If any child returns RUNNING, previous children will NOT be ticked again
     CFileLogger2The FileLogger2 is a logger that saves the tree as XML and all the transitions. Data is written to file in a separate thread, to minimize latency
     CTransition
     CForceFailureNodeThe ForceFailureNode returns always FAILURE or RUNNING
     CForceSuccessNodeThe ForceSuccessNode returns always SUCCESS or RUNNING
     CGroot2PublisherThe Groot2Publisher is used to create an interface between your BT.CPP executor and Groot2
     Chas_static_method_metadata
     Chas_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >
     Chas_static_method_providedPorts
     Chas_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >
     CIfThenElseNodeIfThenElseNode must have exactly 2 or 3 children. This node is NOT reactive
     CInverterNodeThe InverterNode returns SUCCESS if child fails of FAILURE is child succeeds. RUNNING status is propagated
     CJsonExporter
     CKeepRunningUntilFailureNodeThe KeepRunningUntilFailureNode returns always FAILURE or RUNNING
     CLeafNode
     CLockedPtrThe LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write access to that object
     CLogicError
     CLoopNodeThe LoopNode class is used to pop_front elements from a std::deque. This element is copied into the port "value" and the child will be executed, as long as we have elements in the queue
     CManualSelectorNodeUse a Terminal User Interface (ncurses) to select a certain child manually
     CMinitraceLogger
     CNodeConfig
     CParallelAllNodeThe ParallelAllNode execute all its children concurrently, but not in separate threads!
     CParallelNodeThe ParallelNode execute all its children concurrently, but not in separate threads!
     CParserThe BehaviorTreeParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
     CPopFromQueue
     CPortInfo
     CPreconditionNode
     CProtectedQueue
     CQueueSize
     CReactiveFallbackThe ReactiveFallback is similar to a ParallelNode. All the children are ticked from first to last:
     CReactiveSequenceThe ReactiveSequence is similar to a ParallelNode. All the children are ticked from first to last:
     CRepeatNodeThe RepeatNode is used to execute a child several times, as long as it succeed
     CRetryNodeThe RetryNode is used to execute a child several times if it fails
     CRetryNodeTypo
     CRunOnceNodeThe RunOnceNode is used when you want to execute the child only once. If the child is asynchronous, we will tick until either SUCCESS or FAILURE is returned
     CRuntimeError
     Cscoped_demangled_name
     CScriptConditionExecute a script, and if the result is true, return SUCCESS, FAILURE otherwise
     CScriptNode
     CSequenceNodeThe SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again
     CSequenceWithMemoryThe SequenceWithMemory is used to tick children in an ordered sequence. If any child returns RUNNING, previous children are not ticked again
     CSetBlackboardNodeThe SetBlackboard is action used to store a string into an entry of the Blackboard specified in "output_key"
     CSharedLibrary
     CSignal
     CSimpleActionNodeThe SimpleActionNode provides an easy to use SyncActionNode. The user should simply provide a callback with this signature
     CSimpleConditionNodeThe SimpleConditionNode provides an easy to use ConditionNode. The user should simply provide a callback with this signature
     CSimpleDecoratorNodeThe SimpleDecoratorNode provides an easy to use DecoratorNode. The user should simply provide a callback with this signature
     CSleepNodeSleep for a certain amount of time. Consider also using the decorator <Delay>
     CSqliteLoggerThe SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite database (single file)
     CStampedValue
     CStatefulActionNodeThe StatefulActionNode is the preferred way to implement asynchronous Actions. It is actually easier to use correctly, when compared with ThreadedAction
     CStatusChangeLogger
     CStdCoutLoggerStdCoutLogger is a very simple logger that displays all the transitions on the console
     CSubTreeNodeThe SubTreeNode is a way to wrap an entire Subtree, creating a separated BlackBoard. If you want to have data flow through ports, you need to explicitly remap the ports
     CSwitchNode
     CSyncActionNodeThe SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require an implementation of halt()
     CTestNodeThe TestNode is a Node that can be configure to:
     CTestNodeConfig
     CThreadedActionThe ThreadedAction executes the tick in a different thread
     CTimeoutNodeThe TimeoutNode will halt() a running child if the latter has been RUNNING longer than a given time. The timeout is in milliseconds and it is passed using the port "msec"
     CTimerQueue
     CTimestamp
     CTreeStruct used to store a tree. If this object goes out of scope, the tree is destroyed
     CSubtree
     CTreeNodeAbstract base class for Behavior Tree Nodes
     CTreeNodeManifestThis information is used mostly by the XMLParser
     CTreeObserverThe TreeObserver is used to collect statistics about which nodes are executed and their returned status
     CNodeStatistics
     CTypeInfo
     CUnsetBlackboardNode
     CWakeUpSignal
     CWhileDoElseNodeWhileDoElse must have exactly 2 or 3 children. It is a REACTIVE node of IfThenElseNode
     CXMLParserThe XMLParser is a class used to read the model of a BehaviorTree from file or text and instantiate the corresponding tree using the BehaviorTreeFactory
    +
    +
    +
    + + + + diff --git a/namespaces_dup.js b/namespaces_dup.js new file mode 100644 index 000000000..b423e2d7a --- /dev/null +++ b/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "BT", "d2/d8d/namespace_b_t.html", "d2/d8d/namespace_b_t" ] +]; \ No newline at end of file diff --git a/nav_f.png b/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/nav_fd.png b/nav_fd.png new file mode 100644 index 0000000000000000000000000000000000000000..032fbdd4c54f54fa9a2e6423b94ef4b2ebdfaceb GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQU#tajv*C{Z|C~*H7f|XvG1G8 zt7aS*L7xwMeS}!z6R#{C5tIw-s~AJ==F^i}x3XyJseHR@yF& zerFf(Zf;Dd{+(0lDIROL@Sj-Ju2JQ8&-n%4%q?>|^bShc&lR?}7HeMo@BDl5N(aHY Uj$gdr1MOz;boFyt=akR{0D!zeaR2}S literal 0 HcmV?d00001 diff --git a/nav_g.png b/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL6W-eg#Jd_@e6*DPn)w;=|1H}Zvm9l6xXXB%>yL=NQU;mg M>FVdQ&MBb@0Bdt1Qvd(} literal 0 HcmV?d00001 diff --git a/navtree.css b/navtree.css new file mode 100644 index 000000000..c8a7766a7 --- /dev/null +++ b/navtree.css @@ -0,0 +1,150 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: var(--nav-text-active-color); + text-shadow: var(--nav-text-active-shadow); +} + +#nav-tree .selected .arrow { + color: var(--nav-arrow-selected-color); + text-shadow: none; +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px var(--font-family-nav); +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:var(--nav-text-active-color); +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: $width; + overflow : hidden; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:var(--nav-splitbar-image); + background-size:100%; + background-repeat:repeat-y; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-repeat:repeat-x; + background-color: var(--nav-background-color); + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/navtree.js b/navtree.js new file mode 100644 index 000000000..27983687a --- /dev/null +++ b/navtree.js @@ -0,0 +1,549 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('memtitle') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).slideDown("fast"); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + var topOffset=5; + if (typeof page_layout!=='undefined' && page_layout==1) { + topOffset+=$('#top').outerHeight(); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + topOffset+=25; + } + $('#nav-sync').css('top',topOffset+'px'); + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +var loadTriggered = false; +var readyTriggered = false; +var loadObject,loadToRoot,loadUrl,loadRelPath; + +$(window).on('load',function(){ + if (readyTriggered) { // ready first + navTo(loadObject,loadToRoot,loadUrl,loadRelPath); + showRoot(); + } + loadTriggered=true; +}); + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + if (loadTriggered) { // load before ready + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + } else { // ready before load + loadObject = o; + loadToRoot = toroot; + loadUrl = hashUrl(); + loadRelPath = relpath; + readyTriggered=true; + } + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM0) { + newWidth=0; + } + else { + var width = readSetting('width'); + newWidth = (width>250 && width<$(window).width()) ? width : 250; + } + restoreWidth(newWidth); + var sidenavWidth = $(sidenav).outerWidth(); + writeSetting('width',sidenavWidth-barWidth); + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readSetting('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + if (once) { + $(".ui-resizable-handle").dblclick(collapseExpand); + once=0 + } + $(window).on('load',resizeHeight); +} +/* @license-end */ diff --git a/search/all_0.js b/search/all_0.js new file mode 100644 index 000000000..fdda65b05 --- /dev/null +++ b/search/all_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5fxid_5fstart_5fcharacter_0',['_xid_start_character',['../df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html',1,'BT::Grammar']]] +]; diff --git a/search/all_1.js b/search/all_1.js new file mode 100644 index 000000000..661ae0639 --- /dev/null +++ b/search/all_1.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['actionnodebase_0',['ActionNodeBase',['../d3/de2/class_b_t_1_1_action_node_base.html',1,'BT']]], + ['add_1',['add',['../df/d4c/class_b_t_1_1_timer_queue.html#a386ac8a89de8315a3f81cb5e88c30cac',1,'BT::TimerQueue']]], + ['addchild_2',['addChild',['../d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f',1,'BT::ControlNode']]], + ['addconverter_3',['addConverter',['../d0/d64/class_b_t_1_1_json_exporter.html#a984e954eb7bacad6d9a719d3b1eb8ec7',1,'BT::JsonExporter::addConverter()'],['../d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6',1,'BT::JsonExporter::addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)'],['../d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199',1,'BT::JsonExporter::addConverter(std::function< void(const nlohmann::json &, T &)> from_json)']]], + ['addmetadatatomanifest_4',['addMetadataToManifest',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aad83e88bb1ceb49194702d0be3849f70',1,'BT::BehaviorTreeFactory']]], + ['addsubstitutionrule_5',['addSubstitutionRule',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9',1,'BT::BehaviorTreeFactory']]], + ['alwaysfailurenode_6',['AlwaysFailureNode',['../d0/d9c/class_b_t_1_1_always_failure_node.html',1,'BT']]], + ['alwayssuccessnode_7',['AlwaysSuccessNode',['../dd/dce/class_b_t_1_1_always_success_node.html',1,'BT']]], + ['any_8',['Any',['../d7/df4/class_b_t_1_1_any.html',1,'BT']]], + ['anyptrlocked_9',['AnyPtrLocked',['../d2/d8d/namespace_b_t.html#ab3912e0e286d30ab35df23ed44632e4f',1,'BT']]], + ['anytypeallowed_10',['AnyTypeAllowed',['../d4/df1/struct_b_t_1_1_any_type_allowed.html',1,'BT']]], + ['anyvalue_11',['AnyValue',['../d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html',1,'BT::Grammar']]], + ['assignment_12',['assignment',['../d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html',1,'BT::Grammar::Expression']]], + ['async_5fdelay_13',['async_delay',['../d6/d58/struct_b_t_1_1_test_node_config.html#a24e48bd8764c98aeb4ea762333e19d39',1,'BT::TestNodeConfig']]] +]; diff --git a/search/all_10.js b/search/all_10.js new file mode 100644 index 000000000..93cbc6ce1 --- /dev/null +++ b/search/all_10.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['parallelallnode_0',['ParallelAllNode',['../d3/d02/class_b_t_1_1_parallel_all_node.html',1,'BT']]], + ['parallelnode_1',['ParallelNode',['../d1/dee/class_b_t_1_1_parallel_node.html',1,'BT']]], + ['parser_2',['Parser',['../de/da6/class_b_t_1_1_parser.html',1,'BT']]], + ['popfromqueue_3',['PopFromQueue',['../d7/d3a/class_b_t_1_1_pop_from_queue.html',1,'BT']]], + ['portinfo_4',['PortInfo',['../d8/d5e/class_b_t_1_1_port_info.html',1,'BT']]], + ['post_5fscript_5',['post_script',['../d6/d58/struct_b_t_1_1_test_node_config.html#abb7ef3fd05d82f075a08f8326a0d79d3',1,'BT::TestNodeConfig']]], + ['preconditionnode_6',['PreconditionNode',['../d7/dd5/class_b_t_1_1_precondition_node.html',1,'BT']]], + ['prefix_7',['prefix',['../d2/ddd/class_b_t_1_1_shared_library.html#ac1725ff13bf9a16b5271b3ecbf4d5bb7',1,'BT::SharedLibrary']]], + ['printtreerecursively_8',['printTreeRecursively',['../d2/d8d/namespace_b_t.html#a81fc68e6864ea125011a4ab64e9d6dc3',1,'BT']]], + ['protectedqueue_9',['ProtectedQueue',['../d6/dee/struct_b_t_1_1_protected_queue.html',1,'BT']]] +]; diff --git a/search/all_11.js b/search/all_11.js new file mode 100644 index 000000000..9770c9bd4 --- /dev/null +++ b/search/all_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queuesize_0',['QueueSize',['../d9/d8c/class_b_t_1_1_queue_size.html',1,'BT']]] +]; diff --git a/search/all_12.js b/search/all_12.js new file mode 100644 index 000000000..6a50fd850 --- /dev/null +++ b/search/all_12.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['reactivefallback_0',['ReactiveFallback',['../dc/d04/class_b_t_1_1_reactive_fallback.html',1,'BT']]], + ['reactivesequence_1',['ReactiveSequence',['../de/d9f/class_b_t_1_1_reactive_sequence.html',1,'BT']]], + ['real_2',['Real',['../dc/d13/struct_b_t_1_1_grammar_1_1_real.html',1,'BT::Grammar']]], + ['registerbehaviortreefromfile_3',['registerBehaviorTreeFromFile',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a8e3f4defda25caf72a368bb0868716df',1,'BT::BehaviorTreeFactory']]], + ['registerbehaviortreefromtext_4',['registerBehaviorTreeFromText',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6628bf3b28a82fe2b3562de6b01a42eb',1,'BT::BehaviorTreeFactory']]], + ['registerbuilder_5',['registerBuilder',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a12912a657b84952fb4df8ebd720c7ad2',1,'BT::BehaviorTreeFactory']]], + ['registeredbehaviortrees_6',['registeredBehaviorTrees',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a615a01e5e1651049e28340f2ed42381e',1,'BT::BehaviorTreeFactory']]], + ['registerfromplugin_7',['registerFromPlugin',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18',1,'BT::BehaviorTreeFactory']]], + ['registerfromrosplugins_8',['registerFromROSPlugins',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afd433de9fff5bd77eac748e3a657ca5c',1,'BT::BehaviorTreeFactory']]], + ['registernodetype_9',['registerNodeType',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#acfccfb4a4fe2d97133cb009d52692455',1,'BT::BehaviorTreeFactory::registerNodeType(const std::string &ID, const PortsList &ports, ExtraArgs... args)'],['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a24353332279b7df6a8fcb910ded5ffcb',1,'BT::BehaviorTreeFactory::registerNodeType(const std::string &ID, ExtraArgs... args)']]], + ['registerscriptingenum_10',['registerScriptingEnum',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6e7f7d722188a67a0950f5ff66295fc5',1,'BT::BehaviorTreeFactory']]], + ['registerscriptingenums_11',['registerScriptingEnums',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a803d02a0e90360ffd020808c937fcf4d',1,'BT::BehaviorTreeFactory']]], + ['registersimpleaction_12',['registerSimpleAction',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a751eb467f8f960eb75a5cf85bdfe4455',1,'BT::BehaviorTreeFactory']]], + ['registersimplecondition_13',['registerSimpleCondition',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd',1,'BT::BehaviorTreeFactory']]], + ['registersimpledecorator_14',['registerSimpleDecorator',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412',1,'BT::BehaviorTreeFactory']]], + ['registrationname_15',['registrationName',['../da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11',1,'BT::TreeNode']]], + ['repeatnode_16',['RepeatNode',['../d6/d78/class_b_t_1_1_repeat_node.html',1,'BT']]], + ['replyheader_17',['ReplyHeader',['../dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html',1,'BT::Monitor']]], + ['requestheader_18',['RequestHeader',['../dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html',1,'BT::Monitor']]], + ['resetchild_19',['resetChild',['../d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882',1,'BT::DecoratorNode']]], + ['resetchildren_20',['resetChildren',['../d6/ddb/class_b_t_1_1_control_node.html#a18ffb6a67c9a2bd663486b7b2b75edf3',1,'BT::ControlNode']]], + ['resetstatus_21',['resetStatus',['../da/d61/class_b_t_1_1_tree_node.html#a8874bae4b946a2ea6d1b3db1a696cf6a',1,'BT::TreeNode']]], + ['result_22',['Result',['../d2/d8d/namespace_b_t.html#ad8e3c5c30d6bff91c95a9184fec5a2d5',1,'BT']]], + ['retrynode_23',['RetryNode',['../dd/de4/class_b_t_1_1_retry_node.html',1,'BT']]], + ['retrynodetypo_24',['RetryNodeTypo',['../d1/def/class_b_t_1_1_retry_node_typo.html',1,'BT']]], + ['return_5fstatus_25',['return_status',['../d6/d58/struct_b_t_1_1_test_node_config.html#a87934348c6c5ba67e18e31ad5014961a',1,'BT::TestNodeConfig']]], + ['runoncenode_26',['RunOnceNode',['../dd/dbd/class_b_t_1_1_run_once_node.html',1,'BT']]], + ['runtimeerror_27',['RuntimeError',['../da/d35/class_b_t_1_1_runtime_error.html',1,'BT']]] +]; diff --git a/search/all_13.js b/search/all_13.js new file mode 100644 index 000000000..79c179cc2 --- /dev/null +++ b/search/all_13.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['scoped_5fdemangled_5fname_0',['scoped_demangled_name',['../d3/d8c/class_b_t_1_1scoped__demangled__name.html',1,'BT']]], + ['scriptcondition_1',['ScriptCondition',['../da/d26/class_b_t_1_1_script_condition.html',1,'BT']]], + ['scriptnode_2',['ScriptNode',['../db/d0f/class_b_t_1_1_script_node.html',1,'BT']]], + ['semaphore_3',['Semaphore',['../d9/d24/class_b_t_1_1details_1_1_semaphore.html',1,'BT::details']]], + ['sequencenode_4',['SequenceNode',['../d9/ddd/class_b_t_1_1_sequence_node.html',1,'BT']]], + ['sequencewithmemory_5',['SequenceWithMemory',['../de/d69/class_b_t_1_1_sequence_with_memory.html',1,'BT']]], + ['serializetransition_6',['SerializeTransition',['../d2/d8d/namespace_b_t.html#a1e5dd1ca538e17930637816c78ccba5a',1,'BT']]], + ['set_7',['set',['../d0/d51/class_b_t_1_1_blackboard.html#a0733879e096350bf7f77d1fb583d325b',1,'BT::Blackboard']]], + ['setblackboardnode_8',['SetBlackboardNode',['../d7/d4f/class_b_t_1_1_set_blackboard_node.html',1,'BT']]], + ['setmaxheartbeatdelay_9',['setMaxHeartbeatDelay',['../da/df5/class_b_t_1_1_groot2_publisher.html#aa8266d54c77499c29fca5622941a5583',1,'BT::Groot2Publisher']]], + ['setoutput_10',['setOutput',['../da/d61/class_b_t_1_1_tree_node.html#a74618849a9199ab568eb451d580e20fc',1,'BT::TreeNode']]], + ['setposttickfunction_11',['setPostTickFunction',['../da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72',1,'BT::TreeNode']]], + ['setpretickfunction_12',['setPreTickFunction',['../da/d61/class_b_t_1_1_tree_node.html#aebc95976e7923c048021b553c56489b5',1,'BT::TreeNode']]], + ['setstatus_13',['setStatus',['../da/d61/class_b_t_1_1_tree_node.html#ab98b671336cdc496028b52112e21a0ed',1,'BT::TreeNode']]], + ['setstatusrunningandyield_14',['setStatusRunningAndYield',['../d8/dd4/class_b_t_1_1_coro_action_node.html#a3eb0ed03e4570009dcbae6fadd2c6886',1,'BT::CoroActionNode']]], + ['settickmonitorcallback_15',['setTickMonitorCallback',['../da/d61/class_b_t_1_1_tree_node.html#afd27f6b1a6b692b113eccc29957deb31',1,'BT::TreeNode']]], + ['sharedlibrary_16',['SharedLibrary',['../d2/ddd/class_b_t_1_1_shared_library.html',1,'BT::SharedLibrary'],['../d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e',1,'BT::SharedLibrary::SharedLibrary(const std::string &path, int flags=0)'],['../d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac',1,'BT::SharedLibrary::SharedLibrary()']]], + ['shlib_5fglobal_17',['SHLIB_GLOBAL',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5130e85a4b3e349814a493d8947a5c91',1,'BT::SharedLibrary']]], + ['shlib_5flocal_18',['SHLIB_LOCAL',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5cc31a63af764ead3372762681b625f8',1,'BT::SharedLibrary']]], + ['signal_19',['Signal',['../d1/d73/class_b_t_1_1_signal.html',1,'BT']]], + ['simpleactionnode_20',['SimpleActionNode',['../d7/da7/class_b_t_1_1_simple_action_node.html',1,'BT']]], + ['simpleconditionnode_21',['SimpleConditionNode',['../dc/d49/class_b_t_1_1_simple_condition_node.html',1,'BT']]], + ['simpledecoratornode_22',['SimpleDecoratorNode',['../d3/d37/class_b_t_1_1_simple_decorator_node.html',1,'BT']]], + ['simplestring_23',['SimpleString',['../de/d34/class_safe_any_1_1_simple_string.html',1,'SafeAny']]], + ['sleep_24',['sleep',['../d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54',1,'BT::Tree']]], + ['sleepnode_25',['SleepNode',['../d9/d33/class_b_t_1_1_sleep_node.html',1,'BT']]], + ['sqlitelogger_26',['SqliteLogger',['../df/ddb/class_b_t_1_1_sqlite_logger.html',1,'BT::SqliteLogger'],['../df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d',1,'BT::SqliteLogger::SqliteLogger()']]], + ['stampedvalue_27',['StampedValue',['../d6/dfa/struct_b_t_1_1_stamped_value.html',1,'BT']]], + ['statefulactionnode_28',['StatefulActionNode',['../d0/d1f/class_b_t_1_1_stateful_action_node.html',1,'BT']]], + ['statuschangelogger_29',['StatusChangeLogger',['../d9/dbb/class_b_t_1_1_status_change_logger.html',1,'BT']]], + ['stdcoutlogger_30',['StdCoutLogger',['../d1/d52/class_b_t_1_1_std_cout_logger.html',1,'BT']]], + ['stmt_31',['stmt',['../d6/db1/struct_b_t_1_1_grammar_1_1stmt.html',1,'BT::Grammar']]], + ['string_5fconcat_32',['string_concat',['../de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html',1,'BT::Grammar::Expression']]], + ['stringliteral_33',['StringLiteral',['../df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html',1,'BT::Grammar']]], + ['subscribetostatuschange_34',['subscribeToStatusChange',['../da/d61/class_b_t_1_1_tree_node.html#afb4606479245153e183b0530e517b3cc',1,'BT::TreeNode']]], + ['substitutionrules_35',['substitutionRules',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6ca87931a32b5b3cbd319ce49980e28f',1,'BT::BehaviorTreeFactory']]], + ['subtree_36',['Subtree',['../d3/d23/struct_b_t_1_1_tree_1_1_subtree.html',1,'BT::Tree']]], + ['subtreenode_37',['SubTreeNode',['../df/d34/class_b_t_1_1_sub_tree_node.html',1,'BT']]], + ['success_5fscript_38',['success_script',['../d6/d58/struct_b_t_1_1_test_node_config.html#a0dc6a6937186ebddc37a52b06d8e3fbd',1,'BT::TestNodeConfig']]], + ['suffix_39',['suffix',['../d2/ddd/class_b_t_1_1_shared_library.html#a8844a78727a244644d79916c5005c54d',1,'BT::SharedLibrary']]], + ['switchnode_40',['SwitchNode',['../dc/dae/class_b_t_1_1_switch_node.html',1,'BT']]], + ['syncactionnode_41',['SyncActionNode',['../da/d73/class_b_t_1_1_sync_action_node.html',1,'BT']]] +]; diff --git a/search/all_14.js b/search/all_14.js new file mode 100644 index 000000000..4249666a8 --- /dev/null +++ b/search/all_14.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['testnode_0',['TestNode',['../d5/d7f/class_b_t_1_1_test_node.html',1,'BT']]], + ['testnodeconfig_1',['TestNodeConfig',['../d6/d58/struct_b_t_1_1_test_node_config.html',1,'BT']]], + ['threadedaction_2',['ThreadedAction',['../d2/d61/class_b_t_1_1_threaded_action.html',1,'BT']]], + ['tick_3',['tick',['../d7/d3a/class_b_t_1_1_pop_from_queue.html#aceea54c073e940b1f2956783f86802b7',1,'BT::PopFromQueue::tick()'],['../da/d61/class_b_t_1_1_tree_node.html#a15ea206d20defd764035481ceda1de3e',1,'BT::TreeNode::tick()'],['../df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b',1,'BT::SubTreeNode::tick()'],['../dd/d32/class_b_t_1_1_loop_node.html#a0797d0b208dc24644a8d51cbc7606cd7',1,'BT::LoopNode::tick()'],['../df/dc2/class_b_t_1_1_consume_queue.html#ab19b8bfa150b60b6d9c726b96500cbd1',1,'BT::ConsumeQueue::tick()'],['../d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29',1,'BT::SimpleDecoratorNode::tick()'],['../dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad',1,'BT::SimpleConditionNode::tick()'],['../d9/d8c/class_b_t_1_1_queue_size.html#a51bfd9e2052697530afe7433b21da0fc',1,'BT::QueueSize::tick()'],['../d0/d1f/class_b_t_1_1_stateful_action_node.html#aea7bc4ed0e77fb4f78df00a00c3dcab9',1,'BT::StatefulActionNode::tick()'],['../d7/da7/class_b_t_1_1_simple_action_node.html#adde389e53daea5f861962918fdad825c',1,'BT::SimpleActionNode::tick()']]], + ['tickexactlyonce_4',['tickExactlyOnce',['../d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5',1,'BT::Tree']]], + ['tickonce_5',['tickOnce',['../d1/d79/class_b_t_1_1_tree.html#a39a85b09e4e7203ab586e8012f381d73',1,'BT::Tree']]], + ['tickwhilerunning_6',['tickWhileRunning',['../d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b',1,'BT::Tree']]], + ['timeoutnode_7',['TimeoutNode',['../d4/d20/class_b_t_1_1_timeout_node.html',1,'BT']]], + ['timerqueue_8',['TimerQueue',['../df/d4c/class_b_t_1_1_timer_queue.html',1,'BT']]], + ['timestamp_9',['Timestamp',['../d0/d59/struct_b_t_1_1_timestamp.html',1,'BT']]], + ['tojson_10',['toJson',['../d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a',1,'BT::JsonExporter']]], + ['tostr_11',['toStr',['../d2/d8d/namespace_b_t.html#a59b08b9acce3233964741ac39102abda',1,'BT::toStr(BT::NodeStatus status, bool colored)'],['../d2/d8d/namespace_b_t.html#acdc7285d759ccee669271f9884941cf9',1,'BT::toStr(const T &value)']]], + ['transition_12',['Transition',['../dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html',1,'BT::FileLogger2']]], + ['tree_13',['Tree',['../d1/d79/class_b_t_1_1_tree.html',1,'BT']]], + ['treenode_14',['TreeNode',['../da/d61/class_b_t_1_1_tree_node.html',1,'BT::TreeNode'],['../da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e',1,'BT::TreeNode::TreeNode()']]], + ['treenodemanifest_15',['TreeNodeManifest',['../dc/d6c/struct_b_t_1_1_tree_node_manifest.html',1,'BT']]], + ['treeobserver_16',['TreeObserver',['../d2/d2b/class_b_t_1_1_tree_observer.html',1,'BT']]], + ['true_17',['True',['../df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html',1,'BT::Grammar::BooleanLiteral']]], + ['typeinfo_18',['TypeInfo',['../d0/d34/class_b_t_1_1_type_info.html',1,'BT']]] +]; diff --git a/search/all_15.js b/search/all_15.js new file mode 100644 index 000000000..5040f5d98 --- /dev/null +++ b/search/all_15.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['uid_0',['UID',['../da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36',1,'BT::TreeNode']]], + ['unload_1',['unload',['../d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011',1,'BT::SharedLibrary']]], + ['unregisterbuilder_2',['unregisterBuilder',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#af2c7e0e5cdad5a1816a7862a321767e3',1,'BT::BehaviorTreeFactory']]], + ['unsetblackboardnode_3',['UnsetBlackboardNode',['../d1/d77/class_b_t_1_1_unset_blackboard_node.html',1,'BT']]] +]; diff --git a/search/all_16.js b/search/all_16.js new file mode 100644 index 000000000..6fbb1321d --- /dev/null +++ b/search/all_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['validatescript_0',['ValidateScript',['../d2/d8d/namespace_b_t.html#a28330518fc63ccc458b55303d05b18d1',1,'BT']]] +]; diff --git a/search/all_17.js b/search/all_17.js new file mode 100644 index 000000000..1a72ff873 --- /dev/null +++ b/search/all_17.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['waitfor_0',['waitFor',['../da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff',1,'BT::WakeUpSignal']]], + ['waitvalidstatus_1',['waitValidStatus',['../da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6',1,'BT::TreeNode']]], + ['wakeupsignal_2',['WakeUpSignal',['../da/d2f/class_b_t_1_1_wake_up_signal.html',1,'BT']]], + ['whiledoelsenode_3',['WhileDoElseNode',['../d7/d54/class_b_t_1_1_while_do_else_node.html',1,'BT']]], + ['writetreenodesmodelxml_4',['writeTreeNodesModelXML',['../d2/d8d/namespace_b_t.html#a7f653b41d3df395036c6245ef3265424',1,'BT']]], + ['writetreetoxml_5',['WriteTreeToXML',['../d2/d8d/namespace_b_t.html#a4a84d486b78c9a316e997bd3cc799f75',1,'BT']]], + ['writetreexsd_6',['writeTreeXSD',['../d2/d8d/namespace_b_t.html#a415454b3b6fe0ce36db71ef677c13a4e',1,'BT']]] +]; diff --git a/search/all_18.js b/search/all_18.js new file mode 100644 index 000000000..f4f10da7c --- /dev/null +++ b/search/all_18.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmlparser_0',['XMLParser',['../d8/d05/class_b_t_1_1_x_m_l_parser.html',1,'BT']]] +]; diff --git a/search/all_19.js b/search/all_19.js new file mode 100644 index 000000000..f5b6101aa --- /dev/null +++ b/search/all_19.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7esharedlibrary_0',['~SharedLibrary',['../d2/ddd/class_b_t_1_1_shared_library.html#aab93b1e125fbc01b896b4cf6ef019fcf',1,'BT::SharedLibrary']]] +]; diff --git a/search/all_2.js b/search/all_2.js new file mode 100644 index 000000000..35c28546e --- /dev/null +++ b/search/all_2.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['behaviortreeexception_0',['BehaviorTreeException',['../df/d93/class_b_t_1_1_behavior_tree_exception.html',1,'BT']]], + ['behaviortreefactory_1',['BehaviorTreeFactory',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html',1,'BT']]], + ['bidirectionalport_2',['BidirectionalPort',['../d2/d8d/namespace_b_t.html#a13321f9dceb6909198966973042a13a1',1,'BT::BidirectionalPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#aa5246156c75012e4106eb05bc9c3cf47',1,'BT::BidirectionalPort(StringView name, const DefaultT &default_value, StringView description)']]], + ['bit_5fand_3',['bit_and',['../d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html',1,'BT::Grammar::Expression']]], + ['bit_5for_4',['bit_or',['../da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html',1,'BT::Grammar::Expression']]], + ['bit_5fprefix_5',['bit_prefix',['../dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html',1,'BT::Grammar::Expression']]], + ['blackboard_6',['Blackboard',['../d0/d51/class_b_t_1_1_blackboard.html',1,'BT']]], + ['blackboardbackup_7',['BlackboardBackup',['../d2/d8d/namespace_b_t.html#a39d3de37134ad6c26809809a99c85cd1',1,'BT']]], + ['blackboardclone_8',['BlackboardClone',['../d2/d8d/namespace_b_t.html#ae1c2a1676d84ad1a9b3a809c7c8e8fdb',1,'BT']]], + ['blackboardrestore_9',['BlackboardRestore',['../d2/d8d/namespace_b_t.html#a9fd0bac756271d4c997ed0a3d67067c1',1,'BT']]], + ['booleanliteral_10',['BooleanLiteral',['../d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html',1,'BT::Grammar']]], + ['bt_11',['BT',['../d2/d8d/namespace_b_t.html',1,'']]], + ['builders_12',['builders',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a92cac717f302a0a4b6edb006896d9aee',1,'BT::BehaviorTreeFactory']]], + ['buildserializedstatussnapshot_13',['buildSerializedStatusSnapshot',['../d2/d8d/namespace_b_t.html#aa260ec6d0ad8a20a2beff083a470d6ce',1,'BT']]], + ['builtinnodes_14',['builtinNodes',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a976ea06ba865588977ec9ab312f25bd0',1,'BT::BehaviorTreeFactory']]], + ['details_15',['details',['../df/da8/namespace_b_t_1_1details.html',1,'BT']]] +]; diff --git a/search/all_3.js b/search/all_3.js new file mode 100644 index 000000000..e4e6d40fb --- /dev/null +++ b/search/all_3.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['cancel_0',['cancel',['../df/d4c/class_b_t_1_1_timer_queue.html#a5564436f2a8e071bfdf59be5daea279a',1,'BT::TimerQueue']]], + ['cancelall_1',['cancelAll',['../df/d4c/class_b_t_1_1_timer_queue.html#a663265e8c343946094e5d16a1b59d483',1,'BT::TimerQueue']]], + ['clearregisteredbehaviortrees_2',['clearRegisteredBehaviorTrees',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a2b08c778188748bc26a2d44618b0125e',1,'BT::BehaviorTreeFactory']]], + ['cloneinto_3',['cloneInto',['../d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e',1,'BT::Blackboard']]], + ['comparison_4',['comparison',['../d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html',1,'BT::Grammar::Expression']]], + ['complete_5ffunc_5',['complete_func',['../d6/d58/struct_b_t_1_1_test_node_config.html#a98806d4cf69c3d88a72d4e5c6230b60d',1,'BT::TestNodeConfig']]], + ['conditional_6',['conditional',['../d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html',1,'BT::Grammar::Expression']]], + ['conditionnode_7',['ConditionNode',['../dc/dfc/class_b_t_1_1_condition_node.html',1,'BT']]], + ['config_8',['config',['../da/d61/class_b_t_1_1_tree_node.html#a7d17e161369b535793ed9c6cc0a6a0ac',1,'BT::TreeNode']]], + ['consumequeue_9',['ConsumeQueue',['../df/dc2/class_b_t_1_1_consume_queue.html',1,'BT']]], + ['controlnode_10',['ControlNode',['../d6/ddb/class_b_t_1_1_control_node.html',1,'BT']]], + ['convertfromjson_11',['convertFromJSON',['../d2/d8d/namespace_b_t.html#a183200576f5fa139ae3359abbe8ef1c4',1,'BT::convertFromJSON(StringView json_text, std::type_index type)'],['../d2/d8d/namespace_b_t.html#a6f1eef4943ac07de099ec403979c488f',1,'BT::convertFromJSON(StringView str)']]], + ['convertfromstring_12',['convertFromString',['../d2/d8d/namespace_b_t.html#afaf200f50db2b15eea2e20e6a068a0d2',1,'BT']]], + ['coroactionnode_13',['CoroActionNode',['../d8/dd4/class_b_t_1_1_coro_action_node.html',1,'BT']]], + ['create_14',['create',['../d0/d51/class_b_t_1_1_blackboard.html#ae997dc5aae731fd2724a018723c2317c',1,'BT::Blackboard']]], + ['createtreefromfile_15',['createTreeFromFile',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ad1f21dc9192e84ed014f871575575705',1,'BT::BehaviorTreeFactory']]], + ['createtreefromtext_16',['createTreeFromText',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/all_4.js b/search/all_4.js new file mode 100644 index 000000000..2ad7e58fd --- /dev/null +++ b/search/all_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['decoratornode_0',['DecoratorNode',['../d1/de7/class_b_t_1_1_decorator_node.html',1,'BT']]], + ['delaynode_1',['DelayNode',['../d4/d56/class_b_t_1_1_delay_node.html',1,'BT']]] +]; diff --git a/search/all_5.js b/search/all_5.js new file mode 100644 index 000000000..055c8610d --- /dev/null +++ b/search/all_5.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['emitwakeupsignal_0',['emitWakeUpSignal',['../da/d61/class_b_t_1_1_tree_node.html#a05339c112add31fc3c592e3e0e5d5d4b',1,'BT::TreeNode']]], + ['enableexception_1',['EnableException',['../de/d9f/class_b_t_1_1_reactive_sequence.html#a1f2a7c7127fb2e17124ee69abd87631b',1,'BT::ReactiveSequence::EnableException()'],['../dc/d04/class_b_t_1_1_reactive_fallback.html#a86245f8ec23ec46db8c847a0931a49d0',1,'BT::ReactiveFallback::EnableException()']]], + ['entry_2',['Entry',['../d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html',1,'BT::Blackboard::Entry'],['../d0/d64/class_b_t_1_1_json_exporter.html#addc80e35fbb70a74dda8b42eda3e20a8',1,'BT::JsonExporter::Entry()']]], + ['entryupdatedaction_3',['EntryUpdatedAction',['../df/d9f/class_b_t_1_1_entry_updated_action.html',1,'BT']]], + ['entryupdateddecorator_4',['EntryUpdatedDecorator',['../d1/d7b/class_b_t_1_1_entry_updated_decorator.html',1,'BT']]], + ['enumstable_5',['EnumsTable',['../d2/d8d/namespace_b_t.html#aae2df96e431683d5655acbfe26026f59',1,'BT']]], + ['environment_6',['Environment',['../d0/de8/struct_b_t_1_1_ast_1_1_environment.html',1,'BT::Ast']]], + ['executetick_7',['executeTick',['../da/d61/class_b_t_1_1_tree_node.html#a07d0876cfd608b690650e930d1a629cc',1,'BT::TreeNode::executeTick()'],['../d1/de7/class_b_t_1_1_decorator_node.html#add55473b513501079f3064dcac8c8dfc',1,'BT::DecoratorNode::executeTick()'],['../d8/dd4/class_b_t_1_1_coro_action_node.html#aaa803222d3da8331bec8d305d50235a3',1,'BT::CoroActionNode::executeTick()'],['../d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1',1,'BT::ThreadedAction::executeTick()'],['../da/d73/class_b_t_1_1_sync_action_node.html#a27f92ef5b12777c509e04bed372a9c5f',1,'BT::SyncActionNode::executeTick()']]], + ['expected_8',['Expected',['../d2/d8d/namespace_b_t.html#a7ed468293f4e7dc7ebbaca1a475526f3',1,'BT']]], + ['expected_5foperand_9',['expected_operand',['../d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html',1,'BT::Grammar::Expression']]], + ['exportblackboardtojson_10',['ExportBlackboardToJSON',['../d2/d8d/namespace_b_t.html#a9700fbeea6af84efe32e9f22bc45d8e2',1,'BT']]], + ['exporttreetojson_11',['ExportTreeToJSON',['../d2/d8d/namespace_b_t.html#a02848b586dc8265d5d51be939401626d',1,'BT']]], + ['exprassignment_12',['ExprAssignment',['../db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html',1,'BT::Ast']]], + ['exprbase_13',['ExprBase',['../db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html',1,'BT::Ast']]], + ['exprbinaryarithmetic_14',['ExprBinaryArithmetic',['../da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html',1,'BT::Ast']]], + ['exprcomparison_15',['ExprComparison',['../d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html',1,'BT::Ast']]], + ['expression_16',['Expression',['../d7/d86/struct_b_t_1_1_grammar_1_1_expression.html',1,'BT::Grammar']]], + ['exprif_17',['ExprIf',['../db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html',1,'BT::Ast']]], + ['exprliteral_18',['ExprLiteral',['../dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html',1,'BT::Ast']]], + ['exprname_19',['ExprName',['../d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html',1,'BT::Ast']]], + ['exprunaryarithmetic_20',['ExprUnaryArithmetic',['../de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html',1,'BT::Ast']]] +]; diff --git a/search/all_6.js b/search/all_6.js new file mode 100644 index 000000000..73e37402a --- /dev/null +++ b/search/all_6.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['failure_5fscript_0',['failure_script',['../d6/d58/struct_b_t_1_1_test_node_config.html#a18fd03863da6bdc40a2453bb9d2b96fc',1,'BT::TestNodeConfig']]], + ['fallbacknode_1',['FallbackNode',['../dc/da6/class_b_t_1_1_fallback_node.html',1,'BT']]], + ['false_2',['False',['../d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html',1,'BT::Grammar::BooleanLiteral']]], + ['filelogger2_3',['FileLogger2',['../d2/d7b/class_b_t_1_1_file_logger2.html',1,'BT::FileLogger2'],['../d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e',1,'BT::FileLogger2::FileLogger2()']]], + ['flags_4',['Flags',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cf',1,'BT::SharedLibrary']]], + ['forcefailurenode_5',['ForceFailureNode',['../d4/d8c/class_b_t_1_1_force_failure_node.html',1,'BT']]], + ['forcesuccessnode_6',['ForceSuccessNode',['../d7/db8/class_b_t_1_1_force_success_node.html',1,'BT']]], + ['fromjson_7',['fromJson',['../d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c',1,'BT::JsonExporter::fromJson(const nlohmann::json &source) const'],['../d0/d64/class_b_t_1_1_json_exporter.html#a049aa9812d72bd8af80fe153c51d72fc',1,'BT::JsonExporter::fromJson(const nlohmann::json &source, std::type_index type) const']]], + ['fullpath_8',['fullPath',['../da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58',1,'BT::TreeNode']]] +]; diff --git a/search/all_7.js b/search/all_7.js new file mode 100644 index 000000000..b8d9a1a92 --- /dev/null +++ b/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['get_0',['get',['../d0/d51/class_b_t_1_1_blackboard.html#ad536070fc0cc82a4fa1c53e3b2222e58',1,'BT::Blackboard::get(const std::string &key, T &value) const'],['../d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02',1,'BT::Blackboard::get(const std::string &key) const']]], + ['getinput_1',['getInput',['../da/d61/class_b_t_1_1_tree_node.html#ae921e5800a82b7591cb711c710d49725',1,'BT::TreeNode::getInput(const std::string &key, T &destination) const'],['../da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b',1,'BT::TreeNode::getInput(const std::string &key) const']]], + ['getinputstamped_2',['getInputStamped',['../da/d61/class_b_t_1_1_tree_node.html#a4fd8498410d2344cc9af272ea97dfd09',1,'BT::TreeNode::getInputStamped(const std::string &key, T &destination) const'],['../da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6',1,'BT::TreeNode::getInputStamped(const std::string &key) const']]], + ['getlockedportcontent_3',['getLockedPortContent',['../da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a',1,'BT::TreeNode']]], + ['getnodesbypath_4',['getNodesByPath',['../d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea',1,'BT::Tree']]], + ['getosname_5',['getOSName',['../d2/ddd/class_b_t_1_1_shared_library.html#ac7619be5a1a346ba88d257691e31913f',1,'BT::SharedLibrary']]], + ['getpath_6',['getPath',['../d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3',1,'BT::SharedLibrary']]], + ['getsymbol_7',['getSymbol',['../d2/ddd/class_b_t_1_1_shared_library.html#a5ab4789785c0f37caaf1955bab03b034',1,'BT::SharedLibrary']]], + ['gettype_8',['getType',['../d2/d8d/namespace_b_t.html#aa8bda3dd22bdb1c2aaa354a610e25ac9',1,'BT']]], + ['groot2publisher_9',['Groot2Publisher',['../da/df5/class_b_t_1_1_groot2_publisher.html',1,'BT']]] +]; diff --git a/search/all_8.js b/search/all_8.js new file mode 100644 index 000000000..a6d85eb16 --- /dev/null +++ b/search/all_8.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['halt_0',['halt',['../dc/da6/class_b_t_1_1_fallback_node.html#a254b111f7bde893dd711327f4879e290',1,'BT::FallbackNode::halt()'],['../d4/d56/class_b_t_1_1_delay_node.html#ac1442f8346a289ae98dd82be5e0c85a6',1,'BT::DelayNode::halt()'],['../d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d',1,'BT::DecoratorNode::halt()'],['../d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21',1,'BT::WhileDoElseNode::halt()'],['../dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb',1,'BT::SwitchNode::halt()'],['../de/d69/class_b_t_1_1_sequence_with_memory.html#a1337e21debce05cc2fc2fe4481663a22',1,'BT::SequenceWithMemory::halt()'],['../d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716',1,'BT::SequenceNode::halt()'],['../d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a',1,'BT::ParallelNode::halt()'],['../d3/d02/class_b_t_1_1_parallel_all_node.html#a8d277cfa32781567a3ef8b967ce28c70',1,'BT::ParallelAllNode::halt()'],['../dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf',1,'BT::ManualSelectorNode::halt()'],['../d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11',1,'BT::IfThenElseNode::halt()'],['../d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3',1,'BT::ControlNode::halt()'],['../dc/dfc/class_b_t_1_1_condition_node.html#ad6dc34ea7ed32903800f9384416e1bac',1,'BT::ConditionNode::halt()'],['../d8/dd4/class_b_t_1_1_coro_action_node.html#a498c45c27df7032e8fb5a6b4f782ae51',1,'BT::CoroActionNode::halt()'],['../d0/d1f/class_b_t_1_1_stateful_action_node.html#a8206f68b132a2cf682e4189e19e65ba7',1,'BT::StatefulActionNode::halt()'],['../d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a',1,'BT::ThreadedAction::halt()'],['../da/d73/class_b_t_1_1_sync_action_node.html#a20556b49ddc39c608018209643fc14d2',1,'BT::SyncActionNode::halt()'],['../dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678',1,'BT::RetryNode::halt()']]], + ['haltchild_1',['haltChild',['../d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a',1,'BT::DecoratorNode']]], + ['haltchildren_2',['haltChildren',['../d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c',1,'BT::ControlNode']]], + ['has_5fstatic_5fmethod_5fmetadata_3',['has_static_method_metadata',['../d1/da6/struct_b_t_1_1has__static__method__metadata.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fmetadata_3c_20t_2c_20typename_20std_3a_3aenable_5fif_3c_20std_3a_3ais_5fsame_3c_20decltype_28t_3a_3ametadata_28_29_29_2c_20keyvaluevector_20_3e_3a_3avalue_20_3e_3a_3atype_20_3e_4',['has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >',['../dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fprovidedports_5',['has_static_method_providedPorts',['../d0/d56/struct_b_t_1_1has__static__method__provided_ports.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fprovidedports_3c_20t_2c_20typename_20std_3a_3aenable_5fif_3c_20std_3a_3ais_5fsame_3c_20decltype_28t_3a_3aprovidedports_28_29_29_2c_20portslist_20_3e_3a_3avalue_20_3e_3a_3atype_20_3e_6',['has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >',['../d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html',1,'BT']]], + ['hassymbol_7',['hasSymbol',['../d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a',1,'BT::SharedLibrary']]], + ['hook_8',['Hook',['../dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html',1,'BT::Monitor']]] +]; diff --git a/search/all_9.js b/search/all_9.js new file mode 100644 index 000000000..dddc547b4 --- /dev/null +++ b/search/all_9.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['ifthenelsenode_0',['IfThenElseNode',['../d8/d08/class_b_t_1_1_if_then_else_node.html',1,'BT']]], + ['importblackboardfromjson_1',['ImportBlackboardFromJSON',['../d2/d8d/namespace_b_t.html#a93b8bbf4a1f09391295076701c1457e4',1,'BT']]], + ['importtreefromjson_2',['ImportTreeFromJSON',['../d2/d8d/namespace_b_t.html#a47af04695aeb786b3c2ec2267f5bf02b',1,'BT']]], + ['inputport_3',['InputPort',['../d2/d8d/namespace_b_t.html#a9d63b9f7eba8a9a98322107ef8e0ae3d',1,'BT::InputPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#a8794519d3bc2203f70a65b38f9e37a3c',1,'BT::InputPort(StringView name, const DefaultT &default_value, StringView description)']]], + ['instantiate_4',['Instantiate',['../da/d61/class_b_t_1_1_tree_node.html#a31eda57720de8dd6d97ab83d2956b0f0',1,'BT::TreeNode']]], + ['instantiatetreenode_5',['instantiateTreeNode',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622',1,'BT::BehaviorTreeFactory']]], + ['integer_6',['Integer',['../dc/d75/struct_b_t_1_1_grammar_1_1_integer.html',1,'BT::Grammar']]], + ['integer_7',['integer',['../d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html',1,'BT::Grammar::Integer']]], + ['invalid_5fsuffix_8',['invalid_suffix',['../da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html',1,'BT::Grammar::Integer::invalid_suffix'],['../db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html',1,'BT::Grammar::Real::invalid_suffix']]], + ['inverternode_9',['InverterNode',['../d2/ded/class_b_t_1_1_inverter_node.html',1,'BT']]], + ['isblackboardpointer_10',['isBlackboardPointer',['../da/d61/class_b_t_1_1_tree_node.html#ab157589bcee1d9f8d6ae9fc6c8a0b41b',1,'BT::TreeNode']]], + ['isloaded_11',['isLoaded',['../d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763',1,'BT::SharedLibrary']]] +]; diff --git a/search/all_a.js b/search/all_a.js new file mode 100644 index 000000000..dd928126d --- /dev/null +++ b/search/all_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsonexporter_0',['JsonExporter',['../d0/d64/class_b_t_1_1_json_exporter.html',1,'BT']]] +]; diff --git a/search/all_b.js b/search/all_b.js new file mode 100644 index 000000000..c2a1ec506 --- /dev/null +++ b/search/all_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keeprunninguntilfailurenode_0',['KeepRunningUntilFailureNode',['../de/d22/class_b_t_1_1_keep_running_until_failure_node.html',1,'BT']]] +]; diff --git a/search/all_c.js b/search/all_c.js new file mode 100644 index 000000000..964c8f308 --- /dev/null +++ b/search/all_c.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['leafnode_0',['LeafNode',['../d1/de2/class_b_t_1_1_leaf_node.html',1,'BT']]], + ['load_1',['load',['../d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f',1,'BT::SharedLibrary']]], + ['loadsubstitutionrulefromjson_2',['loadSubstitutionRuleFromJSON',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a16d9ccac815fb2dd9c479829bab6d9e3',1,'BT::BehaviorTreeFactory']]], + ['lockedptr_3',['LockedPtr',['../d4/d98/class_b_t_1_1_locked_ptr.html',1,'BT']]], + ['logical_4',['logical',['../de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html',1,'BT::Grammar::Expression']]], + ['logicerror_5',['LogicError',['../df/d4f/class_b_t_1_1_logic_error.html',1,'BT']]], + ['loopnode_6',['LoopNode',['../dd/d32/class_b_t_1_1_loop_node.html',1,'BT']]] +]; diff --git a/search/all_d.js b/search/all_d.js new file mode 100644 index 000000000..ab9f6d6d3 --- /dev/null +++ b/search/all_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['manifests_0',['manifests',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ab7ac27ba005c61dc52735bb7e2918bdd',1,'BT::BehaviorTreeFactory']]], + ['manualselectornode_1',['ManualSelectorNode',['../dc/d0b/class_b_t_1_1_manual_selector_node.html',1,'BT']]], + ['math_5fprefix_2',['math_prefix',['../d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html',1,'BT::Grammar::Expression']]], + ['math_5fproduct_3',['math_product',['../df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html',1,'BT::Grammar::Expression']]], + ['math_5fsum_4',['math_sum',['../d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html',1,'BT::Grammar::Expression']]], + ['minitracelogger_5',['MinitraceLogger',['../de/d4f/class_b_t_1_1_minitrace_logger.html',1,'BT']]] +]; diff --git a/search/all_e.js b/search/all_e.js new file mode 100644 index 000000000..03b33e3a9 --- /dev/null +++ b/search/all_e.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['name_0',['Name',['../d7/d91/struct_b_t_1_1_grammar_1_1_name.html',1,'BT::Grammar']]], + ['name_1',['name',['../da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c',1,'BT::TreeNode']]], + ['nested_5fexpr_2',['nested_expr',['../df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html',1,'BT::Grammar']]], + ['nodebuilder_3',['NodeBuilder',['../d2/d8d/namespace_b_t.html#a92afa24aac8b115778d5a99099b40d5b',1,'BT']]], + ['nodeconfig_4',['NodeConfig',['../dc/d26/struct_b_t_1_1_node_config.html',1,'BT']]], + ['nodestatistics_5',['NodeStatistics',['../d7/d9d/struct_b_t_1_1_tree_observer_1_1_node_statistics.html',1,'BT::TreeObserver']]], + ['nodestatus_6',['NodeStatus',['../d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4e',1,'BT']]], + ['nodetype_7',['NodeType',['../d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363e',1,'BT']]] +]; diff --git a/search/all_f.js b/search/all_f.js new file mode 100644 index 000000000..dde1dd984 --- /dev/null +++ b/search/all_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['onhalted_0',['onHalted',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#aa7233f6c3a9854e0c626af687be0de4e',1,'BT::StatefulActionNode::onHalted()'],['../d9/d33/class_b_t_1_1_sleep_node.html#af323f98260e2854ff5beb56963df0652',1,'BT::SleepNode::onHalted()'],['../d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26',1,'BT::TestNode::onHalted()']]], + ['onrunning_1',['onRunning',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1',1,'BT::StatefulActionNode::onRunning()'],['../d9/d33/class_b_t_1_1_sleep_node.html#afe9eb80f065e48cb68b9c571b090939b',1,'BT::SleepNode::onRunning()'],['../d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d',1,'BT::TestNode::onRunning()']]], + ['onstart_2',['onStart',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#af8c33bb580fc1e14fa3b70da06020701',1,'BT::StatefulActionNode::onStart()'],['../d9/d33/class_b_t_1_1_sleep_node.html#abb3c35a140738ca2d43d1f5498972435',1,'BT::SleepNode::onStart()'],['../d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887',1,'BT::TestNode::onStart()']]], + ['outputport_3',['OutputPort',['../d2/d8d/namespace_b_t.html#a8ac171179c71fc0def23cf28e36b8ee2',1,'BT::OutputPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#a533a06e2f82bd5d915194dcb696f444c',1,'BT::OutputPort(StringView name, StringView default_value, StringView description)']]] +]; diff --git a/search/classes_0.js b/search/classes_0.js new file mode 100644 index 000000000..fdda65b05 --- /dev/null +++ b/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5fxid_5fstart_5fcharacter_0',['_xid_start_character',['../df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html',1,'BT::Grammar']]] +]; diff --git a/search/classes_1.js b/search/classes_1.js new file mode 100644 index 000000000..e92f7101b --- /dev/null +++ b/search/classes_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['actionnodebase_0',['ActionNodeBase',['../d3/de2/class_b_t_1_1_action_node_base.html',1,'BT']]], + ['alwaysfailurenode_1',['AlwaysFailureNode',['../d0/d9c/class_b_t_1_1_always_failure_node.html',1,'BT']]], + ['alwayssuccessnode_2',['AlwaysSuccessNode',['../dd/dce/class_b_t_1_1_always_success_node.html',1,'BT']]], + ['any_3',['Any',['../d7/df4/class_b_t_1_1_any.html',1,'BT']]], + ['anytypeallowed_4',['AnyTypeAllowed',['../d4/df1/struct_b_t_1_1_any_type_allowed.html',1,'BT']]], + ['anyvalue_5',['AnyValue',['../d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html',1,'BT::Grammar']]], + ['assignment_6',['assignment',['../d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html',1,'BT::Grammar::Expression']]] +]; diff --git a/search/classes_10.js b/search/classes_10.js new file mode 100644 index 000000000..9770c9bd4 --- /dev/null +++ b/search/classes_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['queuesize_0',['QueueSize',['../d9/d8c/class_b_t_1_1_queue_size.html',1,'BT']]] +]; diff --git a/search/classes_11.js b/search/classes_11.js new file mode 100644 index 000000000..b5aa7ce20 --- /dev/null +++ b/search/classes_11.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['reactivefallback_0',['ReactiveFallback',['../dc/d04/class_b_t_1_1_reactive_fallback.html',1,'BT']]], + ['reactivesequence_1',['ReactiveSequence',['../de/d9f/class_b_t_1_1_reactive_sequence.html',1,'BT']]], + ['real_2',['Real',['../dc/d13/struct_b_t_1_1_grammar_1_1_real.html',1,'BT::Grammar']]], + ['repeatnode_3',['RepeatNode',['../d6/d78/class_b_t_1_1_repeat_node.html',1,'BT']]], + ['replyheader_4',['ReplyHeader',['../dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html',1,'BT::Monitor']]], + ['requestheader_5',['RequestHeader',['../dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html',1,'BT::Monitor']]], + ['retrynode_6',['RetryNode',['../dd/de4/class_b_t_1_1_retry_node.html',1,'BT']]], + ['retrynodetypo_7',['RetryNodeTypo',['../d1/def/class_b_t_1_1_retry_node_typo.html',1,'BT']]], + ['runoncenode_8',['RunOnceNode',['../dd/dbd/class_b_t_1_1_run_once_node.html',1,'BT']]], + ['runtimeerror_9',['RuntimeError',['../da/d35/class_b_t_1_1_runtime_error.html',1,'BT']]] +]; diff --git a/search/classes_12.js b/search/classes_12.js new file mode 100644 index 000000000..f3769bde6 --- /dev/null +++ b/search/classes_12.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['scoped_5fdemangled_5fname_0',['scoped_demangled_name',['../d3/d8c/class_b_t_1_1scoped__demangled__name.html',1,'BT']]], + ['scriptcondition_1',['ScriptCondition',['../da/d26/class_b_t_1_1_script_condition.html',1,'BT']]], + ['scriptnode_2',['ScriptNode',['../db/d0f/class_b_t_1_1_script_node.html',1,'BT']]], + ['semaphore_3',['Semaphore',['../d9/d24/class_b_t_1_1details_1_1_semaphore.html',1,'BT::details']]], + ['sequencenode_4',['SequenceNode',['../d9/ddd/class_b_t_1_1_sequence_node.html',1,'BT']]], + ['sequencewithmemory_5',['SequenceWithMemory',['../de/d69/class_b_t_1_1_sequence_with_memory.html',1,'BT']]], + ['setblackboardnode_6',['SetBlackboardNode',['../d7/d4f/class_b_t_1_1_set_blackboard_node.html',1,'BT']]], + ['sharedlibrary_7',['SharedLibrary',['../d2/ddd/class_b_t_1_1_shared_library.html',1,'BT']]], + ['signal_8',['Signal',['../d1/d73/class_b_t_1_1_signal.html',1,'BT']]], + ['simpleactionnode_9',['SimpleActionNode',['../d7/da7/class_b_t_1_1_simple_action_node.html',1,'BT']]], + ['simpleconditionnode_10',['SimpleConditionNode',['../dc/d49/class_b_t_1_1_simple_condition_node.html',1,'BT']]], + ['simpledecoratornode_11',['SimpleDecoratorNode',['../d3/d37/class_b_t_1_1_simple_decorator_node.html',1,'BT']]], + ['simplestring_12',['SimpleString',['../de/d34/class_safe_any_1_1_simple_string.html',1,'SafeAny']]], + ['sleepnode_13',['SleepNode',['../d9/d33/class_b_t_1_1_sleep_node.html',1,'BT']]], + ['sqlitelogger_14',['SqliteLogger',['../df/ddb/class_b_t_1_1_sqlite_logger.html',1,'BT']]], + ['stampedvalue_15',['StampedValue',['../d6/dfa/struct_b_t_1_1_stamped_value.html',1,'BT']]], + ['statefulactionnode_16',['StatefulActionNode',['../d0/d1f/class_b_t_1_1_stateful_action_node.html',1,'BT']]], + ['statuschangelogger_17',['StatusChangeLogger',['../d9/dbb/class_b_t_1_1_status_change_logger.html',1,'BT']]], + ['stdcoutlogger_18',['StdCoutLogger',['../d1/d52/class_b_t_1_1_std_cout_logger.html',1,'BT']]], + ['stmt_19',['stmt',['../d6/db1/struct_b_t_1_1_grammar_1_1stmt.html',1,'BT::Grammar']]], + ['string_5fconcat_20',['string_concat',['../de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html',1,'BT::Grammar::Expression']]], + ['stringliteral_21',['StringLiteral',['../df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html',1,'BT::Grammar']]], + ['subtree_22',['Subtree',['../d3/d23/struct_b_t_1_1_tree_1_1_subtree.html',1,'BT::Tree']]], + ['subtreenode_23',['SubTreeNode',['../df/d34/class_b_t_1_1_sub_tree_node.html',1,'BT']]], + ['switchnode_24',['SwitchNode',['../dc/dae/class_b_t_1_1_switch_node.html',1,'BT']]], + ['syncactionnode_25',['SyncActionNode',['../da/d73/class_b_t_1_1_sync_action_node.html',1,'BT']]] +]; diff --git a/search/classes_13.js b/search/classes_13.js new file mode 100644 index 000000000..bafdedd00 --- /dev/null +++ b/search/classes_13.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['testnode_0',['TestNode',['../d5/d7f/class_b_t_1_1_test_node.html',1,'BT']]], + ['testnodeconfig_1',['TestNodeConfig',['../d6/d58/struct_b_t_1_1_test_node_config.html',1,'BT']]], + ['threadedaction_2',['ThreadedAction',['../d2/d61/class_b_t_1_1_threaded_action.html',1,'BT']]], + ['timeoutnode_3',['TimeoutNode',['../d4/d20/class_b_t_1_1_timeout_node.html',1,'BT']]], + ['timerqueue_4',['TimerQueue',['../df/d4c/class_b_t_1_1_timer_queue.html',1,'BT']]], + ['timestamp_5',['Timestamp',['../d0/d59/struct_b_t_1_1_timestamp.html',1,'BT']]], + ['transition_6',['Transition',['../dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html',1,'BT::FileLogger2']]], + ['tree_7',['Tree',['../d1/d79/class_b_t_1_1_tree.html',1,'BT']]], + ['treenode_8',['TreeNode',['../da/d61/class_b_t_1_1_tree_node.html',1,'BT']]], + ['treenodemanifest_9',['TreeNodeManifest',['../dc/d6c/struct_b_t_1_1_tree_node_manifest.html',1,'BT']]], + ['treeobserver_10',['TreeObserver',['../d2/d2b/class_b_t_1_1_tree_observer.html',1,'BT']]], + ['true_11',['True',['../df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html',1,'BT::Grammar::BooleanLiteral']]], + ['typeinfo_12',['TypeInfo',['../d0/d34/class_b_t_1_1_type_info.html',1,'BT']]] +]; diff --git a/search/classes_14.js b/search/classes_14.js new file mode 100644 index 000000000..8b12cd272 --- /dev/null +++ b/search/classes_14.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unsetblackboardnode_0',['UnsetBlackboardNode',['../d1/d77/class_b_t_1_1_unset_blackboard_node.html',1,'BT']]] +]; diff --git a/search/classes_15.js b/search/classes_15.js new file mode 100644 index 000000000..93803af12 --- /dev/null +++ b/search/classes_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['wakeupsignal_0',['WakeUpSignal',['../da/d2f/class_b_t_1_1_wake_up_signal.html',1,'BT']]], + ['whiledoelsenode_1',['WhileDoElseNode',['../d7/d54/class_b_t_1_1_while_do_else_node.html',1,'BT']]] +]; diff --git a/search/classes_16.js b/search/classes_16.js new file mode 100644 index 000000000..f4f10da7c --- /dev/null +++ b/search/classes_16.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['xmlparser_0',['XMLParser',['../d8/d05/class_b_t_1_1_x_m_l_parser.html',1,'BT']]] +]; diff --git a/search/classes_2.js b/search/classes_2.js new file mode 100644 index 000000000..8b1ace7d1 --- /dev/null +++ b/search/classes_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['behaviortreeexception_0',['BehaviorTreeException',['../df/d93/class_b_t_1_1_behavior_tree_exception.html',1,'BT']]], + ['behaviortreefactory_1',['BehaviorTreeFactory',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html',1,'BT']]], + ['bit_5fand_2',['bit_and',['../d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html',1,'BT::Grammar::Expression']]], + ['bit_5for_3',['bit_or',['../da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html',1,'BT::Grammar::Expression']]], + ['bit_5fprefix_4',['bit_prefix',['../dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html',1,'BT::Grammar::Expression']]], + ['blackboard_5',['Blackboard',['../d0/d51/class_b_t_1_1_blackboard.html',1,'BT']]], + ['booleanliteral_6',['BooleanLiteral',['../d8/d7c/struct_b_t_1_1_grammar_1_1_boolean_literal.html',1,'BT::Grammar']]] +]; diff --git a/search/classes_3.js b/search/classes_3.js new file mode 100644 index 000000000..c871264b5 --- /dev/null +++ b/search/classes_3.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['comparison_0',['comparison',['../d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html',1,'BT::Grammar::Expression']]], + ['conditional_1',['conditional',['../d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html',1,'BT::Grammar::Expression']]], + ['conditionnode_2',['ConditionNode',['../dc/dfc/class_b_t_1_1_condition_node.html',1,'BT']]], + ['consumequeue_3',['ConsumeQueue',['../df/dc2/class_b_t_1_1_consume_queue.html',1,'BT']]], + ['controlnode_4',['ControlNode',['../d6/ddb/class_b_t_1_1_control_node.html',1,'BT']]], + ['coroactionnode_5',['CoroActionNode',['../d8/dd4/class_b_t_1_1_coro_action_node.html',1,'BT']]] +]; diff --git a/search/classes_4.js b/search/classes_4.js new file mode 100644 index 000000000..2ad7e58fd --- /dev/null +++ b/search/classes_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['decoratornode_0',['DecoratorNode',['../d1/de7/class_b_t_1_1_decorator_node.html',1,'BT']]], + ['delaynode_1',['DelayNode',['../d4/d56/class_b_t_1_1_delay_node.html',1,'BT']]] +]; diff --git a/search/classes_5.js b/search/classes_5.js new file mode 100644 index 000000000..5c616b5ca --- /dev/null +++ b/search/classes_5.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['entry_0',['Entry',['../d8/de8/struct_b_t_1_1_blackboard_1_1_entry.html',1,'BT::Blackboard']]], + ['entryupdatedaction_1',['EntryUpdatedAction',['../df/d9f/class_b_t_1_1_entry_updated_action.html',1,'BT']]], + ['entryupdateddecorator_2',['EntryUpdatedDecorator',['../d1/d7b/class_b_t_1_1_entry_updated_decorator.html',1,'BT']]], + ['environment_3',['Environment',['../d0/de8/struct_b_t_1_1_ast_1_1_environment.html',1,'BT::Ast']]], + ['expected_5foperand_4',['expected_operand',['../d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html',1,'BT::Grammar::Expression']]], + ['exprassignment_5',['ExprAssignment',['../db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html',1,'BT::Ast']]], + ['exprbase_6',['ExprBase',['../db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html',1,'BT::Ast']]], + ['exprbinaryarithmetic_7',['ExprBinaryArithmetic',['../da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html',1,'BT::Ast']]], + ['exprcomparison_8',['ExprComparison',['../d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html',1,'BT::Ast']]], + ['expression_9',['Expression',['../d7/d86/struct_b_t_1_1_grammar_1_1_expression.html',1,'BT::Grammar']]], + ['exprif_10',['ExprIf',['../db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html',1,'BT::Ast']]], + ['exprliteral_11',['ExprLiteral',['../dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html',1,'BT::Ast']]], + ['exprname_12',['ExprName',['../d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html',1,'BT::Ast']]], + ['exprunaryarithmetic_13',['ExprUnaryArithmetic',['../de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html',1,'BT::Ast']]] +]; diff --git a/search/classes_6.js b/search/classes_6.js new file mode 100644 index 000000000..cc887dc07 --- /dev/null +++ b/search/classes_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['fallbacknode_0',['FallbackNode',['../dc/da6/class_b_t_1_1_fallback_node.html',1,'BT']]], + ['false_1',['False',['../d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html',1,'BT::Grammar::BooleanLiteral']]], + ['filelogger2_2',['FileLogger2',['../d2/d7b/class_b_t_1_1_file_logger2.html',1,'BT']]], + ['forcefailurenode_3',['ForceFailureNode',['../d4/d8c/class_b_t_1_1_force_failure_node.html',1,'BT']]], + ['forcesuccessnode_4',['ForceSuccessNode',['../d7/db8/class_b_t_1_1_force_success_node.html',1,'BT']]] +]; diff --git a/search/classes_7.js b/search/classes_7.js new file mode 100644 index 000000000..02bb92caf --- /dev/null +++ b/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['groot2publisher_0',['Groot2Publisher',['../da/df5/class_b_t_1_1_groot2_publisher.html',1,'BT']]] +]; diff --git a/search/classes_8.js b/search/classes_8.js new file mode 100644 index 000000000..6ee91d5ea --- /dev/null +++ b/search/classes_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['has_5fstatic_5fmethod_5fmetadata_0',['has_static_method_metadata',['../d1/da6/struct_b_t_1_1has__static__method__metadata.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fmetadata_3c_20t_2c_20typename_20std_3a_3aenable_5fif_3c_20std_3a_3ais_5fsame_3c_20decltype_28t_3a_3ametadata_28_29_29_2c_20keyvaluevector_20_3e_3a_3avalue_20_3e_3a_3atype_20_3e_1',['has_static_method_metadata< T, typename std::enable_if< std::is_same< decltype(T::metadata()), KeyValueVector >::value >::type >',['../dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fprovidedports_2',['has_static_method_providedPorts',['../d0/d56/struct_b_t_1_1has__static__method__provided_ports.html',1,'BT']]], + ['has_5fstatic_5fmethod_5fprovidedports_3c_20t_2c_20typename_20std_3a_3aenable_5fif_3c_20std_3a_3ais_5fsame_3c_20decltype_28t_3a_3aprovidedports_28_29_29_2c_20portslist_20_3e_3a_3avalue_20_3e_3a_3atype_20_3e_3',['has_static_method_providedPorts< T, typename std::enable_if< std::is_same< decltype(T::providedPorts()), PortsList >::value >::type >',['../d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html',1,'BT']]], + ['hook_4',['Hook',['../dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html',1,'BT::Monitor']]] +]; diff --git a/search/classes_9.js b/search/classes_9.js new file mode 100644 index 000000000..0c6009486 --- /dev/null +++ b/search/classes_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ifthenelsenode_0',['IfThenElseNode',['../d8/d08/class_b_t_1_1_if_then_else_node.html',1,'BT']]], + ['integer_1',['Integer',['../dc/d75/struct_b_t_1_1_grammar_1_1_integer.html',1,'BT::Grammar']]], + ['integer_2',['integer',['../d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html',1,'BT::Grammar::Integer']]], + ['invalid_5fsuffix_3',['invalid_suffix',['../da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html',1,'BT::Grammar::Integer::invalid_suffix'],['../db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html',1,'BT::Grammar::Real::invalid_suffix']]], + ['inverternode_4',['InverterNode',['../d2/ded/class_b_t_1_1_inverter_node.html',1,'BT']]] +]; diff --git a/search/classes_a.js b/search/classes_a.js new file mode 100644 index 000000000..dd928126d --- /dev/null +++ b/search/classes_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['jsonexporter_0',['JsonExporter',['../d0/d64/class_b_t_1_1_json_exporter.html',1,'BT']]] +]; diff --git a/search/classes_b.js b/search/classes_b.js new file mode 100644 index 000000000..c2a1ec506 --- /dev/null +++ b/search/classes_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['keeprunninguntilfailurenode_0',['KeepRunningUntilFailureNode',['../de/d22/class_b_t_1_1_keep_running_until_failure_node.html',1,'BT']]] +]; diff --git a/search/classes_c.js b/search/classes_c.js new file mode 100644 index 000000000..e958d641a --- /dev/null +++ b/search/classes_c.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['leafnode_0',['LeafNode',['../d1/de2/class_b_t_1_1_leaf_node.html',1,'BT']]], + ['lockedptr_1',['LockedPtr',['../d4/d98/class_b_t_1_1_locked_ptr.html',1,'BT']]], + ['logical_2',['logical',['../de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html',1,'BT::Grammar::Expression']]], + ['logicerror_3',['LogicError',['../df/d4f/class_b_t_1_1_logic_error.html',1,'BT']]], + ['loopnode_4',['LoopNode',['../dd/d32/class_b_t_1_1_loop_node.html',1,'BT']]] +]; diff --git a/search/classes_d.js b/search/classes_d.js new file mode 100644 index 000000000..def46ec41 --- /dev/null +++ b/search/classes_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['manualselectornode_0',['ManualSelectorNode',['../dc/d0b/class_b_t_1_1_manual_selector_node.html',1,'BT']]], + ['math_5fprefix_1',['math_prefix',['../d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html',1,'BT::Grammar::Expression']]], + ['math_5fproduct_2',['math_product',['../df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html',1,'BT::Grammar::Expression']]], + ['math_5fsum_3',['math_sum',['../d2/d98/struct_b_t_1_1_grammar_1_1_expression_1_1math__sum.html',1,'BT::Grammar::Expression']]], + ['minitracelogger_4',['MinitraceLogger',['../de/d4f/class_b_t_1_1_minitrace_logger.html',1,'BT']]] +]; diff --git a/search/classes_e.js b/search/classes_e.js new file mode 100644 index 000000000..6638e45ae --- /dev/null +++ b/search/classes_e.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['name_0',['Name',['../d7/d91/struct_b_t_1_1_grammar_1_1_name.html',1,'BT::Grammar']]], + ['nested_5fexpr_1',['nested_expr',['../df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html',1,'BT::Grammar']]], + ['nodeconfig_2',['NodeConfig',['../dc/d26/struct_b_t_1_1_node_config.html',1,'BT']]], + ['nodestatistics_3',['NodeStatistics',['../d7/d9d/struct_b_t_1_1_tree_observer_1_1_node_statistics.html',1,'BT::TreeObserver']]] +]; diff --git a/search/classes_f.js b/search/classes_f.js new file mode 100644 index 000000000..de6037c05 --- /dev/null +++ b/search/classes_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['parallelallnode_0',['ParallelAllNode',['../d3/d02/class_b_t_1_1_parallel_all_node.html',1,'BT']]], + ['parallelnode_1',['ParallelNode',['../d1/dee/class_b_t_1_1_parallel_node.html',1,'BT']]], + ['parser_2',['Parser',['../de/da6/class_b_t_1_1_parser.html',1,'BT']]], + ['popfromqueue_3',['PopFromQueue',['../d7/d3a/class_b_t_1_1_pop_from_queue.html',1,'BT']]], + ['portinfo_4',['PortInfo',['../d8/d5e/class_b_t_1_1_port_info.html',1,'BT']]], + ['preconditionnode_5',['PreconditionNode',['../d7/dd5/class_b_t_1_1_precondition_node.html',1,'BT']]], + ['protectedqueue_6',['ProtectedQueue',['../d6/dee/struct_b_t_1_1_protected_queue.html',1,'BT']]] +]; diff --git a/search/close.svg b/search/close.svg new file mode 100644 index 000000000..a933eea1a --- /dev/null +++ b/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/search/enums_0.js b/search/enums_0.js new file mode 100644 index 000000000..87e189872 --- /dev/null +++ b/search/enums_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flags_0',['Flags',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cf',1,'BT::SharedLibrary']]] +]; diff --git a/search/enums_1.js b/search/enums_1.js new file mode 100644 index 000000000..509f8b915 --- /dev/null +++ b/search/enums_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nodestatus_0',['NodeStatus',['../d2/d8d/namespace_b_t.html#a1414a8362678cd4081eeb30b72845b4e',1,'BT']]], + ['nodetype_1',['NodeType',['../d2/d8d/namespace_b_t.html#a86a6454c13791311dface943d837363e',1,'BT']]] +]; diff --git a/search/enumvalues_0.js b/search/enumvalues_0.js new file mode 100644 index 000000000..e1707adc2 --- /dev/null +++ b/search/enumvalues_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['shlib_5fglobal_0',['SHLIB_GLOBAL',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5130e85a4b3e349814a493d8947a5c91',1,'BT::SharedLibrary']]], + ['shlib_5flocal_1',['SHLIB_LOCAL',['../d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5cc31a63af764ead3372762681b625f8',1,'BT::SharedLibrary']]] +]; diff --git a/search/functions_0.js b/search/functions_0.js new file mode 100644 index 000000000..623e0d7c0 --- /dev/null +++ b/search/functions_0.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['add_0',['add',['../df/d4c/class_b_t_1_1_timer_queue.html#a386ac8a89de8315a3f81cb5e88c30cac',1,'BT::TimerQueue']]], + ['addchild_1',['addChild',['../d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f',1,'BT::ControlNode']]], + ['addconverter_2',['addConverter',['../d0/d64/class_b_t_1_1_json_exporter.html#a984e954eb7bacad6d9a719d3b1eb8ec7',1,'BT::JsonExporter::addConverter()'],['../d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6',1,'BT::JsonExporter::addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)'],['../d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199',1,'BT::JsonExporter::addConverter(std::function< void(const nlohmann::json &, T &)> from_json)']]], + ['addmetadatatomanifest_3',['addMetadataToManifest',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aad83e88bb1ceb49194702d0be3849f70',1,'BT::BehaviorTreeFactory']]], + ['addsubstitutionrule_4',['addSubstitutionRule',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_1.js b/search/functions_1.js new file mode 100644 index 000000000..810e3f2d1 --- /dev/null +++ b/search/functions_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['bidirectionalport_0',['BidirectionalPort',['../d2/d8d/namespace_b_t.html#a13321f9dceb6909198966973042a13a1',1,'BT::BidirectionalPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#aa5246156c75012e4106eb05bc9c3cf47',1,'BT::BidirectionalPort(StringView name, const DefaultT &default_value, StringView description)']]], + ['blackboardbackup_1',['BlackboardBackup',['../d2/d8d/namespace_b_t.html#a39d3de37134ad6c26809809a99c85cd1',1,'BT']]], + ['blackboardclone_2',['BlackboardClone',['../d2/d8d/namespace_b_t.html#ae1c2a1676d84ad1a9b3a809c7c8e8fdb',1,'BT']]], + ['blackboardrestore_3',['BlackboardRestore',['../d2/d8d/namespace_b_t.html#a9fd0bac756271d4c997ed0a3d67067c1',1,'BT']]], + ['builders_4',['builders',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a92cac717f302a0a4b6edb006896d9aee',1,'BT::BehaviorTreeFactory']]], + ['buildserializedstatussnapshot_5',['buildSerializedStatusSnapshot',['../d2/d8d/namespace_b_t.html#aa260ec6d0ad8a20a2beff083a470d6ce',1,'BT']]], + ['builtinnodes_6',['builtinNodes',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a976ea06ba865588977ec9ab312f25bd0',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_10.js b/search/functions_10.js new file mode 100644 index 000000000..416fb8b99 --- /dev/null +++ b/search/functions_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['uid_0',['UID',['../da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36',1,'BT::TreeNode']]], + ['unload_1',['unload',['../d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011',1,'BT::SharedLibrary']]], + ['unregisterbuilder_2',['unregisterBuilder',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#af2c7e0e5cdad5a1816a7862a321767e3',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_11.js b/search/functions_11.js new file mode 100644 index 000000000..6fbb1321d --- /dev/null +++ b/search/functions_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['validatescript_0',['ValidateScript',['../d2/d8d/namespace_b_t.html#a28330518fc63ccc458b55303d05b18d1',1,'BT']]] +]; diff --git a/search/functions_12.js b/search/functions_12.js new file mode 100644 index 000000000..a7f1173fd --- /dev/null +++ b/search/functions_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['waitfor_0',['waitFor',['../da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff',1,'BT::WakeUpSignal']]], + ['waitvalidstatus_1',['waitValidStatus',['../da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6',1,'BT::TreeNode']]], + ['writetreenodesmodelxml_2',['writeTreeNodesModelXML',['../d2/d8d/namespace_b_t.html#a7f653b41d3df395036c6245ef3265424',1,'BT']]], + ['writetreetoxml_3',['WriteTreeToXML',['../d2/d8d/namespace_b_t.html#a4a84d486b78c9a316e997bd3cc799f75',1,'BT']]], + ['writetreexsd_4',['writeTreeXSD',['../d2/d8d/namespace_b_t.html#a415454b3b6fe0ce36db71ef677c13a4e',1,'BT']]] +]; diff --git a/search/functions_13.js b/search/functions_13.js new file mode 100644 index 000000000..f5b6101aa --- /dev/null +++ b/search/functions_13.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7esharedlibrary_0',['~SharedLibrary',['../d2/ddd/class_b_t_1_1_shared_library.html#aab93b1e125fbc01b896b4cf6ef019fcf',1,'BT::SharedLibrary']]] +]; diff --git a/search/functions_2.js b/search/functions_2.js new file mode 100644 index 000000000..8ae073871 --- /dev/null +++ b/search/functions_2.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['cancel_0',['cancel',['../df/d4c/class_b_t_1_1_timer_queue.html#a5564436f2a8e071bfdf59be5daea279a',1,'BT::TimerQueue']]], + ['cancelall_1',['cancelAll',['../df/d4c/class_b_t_1_1_timer_queue.html#a663265e8c343946094e5d16a1b59d483',1,'BT::TimerQueue']]], + ['clearregisteredbehaviortrees_2',['clearRegisteredBehaviorTrees',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a2b08c778188748bc26a2d44618b0125e',1,'BT::BehaviorTreeFactory']]], + ['cloneinto_3',['cloneInto',['../d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e',1,'BT::Blackboard']]], + ['config_4',['config',['../da/d61/class_b_t_1_1_tree_node.html#a7d17e161369b535793ed9c6cc0a6a0ac',1,'BT::TreeNode']]], + ['convertfromjson_5',['convertFromJSON',['../d2/d8d/namespace_b_t.html#a183200576f5fa139ae3359abbe8ef1c4',1,'BT::convertFromJSON(StringView json_text, std::type_index type)'],['../d2/d8d/namespace_b_t.html#a6f1eef4943ac07de099ec403979c488f',1,'BT::convertFromJSON(StringView str)']]], + ['convertfromstring_6',['convertFromString',['../d2/d8d/namespace_b_t.html#afaf200f50db2b15eea2e20e6a068a0d2',1,'BT']]], + ['create_7',['create',['../d0/d51/class_b_t_1_1_blackboard.html#ae997dc5aae731fd2724a018723c2317c',1,'BT::Blackboard']]], + ['createtreefromfile_8',['createTreeFromFile',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ad1f21dc9192e84ed014f871575575705',1,'BT::BehaviorTreeFactory']]], + ['createtreefromtext_9',['createTreeFromText',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_3.js b/search/functions_3.js new file mode 100644 index 000000000..ae30995fd --- /dev/null +++ b/search/functions_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['emitwakeupsignal_0',['emitWakeUpSignal',['../da/d61/class_b_t_1_1_tree_node.html#a05339c112add31fc3c592e3e0e5d5d4b',1,'BT::TreeNode']]], + ['enableexception_1',['EnableException',['../dc/d04/class_b_t_1_1_reactive_fallback.html#a86245f8ec23ec46db8c847a0931a49d0',1,'BT::ReactiveFallback::EnableException()'],['../de/d9f/class_b_t_1_1_reactive_sequence.html#a1f2a7c7127fb2e17124ee69abd87631b',1,'BT::ReactiveSequence::EnableException()']]], + ['executetick_2',['executeTick',['../da/d73/class_b_t_1_1_sync_action_node.html#a27f92ef5b12777c509e04bed372a9c5f',1,'BT::SyncActionNode::executeTick()'],['../d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1',1,'BT::ThreadedAction::executeTick()'],['../d8/dd4/class_b_t_1_1_coro_action_node.html#aaa803222d3da8331bec8d305d50235a3',1,'BT::CoroActionNode::executeTick()'],['../d1/de7/class_b_t_1_1_decorator_node.html#add55473b513501079f3064dcac8c8dfc',1,'BT::DecoratorNode::executeTick()'],['../da/d61/class_b_t_1_1_tree_node.html#a07d0876cfd608b690650e930d1a629cc',1,'BT::TreeNode::executeTick()']]], + ['exportblackboardtojson_3',['ExportBlackboardToJSON',['../d2/d8d/namespace_b_t.html#a9700fbeea6af84efe32e9f22bc45d8e2',1,'BT']]], + ['exporttreetojson_4',['ExportTreeToJSON',['../d2/d8d/namespace_b_t.html#a02848b586dc8265d5d51be939401626d',1,'BT']]] +]; diff --git a/search/functions_4.js b/search/functions_4.js new file mode 100644 index 000000000..fc09df962 --- /dev/null +++ b/search/functions_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['filelogger2_0',['FileLogger2',['../d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e',1,'BT::FileLogger2']]], + ['fromjson_1',['fromJson',['../d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c',1,'BT::JsonExporter::fromJson(const nlohmann::json &source) const'],['../d0/d64/class_b_t_1_1_json_exporter.html#a049aa9812d72bd8af80fe153c51d72fc',1,'BT::JsonExporter::fromJson(const nlohmann::json &source, std::type_index type) const']]], + ['fullpath_2',['fullPath',['../da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58',1,'BT::TreeNode']]] +]; diff --git a/search/functions_5.js b/search/functions_5.js new file mode 100644 index 000000000..d5b915202 --- /dev/null +++ b/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['get_0',['get',['../d0/d51/class_b_t_1_1_blackboard.html#ad536070fc0cc82a4fa1c53e3b2222e58',1,'BT::Blackboard::get(const std::string &key, T &value) const'],['../d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02',1,'BT::Blackboard::get(const std::string &key) const']]], + ['getinput_1',['getInput',['../da/d61/class_b_t_1_1_tree_node.html#ae921e5800a82b7591cb711c710d49725',1,'BT::TreeNode::getInput(const std::string &key, T &destination) const'],['../da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b',1,'BT::TreeNode::getInput(const std::string &key) const']]], + ['getinputstamped_2',['getInputStamped',['../da/d61/class_b_t_1_1_tree_node.html#a4fd8498410d2344cc9af272ea97dfd09',1,'BT::TreeNode::getInputStamped(const std::string &key, T &destination) const'],['../da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6',1,'BT::TreeNode::getInputStamped(const std::string &key) const']]], + ['getlockedportcontent_3',['getLockedPortContent',['../da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a',1,'BT::TreeNode']]], + ['getnodesbypath_4',['getNodesByPath',['../d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea',1,'BT::Tree']]], + ['getosname_5',['getOSName',['../d2/ddd/class_b_t_1_1_shared_library.html#ac7619be5a1a346ba88d257691e31913f',1,'BT::SharedLibrary']]], + ['getpath_6',['getPath',['../d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3',1,'BT::SharedLibrary']]], + ['getsymbol_7',['getSymbol',['../d2/ddd/class_b_t_1_1_shared_library.html#a5ab4789785c0f37caaf1955bab03b034',1,'BT::SharedLibrary']]], + ['gettype_8',['getType',['../d2/d8d/namespace_b_t.html#aa8bda3dd22bdb1c2aaa354a610e25ac9',1,'BT']]] +]; diff --git a/search/functions_6.js b/search/functions_6.js new file mode 100644 index 000000000..9b87c5b45 --- /dev/null +++ b/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['halt_0',['halt',['../d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a',1,'BT::ThreadedAction::halt()'],['../dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678',1,'BT::RetryNode::halt()'],['../d4/d56/class_b_t_1_1_delay_node.html#ac1442f8346a289ae98dd82be5e0c85a6',1,'BT::DelayNode::halt()'],['../d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d',1,'BT::DecoratorNode::halt()'],['../d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21',1,'BT::WhileDoElseNode::halt()'],['../dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb',1,'BT::SwitchNode::halt()'],['../de/d69/class_b_t_1_1_sequence_with_memory.html#a1337e21debce05cc2fc2fe4481663a22',1,'BT::SequenceWithMemory::halt()'],['../d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716',1,'BT::SequenceNode::halt()'],['../d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a',1,'BT::ParallelNode::halt()'],['../d3/d02/class_b_t_1_1_parallel_all_node.html#a8d277cfa32781567a3ef8b967ce28c70',1,'BT::ParallelAllNode::halt()'],['../dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf',1,'BT::ManualSelectorNode::halt()'],['../d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11',1,'BT::IfThenElseNode::halt()'],['../dc/da6/class_b_t_1_1_fallback_node.html#a254b111f7bde893dd711327f4879e290',1,'BT::FallbackNode::halt()'],['../d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3',1,'BT::ControlNode::halt()'],['../dc/dfc/class_b_t_1_1_condition_node.html#ad6dc34ea7ed32903800f9384416e1bac',1,'BT::ConditionNode::halt()'],['../d8/dd4/class_b_t_1_1_coro_action_node.html#a498c45c27df7032e8fb5a6b4f782ae51',1,'BT::CoroActionNode::halt()'],['../d0/d1f/class_b_t_1_1_stateful_action_node.html#a8206f68b132a2cf682e4189e19e65ba7',1,'BT::StatefulActionNode::halt()'],['../da/d73/class_b_t_1_1_sync_action_node.html#a20556b49ddc39c608018209643fc14d2',1,'BT::SyncActionNode::halt()']]], + ['haltchild_1',['haltChild',['../d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a',1,'BT::DecoratorNode']]], + ['haltchildren_2',['haltChildren',['../d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c',1,'BT::ControlNode']]], + ['hassymbol_3',['hasSymbol',['../d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a',1,'BT::SharedLibrary']]] +]; diff --git a/search/functions_7.js b/search/functions_7.js new file mode 100644 index 000000000..a8a311ebb --- /dev/null +++ b/search/functions_7.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['importblackboardfromjson_0',['ImportBlackboardFromJSON',['../d2/d8d/namespace_b_t.html#a93b8bbf4a1f09391295076701c1457e4',1,'BT']]], + ['importtreefromjson_1',['ImportTreeFromJSON',['../d2/d8d/namespace_b_t.html#a47af04695aeb786b3c2ec2267f5bf02b',1,'BT']]], + ['inputport_2',['InputPort',['../d2/d8d/namespace_b_t.html#a9d63b9f7eba8a9a98322107ef8e0ae3d',1,'BT::InputPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#a8794519d3bc2203f70a65b38f9e37a3c',1,'BT::InputPort(StringView name, const DefaultT &default_value, StringView description)']]], + ['instantiate_3',['Instantiate',['../da/d61/class_b_t_1_1_tree_node.html#a31eda57720de8dd6d97ab83d2956b0f0',1,'BT::TreeNode']]], + ['instantiatetreenode_4',['instantiateTreeNode',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622',1,'BT::BehaviorTreeFactory']]], + ['isblackboardpointer_5',['isBlackboardPointer',['../da/d61/class_b_t_1_1_tree_node.html#ab157589bcee1d9f8d6ae9fc6c8a0b41b',1,'BT::TreeNode']]], + ['isloaded_6',['isLoaded',['../d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763',1,'BT::SharedLibrary']]] +]; diff --git a/search/functions_8.js b/search/functions_8.js new file mode 100644 index 000000000..6631d2919 --- /dev/null +++ b/search/functions_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['load_0',['load',['../d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f',1,'BT::SharedLibrary']]], + ['loadsubstitutionrulefromjson_1',['loadSubstitutionRuleFromJSON',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a16d9ccac815fb2dd9c479829bab6d9e3',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_9.js b/search/functions_9.js new file mode 100644 index 000000000..0da77d593 --- /dev/null +++ b/search/functions_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['manifests_0',['manifests',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ab7ac27ba005c61dc52735bb7e2918bdd',1,'BT::BehaviorTreeFactory']]] +]; diff --git a/search/functions_a.js b/search/functions_a.js new file mode 100644 index 000000000..118ce63fd --- /dev/null +++ b/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['name_0',['name',['../da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c',1,'BT::TreeNode']]] +]; diff --git a/search/functions_b.js b/search/functions_b.js new file mode 100644 index 000000000..dde1dd984 --- /dev/null +++ b/search/functions_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['onhalted_0',['onHalted',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#aa7233f6c3a9854e0c626af687be0de4e',1,'BT::StatefulActionNode::onHalted()'],['../d9/d33/class_b_t_1_1_sleep_node.html#af323f98260e2854ff5beb56963df0652',1,'BT::SleepNode::onHalted()'],['../d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26',1,'BT::TestNode::onHalted()']]], + ['onrunning_1',['onRunning',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1',1,'BT::StatefulActionNode::onRunning()'],['../d9/d33/class_b_t_1_1_sleep_node.html#afe9eb80f065e48cb68b9c571b090939b',1,'BT::SleepNode::onRunning()'],['../d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d',1,'BT::TestNode::onRunning()']]], + ['onstart_2',['onStart',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#af8c33bb580fc1e14fa3b70da06020701',1,'BT::StatefulActionNode::onStart()'],['../d9/d33/class_b_t_1_1_sleep_node.html#abb3c35a140738ca2d43d1f5498972435',1,'BT::SleepNode::onStart()'],['../d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887',1,'BT::TestNode::onStart()']]], + ['outputport_3',['OutputPort',['../d2/d8d/namespace_b_t.html#a8ac171179c71fc0def23cf28e36b8ee2',1,'BT::OutputPort(StringView name, StringView description={})'],['../d2/d8d/namespace_b_t.html#a533a06e2f82bd5d915194dcb696f444c',1,'BT::OutputPort(StringView name, StringView default_value, StringView description)']]] +]; diff --git a/search/functions_c.js b/search/functions_c.js new file mode 100644 index 000000000..d41f35241 --- /dev/null +++ b/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['prefix_0',['prefix',['../d2/ddd/class_b_t_1_1_shared_library.html#ac1725ff13bf9a16b5271b3ecbf4d5bb7',1,'BT::SharedLibrary']]], + ['printtreerecursively_1',['printTreeRecursively',['../d2/d8d/namespace_b_t.html#a81fc68e6864ea125011a4ab64e9d6dc3',1,'BT']]] +]; diff --git a/search/functions_d.js b/search/functions_d.js new file mode 100644 index 000000000..bfafeacb4 --- /dev/null +++ b/search/functions_d.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['registerbehaviortreefromfile_0',['registerBehaviorTreeFromFile',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a8e3f4defda25caf72a368bb0868716df',1,'BT::BehaviorTreeFactory']]], + ['registerbehaviortreefromtext_1',['registerBehaviorTreeFromText',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6628bf3b28a82fe2b3562de6b01a42eb',1,'BT::BehaviorTreeFactory']]], + ['registerbuilder_2',['registerBuilder',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a12912a657b84952fb4df8ebd720c7ad2',1,'BT::BehaviorTreeFactory']]], + ['registeredbehaviortrees_3',['registeredBehaviorTrees',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a615a01e5e1651049e28340f2ed42381e',1,'BT::BehaviorTreeFactory']]], + ['registerfromplugin_4',['registerFromPlugin',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18',1,'BT::BehaviorTreeFactory']]], + ['registerfromrosplugins_5',['registerFromROSPlugins',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afd433de9fff5bd77eac748e3a657ca5c',1,'BT::BehaviorTreeFactory']]], + ['registernodetype_6',['registerNodeType',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#acfccfb4a4fe2d97133cb009d52692455',1,'BT::BehaviorTreeFactory::registerNodeType(const std::string &ID, const PortsList &ports, ExtraArgs... args)'],['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a24353332279b7df6a8fcb910ded5ffcb',1,'BT::BehaviorTreeFactory::registerNodeType(const std::string &ID, ExtraArgs... args)']]], + ['registerscriptingenum_7',['registerScriptingEnum',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6e7f7d722188a67a0950f5ff66295fc5',1,'BT::BehaviorTreeFactory']]], + ['registerscriptingenums_8',['registerScriptingEnums',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a803d02a0e90360ffd020808c937fcf4d',1,'BT::BehaviorTreeFactory']]], + ['registersimpleaction_9',['registerSimpleAction',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a751eb467f8f960eb75a5cf85bdfe4455',1,'BT::BehaviorTreeFactory']]], + ['registersimplecondition_10',['registerSimpleCondition',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd',1,'BT::BehaviorTreeFactory']]], + ['registersimpledecorator_11',['registerSimpleDecorator',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412',1,'BT::BehaviorTreeFactory']]], + ['registrationname_12',['registrationName',['../da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11',1,'BT::TreeNode']]], + ['resetchild_13',['resetChild',['../d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882',1,'BT::DecoratorNode']]], + ['resetchildren_14',['resetChildren',['../d6/ddb/class_b_t_1_1_control_node.html#a18ffb6a67c9a2bd663486b7b2b75edf3',1,'BT::ControlNode']]], + ['resetstatus_15',['resetStatus',['../da/d61/class_b_t_1_1_tree_node.html#a8874bae4b946a2ea6d1b3db1a696cf6a',1,'BT::TreeNode']]] +]; diff --git a/search/functions_e.js b/search/functions_e.js new file mode 100644 index 000000000..4953861e0 --- /dev/null +++ b/search/functions_e.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['serializetransition_0',['SerializeTransition',['../d2/d8d/namespace_b_t.html#a1e5dd1ca538e17930637816c78ccba5a',1,'BT']]], + ['set_1',['set',['../d0/d51/class_b_t_1_1_blackboard.html#a0733879e096350bf7f77d1fb583d325b',1,'BT::Blackboard']]], + ['setmaxheartbeatdelay_2',['setMaxHeartbeatDelay',['../da/df5/class_b_t_1_1_groot2_publisher.html#aa8266d54c77499c29fca5622941a5583',1,'BT::Groot2Publisher']]], + ['setoutput_3',['setOutput',['../da/d61/class_b_t_1_1_tree_node.html#a74618849a9199ab568eb451d580e20fc',1,'BT::TreeNode']]], + ['setposttickfunction_4',['setPostTickFunction',['../da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72',1,'BT::TreeNode']]], + ['setpretickfunction_5',['setPreTickFunction',['../da/d61/class_b_t_1_1_tree_node.html#aebc95976e7923c048021b553c56489b5',1,'BT::TreeNode']]], + ['setstatus_6',['setStatus',['../da/d61/class_b_t_1_1_tree_node.html#ab98b671336cdc496028b52112e21a0ed',1,'BT::TreeNode']]], + ['setstatusrunningandyield_7',['setStatusRunningAndYield',['../d8/dd4/class_b_t_1_1_coro_action_node.html#a3eb0ed03e4570009dcbae6fadd2c6886',1,'BT::CoroActionNode']]], + ['settickmonitorcallback_8',['setTickMonitorCallback',['../da/d61/class_b_t_1_1_tree_node.html#afd27f6b1a6b692b113eccc29957deb31',1,'BT::TreeNode']]], + ['sharedlibrary_9',['SharedLibrary',['../d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac',1,'BT::SharedLibrary::SharedLibrary()'],['../d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e',1,'BT::SharedLibrary::SharedLibrary(const std::string &path, int flags=0)']]], + ['sleep_10',['sleep',['../d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54',1,'BT::Tree']]], + ['sqlitelogger_11',['SqliteLogger',['../df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d',1,'BT::SqliteLogger']]], + ['subscribetostatuschange_12',['subscribeToStatusChange',['../da/d61/class_b_t_1_1_tree_node.html#afb4606479245153e183b0530e517b3cc',1,'BT::TreeNode']]], + ['substitutionrules_13',['substitutionRules',['../d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6ca87931a32b5b3cbd319ce49980e28f',1,'BT::BehaviorTreeFactory']]], + ['suffix_14',['suffix',['../d2/ddd/class_b_t_1_1_shared_library.html#a8844a78727a244644d79916c5005c54d',1,'BT::SharedLibrary']]] +]; diff --git a/search/functions_f.js b/search/functions_f.js new file mode 100644 index 000000000..6bb365569 --- /dev/null +++ b/search/functions_f.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['tick_0',['tick',['../d0/d1f/class_b_t_1_1_stateful_action_node.html#aea7bc4ed0e77fb4f78df00a00c3dcab9',1,'BT::StatefulActionNode::tick()'],['../da/d61/class_b_t_1_1_tree_node.html#a15ea206d20defd764035481ceda1de3e',1,'BT::TreeNode::tick()'],['../df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b',1,'BT::SubTreeNode::tick()'],['../dd/d32/class_b_t_1_1_loop_node.html#a0797d0b208dc24644a8d51cbc7606cd7',1,'BT::LoopNode::tick()'],['../df/dc2/class_b_t_1_1_consume_queue.html#ab19b8bfa150b60b6d9c726b96500cbd1',1,'BT::ConsumeQueue::tick()'],['../d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29',1,'BT::SimpleDecoratorNode::tick()'],['../dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad',1,'BT::SimpleConditionNode::tick()'],['../d9/d8c/class_b_t_1_1_queue_size.html#a51bfd9e2052697530afe7433b21da0fc',1,'BT::QueueSize::tick()'],['../d7/d3a/class_b_t_1_1_pop_from_queue.html#aceea54c073e940b1f2956783f86802b7',1,'BT::PopFromQueue::tick()'],['../d7/da7/class_b_t_1_1_simple_action_node.html#adde389e53daea5f861962918fdad825c',1,'BT::SimpleActionNode::tick()']]], + ['tickexactlyonce_1',['tickExactlyOnce',['../d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5',1,'BT::Tree']]], + ['tickonce_2',['tickOnce',['../d1/d79/class_b_t_1_1_tree.html#a39a85b09e4e7203ab586e8012f381d73',1,'BT::Tree']]], + ['tickwhilerunning_3',['tickWhileRunning',['../d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b',1,'BT::Tree']]], + ['tojson_4',['toJson',['../d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a',1,'BT::JsonExporter']]], + ['tostr_5',['toStr',['../d2/d8d/namespace_b_t.html#acdc7285d759ccee669271f9884941cf9',1,'BT::toStr(const T &value)'],['../d2/d8d/namespace_b_t.html#a59b08b9acce3233964741ac39102abda',1,'BT::toStr(BT::NodeStatus status, bool colored)']]], + ['treenode_6',['TreeNode',['../da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e',1,'BT::TreeNode']]] +]; diff --git a/search/mag.svg b/search/mag.svg new file mode 100644 index 000000000..9f46b301e --- /dev/null +++ b/search/mag.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_d.svg b/search/mag_d.svg new file mode 100644 index 000000000..b9a814c78 --- /dev/null +++ b/search/mag_d.svg @@ -0,0 +1,37 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/search/mag_sel.svg b/search/mag_sel.svg new file mode 100644 index 000000000..03626f64a --- /dev/null +++ b/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/mag_seld.svg b/search/mag_seld.svg new file mode 100644 index 000000000..6e720dcc9 --- /dev/null +++ b/search/mag_seld.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/search/namespaces_0.js b/search/namespaces_0.js new file mode 100644 index 000000000..aa28b8b93 --- /dev/null +++ b/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bt_0',['BT',['../d2/d8d/namespace_b_t.html',1,'']]], + ['details_1',['details',['../df/da8/namespace_b_t_1_1details.html',1,'BT']]] +]; diff --git a/search/search.css b/search/search.css new file mode 100644 index 000000000..19f76f9d5 --- /dev/null +++ b/search/search.css @@ -0,0 +1,291 @@ +/*---------------- Search Box positioning */ + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search box styling */ + +.SRPage * { + font-weight: normal; + line-height: normal; +} + +dark-mode-toggle { + margin-left: 5px; + display: flex; + float: right; +} + +#MSearchBox { + display: inline-block; + white-space : nowrap; + background: var(--search-background-color); + border-radius: 0.65em; + box-shadow: var(--search-box-shadow); + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + width: 20px; + height: 19px; + background-image: var(--search-magnification-select-image); + margin: 0 0 0 0.3em; + padding: 0; +} + +#MSearchSelectExt { + display: inline-block; + vertical-align: middle; + width: 10px; + height: 19px; + background-image: var(--search-magnification-image); + margin: 0 0 0 0.5em; + padding: 0; +} + + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 19px; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: var(--search-foreground-color); + outline: none; + font-family: var(--font-family-search); + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + +@media(hover: none) { + /* to avoid zooming on iOS */ + #MSearchField { + font-size: 16px; + } +} + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: var(--search-active-color); +} + + + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-filter-border-color); + background-color: var(--search-filter-background-color); + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt var(--font-family-search); + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: var(--font-family-monospace); + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: var(--search-filter-foreground-color); + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: var(--search-filter-foreground-color); + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: var(--search-filter-highlight-text-color); + background-color: var(--search-filter-highlight-bg-color); + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + /*width: 60ex;*/ + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid var(--search-results-border-color); + background-color: var(--search-results-background-color); + z-index:10000; + width: 300px; + height: 400px; + overflow: auto; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +div.SRPage { + margin: 5px 2px; + background-color: var(--search-results-background-color); +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: var(--search-results-foreground-color); + font-family: var(--font-family-search); + font-size: 8pt; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: var(--font-family-search); +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: var(--font-family-search); +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: var(--nav-gradient-active-image-parent); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/search/search.js b/search/search.js new file mode 100644 index 000000000..e103a2621 --- /dev/null +++ b/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var jsFile; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + jsFile = this.resultsPath + indexSectionNames[this.searchIndex] + '_' + hexCode + '.js'; + } + + var loadJS = function(url, impl, loc){ + var scriptTag = document.createElement('script'); + scriptTag.src = url; + scriptTag.onload = impl; + scriptTag.onreadystatechange = impl; + loc.appendChild(scriptTag); + } + + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + var domSearchBox = this.DOMSearchBox(); + var domPopupSearchResults = this.DOMPopupSearchResults(); + var domSearchClose = this.DOMSearchClose(); + var resultsPath = this.resultsPath; + + var handleResults = function() { + document.getElementById("Loading").style.display="none"; + if (typeof searchData !== 'undefined') { + createResults(resultsPath); + document.getElementById("NoMatches").style.display="none"; + } + + searchResults.Search(searchValue); + + if (domPopupSearchResultsWindow.style.display!='block') + { + domSearchClose.style.display = 'inline-block'; + var left = getXPos(domSearchBox) + 150; + var top = getYPos(domSearchBox) + 20; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + var maxWidth = document.body.clientWidth; + var maxHeight = document.body.clientHeight; + var width = 300; + if (left<10) left=10; + if (width+left+8>maxWidth) width=maxWidth-left-8; + var height = 400; + if (height+top+8>maxHeight) height=maxHeight-top-8; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResultsWindow.style.height = height + 'px'; + } + } + + if (jsFile) { + loadJS(jsFile, handleResults, this.DOMPopupSearchResultsWindow()); + } else { + handleResults(); + } + + this.lastSearchValue = searchValue; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + this.searchActive = true; + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + this.DOMSearchField().value = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + searchBox.CloseResultsWindow(); + document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults(resultsPath) +{ + var results = document.getElementById("SRResults"); + results.innerHTML = ''; + for (var e=0; e-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/splitbard.png b/splitbard.png new file mode 100644 index 0000000000000000000000000000000000000000..8367416d757fd7b6dc4272b6432dc75a75abd068 GIT binary patch literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@VhhFKy35^fiT zT~&lUj3=cDh^%3HDY9k5CEku}PHXNoNC(_$U3XPb&Q*ME25pT;2(*BOgAf<+R$lzakPG`kF31()Fx{L5Wrac|GQzjeE= zueY1`Ze{#x<8=S|`~MgGetGce)#vN&|J{Cd^tS%;tBYTo?+^d68<#n_Y_xx`J||4O V@QB{^CqU0Kc)I$ztaD0e0svEzbJzd? literal 0 HcmV?d00001 diff --git a/sync_off.png b/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/sync_on.png b/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/tab_a.png b/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/tab_ad.png b/tab_ad.png new file mode 100644 index 0000000000000000000000000000000000000000..e34850acfc24be58da6d2fd1ccc6b29cc84fe34d GIT binary patch literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QhuH;jv*C{Z|5d*H3V=pKi{In zd2jxLclDRPylmD}^l7{QOtL{vUjO{-WqItb5sQp2h-99b8^^Scr-=2mblCdZuUm?4 jzOJvgvt3{(cjKLW5(A@0qPS@<&}0TrS3j3^P6y&q2{!U5bk+Tso_B!YCpDh>v z{CM*1U8YvQRyBUHt^Ju0W_sq-?;9@_4equ-bavTs=gk796zopr0EBT&m;e9( literal 0 HcmV?d00001 diff --git a/tab_s.png b/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..ab478c95b67371d700a20869f7de1ddd73522d50 GIT binary patch literal 184 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QuUrLjv*C{Z|^p8HaRdjTwH7) zC?wLlL}}I{)n%R&r+1}IGmDnq;&J#%V6)9VsYhS`O^BVBQlxOUep0c$RENLq#g8A$ z)z7%K_bI&n@J+X_=x}fJoEKed-$<>=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/tab_sd.png b/tab_sd.png new file mode 100644 index 0000000000000000000000000000000000000000..757a565ced4730f85c833fb2547d8e199ae68f19 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Qq7(&jv*C{Z|_!fH5o7*c=%9% zcILh!EA=pAQKdx-Cdiev=v{eg{8Ht<{e8_NAN~b=)%W>-WDCE0PyDHGemi$BoXwcK z{>e9^za6*c1ilttWw&V+U;WCPlV9{LdC~Ey%_H(qj`xgfES(4Yz5jSTZfCt`4E$0YRsR*S^mTCR^;V&sxC8{l_Cp7w8-YPgg&ebxsLQ00$vXK>z>% literal 0 HcmV?d00001 diff --git a/tabs.css b/tabs.css new file mode 100644 index 000000000..71c8a4704 --- /dev/null +++ b/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.main-menu-btn{position:relative;display:inline-block;width:36px;height:36px;text-indent:36px;margin-left:8px;white-space:nowrap;overflow:hidden;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0)}.main-menu-btn-icon,.main-menu-btn-icon:before,.main-menu-btn-icon:after{position:absolute;top:50%;left:2px;height:2px;width:24px;background:var(--nav-menu-button-color);-webkit-transition:all .25s;transition:all .25s}.main-menu-btn-icon:before{content:'';top:-7px;left:0}.main-menu-btn-icon:after{content:'';top:7px;left:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon{height:0}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:before{top:0;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}#main-menu-state:checked ~ .main-menu-btn .main-menu-btn-icon:after{top:0;-webkit-transform:rotate(45deg);transform:rotate(45deg)}#main-menu-state{position:absolute;width:1px;height:1px;margin:-1px;border:0;padding:0;overflow:hidden;clip:rect(1px,1px,1px,1px)}#main-menu-state:not(:checked) ~ #main-menu{display:none}#main-menu-state:checked ~ #main-menu{display:block}@media(min-width:768px){.main-menu-btn{position:absolute;top:-99999px}#main-menu-state:not(:checked) ~ #main-menu{display:block}}.sm-dox{background-image:var(--nav-gradient-image)}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:var(--font-family-nav);font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:var(--nav-text-normal-shadow);color:var(--nav-text-normal-color);outline:0}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:var(--nav-menu-toggle-color);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a span.sub-arrow:before{display:block;content:'+'}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:var(--nav-menu-background-color)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:var(--nav-menu-background-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:var(--nav-gradient-image);line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:var(--nav-text-normal-color) transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:var(--nav-separator-image);background-repeat:no-repeat;background-position:right;-moz-border-radius:0 !important;-webkit-border-radius:0;border-radius:0 !important}.sm-dox a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox a:hover span.sub-arrow{border-color:var(--nav-text-hover-color) transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent var(--nav-menu-background-color) transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:var(--nav-menu-background-color);-moz-border-radius:5px !important;-webkit-border-radius:5px;border-radius:5px !important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent var(--nav-menu-foreground-color);border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:var(--nav-menu-foreground-color);background-image:none;border:0 !important;color:var(--nav-menu-foreground-color);background-image:none}.sm-dox ul a:hover{background-image:var(--nav-gradient-active-image);background-repeat:repeat-x;color:var(--nav-text-hover-color);text-shadow:var(--nav-text-hover-shadow)}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent var(--nav-text-hover-color)}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:var(--nav-menu-background-color);height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent var(--nav-menu-foreground-color) transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:var(--nav-menu-foreground-color) transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:var(--nav-gradient-image)}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:var(--nav-menu-background-color)}} \ No newline at end of file From df10c137f0abd8aea5677b6249f994a36c3b2b42 Mon Sep 17 00:00:00 2001 From: facontidavide Date: Thu, 29 May 2025 09:59:50 +0000 Subject: [PATCH 3/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@7ffab7e6c9f5efd832bcd0c346b82f393e63e?= =?UTF-8?q?6d5=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- d0/d64/class_b_t_1_1_json_exporter.html | 6 + d2/d39/json__export_8h_source.html | 428 +++++++++--------- .../class_b_t_1_1_json_exporter-members.html | 2 + 3 files changed, 224 insertions(+), 212 deletions(-) diff --git a/d0/d64/class_b_t_1_1_json_exporter.html b/d0/d64/class_b_t_1_1_json_exporter.html index adcf2ce59..a35886741 100644 --- a/d0/d64/class_b_t_1_1_json_exporter.html +++ b/d0/d64/class_b_t_1_1_json_exporter.html @@ -113,6 +113,12 @@ + + + + diff --git a/d2/d39/json__export_8h_source.html b/d2/d39/json__export_8h_source.html index 1a110a981..60894f185 100644 --- a/d2/d39/json__export_8h_source.html +++ b/d2/d39/json__export_8h_source.html @@ -146,226 +146,230 @@
    51public:
    52 static JsonExporter& get();
    53
    -
    54 /**
    -
    55 * @brief toJson adds the content of "any" to the JSON "destination".
    -
    56 *
    -
    57 * It will return false if the conversion toJson is not possible
    -
    58 * If it is a custom type, you might register it first with addConverter().
    -
    59 */
    -
    60 bool toJson(const BT::Any& any, nlohmann::json& destination) const;
    -
    61
    -
    62 /// This information is needed to create a BT::Blackboard::entry
    -
    63 using Entry = std::pair<BT::Any, BT::TypeInfo>;
    -
    64
    -
    65 using ExpectedEntry = nonstd::expected<Entry, std::string>;
    -
    66
    -
    67 /**
    -
    68 * @brief fromJson will return an Entry (value wrappedn in Any + TypeInfo)
    -
    69 * from a json source.
    -
    70 * If it is a custom type, you might register it first with addConverter().
    -
    71 * @param source
    -
    72 * @return
    -
    73 */
    -
    74 ExpectedEntry fromJson(const nlohmann::json& source) const;
    -
    75
    -
    76 /// Same as the other, but providing the specific type,
    -
    77 /// To be preferred if the JSON doesn't contain the field [__type]
    -
    78 ExpectedEntry fromJson(const nlohmann::json& source, std::type_index type) const;
    +
    54 // Delete copy constructors as can only be this one global instance.
    +
    55 JsonExporter& operator=(JsonExporter&&) = delete;
    +
    56 JsonExporter& operator=(JsonExporter&) = delete;
    +
    57
    +
    58 /**
    +
    59 * @brief toJson adds the content of "any" to the JSON "destination".
    +
    60 *
    +
    61 * It will return false if the conversion toJson is not possible
    +
    62 * If it is a custom type, you might register it first with addConverter().
    +
    63 */
    +
    64 bool toJson(const BT::Any& any, nlohmann::json& destination) const;
    +
    65
    +
    66 /// This information is needed to create a BT::Blackboard::entry
    +
    67 using Entry = std::pair<BT::Any, BT::TypeInfo>;
    +
    68
    +
    69 using ExpectedEntry = nonstd::expected<Entry, std::string>;
    +
    70
    +
    71 /**
    +
    72 * @brief fromJson will return an Entry (value wrappedn in Any + TypeInfo)
    +
    73 * from a json source.
    +
    74 * If it is a custom type, you might register it first with addConverter().
    +
    75 * @param source
    +
    76 * @return
    +
    77 */
    +
    78 ExpectedEntry fromJson(const nlohmann::json& source) const;
    79
    -
    80 template <typename T>
    -
    81 Expected<T> fromJson(const nlohmann::json& source) const;
    -
    82
    -
    83 /**
    -
    84 * @brief Register new JSON converters with addConverter<Foo>().
    -
    85 * You should used first the macro BT_JSON_CONVERTER.
    -
    86 * The convertions from/to vector<T> are automatically registered.
    -
    87 */
    -
    88 template <typename T>
    -
    89 void addConverter();
    -
    90
    -
    91 /**
    -
    92 * @brief addConverter register a to_json function that converts a json to a type T.
    -
    93 * The convertion to std:vector<T> is automatically registered.
    -
    94 *
    -
    95 * @param to_json the function with signature void(const T&, nlohmann::json&)
    -
    96 * @param add_type if true, add a field called [__type] with the name ofthe type.
    -
    97 */
    -
    98 template <typename T>
    -
    99 void addConverter(std::function<void(const T&, nlohmann::json&)> to_json,
    -
    100 bool add_type = true);
    -
    101
    -
    102 /**
    -
    103 * @brief addConverter register a from_json function that converts a json to a type T.
    -
    104 * The convertions from std::vector<T> is automatically registered.
    -
    105 *
    -
    106 * @param from_json the function with signature void(const nlohmann::json&, T&)
    -
    107 */
    -
    108 template <typename T>
    -
    109 void addConverter(std::function<void(const nlohmann::json&, T&)> from_json);
    -
    110
    -
    111private:
    -
    112 using ToJonConverter = std::function<void(const BT::Any&, nlohmann::json&)>;
    -
    113 using FromJonConverter = std::function<Entry(const nlohmann::json&)>;
    +
    80 /// Same as the other, but providing the specific type,
    +
    81 /// To be preferred if the JSON doesn't contain the field [__type]
    +
    82 ExpectedEntry fromJson(const nlohmann::json& source, std::type_index type) const;
    +
    83
    +
    84 template <typename T>
    +
    85 Expected<T> fromJson(const nlohmann::json& source) const;
    +
    86
    +
    87 /**
    +
    88 * @brief Register new JSON converters with addConverter<Foo>().
    +
    89 * You should used first the macro BT_JSON_CONVERTER.
    +
    90 * The convertions from/to vector<T> are automatically registered.
    +
    91 */
    +
    92 template <typename T>
    +
    93 void addConverter();
    +
    94
    +
    95 /**
    +
    96 * @brief addConverter register a to_json function that converts a json to a type T.
    +
    97 * The convertion to std:vector<T> is automatically registered.
    +
    98 *
    +
    99 * @param to_json the function with signature void(const T&, nlohmann::json&)
    +
    100 * @param add_type if true, add a field called [__type] with the name ofthe type.
    +
    101 */
    +
    102 template <typename T>
    +
    103 void addConverter(std::function<void(const T&, nlohmann::json&)> to_json,
    +
    104 bool add_type = true);
    +
    105
    +
    106 /**
    +
    107 * @brief addConverter register a from_json function that converts a json to a type T.
    +
    108 * The convertions from std::vector<T> is automatically registered.
    +
    109 *
    +
    110 * @param from_json the function with signature void(const nlohmann::json&, T&)
    +
    111 */
    +
    112 template <typename T>
    +
    113 void addConverter(std::function<void(const nlohmann::json&, T&)> from_json);
    114
    -
    115 std::unordered_map<std::type_index, ToJonConverter> to_json_converters_;
    -
    116 std::unordered_map<std::type_index, FromJonConverter> from_json_converters_;
    -
    117 std::unordered_map<std::type_index, FromJonConverter> from_json_array_converters_;
    -
    118 std::unordered_map<std::string, BT::TypeInfo> type_names_;
    -
    119};
    -
    120
    -
    121template <typename T>
    -
    122inline Expected<T> JsonExporter::fromJson(const nlohmann::json& source) const
    -
    123{
    -
    124 auto res = fromJson(source);
    -
    125 if(!res)
    -
    126 {
    -
    127 return nonstd::make_unexpected(res.error());
    -
    128 }
    -
    129 auto casted = res->first.tryCast<T>();
    -
    130 if(!casted)
    -
    131 {
    -
    132 return nonstd::make_unexpected(casted.error());
    -
    133 }
    -
    134 return *casted;
    -
    135}
    -
    136
    -
    137//-------------------------------------------------------------------
    -
    138
    -
    139template <typename T>
    -
    140inline void JsonExporter::addConverter()
    -
    141{
    -
    142 // we need to get the name of the type
    -
    143 nlohmann::json const js = T{};
    -
    144 // we insert both the name obtained from JSON and demangle
    -
    145 if(js.contains("__type"))
    -
    146 {
    -
    147 type_names_.insert({ std::string(js["__type"]), BT::TypeInfo::Create<T>() });
    -
    148 }
    -
    149 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
    -
    150
    -
    151 ToJonConverter to_converter = [](const BT::Any& entry, nlohmann::json& dst) {
    -
    152 dst = *const_cast<BT::Any&>(entry).castPtr<T>();
    -
    153 };
    -
    154 to_json_converters_.insert({ typeid(T), to_converter });
    -
    155
    -
    156 FromJonConverter from_converter = [](const nlohmann::json& src) -> Entry {
    -
    157 T value = src.get<T>();
    -
    158 return { BT::Any(value), BT::TypeInfo::Create<T>() };
    -
    159 };
    -
    160
    -
    161 from_json_converters_.insert({ typeid(T), from_converter });
    -
    162
    -
    163 //---- include vectors of T
    -
    164 ToJonConverter to_array_converter = [](const BT::Any& entry, nlohmann::json& dst) {
    -
    165 dst = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
    -
    166 };
    -
    167 to_json_converters_.insert({ typeid(std::vector<T>), to_array_converter });
    -
    168
    -
    169 FromJonConverter from_array_converter = [](const nlohmann::json& src) -> Entry {
    -
    170 std::vector<T> value;
    -
    171 for(const auto& item : src)
    -
    172 {
    -
    173 value.push_back(item.get<T>());
    -
    174 }
    -
    175 return { BT::Any(value), BT::TypeInfo::Create<std::vector<T>>() };
    -
    176 };
    -
    177 from_json_array_converters_.insert({ typeid(T), from_array_converter });
    -
    178}
    -
    179
    -
    180template <typename T>
    -
    181inline void JsonExporter::addConverter(
    -
    182 std::function<void(const T&, nlohmann::json&)> func, bool add_type)
    -
    183{
    -
    184 auto converter = [func, add_type](const BT::Any& entry, nlohmann::json& json) {
    -
    185 func(entry.cast<T>(), json);
    -
    186 if(add_type)
    -
    187 {
    -
    188 json["__type"] = BT::demangle(typeid(T));
    -
    189 }
    -
    190 };
    -
    191 to_json_converters_.insert({ typeid(T), std::move(converter) });
    -
    192 //---------------------------------------------
    -
    193 // add the vector<T> converter
    -
    194 auto vector_converter = [converter](const BT::Any& entry, nlohmann::json& json) {
    -
    195 auto& vec = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
    -
    196 for(const auto& item : vec)
    -
    197 {
    -
    198 nlohmann::json item_json;
    -
    199 converter(BT::Any(item), item_json);
    -
    200 json.push_back(item_json);
    -
    201 }
    -
    202 };
    -
    203 to_json_converters_.insert({ typeid(std::vector<T>), std::move(vector_converter) });
    -
    204}
    -
    205
    -
    206template <typename T>
    -
    207inline void
    -
    208JsonExporter::addConverter(std::function<void(const nlohmann::json&, T&)> func)
    -
    209{
    -
    210 auto converter = [func](const nlohmann::json& json) -> Entry {
    -
    211 T tmp;
    -
    212 func(json, tmp);
    -
    213 return { BT::Any(tmp), BT::TypeInfo::Create<T>() };
    -
    214 };
    -
    215 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
    -
    216 from_json_converters_.insert({ typeid(T), std::move(converter) });
    -
    217 //---------------------------------------------
    -
    218 // add the vector<T> converter
    -
    219 auto vector_converter = [func](const nlohmann::json& json) -> Entry {
    -
    220 std::vector<T> tmp;
    -
    221 for(const auto& item : json)
    -
    222 {
    -
    223 T item_tmp;
    -
    224 func(item, item_tmp);
    -
    225 tmp.push_back(item_tmp);
    -
    226 }
    -
    227 return { BT::Any(tmp), BT::TypeInfo::Create<std::vector<T>>() };
    -
    228 };
    -
    229 from_json_array_converters_.insert({ typeid(T), std::move(vector_converter) });
    -
    230}
    -
    231
    -
    232template <typename T>
    -
    233inline void RegisterJsonDefinition()
    -
    234{
    -
    235 JsonExporter::get().addConverter<T>();
    -
    236}
    -
    237
    -
    238} // namespace BT
    -
    239
    -
    240//------------------------------------------------
    -
    241//------------------------------------------------
    -
    242//------------------------------------------------
    +
    115private:
    +
    116 using ToJonConverter = std::function<void(const BT::Any&, nlohmann::json&)>;
    +
    117 using FromJonConverter = std::function<Entry(const nlohmann::json&)>;
    +
    118
    +
    119 std::unordered_map<std::type_index, ToJonConverter> to_json_converters_;
    +
    120 std::unordered_map<std::type_index, FromJonConverter> from_json_converters_;
    +
    121 std::unordered_map<std::type_index, FromJonConverter> from_json_array_converters_;
    +
    122 std::unordered_map<std::string, BT::TypeInfo> type_names_;
    +
    123};
    +
    124
    +
    125template <typename T>
    +
    126inline Expected<T> JsonExporter::fromJson(const nlohmann::json& source) const
    +
    127{
    +
    128 auto res = fromJson(source);
    +
    129 if(!res)
    +
    130 {
    +
    131 return nonstd::make_unexpected(res.error());
    +
    132 }
    +
    133 auto casted = res->first.tryCast<T>();
    +
    134 if(!casted)
    +
    135 {
    +
    136 return nonstd::make_unexpected(casted.error());
    +
    137 }
    +
    138 return *casted;
    +
    139}
    +
    140
    +
    141//-------------------------------------------------------------------
    +
    142
    +
    143template <typename T>
    +
    144inline void JsonExporter::addConverter()
    +
    145{
    +
    146 // we need to get the name of the type
    +
    147 nlohmann::json const js = T{};
    +
    148 // we insert both the name obtained from JSON and demangle
    +
    149 if(js.contains("__type"))
    +
    150 {
    +
    151 type_names_.insert({ std::string(js["__type"]), BT::TypeInfo::Create<T>() });
    +
    152 }
    +
    153 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
    +
    154
    +
    155 ToJonConverter to_converter = [](const BT::Any& entry, nlohmann::json& dst) {
    +
    156 dst = *const_cast<BT::Any&>(entry).castPtr<T>();
    +
    157 };
    +
    158 to_json_converters_.insert({ typeid(T), to_converter });
    +
    159
    +
    160 FromJonConverter from_converter = [](const nlohmann::json& src) -> Entry {
    +
    161 T value = src.get<T>();
    +
    162 return { BT::Any(value), BT::TypeInfo::Create<T>() };
    +
    163 };
    +
    164
    +
    165 from_json_converters_.insert({ typeid(T), from_converter });
    +
    166
    +
    167 //---- include vectors of T
    +
    168 ToJonConverter to_array_converter = [](const BT::Any& entry, nlohmann::json& dst) {
    +
    169 dst = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
    +
    170 };
    +
    171 to_json_converters_.insert({ typeid(std::vector<T>), to_array_converter });
    +
    172
    +
    173 FromJonConverter from_array_converter = [](const nlohmann::json& src) -> Entry {
    +
    174 std::vector<T> value;
    +
    175 for(const auto& item : src)
    +
    176 {
    +
    177 value.push_back(item.get<T>());
    +
    178 }
    +
    179 return { BT::Any(value), BT::TypeInfo::Create<std::vector<T>>() };
    +
    180 };
    +
    181 from_json_array_converters_.insert({ typeid(T), from_array_converter });
    +
    182}
    +
    183
    +
    184template <typename T>
    +
    185inline void JsonExporter::addConverter(
    +
    186 std::function<void(const T&, nlohmann::json&)> func, bool add_type)
    +
    187{
    +
    188 auto converter = [func, add_type](const BT::Any& entry, nlohmann::json& json) {
    +
    189 func(entry.cast<T>(), json);
    +
    190 if(add_type)
    +
    191 {
    +
    192 json["__type"] = BT::demangle(typeid(T));
    +
    193 }
    +
    194 };
    +
    195 to_json_converters_.insert({ typeid(T), std::move(converter) });
    +
    196 //---------------------------------------------
    +
    197 // add the vector<T> converter
    +
    198 auto vector_converter = [converter](const BT::Any& entry, nlohmann::json& json) {
    +
    199 auto& vec = *const_cast<BT::Any&>(entry).castPtr<std::vector<T>>();
    +
    200 for(const auto& item : vec)
    +
    201 {
    +
    202 nlohmann::json item_json;
    +
    203 converter(BT::Any(item), item_json);
    +
    204 json.push_back(item_json);
    +
    205 }
    +
    206 };
    +
    207 to_json_converters_.insert({ typeid(std::vector<T>), std::move(vector_converter) });
    +
    208}
    +
    209
    +
    210template <typename T>
    +
    211inline void
    +
    212JsonExporter::addConverter(std::function<void(const nlohmann::json&, T&)> func)
    +
    213{
    +
    214 auto converter = [func](const nlohmann::json& json) -> Entry {
    +
    215 T tmp;
    +
    216 func(json, tmp);
    +
    217 return { BT::Any(tmp), BT::TypeInfo::Create<T>() };
    +
    218 };
    +
    219 type_names_.insert({ BT::demangle(typeid(T)), BT::TypeInfo::Create<T>() });
    +
    220 from_json_converters_.insert({ typeid(T), std::move(converter) });
    +
    221 //---------------------------------------------
    +
    222 // add the vector<T> converter
    +
    223 auto vector_converter = [func](const nlohmann::json& json) -> Entry {
    +
    224 std::vector<T> tmp;
    +
    225 for(const auto& item : json)
    +
    226 {
    +
    227 T item_tmp;
    +
    228 func(item, item_tmp);
    +
    229 tmp.push_back(item_tmp);
    +
    230 }
    +
    231 return { BT::Any(tmp), BT::TypeInfo::Create<std::vector<T>>() };
    +
    232 };
    +
    233 from_json_array_converters_.insert({ typeid(T), std::move(vector_converter) });
    +
    234}
    +
    235
    +
    236template <typename T>
    +
    237inline void RegisterJsonDefinition()
    +
    238{
    +
    239 JsonExporter::get().addConverter<T>();
    +
    240}
    +
    241
    +
    242} // namespace BT
    243
    -
    244// Macro to implement to_json() and from_json()
    -
    245
    -
    246#define BT_JSON_CONVERTER(Type, value)
    -
    247 template <class AddField>
    -
    248 void _JsonTypeDefinition(Type&, AddField&);
    +
    244//------------------------------------------------
    +
    245//------------------------------------------------
    +
    246//------------------------------------------------
    +
    247
    +
    248// Macro to implement to_json() and from_json()
    249
    -
    250 inline void to_json(nlohmann::json& js, const Type& p)
    -
    251 {
    -
    252 auto op = [&js](const char* name, auto* val) { js[name] = *val; };
    -
    253 _JsonTypeDefinition(const_cast<Type&>(p), op);
    -
    254 js["__type"] = #Type;
    -
    255 }
    -
    256
    -
    257 inline void from_json(const nlohmann::json& js, Type& p)
    -
    258 {
    -
    259 auto op = [&js](const char* name, auto* v) { js.at(name).get_to(*v); };
    -
    260 _JsonTypeDefinition(p, op);
    -
    261 }
    -
    262
    -
    263 template <class AddField>
    -
    264 inline void _JsonTypeDefinition(Type& value, AddField& add_field)
    -
    265
    -
    266//end of file
    +
    250#define BT_JSON_CONVERTER(Type, value)
    +
    251 template <class AddField>
    +
    252 void _JsonTypeDefinition(Type&, AddField&);
    +
    253
    +
    254 inline void to_json(nlohmann::json& js, const Type& p)
    +
    255 {
    +
    256 auto op = [&js](const char* name, auto* val) { js[name] = *val; };
    +
    257 _JsonTypeDefinition(const_cast<Type&>(p), op);
    +
    258 js["__type"] = #Type;
    +
    259 }
    +
    260
    +
    261 inline void from_json(const nlohmann::json& js, Type& p)
    +
    262 {
    +
    263 auto op = [&js](const char* name, auto* v) { js.at(name).get_to(*v); };
    +
    264 _JsonTypeDefinition(p, op);
    +
    265 }
    +
    266
    +
    267 template <class AddField>
    +
    268 inline void _JsonTypeDefinition(Type& value, AddField& add_field)
    +
    269
    +
    270//end of file
    Definition: safe_any.hpp:37
    Definition: json_export.h:50
    ExpectedEntry fromJson(const nlohmann::json &source, std::type_index type) const
    -
    void addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
    addConverter register a to_json function that converts a json to a type T. The convertion to std:vect...
    Definition: json_export.h:181
    -
    void addConverter(std::function< void(const nlohmann::json &, T &)> from_json)
    addConverter register a from_json function that converts a json to a type T. The convertions from std...
    Definition: json_export.h:208
    +
    void addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
    addConverter register a to_json function that converts a json to a type T. The convertion to std:vect...
    Definition: json_export.h:185
    +
    void addConverter(std::function< void(const nlohmann::json &, T &)> from_json)
    addConverter register a from_json function that converts a json to a type T. The convertions from std...
    Definition: json_export.h:212
    bool toJson(const BT::Any &any, nlohmann::json &destination) const
    toJson adds the content of "any" to the JSON "destination".
    -
    void addConverter()
    Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVER...
    Definition: json_export.h:140
    +
    void addConverter()
    Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVER...
    Definition: json_export.h:144
    ExpectedEntry fromJson(const nlohmann::json &source) const
    fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source....
    Definition: basic_types.h:348
    Definition: action_node.h:25
    diff --git a/d9/da8/class_b_t_1_1_json_exporter-members.html b/d9/da8/class_b_t_1_1_json_exporter-members.html index 7819a0dd4..ce329a250 100644 --- a/d9/da8/class_b_t_1_1_json_exporter-members.html +++ b/d9/da8/class_b_t_1_1_json_exporter-members.html @@ -105,6 +105,8 @@ + +

    Public Member Functions

    +JsonExporteroperator= (JsonExporter &&)=delete
     
    +JsonExporteroperator= (JsonExporter &)=delete
     
    bool toJson (const BT::Any &any, nlohmann::json &destination) const
     toJson adds the content of "any" to the JSON "destination".
     
    fromJson(const nlohmann::json &source, std::type_index type) constBT::JsonExporter
    fromJson(const nlohmann::json &source) const (defined in BT::JsonExporter)BT::JsonExporterinline
    get() (defined in BT::JsonExporter)BT::JsonExporterstatic
    operator=(JsonExporter &&)=delete (defined in BT::JsonExporter)BT::JsonExporter
    operator=(JsonExporter &)=delete (defined in BT::JsonExporter)BT::JsonExporter
    toJson(const BT::Any &any, nlohmann::json &destination) constBT::JsonExporter
  • From a465d1e1854e044d54d5f211b5a1744b272e084a Mon Sep 17 00:00:00 2001 From: facontidavide Date: Thu, 29 May 2025 10:05:32 +0000 Subject: [PATCH 4/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@c4b93cfda6a18a4a462d50c9d95e67489118b?= =?UTF-8?q?b5c=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- d0/d1f/class_b_t_1_1_stateful_action_node.html | 2 +- d0/d64/class_b_t_1_1_json_exporter.html | 12 ++++++------ d0/d9c/class_b_t_1_1_always_failure_node.html | 2 +- d1/d77/class_b_t_1_1_unset_blackboard_node.html | 2 +- d1/d7b/class_b_t_1_1_entry_updated_decorator.html | 2 +- d1/da6/tree__node_8h_source.html | 10 +++++----- d1/de2/class_b_t_1_1_leaf_node.html | 2 +- d1/de7/class_b_t_1_1_decorator_node.html | 2 +- d1/dee/class_b_t_1_1_parallel_node.html | 2 +- d1/def/class_b_t_1_1_retry_node_typo.html | 2 +- d2/d39/json__export_8h_source.html | 12 ++++++------ d2/d61/class_b_t_1_1_threaded_action.html | 6 +++--- d2/d8d/namespace_b_t.html | 6 +++--- d2/ded/class_b_t_1_1_inverter_node.html | 2 +- d3/d02/class_b_t_1_1_parallel_all_node.html | 2 +- d3/d37/class_b_t_1_1_simple_decorator_node.html | 2 +- d3/de2/class_b_t_1_1_action_node_base.html | 2 +- d4/d20/class_b_t_1_1_timeout_node.html | 2 +- d4/d53/safe__any_8hpp_source.html | 2 +- d4/d56/class_b_t_1_1_delay_node.html | 2 +- d4/d8c/class_b_t_1_1_force_failure_node.html | 2 +- d5/d7a/bt__flatbuffer__helper_8h_source.html | 2 +- d5/d7f/class_b_t_1_1_test_node.html | 4 ++-- d6/d78/class_b_t_1_1_repeat_node.html | 2 +- d6/dae/run__once__node_8h_source.html | 2 +- d6/dcc/test__node_8h_source.html | 2 +- d6/dcd/class_b_t_1_1_behavior_tree_factory.html | 4 ++-- d6/ddb/class_b_t_1_1_control_node.html | 2 +- d7/d3a/class_b_t_1_1_pop_from_queue.html | 2 +- d7/d4f/class_b_t_1_1_set_blackboard_node.html | 2 +- d7/d54/class_b_t_1_1_while_do_else_node.html | 2 +- d7/d68/action__node_8h_source.html | 4 ++-- d7/da7/class_b_t_1_1_simple_action_node.html | 2 +- d7/db8/class_b_t_1_1_force_success_node.html | 2 +- d7/dd5/class_b_t_1_1_precondition_node.html | 2 +- d8/d08/class_b_t_1_1_if_then_else_node.html | 2 +- d8/dd4/class_b_t_1_1_coro_action_node.html | 2 +- d9/d33/class_b_t_1_1_sleep_node.html | 2 +- d9/d8c/class_b_t_1_1_queue_size.html | 4 ++-- d9/ddd/class_b_t_1_1_sequence_node.html | 2 +- da/d26/class_b_t_1_1_script_condition.html | 2 +- da/d61/class_b_t_1_1_tree_node.html | 8 ++++---- da/d65/set__blackboard__node_8h_source.html | 2 +- da/d73/class_b_t_1_1_sync_action_node.html | 2 +- db/d0f/class_b_t_1_1_script_node.html | 2 +- db/d81/bt__factory_8h_source.html | 4 ++-- db/d84/pop__from__queue_8hpp_source.html | 6 +++--- dc/d04/class_b_t_1_1_reactive_fallback.html | 2 +- dc/d0b/class_b_t_1_1_manual_selector_node.html | 2 +- dc/d49/class_b_t_1_1_simple_condition_node.html | 2 +- dc/da6/class_b_t_1_1_fallback_node.html | 2 +- dc/dae/class_b_t_1_1_switch_node.html | 2 +- dc/dfc/class_b_t_1_1_condition_node.html | 2 +- dd/d32/class_b_t_1_1_loop_node.html | 2 +- dd/dbd/class_b_t_1_1_run_once_node.html | 2 +- dd/dcd/operators_8hpp_source.html | 2 +- dd/dce/class_b_t_1_1_always_success_node.html | 2 +- dd/de4/class_b_t_1_1_retry_node.html | 2 +- ...lass_b_t_1_1_keep_running_until_failure_node.html | 2 +- de/d69/class_b_t_1_1_sequence_with_memory.html | 2 +- de/d79/groot2__protocol_8h_source.html | 6 +++--- de/d9f/class_b_t_1_1_reactive_sequence.html | 2 +- df/d34/class_b_t_1_1_sub_tree_node.html | 2 +- df/d9f/class_b_t_1_1_entry_updated_action.html | 2 +- df/dc2/class_b_t_1_1_consume_queue.html | 2 +- 65 files changed, 95 insertions(+), 95 deletions(-) diff --git a/d0/d1f/class_b_t_1_1_stateful_action_node.html b/d0/d1f/class_b_t_1_1_stateful_action_node.html index c62b82451..169754b23 100644 --- a/d0/d1f/class_b_t_1_1_stateful_action_node.html +++ b/d0/d1f/class_b_t_1_1_stateful_action_node.html @@ -213,7 +213,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d0/d64/class_b_t_1_1_json_exporter.html b/d0/d64/class_b_t_1_1_json_exporter.html index a35886741..e49799200 100644 --- a/d0/d64/class_b_t_1_1_json_exporter.html +++ b/d0/d64/class_b_t_1_1_json_exporter.html @@ -134,15 +134,15 @@ template<typename T > void addConverter () - Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVERTER. The convertions from/to vector<T> are automatically registered.
    + Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVERTER. The conversions from/to vector<T> are automatically registered.
      template<typename T > void addConverter (std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true) - addConverter register a to_json function that converts a json to a type T. The convertion to std:vector<T> is automatically registered.
    + addConverter register a to_json function that converts a json to a type T. The conversion to std:vector<T> is automatically registered.
      template<typename T > void addConverter (std::function< void(const nlohmann::json &, T &)> from_json) - addConverter register a from_json function that converts a json to a type T. The convertions from std::vector<T> is automatically registered.
    + addConverter register a from_json function that converts a json to a type T. The conversions from std::vector<T> is automatically registered.
      - + diff --git a/d1/d77/class_b_t_1_1_unset_blackboard_node.html b/d1/d77/class_b_t_1_1_unset_blackboard_node.html index 283ddbb0c..91e8fd815 100644 --- a/d1/d77/class_b_t_1_1_unset_blackboard_node.html +++ b/d1/d77/class_b_t_1_1_unset_blackboard_node.html @@ -210,7 +210,7 @@ - + diff --git a/d1/d7b/class_b_t_1_1_entry_updated_decorator.html b/d1/d7b/class_b_t_1_1_entry_updated_decorator.html index a1fab3d1b..9179980ac 100644 --- a/d1/d7b/class_b_t_1_1_entry_updated_decorator.html +++ b/d1/d7b/class_b_t_1_1_entry_updated_decorator.html @@ -216,7 +216,7 @@ - + diff --git a/d1/da6/tree__node_8h_source.html b/d1/da6/tree__node_8h_source.html index cd6f45215..258519086 100644 --- a/d1/da6/tree__node_8h_source.html +++ b/d1/da6/tree__node_8h_source.html @@ -194,7 +194,7 @@
    99
    100 const TreeNodeManifest* manifest = nullptr;
    101
    -
    102 // Numberic unique identifier
    +
    102 // Numeric unique identifier
    103 uint16_t uid = 0;
    104 // Unique human-readable name, that encapsulate the subtree
    105 // hierarchy, for instance, given 2 nested trees, it should be:
    @@ -304,7 +304,7 @@
    209 * NodeStatus myCallback(TreeNode& node, NodeStatus status)
    210 *
    211 * This callback is executed AFTER the tick() and, if it returns SUCCESS or FAILURE,
    -
    212 * the value returned by the actual tick() is overriden with this one.
    +
    212 * the value returned by the actual tick() is overridden with this one.
    213 */
    214 void setPostTickFunction(PostTickCallback callback);
    215
    @@ -346,7 +346,7 @@
    251
    252 /**
    253 * @brief getInputStamped is similar to getInput(dey, destination),
    -
    254 * but it returne also the Timestamp object, that can be used to check if
    +
    254 * but it returns also the Timestamp object, that can be used to check if
    255 * a value was updated and when.
    256 *
    257 * @param key the name of the port.
    @@ -393,7 +393,7 @@
    298 * @brief setOutput modifies the content of an Output port
    299 * @param key the name of the port.
    300 * @param value new value
    -
    301 * @return valid Result, if succesful.
    +
    301 * @return valid Result, if successful.
    302 */
    303 template <typename T>
    304 Result setOutput(const std::string& key, const T& value);
    @@ -741,7 +741,7 @@
    virtual BT::NodeStatus tick()=0
    Method to be implemented by the user.
    const std::string & registrationName() const
    registrationName is the ID used by BehaviorTreeFactory to create an instance.
    static std::unique_ptr< TreeNode > Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)
    Definition: tree_node.h:360
    -
    Expected< Timestamp > getInputStamped(const std::string &key, T &destination) const
    getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object,...
    Definition: tree_node.h:451
    +
    Expected< Timestamp > getInputStamped(const std::string &key, T &destination) const
    getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object,...
    Definition: tree_node.h:451
    Result setOutput(const std::string &key, const T &value)
    setOutput modifies the content of an Output port
    Definition: tree_node.h:571
    const NodeConfig & config() const
    void resetStatus()
    Set the status to IDLE.
    diff --git a/d1/de2/class_b_t_1_1_leaf_node.html b/d1/de2/class_b_t_1_1_leaf_node.html index 9bf06c12f..47ef26d3c 100644 --- a/d1/de2/class_b_t_1_1_leaf_node.html +++ b/d1/de2/class_b_t_1_1_leaf_node.html @@ -200,7 +200,7 @@ - + diff --git a/d1/de7/class_b_t_1_1_decorator_node.html b/d1/de7/class_b_t_1_1_decorator_node.html index 0af17b817..a57e40142 100644 --- a/d1/de7/class_b_t_1_1_decorator_node.html +++ b/d1/de7/class_b_t_1_1_decorator_node.html @@ -221,7 +221,7 @@ - + diff --git a/d1/dee/class_b_t_1_1_parallel_node.html b/d1/dee/class_b_t_1_1_parallel_node.html index 6723f599a..94703ce00 100644 --- a/d1/dee/class_b_t_1_1_parallel_node.html +++ b/d1/dee/class_b_t_1_1_parallel_node.html @@ -240,7 +240,7 @@ - + diff --git a/d1/def/class_b_t_1_1_retry_node_typo.html b/d1/def/class_b_t_1_1_retry_node_typo.html index 5d3297126..5c31fddb3 100644 --- a/d1/def/class_b_t_1_1_retry_node_typo.html +++ b/d1/def/class_b_t_1_1_retry_node_typo.html @@ -225,7 +225,7 @@ - + diff --git a/d2/d39/json__export_8h_source.html b/d2/d39/json__export_8h_source.html index 60894f185..47bfc6a5b 100644 --- a/d2/d39/json__export_8h_source.html +++ b/d2/d39/json__export_8h_source.html @@ -182,17 +182,17 @@
    87 /**
    88 * @brief Register new JSON converters with addConverter<Foo>().
    89 * You should used first the macro BT_JSON_CONVERTER.
    -
    90 * The convertions from/to vector<T> are automatically registered.
    +
    90 * The conversions from/to vector<T> are automatically registered.
    91 */
    92 template <typename T>
    93 void addConverter();
    94
    95 /**
    96 * @brief addConverter register a to_json function that converts a json to a type T.
    -
    97 * The convertion to std:vector<T> is automatically registered.
    +
    97 * The conversion to std:vector<T> is automatically registered.
    98 *
    99 * @param to_json the function with signature void(const T&, nlohmann::json&)
    -
    100 * @param add_type if true, add a field called [__type] with the name ofthe type.
    +
    100 * @param add_type if true, add a field called [__type] with the name of the type.
    101 */
    102 template <typename T>
    103 void addConverter(std::function<void(const T&, nlohmann::json&)> to_json,
    @@ -200,7 +200,7 @@
    105
    106 /**
    107 * @brief addConverter register a from_json function that converts a json to a type T.
    -
    108 * The convertions from std::vector<T> is automatically registered.
    +
    108 * The conversions from std::vector<T> is automatically registered.
    109 *
    110 * @param from_json the function with signature void(const nlohmann::json&, T&)
    111 */
    @@ -366,8 +366,8 @@
    Definition: safe_any.hpp:37
    Definition: json_export.h:50
    ExpectedEntry fromJson(const nlohmann::json &source, std::type_index type) const
    -
    void addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
    addConverter register a to_json function that converts a json to a type T. The convertion to std:vect...
    Definition: json_export.h:185
    -
    void addConverter(std::function< void(const nlohmann::json &, T &)> from_json)
    addConverter register a from_json function that converts a json to a type T. The convertions from std...
    Definition: json_export.h:212
    +
    void addConverter(std::function< void(const T &, nlohmann::json &)> to_json, bool add_type=true)
    addConverter register a to_json function that converts a json to a type T. The conversion to std:vect...
    Definition: json_export.h:185
    +
    void addConverter(std::function< void(const nlohmann::json &, T &)> from_json)
    addConverter register a from_json function that converts a json to a type T. The conversions from std...
    Definition: json_export.h:212
    bool toJson(const BT::Any &any, nlohmann::json &destination) const
    toJson adds the content of "any" to the JSON "destination".
    void addConverter()
    Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVER...
    Definition: json_export.h:144
    ExpectedEntry fromJson(const nlohmann::json &source) const
    fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source....
    diff --git a/d2/d61/class_b_t_1_1_threaded_action.html b/d2/d61/class_b_t_1_1_threaded_action.html index 03eb04288..0ef25dd86 100644 --- a/d2/d61/class_b_t_1_1_threaded_action.html +++ b/d2/d61/class_b_t_1_1_threaded_action.html @@ -208,7 +208,7 @@ - + @@ -318,8 +318,8 @@

    The ThreadedAction executes the tick in a different thread.

    IMPORTANT: this action is quite hard to implement correctly. Please make sure that you know what you are doing.

      -
    • In your overriden tick() method, you must check periodically the result of the method isHaltRequested() and stop your execution accordingly.
    • -
    • in the overriden halt() method, you can do some cleanup, but do not forget to invoke the base class method ThreadedAction::halt();
    • +
    • In your overridden tick() method, you must check periodically the result of the method isHaltRequested() and stop your execution accordingly.
    • +
    • in the overridden halt() method, you can do some cleanup, but do not forget to invoke the base class method ThreadedAction::halt();
    • remember, with few exceptions, a halted ThreadedAction must return NodeStatus::IDLE.

    For a complete example, look at AsyncActionTest in action_test_node.h in the folder test.

    diff --git a/d2/d8d/namespace_b_t.html b/d2/d8d/namespace_b_t.html index 900b053c8..8b8f8416e 100644 --- a/d2/d8d/namespace_b_t.html +++ b/d2/d8d/namespace_b_t.html @@ -838,7 +838,7 @@

    @@ -188,7 +188,7 @@

    -

    addConverter register a from_json function that converts a json to a type T. The convertions from std::vector<T> is automatically registered.

    +

    addConverter register a from_json function that converts a json to a type T. The conversions from std::vector<T> is automatically registered.

    Parameters
    @@ -234,11 +234,11 @@

    -

    addConverter register a to_json function that converts a json to a type T. The convertion to std:vector<T> is automatically registered.

    +

    addConverter register a to_json function that converts a json to a type T. The conversion to std:vector<T> is automatically registered.

    Parameters

    from_jsonthe function with signature void(const nlohmann::json&, T&)
    - +
    to_jsonthe function with signature void(const T&, nlohmann::json&)
    add_typeif true, add a field called [__type] with the name ofthe type.
    add_typeif true, add a field called [__type] with the name of the type.
    diff --git a/d0/d9c/class_b_t_1_1_always_failure_node.html b/d0/d9c/class_b_t_1_1_always_failure_node.html index 902d4f8f0..194f3b801 100644 --- a/d0/d9c/class_b_t_1_1_always_failure_node.html +++ b/d0/d9c/class_b_t_1_1_always_failure_node.html @@ -209,7 +209,7 @@

     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const

    Detailed Description

    Template Action used in ex04_waypoints.cpp example.

    -

    Its purpose is to do make it easy to create while loops wich consume the elements of a queue.

    +

    Its purpose is to do make it easy to create while loops which consume the elements of a queue.

    Note that modifying the queue is not thread safe, therefore the action that creates the queue or push elements into it, must be Synchronous.

    When ticked, we pop_front from the "queue" and insert that value in "popped_item". Return FAILURE if the queue is empty, SUCCESS otherwise.

    Typedef Documentation

    @@ -1139,7 +1139,7 @@

    Blackboard::cloneInto to restore all the blackboards of the tree.

    Parameters
    - +
    backupa vectror of blackboards
    backupa vector of blackboards
    treethe destination
    @@ -1554,7 +1554,7 @@

    -

    Serialize manually the informations about state transition No flatbuffer serialization here

    +

    Serialize manually the information about state transition No flatbuffer serialization here

    diff --git a/d2/ded/class_b_t_1_1_inverter_node.html b/d2/ded/class_b_t_1_1_inverter_node.html index c03d8f70a..ad00a3f9b 100644 --- a/d2/ded/class_b_t_1_1_inverter_node.html +++ b/d2/ded/class_b_t_1_1_inverter_node.html @@ -215,7 +215,7 @@   template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d3/d02/class_b_t_1_1_parallel_all_node.html b/d3/d02/class_b_t_1_1_parallel_all_node.html index 056cf7527..0e0741e2a 100644 --- a/d3/d02/class_b_t_1_1_parallel_all_node.html +++ b/d3/d02/class_b_t_1_1_parallel_all_node.html @@ -231,7 +231,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d3/d37/class_b_t_1_1_simple_decorator_node.html b/d3/d37/class_b_t_1_1_simple_decorator_node.html index c144e64c3..556957d8e 100644 --- a/d3/d37/class_b_t_1_1_simple_decorator_node.html +++ b/d3/d37/class_b_t_1_1_simple_decorator_node.html @@ -246,7 +246,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d3/de2/class_b_t_1_1_action_node_base.html b/d3/de2/class_b_t_1_1_action_node_base.html index dfadfae45..f723c6689 100644 --- a/d3/de2/class_b_t_1_1_action_node_base.html +++ b/d3/de2/class_b_t_1_1_action_node_base.html @@ -209,7 +209,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d4/d20/class_b_t_1_1_timeout_node.html b/d4/d20/class_b_t_1_1_timeout_node.html index a3ff420f3..eba2cf387 100644 --- a/d4/d20/class_b_t_1_1_timeout_node.html +++ b/d4/d20/class_b_t_1_1_timeout_node.html @@ -219,7 +219,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d4/d53/safe__any_8hpp_source.html b/d4/d53/safe__any_8hpp_source.html index ce982f068..148a4e14b 100644 --- a/d4/d53/safe__any_8hpp_source.html +++ b/d4/d53/safe__any_8hpp_source.html @@ -589,7 +589,7 @@
    494 }
    495
    496 // special case when the output is an enum.
    -
    497 // We will try first a int convertion
    +
    497 // We will try first a int conversion
    498 if constexpr(std::is_enum_v<T>)
    499 {
    500 if(isNumber())
    diff --git a/d4/d56/class_b_t_1_1_delay_node.html b/d4/d56/class_b_t_1_1_delay_node.html index e8d0380cc..cfa592945 100644 --- a/d4/d56/class_b_t_1_1_delay_node.html +++ b/d4/d56/class_b_t_1_1_delay_node.html @@ -222,7 +222,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d4/d8c/class_b_t_1_1_force_failure_node.html b/d4/d8c/class_b_t_1_1_force_failure_node.html index 6c9b8f72d..d9d717781 100644 --- a/d4/d8c/class_b_t_1_1_force_failure_node.html +++ b/d4/d8c/class_b_t_1_1_force_failure_node.html @@ -215,7 +215,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d5/d7a/bt__flatbuffer__helper_8h_source.html b/d5/d7a/bt__flatbuffer__helper_8h_source.html index f0549d2a6..416c46fde 100644 --- a/d5/d7a/bt__flatbuffer__helper_8h_source.html +++ b/d5/d7a/bt__flatbuffer__helper_8h_source.html @@ -231,7 +231,7 @@
    136 builder.Finish(behavior_tree);
    137}
    138
    -
    139/** Serialize manually the informations about state transition
    +
    139/** Serialize manually the information about state transition
    140 * No flatbuffer serialization here
    141 */
    142inline SerializedTransition SerializeTransition(uint16_t UID, Duration timestamp,
    diff --git a/d5/d7f/class_b_t_1_1_test_node.html b/d5/d7f/class_b_t_1_1_test_node.html index 6e45ac577..f113a363b 100644 --- a/d5/d7f/class_b_t_1_1_test_node.html +++ b/d5/d7f/class_b_t_1_1_test_node.html @@ -227,7 +227,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const @@ -386,7 +386,7 @@
  • Execute a post condition script (unless halted)
  • Either complete immediately (synchronous action), or after a given period of time (asynchronous action)
  • -

    This behavior is changed by the parameters pased with TestNodeConfig.

    +

    This behavior is changed by the parameters passed with TestNodeConfig.

    This particular node is created by the factory when TestNodeConfig is added as a substitution rule:

    auto test_config = std::make_shared<TestNodeConfig>(); // change fields of test_config factory.addSubstitutionRule(pattern, test_config);

    See tutorial 15 for more details.

    diff --git a/d6/d78/class_b_t_1_1_repeat_node.html b/d6/d78/class_b_t_1_1_repeat_node.html index ef0921e99..4f7ff1f6f 100644 --- a/d6/d78/class_b_t_1_1_repeat_node.html +++ b/d6/d78/class_b_t_1_1_repeat_node.html @@ -219,7 +219,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/d6/dae/run__once__node_8h_source.html b/d6/dae/run__once__node_8h_source.html index 5bd67ee7d..9a1c7a889 100644 --- a/d6/dae/run__once__node_8h_source.html +++ b/d6/dae/run__once__node_8h_source.html @@ -137,7 +137,7 @@
    42 {
    43 return { InputPort<bool>("then_skip", true,
    44 "If true, skip after the first execution, "
    -
    45 "otherwise return the same NodeStatus returned once bu the "
    +
    45 "otherwise return the same NodeStatus returned once by the "
    46 "child.") };
    47 }
    48
    diff --git a/d6/dcc/test__node_8h_source.html b/d6/dcc/test__node_8h_source.html index c65c1df74..1f7207297 100644 --- a/d6/dcc/test__node_8h_source.html +++ b/d6/dcc/test__node_8h_source.html @@ -145,7 +145,7 @@
    50 * 3. Either complete immediately (synchronous action), or after a
    51 * given period of time (asynchronous action)
    52 *
    -
    53 * This behavior is changed by the parameters pased with TestNodeConfig.
    +
    53 * This behavior is changed by the parameters passed with TestNodeConfig.
    54 *
    55 * This particular node is created by the factory when TestNodeConfig is
    56 * added as a substitution rule:
    diff --git a/d6/dcd/class_b_t_1_1_behavior_tree_factory.html b/d6/dcd/class_b_t_1_1_behavior_tree_factory.html index 3b975429e..291a93fb7 100644 --- a/d6/dcd/class_b_t_1_1_behavior_tree_factory.html +++ b/d6/dcd/class_b_t_1_1_behavior_tree_factory.html @@ -202,7 +202,7 @@ void clearSubstitutionRules ()   void addSubstitutionRule (StringView filter, SubstitutionRule rule) - addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a diferent node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.
    + addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a different node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.
      void loadSubstitutionRuleFromJSON (const std::string &json_text)  loadSubstitutionRuleFromJSON will parse a JSON file to create a set of substitution rules. See Tutorial 11 for an example of the syntax.
    @@ -271,7 +271,7 @@

    -

    addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a diferent node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.

    +

    addSubstitutionRule replace a node with another one when the tree is created. If the rule ia a string, we will use a different node type (already registered) instead. If the rule is a TestNodeConfig, a test node with that configuration will be created instead.

    Parameters
    diff --git a/d6/ddb/class_b_t_1_1_control_node.html b/d6/ddb/class_b_t_1_1_control_node.html index 55e1b2a21..dce93e0bf 100644 --- a/d6/ddb/class_b_t_1_1_control_node.html +++ b/d6/ddb/class_b_t_1_1_control_node.html @@ -223,7 +223,7 @@ - + diff --git a/d7/d3a/class_b_t_1_1_pop_from_queue.html b/d7/d3a/class_b_t_1_1_pop_from_queue.html index 995d5071e..86ef3a44c 100644 --- a/d7/d3a/class_b_t_1_1_pop_from_queue.html +++ b/d7/d3a/class_b_t_1_1_pop_from_queue.html @@ -211,7 +211,7 @@ - + diff --git a/d7/d4f/class_b_t_1_1_set_blackboard_node.html b/d7/d4f/class_b_t_1_1_set_blackboard_node.html index eacd51b97..67945b5c3 100644 --- a/d7/d4f/class_b_t_1_1_set_blackboard_node.html +++ b/d7/d4f/class_b_t_1_1_set_blackboard_node.html @@ -213,7 +213,7 @@ - + diff --git a/d7/d54/class_b_t_1_1_while_do_else_node.html b/d7/d54/class_b_t_1_1_while_do_else_node.html index da4f9ed43..99708bca5 100644 --- a/d7/d54/class_b_t_1_1_while_do_else_node.html +++ b/d7/d54/class_b_t_1_1_while_do_else_node.html @@ -224,7 +224,7 @@ - + diff --git a/d7/d68/action__node_8h_source.html b/d7/d68/action__node_8h_source.html index 77dae7f99..f17466e8b 100644 --- a/d7/d68/action__node_8h_source.html +++ b/d7/d68/action__node_8h_source.html @@ -194,10 +194,10 @@
    99 * IMPORTANT: this action is quite hard to implement correctly.
    100 * Please make sure that you know what you are doing.
    101 *
    -
    102 * - In your overriden tick() method, you must check periodically
    +
    102 * - In your overridden tick() method, you must check periodically
    103 * the result of the method isHaltRequested() and stop your execution accordingly.
    104 *
    -
    105 * - in the overriden halt() method, you can do some cleanup, but do not forget to
    +
    105 * - in the overridden halt() method, you can do some cleanup, but do not forget to
    106 * invoke the base class method ThreadedAction::halt();
    107 *
    108 * - remember, with few exceptions, a halted ThreadedAction must return NodeStatus::IDLE.
    diff --git a/d7/da7/class_b_t_1_1_simple_action_node.html b/d7/da7/class_b_t_1_1_simple_action_node.html index f80cac494..0f5426802 100644 --- a/d7/da7/class_b_t_1_1_simple_action_node.html +++ b/d7/da7/class_b_t_1_1_simple_action_node.html @@ -243,7 +243,7 @@ - + diff --git a/d7/db8/class_b_t_1_1_force_success_node.html b/d7/db8/class_b_t_1_1_force_success_node.html index dfa6fad9f..eb566aaf1 100644 --- a/d7/db8/class_b_t_1_1_force_success_node.html +++ b/d7/db8/class_b_t_1_1_force_success_node.html @@ -215,7 +215,7 @@ - + diff --git a/d7/dd5/class_b_t_1_1_precondition_node.html b/d7/dd5/class_b_t_1_1_precondition_node.html index 7eeb528fb..624fe3bc5 100644 --- a/d7/dd5/class_b_t_1_1_precondition_node.html +++ b/d7/dd5/class_b_t_1_1_precondition_node.html @@ -211,7 +211,7 @@ - + diff --git a/d8/d08/class_b_t_1_1_if_then_else_node.html b/d8/d08/class_b_t_1_1_if_then_else_node.html index 72e92aae2..0cadb4b79 100644 --- a/d8/d08/class_b_t_1_1_if_then_else_node.html +++ b/d8/d08/class_b_t_1_1_if_then_else_node.html @@ -224,7 +224,7 @@ - + diff --git a/d8/dd4/class_b_t_1_1_coro_action_node.html b/d8/dd4/class_b_t_1_1_coro_action_node.html index 461a7a6b5..9a09d00f7 100644 --- a/d8/dd4/class_b_t_1_1_coro_action_node.html +++ b/d8/dd4/class_b_t_1_1_coro_action_node.html @@ -215,7 +215,7 @@ - + diff --git a/d9/d33/class_b_t_1_1_sleep_node.html b/d9/d33/class_b_t_1_1_sleep_node.html index 2893f39e6..efdda2948 100644 --- a/d9/d33/class_b_t_1_1_sleep_node.html +++ b/d9/d33/class_b_t_1_1_sleep_node.html @@ -224,7 +224,7 @@ - + diff --git a/d9/d8c/class_b_t_1_1_queue_size.html b/d9/d8c/class_b_t_1_1_queue_size.html index 0bbe025a4..03d643453 100644 --- a/d9/d8c/class_b_t_1_1_queue_size.html +++ b/d9/d8c/class_b_t_1_1_queue_size.html @@ -213,7 +213,7 @@ - + @@ -327,7 +327,7 @@
    filterfilter used to select the node to sobstitute. The node path is used. You may use wildcard matching.
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const

    Detailed Description

    template<typename T>
    -class BT::QueueSize< T >

    Get the size of a queue. Usefull is you want to write something like:

    +class BT::QueueSize< T >

    Get the size of a queue. Useful when you want to write something like:

    <QueueSize queue="{waypoints}" size="{wp_size}" > <Repeat num_cycles="{wp_size}" > <Sequence> <PopFromQueue queue="{waypoints}" popped_item="{wp}" > <UseWaypoint waypoint="{wp}" > </Sequence> </Repeat>

    Member Function Documentation

    diff --git a/d9/ddd/class_b_t_1_1_sequence_node.html b/d9/ddd/class_b_t_1_1_sequence_node.html index ba93e2cd3..5734a561d 100644 --- a/d9/ddd/class_b_t_1_1_sequence_node.html +++ b/d9/ddd/class_b_t_1_1_sequence_node.html @@ -224,7 +224,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/da/d26/class_b_t_1_1_script_condition.html b/da/d26/class_b_t_1_1_script_condition.html index 681d1282f..54e465608 100644 --- a/da/d26/class_b_t_1_1_script_condition.html +++ b/da/d26/class_b_t_1_1_script_condition.html @@ -203,7 +203,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const diff --git a/da/d61/class_b_t_1_1_tree_node.html b/da/d61/class_b_t_1_1_tree_node.html index f1ad06f18..053f24d90 100644 --- a/da/d61/class_b_t_1_1_tree_node.html +++ b/da/d61/class_b_t_1_1_tree_node.html @@ -249,7 +249,7 @@   template<typename T > Expected< TimestampgetInputStamped (const std::string &key, T &destination) const - getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
    + getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
      template<typename T > Expected< T > getInput (const std::string &key) const @@ -611,7 +611,7 @@

    -

    getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.

    +

    getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.

    Parameters
    @@ -749,7 +749,7 @@

    Returns
    valid Result, if succesful.
    +
    Returns
    valid Result, if successful.
    @@ -769,7 +769,7 @@

    This method attaches to the TreeNode a callback with signature:

    NodeStatus myCallback(TreeNode& node, NodeStatus status)
    -

    This callback is executed AFTER the tick() and, if it returns SUCCESS or FAILURE, the value returned by the actual tick() is overriden with this one.

    +

    This callback is executed AFTER the tick() and, if it returns SUCCESS or FAILURE, the value returned by the actual tick() is overridden with this one.

    diff --git a/da/d65/set__blackboard__node_8h_source.html b/da/d65/set__blackboard__node_8h_source.html index 2976baa12..63ba75da0 100644 --- a/da/d65/set__blackboard__node_8h_source.html +++ b/da/d65/set__blackboard__node_8h_source.html @@ -139,7 +139,7 @@
    44
    45 static PortsList providedPorts()
    46 {
    -
    47 return { InputPort("value", "Value to be written int othe output_key"),
    +
    47 return { InputPort("value", "Value to be written into the output_key"),
    48 BidirectionalPort("output_key", "Name of the blackboard entry where the "
    49 "value should be written") };
    50 }
    diff --git a/da/d73/class_b_t_1_1_sync_action_node.html b/da/d73/class_b_t_1_1_sync_action_node.html index 1fcef44ac..a7250d995 100644 --- a/da/d73/class_b_t_1_1_sync_action_node.html +++ b/da/d73/class_b_t_1_1_sync_action_node.html @@ -215,7 +215,7 @@

    - + diff --git a/db/d0f/class_b_t_1_1_script_node.html b/db/d0f/class_b_t_1_1_script_node.html index dbe64a706..15cc84306 100644 --- a/db/d0f/class_b_t_1_1_script_node.html +++ b/db/d0f/class_b_t_1_1_script_node.html @@ -208,7 +208,7 @@ - + diff --git a/db/d81/bt__factory_8h_source.html b/db/d81/bt__factory_8h_source.html index 0bcbf416c..7a2d14741 100644 --- a/db/d81/bt__factory_8h_source.html +++ b/db/d81/bt__factory_8h_source.html @@ -570,7 +570,7 @@
    475 /**
    476 * @brief addSubstitutionRule replace a node with another one when the tree is
    477 * created.
    -
    478 * If the rule ia a string, we will use a diferent node type (already registered)
    +
    478 * If the rule ia a string, we will use a different node type (already registered)
    479 * instead.
    480 * If the rule is a TestNodeConfig, a test node with that configuration will be created instead.
    481 *
    @@ -621,7 +621,7 @@
    526 * @brief BlackboardRestore uses Blackboard::cloneInto to restore
    527 * all the blackboards of the tree
    528 *
    -
    529 * @param backup a vectror of blackboards
    +
    529 * @param backup a vector of blackboards
    530 * @param tree the destination
    531 */
    532void BlackboardRestore(const std::vector<Blackboard::Ptr>& backup, BT::Tree& tree);
    diff --git a/db/d84/pop__from__queue_8hpp_source.html b/db/d84/pop__from__queue_8hpp_source.html index b651808c4..b74272312 100644 --- a/db/d84/pop__from__queue_8hpp_source.html +++ b/db/d84/pop__from__queue_8hpp_source.html @@ -115,7 +115,7 @@
    20/**
    21 * Template Action used in ex04_waypoints.cpp example.
    22 *
    -
    23 * Its purpose is to do make it easy to create while loops wich consume the elements of a queue.
    +
    23 * Its purpose is to do make it easy to create while loops which consume the elements of a queue.
    24 *
    25 * Note that modifying the queue is not thread safe, therefore the action that creates the queue
    26 * or push elements into it, must be Synchronous.
    @@ -142,7 +142,7 @@
    47 *
    48 * We avoid this using reference semantic (wrapping the object in a shared_ptr).
    49 * Unfortunately, remember that this makes our access to the list not thread-safe!
    -
    50 * This is the reason why we add a mutex to be used when modyfying the ProtectedQueue::items
    +
    50 * This is the reason why we add a mutex to be used when modifying the ProtectedQueue::items
    51 *
    52 * */
    53
    @@ -190,7 +190,7 @@
    95};
    96
    97/**
    -
    98 * Get the size of a queue. Usefull is you want to write something like:
    +
    98 * Get the size of a queue. Useful when you want to write something like:
    99 *
    100 * <QueueSize queue="{waypoints}" size="{wp_size}" />
    101 * <Repeat num_cycles="{wp_size}" >
    diff --git a/dc/d04/class_b_t_1_1_reactive_fallback.html b/dc/d04/class_b_t_1_1_reactive_fallback.html index 0bfc15041..651aca0b9 100644 --- a/dc/d04/class_b_t_1_1_reactive_fallback.html +++ b/dc/d04/class_b_t_1_1_reactive_fallback.html @@ -223,7 +223,7 @@ - + diff --git a/dc/d0b/class_b_t_1_1_manual_selector_node.html b/dc/d0b/class_b_t_1_1_manual_selector_node.html index f0da7c934..3fb50322e 100644 --- a/dc/d0b/class_b_t_1_1_manual_selector_node.html +++ b/dc/d0b/class_b_t_1_1_manual_selector_node.html @@ -225,7 +225,7 @@ - + diff --git a/dc/d49/class_b_t_1_1_simple_condition_node.html b/dc/d49/class_b_t_1_1_simple_condition_node.html index 484c76a3d..b8c53739c 100644 --- a/dc/d49/class_b_t_1_1_simple_condition_node.html +++ b/dc/d49/class_b_t_1_1_simple_condition_node.html @@ -233,7 +233,7 @@ - + diff --git a/dc/da6/class_b_t_1_1_fallback_node.html b/dc/da6/class_b_t_1_1_fallback_node.html index 74568b8f4..544557553 100644 --- a/dc/da6/class_b_t_1_1_fallback_node.html +++ b/dc/da6/class_b_t_1_1_fallback_node.html @@ -224,7 +224,7 @@ - + diff --git a/dc/dae/class_b_t_1_1_switch_node.html b/dc/dae/class_b_t_1_1_switch_node.html index bba6174d1..b89ea4d75 100644 --- a/dc/dae/class_b_t_1_1_switch_node.html +++ b/dc/dae/class_b_t_1_1_switch_node.html @@ -220,7 +220,7 @@ - + diff --git a/dc/dfc/class_b_t_1_1_condition_node.html b/dc/dfc/class_b_t_1_1_condition_node.html index 7d2a24e05..e8a29aff0 100644 --- a/dc/dfc/class_b_t_1_1_condition_node.html +++ b/dc/dfc/class_b_t_1_1_condition_node.html @@ -193,7 +193,7 @@ - + diff --git a/dd/d32/class_b_t_1_1_loop_node.html b/dd/d32/class_b_t_1_1_loop_node.html index 98379993d..9fc347efe 100644 --- a/dd/d32/class_b_t_1_1_loop_node.html +++ b/dd/d32/class_b_t_1_1_loop_node.html @@ -219,7 +219,7 @@ - + diff --git a/dd/dbd/class_b_t_1_1_run_once_node.html b/dd/dbd/class_b_t_1_1_run_once_node.html index 32ce539d9..c1c2be8c5 100644 --- a/dd/dbd/class_b_t_1_1_run_once_node.html +++ b/dd/dbd/class_b_t_1_1_run_once_node.html @@ -216,7 +216,7 @@ - + diff --git a/dd/dcd/operators_8hpp_source.html b/dd/dcd/operators_8hpp_source.html index cc26efaa1..2982309bb 100644 --- a/dd/dcd/operators_8hpp_source.html +++ b/dd/dcd/operators_8hpp_source.html @@ -122,7 +122,7 @@
    27
    28using expr_ptr = std::shared_ptr<struct ExprBase>;
    29
    -
    30// extended strin to number that consider enums and booleans
    +
    30// extended string to number that consider enums and booleans
    31inline double StringToDouble(const Any& value, const Environment& env)
    32{
    33 const auto str = value.cast<std::string>();
    diff --git a/dd/dce/class_b_t_1_1_always_success_node.html b/dd/dce/class_b_t_1_1_always_success_node.html index fef13476c..ad9b6538a 100644 --- a/dd/dce/class_b_t_1_1_always_success_node.html +++ b/dd/dce/class_b_t_1_1_always_success_node.html @@ -209,7 +209,7 @@ - + diff --git a/dd/de4/class_b_t_1_1_retry_node.html b/dd/de4/class_b_t_1_1_retry_node.html index 6cc8b024e..4fa85d9ee 100644 --- a/dd/de4/class_b_t_1_1_retry_node.html +++ b/dd/de4/class_b_t_1_1_retry_node.html @@ -223,7 +223,7 @@ - + diff --git a/de/d22/class_b_t_1_1_keep_running_until_failure_node.html b/de/d22/class_b_t_1_1_keep_running_until_failure_node.html index 7bc43d030..ef3e088e3 100644 --- a/de/d22/class_b_t_1_1_keep_running_until_failure_node.html +++ b/de/d22/class_b_t_1_1_keep_running_until_failure_node.html @@ -215,7 +215,7 @@ - + diff --git a/de/d69/class_b_t_1_1_sequence_with_memory.html b/de/d69/class_b_t_1_1_sequence_with_memory.html index b054bd38c..13b61fa75 100644 --- a/de/d69/class_b_t_1_1_sequence_with_memory.html +++ b/de/d69/class_b_t_1_1_sequence_with_memory.html @@ -224,7 +224,7 @@ - + diff --git a/de/d79/groot2__protocol_8h_source.html b/de/d79/groot2__protocol_8h_source.html index a2579207f..7bcb23bca 100644 --- a/de/d79/groot2__protocol_8h_source.html +++ b/de/d79/groot2__protocol_8h_source.html @@ -122,11 +122,11 @@
    27
    28enum RequestType : uint8_t
    29{
    -
    30 // Request the entire tree defintion as XML
    +
    30 // Request the entire tree definition as XML
    31 FULLTREE = 'T',
    -
    32 // Request the staus of all the nodes
    +
    32 // Request the status of all the nodes
    33 STATUS = 'S',
    -
    34 // retrieve the valus in a set of blackboards
    +
    34 // retrieve the values in a set of blackboards
    35 BLACKBOARD = 'B',
    36
    37 // Groot requests the insertion of a hook
    diff --git a/de/d9f/class_b_t_1_1_reactive_sequence.html b/de/d9f/class_b_t_1_1_reactive_sequence.html index f94c07f96..5f6b8c869 100644 --- a/de/d9f/class_b_t_1_1_reactive_sequence.html +++ b/de/d9f/class_b_t_1_1_reactive_sequence.html @@ -223,7 +223,7 @@ - + diff --git a/df/d34/class_b_t_1_1_sub_tree_node.html b/df/d34/class_b_t_1_1_sub_tree_node.html index c94662fee..f0888215f 100644 --- a/df/d34/class_b_t_1_1_sub_tree_node.html +++ b/df/d34/class_b_t_1_1_sub_tree_node.html @@ -227,7 +227,7 @@ - + diff --git a/df/d9f/class_b_t_1_1_entry_updated_action.html b/df/d9f/class_b_t_1_1_entry_updated_action.html index 2793f524a..19316ca13 100644 --- a/df/d9f/class_b_t_1_1_entry_updated_action.html +++ b/df/d9f/class_b_t_1_1_entry_updated_action.html @@ -213,7 +213,7 @@ - + diff --git a/df/dc2/class_b_t_1_1_consume_queue.html b/df/dc2/class_b_t_1_1_consume_queue.html index 88da36693..d9c6f0a9a 100644 --- a/df/dc2/class_b_t_1_1_consume_queue.html +++ b/df/dc2/class_b_t_1_1_consume_queue.html @@ -216,7 +216,7 @@ - + From 47f42a56764820f7c0263ccab5235cd47f7051bf Mon Sep 17 00:00:00 2001 From: facontidavide Date: Sun, 20 Jul 2025 09:06:55 +0000 Subject: [PATCH 5/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@6ec652d368a65f5e7f469adfae0f33acf33af?= =?UTF-8?q?25f=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- d2/d39/json__export_8h_source.html | 2 +- d2/d8d/namespace_b_t.html | 4 + d2/dbf/timer__queue_8h_source.html | 2 +- d3/d2f/switch__node_8h_source.html | 2 +- d5/d71/blackboard_8h_source.html | 6 +- da/d1e/basic__types_8h_source.html | 852 +++++++++++++++-------------- 6 files changed, 438 insertions(+), 430 deletions(-) diff --git a/d2/d39/json__export_8h_source.html b/d2/d39/json__export_8h_source.html index 47bfc6a5b..e296d449e 100644 --- a/d2/d39/json__export_8h_source.html +++ b/d2/d39/json__export_8h_source.html @@ -371,7 +371,7 @@
    bool toJson(const BT::Any &any, nlohmann::json &destination) const
    toJson adds the content of "any" to the JSON "destination".
    void addConverter()
    Register new JSON converters with addConverter<Foo>(). You should used first the macro BT_JSON_CONVER...
    Definition: json_export.h:144
    ExpectedEntry fromJson(const nlohmann::json &source) const
    fromJson will return an Entry (value wrappedn in Any + TypeInfo) from a json source....
    -
    Definition: basic_types.h:348
    +
    Definition: basic_types.h:352
    Definition: action_node.h:25
    diff --git a/d2/d8d/namespace_b_t.html b/d2/d8d/namespace_b_t.html index 8b8f8416e..20fb4a465 100644 --- a/d2/d8d/namespace_b_t.html +++ b/d2/d8d/namespace_b_t.html @@ -538,6 +538,10 @@ template<>
    + + + diff --git a/d2/dbf/timer__queue_8h_source.html b/d2/dbf/timer__queue_8h_source.html index 406e43dbd..296e5e622 100644 --- a/d2/dbf/timer__queue_8h_source.html +++ b/d2/dbf/timer__queue_8h_source.html @@ -367,7 +367,7 @@
    size_t cancel(uint64_t id)
    Cancels the specified timer.
    Definition: timer_queue.h:114
    size_t cancelAll()
    Cancels all timers.
    Definition: timer_queue.h:151
    Definition: timer_queue.h:19
    -
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:503
    +
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:507
    Definition: action_node.h:25
    diff --git a/d3/d2f/switch__node_8h_source.html b/d3/d2f/switch__node_8h_source.html index d4532adf5..d53237ae3 100644 --- a/d3/d2f/switch__node_8h_source.html +++ b/d3/d2f/switch__node_8h_source.html @@ -262,7 +262,7 @@
    virtual void halt() override
    Definition: switch_node.h:51
    void halt() override
    Definition: switch_node.h:83
    -
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:503
    +
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:507
    Definition: action_node.h:25
    NodeStatus
    Definition: basic_types.h:34
    Definition: tree_node.h:83
    diff --git a/d5/d71/blackboard_8h_source.html b/d5/d71/blackboard_8h_source.html index 48101a99f..d80cb2033 100644 --- a/d5/d71/blackboard_8h_source.html +++ b/d5/d71/blackboard_8h_source.html @@ -461,14 +461,14 @@
    static Blackboard::Ptr create(Blackboard::Ptr parent={})
    Definition: blackboard.h:63
    void cloneInto(Blackboard &dst) const
    cloneInto copies the values of the entries into another blackboard. Known limitations:
    The LockedPtr class is used to share a pointer to an object and a mutex that protects the read/write ...
    Definition: locked_reference.hpp:17
    -
    Definition: basic_types.h:395
    -
    Definition: basic_types.h:348
    +
    Definition: basic_types.h:399
    +
    Definition: basic_types.h:352
    Definition: action_node.h:25
    void ImportBlackboardFromJSON(const nlohmann::json &json, Blackboard &blackboard)
    ImportBlackboardFromJSON will append elements to the blackboard, using the values parsed from the JSO...
    nlohmann::json ExportBlackboardToJSON(const Blackboard &blackboard)
    ExportBlackboardToJSON will create a JSON that contains the current values of the blackboard....
    Definition: blackboard.h:44
    Definition: blackboard.h:23
    -
    Definition: basic_types.h:336
    +
    Definition: basic_types.h:340
    diff --git a/da/d1e/basic__types_8h_source.html b/da/d1e/basic__types_8h_source.html index b87557bba..39f634b8b 100644 --- a/da/d1e/basic__types_8h_source.html +++ b/da/d1e/basic__types_8h_source.html @@ -278,476 +278,480 @@
    183template <>
    184[[nodiscard]] std::vector<double> convertFromString<std::vector<double>>(StringView str);
    185
    -
    186// Strings separated by the character ";"
    +
    186// Boolean values separated by the character ";"
    187template <>
    -
    188[[nodiscard]] std::vector<std::string>
    -
    189convertFromString<std::vector<std::string>>(StringView str);
    -
    190
    -
    191// This recognizes either 0/1, true/false, TRUE/FALSE
    -
    192template <>
    -
    193[[nodiscard]] bool convertFromString<bool>(StringView str);
    +
    188[[nodiscard]] std::vector<bool> convertFromString<std::vector<bool>>(StringView str);
    +
    189
    +
    190// Strings separated by the character ";"
    +
    191template <>
    +
    192[[nodiscard]] std::vector<std::string>
    +
    193convertFromString<std::vector<std::string>>(StringView str);
    194
    -
    195// Names with all capital letters
    +
    195// This recognizes either 0/1, true/false, TRUE/FALSE
    196template <>
    -
    197[[nodiscard]] NodeStatus convertFromString<NodeStatus>(StringView str);
    +
    197[[nodiscard]] bool convertFromString<bool>(StringView str);
    198
    199// Names with all capital letters
    200template <>
    -
    201[[nodiscard]] NodeType convertFromString<NodeType>(StringView str);
    +
    201[[nodiscard]] NodeStatus convertFromString<NodeStatus>(StringView str);
    202
    -
    203template <>
    -
    204[[nodiscard]] PortDirection convertFromString<PortDirection>(StringView str);
    -
    205
    - -
    207
    - +
    203// Names with all capital letters
    +
    204template <>
    +
    205[[nodiscard]] NodeType convertFromString<NodeType>(StringView str);
    +
    206
    +
    207template <>
    +
    208[[nodiscard]] PortDirection convertFromString<PortDirection>(StringView str);
    209
    -
    210// helper function
    -
    211template <typename T>
    -
    212[[nodiscard]] inline StringConverter GetAnyFromStringFunctor()
    -
    213{
    -
    214 if constexpr(std::is_constructible_v<StringView, T>)
    -
    215 {
    -
    216 return [](StringView str) { return Any(str); };
    -
    217 }
    -
    218 else if constexpr(std::is_same_v<BT::AnyTypeAllowed, T> || std::is_enum_v<T>)
    + +
    211
    + +
    213
    +
    214// helper function
    +
    215template <typename T>
    +
    216[[nodiscard]] inline StringConverter GetAnyFromStringFunctor()
    +
    217{
    +
    218 if constexpr(std::is_constructible_v<StringView, T>)
    219 {
    -
    220 return {};
    +
    220 return [](StringView str) { return Any(str); };
    221 }
    -
    222 else
    +
    222 else if constexpr(std::is_same_v<BT::AnyTypeAllowed, T> || std::is_enum_v<T>)
    223 {
    -
    224 return [](StringView str) { return Any(convertFromString<T>(str)); };
    +
    224 return {};
    225 }
    -
    226}
    -
    227
    -
    228template <>
    -
    229[[nodiscard]] inline StringConverter GetAnyFromStringFunctor<void>()
    -
    230{
    -
    231 return {};
    -
    232}
    -
    233
    -
    234//------------------------------------------------------------------
    -
    235
    -
    236template <typename T>
    -
    237constexpr bool IsConvertibleToString()
    -
    238{
    -
    239 return std::is_convertible_v<T, std::string> ||
    -
    240 std::is_convertible_v<T, std::string_view>;
    -
    241}
    -
    242
    -
    243Expected<std::string> toJsonString(const Any& value);
    -
    244
    -
    245/**
    -
    246 * @brief toStr is the reverse operation of convertFromString.
    -
    247 *
    -
    248 * If T is a custom type and there is no template specialization,
    -
    249 * it will try to fall back to toJsonString()
    -
    250 */
    -
    251template <typename T>
    -
    252[[nodiscard]] std::string toStr(const T& value)
    -
    253{
    -
    254 if constexpr(IsConvertibleToString<T>())
    -
    255 {
    -
    256 return static_cast<std::string>(value);
    -
    257 }
    -
    258 else if constexpr(!std::is_arithmetic_v<T>)
    +
    226 else
    +
    227 {
    +
    228 return [](StringView str) { return Any(convertFromString<T>(str)); };
    +
    229 }
    +
    230}
    +
    231
    +
    232template <>
    +
    233[[nodiscard]] inline StringConverter GetAnyFromStringFunctor<void>()
    +
    234{
    +
    235 return {};
    +
    236}
    +
    237
    +
    238//------------------------------------------------------------------
    +
    239
    +
    240template <typename T>
    +
    241constexpr bool IsConvertibleToString()
    +
    242{
    +
    243 return std::is_convertible_v<T, std::string> ||
    +
    244 std::is_convertible_v<T, std::string_view>;
    +
    245}
    +
    246
    +
    247Expected<std::string> toJsonString(const Any& value);
    +
    248
    +
    249/**
    +
    250 * @brief toStr is the reverse operation of convertFromString.
    +
    251 *
    +
    252 * If T is a custom type and there is no template specialization,
    +
    253 * it will try to fall back to toJsonString()
    +
    254 */
    +
    255template <typename T>
    +
    256[[nodiscard]] std::string toStr(const T& value)
    +
    257{
    +
    258 if constexpr(IsConvertibleToString<T>())
    259 {
    -
    260 if(auto str = toJsonString(Any(value)))
    -
    261 {
    -
    262 return *str;
    -
    263 }
    -
    264
    -
    265 throw LogicError(StrCat("Function BT::toStr<T>() not specialized for type [",
    -
    266 BT::demangle(typeid(T)), "]"));
    -
    267 }
    -
    268 else
    -
    269 {
    -
    270 return std::to_string(value);
    +
    260 return static_cast<std::string>(value);
    +
    261 }
    +
    262 else if constexpr(!std::is_arithmetic_v<T>)
    +
    263 {
    +
    264 if(auto str = toJsonString(Any(value)))
    +
    265 {
    +
    266 return *str;
    +
    267 }
    +
    268
    +
    269 throw LogicError(StrCat("Function BT::toStr<T>() not specialized for type [",
    +
    270 BT::demangle(typeid(T)), "]"));
    271 }
    -
    272}
    -
    273
    -
    274template <>
    -
    275[[nodiscard]] std::string toStr<bool>(const bool& value);
    -
    276
    -
    277template <>
    -
    278[[nodiscard]] std::string toStr<std::string>(const std::string& value);
    -
    279
    -
    280template <>
    -
    281[[nodiscard]] std::string toStr<BT::NodeStatus>(const BT::NodeStatus& status);
    -
    282
    -
    283/**
    -
    284 * @brief toStr converts NodeStatus to string. Optionally colored.
    -
    285 */
    -
    286[[nodiscard]] std::string toStr(BT::NodeStatus status, bool colored);
    -
    287
    -
    288std::ostream& operator<<(std::ostream& os, const BT::NodeStatus& status);
    -
    289
    -
    290template <>
    -
    291[[nodiscard]] std::string toStr<BT::NodeType>(const BT::NodeType& type);
    -
    292
    -
    293std::ostream& operator<<(std::ostream& os, const BT::NodeType& type);
    -
    294
    -
    295template <>
    -
    296[[nodiscard]] std::string toStr<BT::PortDirection>(const BT::PortDirection& direction);
    -
    297
    -
    298std::ostream& operator<<(std::ostream& os, const BT::PortDirection& type);
    -
    299
    -
    300// Small utility, unless you want to use <boost/algorithm/string.hpp>
    -
    301[[nodiscard]] std::vector<StringView> splitString(const StringView& strToSplit,
    -
    302 char delimeter);
    +
    272 else
    +
    273 {
    +
    274 return std::to_string(value);
    +
    275 }
    +
    276}
    +
    277
    +
    278template <>
    +
    279[[nodiscard]] std::string toStr<bool>(const bool& value);
    +
    280
    +
    281template <>
    +
    282[[nodiscard]] std::string toStr<std::string>(const std::string& value);
    +
    283
    +
    284template <>
    +
    285[[nodiscard]] std::string toStr<BT::NodeStatus>(const BT::NodeStatus& status);
    +
    286
    +
    287/**
    +
    288 * @brief toStr converts NodeStatus to string. Optionally colored.
    +
    289 */
    +
    290[[nodiscard]] std::string toStr(BT::NodeStatus status, bool colored);
    +
    291
    +
    292std::ostream& operator<<(std::ostream& os, const BT::NodeStatus& status);
    +
    293
    +
    294template <>
    +
    295[[nodiscard]] std::string toStr<BT::NodeType>(const BT::NodeType& type);
    +
    296
    +
    297std::ostream& operator<<(std::ostream& os, const BT::NodeType& type);
    +
    298
    +
    299template <>
    +
    300[[nodiscard]] std::string toStr<BT::PortDirection>(const BT::PortDirection& direction);
    +
    301
    +
    302std::ostream& operator<<(std::ostream& os, const BT::PortDirection& type);
    303
    -
    304template <typename Predicate>
    -
    305using enable_if = typename std::enable_if<Predicate::value>::type*;
    -
    306
    -
    307template <typename Predicate>
    -
    308using enable_if_not = typename std::enable_if<!Predicate::value>::type*;
    -
    309
    -
    310#ifdef USE_BTCPP3_OLD_NAMES
    -
    311// note: we also use the name Optional instead of expected because it is more intuitive
    -
    312// for users that are not up to date with "modern" C++
    -
    313template <typename T>
    -
    314using Optional = nonstd::expected<T, std::string>;
    -
    315#endif
    -
    316
    -
    317/** Usage: given a function/method like:
    -
    318 *
    -
    319 * Result DoSomething();
    -
    320 *
    -
    321 * User code can check result and error message like this:
    +
    304// Small utility, unless you want to use <boost/algorithm/string.hpp>
    +
    305[[nodiscard]] std::vector<StringView> splitString(const StringView& strToSplit,
    +
    306 char delimeter);
    +
    307
    +
    308template <typename Predicate>
    +
    309using enable_if = typename std::enable_if<Predicate::value>::type*;
    +
    310
    +
    311template <typename Predicate>
    +
    312using enable_if_not = typename std::enable_if<!Predicate::value>::type*;
    +
    313
    +
    314#ifdef USE_BTCPP3_OLD_NAMES
    +
    315// note: we also use the name Optional instead of expected because it is more intuitive
    +
    316// for users that are not up to date with "modern" C++
    +
    317template <typename T>
    +
    318using Optional = nonstd::expected<T, std::string>;
    +
    319#endif
    +
    320
    +
    321/** Usage: given a function/method like:
    322 *
    -
    323 * auto res = DoSomething();
    -
    324 * if( res )
    -
    325 * {
    -
    326 * std::cout << "DoSomething() done " << std::endl;
    -
    327 * }
    -
    328 * else{
    -
    329 * std::cerr << "DoSomething() failed with message: " << res.error() << std::endl;
    -
    330 * }
    -
    331 *
    -
    332 * */
    -
    333using Result = Expected<std::monostate>;
    -
    334
    -
    335struct Timestamp
    -
    336{
    -
    337 // Number being incremented every time a new value is written
    -
    338 uint64_t seq = 0;
    -
    339 // Last update time. Nanoseconds since epoch
    -
    340 std::chrono::nanoseconds time = std::chrono::nanoseconds(0);
    -
    341};
    -
    342
    -
    343[[nodiscard]] bool IsAllowedPortName(StringView str);
    -
    344
    -
    345[[nodiscard]] bool IsReservedAttribute(StringView str);
    +
    323 * Result DoSomething();
    +
    324 *
    +
    325 * User code can check result and error message like this:
    +
    326 *
    +
    327 * auto res = DoSomething();
    +
    328 * if( res )
    +
    329 * {
    +
    330 * std::cout << "DoSomething() done " << std::endl;
    +
    331 * }
    +
    332 * else{
    +
    333 * std::cerr << "DoSomething() failed with message: " << res.error() << std::endl;
    +
    334 * }
    +
    335 *
    +
    336 * */
    +
    337using Result = Expected<std::monostate>;
    +
    338
    +
    339struct Timestamp
    +
    340{
    +
    341 // Number being incremented every time a new value is written
    +
    342 uint64_t seq = 0;
    +
    343 // Last update time. Nanoseconds since epoch
    +
    344 std::chrono::nanoseconds time = std::chrono::nanoseconds(0);
    +
    345};
    346
    -
    347class TypeInfo
    -
    348{
    -
    349public:
    -
    350 template <typename T>
    -
    351 static TypeInfo Create()
    -
    352 {
    -
    353 return TypeInfo{ typeid(T), GetAnyFromStringFunctor<T>() };
    -
    354 }
    -
    355
    -
    356 TypeInfo() : type_info_(typeid(AnyTypeAllowed)), type_str_("AnyTypeAllowed")
    -
    357 {}
    -
    358
    -
    359 TypeInfo(std::type_index type_info, StringConverter conv)
    -
    360 : type_info_(type_info), converter_(conv), type_str_(BT::demangle(type_info))
    +
    347[[nodiscard]] bool IsAllowedPortName(StringView str);
    +
    348
    +
    349[[nodiscard]] bool IsReservedAttribute(StringView str);
    +
    350
    +
    351class TypeInfo
    +
    352{
    +
    353public:
    +
    354 template <typename T>
    +
    355 static TypeInfo Create()
    +
    356 {
    +
    357 return TypeInfo{ typeid(T), GetAnyFromStringFunctor<T>() };
    +
    358 }
    +
    359
    +
    360 TypeInfo() : type_info_(typeid(AnyTypeAllowed)), type_str_("AnyTypeAllowed")
    361 {}
    362
    -
    363 [[nodiscard]] const std::type_index& type() const;
    -
    364
    -
    365 [[nodiscard]] const std::string& typeName() const;
    +
    363 TypeInfo(std::type_index type_info, StringConverter conv)
    +
    364 : type_info_(type_info), converter_(conv), type_str_(BT::demangle(type_info))
    +
    365 {}
    366
    -
    367 [[nodiscard]] Any parseString(const char* str) const;
    +
    367 [[nodiscard]] const std::type_index& type() const;
    368
    -
    369 [[nodiscard]] Any parseString(const std::string& str) const;
    +
    369 [[nodiscard]] const std::string& typeName() const;
    370
    -
    371 template <typename T>
    -
    372 [[nodiscard]] Any parseString(const T&) const
    -
    373 {
    -
    374 // avoid compilation errors
    -
    375 return {};
    -
    376 }
    -
    377
    -
    378 [[nodiscard]] bool isStronglyTyped() const
    -
    379 {
    -
    380 return type_info_ != typeid(AnyTypeAllowed) && type_info_ != typeid(BT::Any);
    -
    381 }
    -
    382
    -
    383 [[nodiscard]] const StringConverter& converter() const
    -
    384 {
    -
    385 return converter_;
    -
    386 }
    -
    387
    -
    388private:
    -
    389 std::type_index type_info_;
    -
    390 StringConverter converter_;
    -
    391 std::string type_str_;
    -
    392};
    -
    393
    -
    394class PortInfo : public TypeInfo
    -
    395{
    -
    396public:
    -
    397 PortInfo(PortDirection direction = PortDirection::INOUT)
    -
    398 : TypeInfo(), direction_(direction)
    -
    399 {}
    -
    400
    -
    401 PortInfo(PortDirection direction, std::type_index type_info, StringConverter conv)
    -
    402 : TypeInfo(type_info, conv), direction_(direction)
    +
    371 [[nodiscard]] Any parseString(const char* str) const;
    +
    372
    +
    373 [[nodiscard]] Any parseString(const std::string& str) const;
    +
    374
    +
    375 template <typename T>
    +
    376 [[nodiscard]] Any parseString(const T&) const
    +
    377 {
    +
    378 // avoid compilation errors
    +
    379 return {};
    +
    380 }
    +
    381
    +
    382 [[nodiscard]] bool isStronglyTyped() const
    +
    383 {
    +
    384 return type_info_ != typeid(AnyTypeAllowed) && type_info_ != typeid(BT::Any);
    +
    385 }
    +
    386
    +
    387 [[nodiscard]] const StringConverter& converter() const
    +
    388 {
    +
    389 return converter_;
    +
    390 }
    +
    391
    +
    392private:
    +
    393 std::type_index type_info_;
    +
    394 StringConverter converter_;
    +
    395 std::string type_str_;
    +
    396};
    +
    397
    +
    398class PortInfo : public TypeInfo
    +
    399{
    +
    400public:
    +
    401 PortInfo(PortDirection direction = PortDirection::INOUT)
    +
    402 : TypeInfo(), direction_(direction)
    403 {}
    404
    -
    405 [[nodiscard]] PortDirection direction() const;
    -
    406
    -
    407 void setDescription(StringView description);
    +
    405 PortInfo(PortDirection direction, std::type_index type_info, StringConverter conv)
    +
    406 : TypeInfo(type_info, conv), direction_(direction)
    +
    407 {}
    408
    -
    409 template <typename T>
    -
    410 void setDefaultValue(const T& default_value)
    -
    411 {
    -
    412 default_value_ = Any(default_value);
    -
    413 try
    -
    414 {
    -
    415 default_value_str_ = BT::toStr(default_value);
    -
    416 }
    -
    417 catch(LogicError&)
    -
    418 {}
    -
    419 }
    -
    420
    -
    421 [[nodiscard]] const std::string& description() const;
    -
    422
    -
    423 [[nodiscard]] const Any& defaultValue() const;
    +
    409 [[nodiscard]] PortDirection direction() const;
    +
    410
    +
    411 void setDescription(StringView description);
    +
    412
    +
    413 template <typename T>
    +
    414 void setDefaultValue(const T& default_value)
    +
    415 {
    +
    416 default_value_ = Any(default_value);
    +
    417 try
    +
    418 {
    +
    419 default_value_str_ = BT::toStr(default_value);
    +
    420 }
    +
    421 catch(LogicError&)
    +
    422 {}
    +
    423 }
    424
    -
    425 [[nodiscard]] const std::string& defaultValueString() const;
    +
    425 [[nodiscard]] const std::string& description() const;
    426
    -
    427private:
    -
    428 PortDirection direction_;
    -
    429 std::string description_;
    -
    430 Any default_value_;
    -
    431 std::string default_value_str_;
    -
    432};
    -
    433
    -
    434template <typename T = AnyTypeAllowed>
    -
    435[[nodiscard]] std::pair<std::string, PortInfo> CreatePort(PortDirection direction,
    -
    436 StringView name,
    -
    437 StringView description = {})
    -
    438{
    -
    439 auto sname = static_cast<std::string>(name);
    -
    440 if(!IsAllowedPortName(sname))
    -
    441 {
    -
    442 throw RuntimeError("The name of a port must not be `name` or `ID` "
    -
    443 "and must start with an alphabetic character. "
    -
    444 "Underscore is reserved.");
    -
    445 }
    -
    446
    -
    447 std::pair<std::string, PortInfo> out;
    -
    448
    -
    449 if(std::is_same<T, void>::value)
    -
    450 {
    -
    451 out = { sname, PortInfo(direction) };
    -
    452 }
    -
    453 else
    +
    427 [[nodiscard]] const Any& defaultValue() const;
    +
    428
    +
    429 [[nodiscard]] const std::string& defaultValueString() const;
    +
    430
    +
    431private:
    +
    432 PortDirection direction_;
    +
    433 std::string description_;
    +
    434 Any default_value_;
    +
    435 std::string default_value_str_;
    +
    436};
    +
    437
    +
    438template <typename T = AnyTypeAllowed>
    +
    439[[nodiscard]] std::pair<std::string, PortInfo> CreatePort(PortDirection direction,
    +
    440 StringView name,
    +
    441 StringView description = {})
    +
    442{
    +
    443 auto sname = static_cast<std::string>(name);
    +
    444 if(!IsAllowedPortName(sname))
    +
    445 {
    +
    446 throw RuntimeError("The name of a port must not be `name` or `ID` "
    +
    447 "and must start with an alphabetic character. "
    +
    448 "Underscore is reserved.");
    +
    449 }
    +
    450
    +
    451 std::pair<std::string, PortInfo> out;
    +
    452
    +
    453 if(std::is_same<T, void>::value)
    454 {
    -
    455 out = { sname, PortInfo(direction, typeid(T), GetAnyFromStringFunctor<T>()) };
    +
    455 out = { sname, PortInfo(direction) };
    456 }
    -
    457 if(!description.empty())
    +
    457 else
    458 {
    -
    459 out.second.setDescription(description);
    +
    459 out = { sname, PortInfo(direction, typeid(T), GetAnyFromStringFunctor<T>()) };
    460 }
    -
    461 return out;
    -
    462}
    -
    463
    -
    464//----------
    -
    465/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT, ...)
    -
    466 *
    -
    467 * @param name the name of the port
    -
    468 * @param description optional human-readable description
    -
    469 */
    -
    470template <typename T = AnyTypeAllowed>
    -
    471[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    472InputPort(StringView name, StringView description = {})
    -
    473{
    -
    474 return CreatePort<T>(PortDirection::INPUT, name, description);
    -
    475}
    -
    476
    -
    477/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
    -
    478 *
    -
    479 * @param name the name of the port
    -
    480 * @param description optional human-readable description
    -
    481 */
    -
    482template <typename T = AnyTypeAllowed>
    -
    483[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    484OutputPort(StringView name, StringView description = {})
    -
    485{
    -
    486 return CreatePort<T>(PortDirection::OUTPUT, name, description);
    -
    487}
    -
    488
    -
    489/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
    -
    490 *
    -
    491 * @param name the name of the port
    -
    492 * @param description optional human-readable description
    -
    493 */
    -
    494template <typename T = AnyTypeAllowed>
    -
    495[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    496BidirectionalPort(StringView name, StringView description = {})
    -
    497{
    -
    498 return CreatePort<T>(PortDirection::INOUT, name, description);
    -
    499}
    -
    500//----------
    -
    501
    -
    502namespace details
    -
    503{
    -
    504
    -
    505template <typename T = AnyTypeAllowed, typename DefaultT = T>
    -
    506[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    507PortWithDefault(PortDirection direction, StringView name, const DefaultT& default_value,
    -
    508 StringView description)
    -
    509{
    -
    510 static_assert(IsConvertibleToString<DefaultT>() || std::is_convertible_v<T, DefaultT> ||
    -
    511 std::is_constructible_v<T, DefaultT>,
    -
    512 "The default value must be either the same of the port or string");
    -
    513
    -
    514 auto out = CreatePort<T>(direction, name, description);
    -
    515
    -
    516 if constexpr(std::is_constructible_v<T, DefaultT>)
    -
    517 {
    -
    518 out.second.setDefaultValue(T(default_value));
    -
    519 }
    -
    520 else if constexpr(IsConvertibleToString<DefaultT>())
    +
    461 if(!description.empty())
    +
    462 {
    +
    463 out.second.setDescription(description);
    +
    464 }
    +
    465 return out;
    +
    466}
    +
    467
    +
    468//----------
    +
    469/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT, ...)
    +
    470 *
    +
    471 * @param name the name of the port
    +
    472 * @param description optional human-readable description
    +
    473 */
    +
    474template <typename T = AnyTypeAllowed>
    +
    475[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    476InputPort(StringView name, StringView description = {})
    +
    477{
    +
    478 return CreatePort<T>(PortDirection::INPUT, name, description);
    +
    479}
    +
    480
    +
    481/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
    +
    482 *
    +
    483 * @param name the name of the port
    +
    484 * @param description optional human-readable description
    +
    485 */
    +
    486template <typename T = AnyTypeAllowed>
    +
    487[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    488OutputPort(StringView name, StringView description = {})
    +
    489{
    +
    490 return CreatePort<T>(PortDirection::OUTPUT, name, description);
    +
    491}
    +
    492
    +
    493/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
    +
    494 *
    +
    495 * @param name the name of the port
    +
    496 * @param description optional human-readable description
    +
    497 */
    +
    498template <typename T = AnyTypeAllowed>
    +
    499[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    500BidirectionalPort(StringView name, StringView description = {})
    +
    501{
    +
    502 return CreatePort<T>(PortDirection::INOUT, name, description);
    +
    503}
    +
    504//----------
    +
    505
    +
    506namespace details
    +
    507{
    +
    508
    +
    509template <typename T = AnyTypeAllowed, typename DefaultT = T>
    +
    510[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    511PortWithDefault(PortDirection direction, StringView name, const DefaultT& default_value,
    +
    512 StringView description)
    +
    513{
    +
    514 static_assert(IsConvertibleToString<DefaultT>() || std::is_convertible_v<T, DefaultT> ||
    +
    515 std::is_constructible_v<T, DefaultT>,
    +
    516 "The default value must be either the same of the port or string");
    +
    517
    +
    518 auto out = CreatePort<T>(direction, name, description);
    +
    519
    +
    520 if constexpr(std::is_constructible_v<T, DefaultT>)
    521 {
    -
    522 out.second.setDefaultValue(std::string(default_value));
    +
    522 out.second.setDefaultValue(T(default_value));
    523 }
    -
    524 else
    +
    524 else if constexpr(IsConvertibleToString<DefaultT>())
    525 {
    -
    526 out.second.setDefaultValue(default_value);
    +
    526 out.second.setDefaultValue(std::string(default_value));
    527 }
    -
    528 return out;
    -
    529}
    -
    530
    -
    531} // end namespace details
    -
    532
    -
    533/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT,...)
    -
    534 * It also sets the PortInfo::defaultValue()
    -
    535 *
    -
    536 * @param name the name of the port
    -
    537 * @param default_value default value of the port, either type T of BlackboardKey
    -
    538 * @param description optional human-readable description
    -
    539 */
    -
    540template <typename T = AnyTypeAllowed, typename DefaultT = T>
    -
    541[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    542InputPort(StringView name, const DefaultT& default_value, StringView description)
    -
    543{
    -
    544 return details::PortWithDefault<T, DefaultT>(PortDirection::INPUT, name, default_value,
    -
    545 description);
    -
    546}
    -
    547
    -
    548/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
    -
    549 * It also sets the PortInfo::defaultValue()
    -
    550 *
    -
    551 * @param name the name of the port
    -
    552 * @param default_value default value of the port, either type T of BlackboardKey
    -
    553 * @param description optional human-readable description
    -
    554 */
    -
    555template <typename T = AnyTypeAllowed, typename DefaultT = T>
    -
    556[[nodiscard]] inline std::pair<std::string, PortInfo>
    -
    557BidirectionalPort(StringView name, const DefaultT& default_value, StringView description)
    -
    558{
    -
    559 return details::PortWithDefault<T, DefaultT>(PortDirection::INOUT, name, default_value,
    -
    560 description);
    -
    561}
    -
    562
    -
    563/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
    -
    564 * It also sets the PortInfo::defaultValue()
    -
    565 *
    -
    566 * @param name the name of the port
    -
    567 * @param default_value default blackboard entry where the output is written
    -
    568 * @param description optional human-readable description
    -
    569 */
    -
    570template <typename T = AnyTypeAllowed>
    -
    571[[nodiscard]] inline std::pair<std::string, PortInfo> OutputPort(StringView name,
    -
    572 StringView default_value,
    -
    573 StringView description)
    -
    574{
    -
    575 if(default_value.empty() || default_value.front() != '{' || default_value.back() != '}')
    -
    576 {
    -
    577 throw LogicError("Output port can only refer to blackboard entries, i.e. use the "
    -
    578 "syntax '{port_name}'");
    -
    579 }
    -
    580 auto out = CreatePort<T>(PortDirection::OUTPUT, name, description);
    -
    581 out.second.setDefaultValue(default_value);
    -
    582 return out;
    -
    583}
    -
    584
    -
    585//----------
    -
    586
    - +
    528 else
    +
    529 {
    +
    530 out.second.setDefaultValue(default_value);
    +
    531 }
    +
    532 return out;
    +
    533}
    +
    534
    +
    535} // end namespace details
    +
    536
    +
    537/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INPUT,...)
    +
    538 * It also sets the PortInfo::defaultValue()
    +
    539 *
    +
    540 * @param name the name of the port
    +
    541 * @param default_value default value of the port, either type T of BlackboardKey
    +
    542 * @param description optional human-readable description
    +
    543 */
    +
    544template <typename T = AnyTypeAllowed, typename DefaultT = T>
    +
    545[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    546InputPort(StringView name, const DefaultT& default_value, StringView description)
    +
    547{
    +
    548 return details::PortWithDefault<T, DefaultT>(PortDirection::INPUT, name, default_value,
    +
    549 description);
    +
    550}
    +
    551
    +
    552/** Syntactic sugar to invoke CreatePort<T>(PortDirection::INOUT,...)
    +
    553 * It also sets the PortInfo::defaultValue()
    +
    554 *
    +
    555 * @param name the name of the port
    +
    556 * @param default_value default value of the port, either type T of BlackboardKey
    +
    557 * @param description optional human-readable description
    +
    558 */
    +
    559template <typename T = AnyTypeAllowed, typename DefaultT = T>
    +
    560[[nodiscard]] inline std::pair<std::string, PortInfo>
    +
    561BidirectionalPort(StringView name, const DefaultT& default_value, StringView description)
    +
    562{
    +
    563 return details::PortWithDefault<T, DefaultT>(PortDirection::INOUT, name, default_value,
    +
    564 description);
    +
    565}
    +
    566
    +
    567/** Syntactic sugar to invoke CreatePort<T>(PortDirection::OUTPUT,...)
    +
    568 * It also sets the PortInfo::defaultValue()
    +
    569 *
    +
    570 * @param name the name of the port
    +
    571 * @param default_value default blackboard entry where the output is written
    +
    572 * @param description optional human-readable description
    +
    573 */
    +
    574template <typename T = AnyTypeAllowed>
    +
    575[[nodiscard]] inline std::pair<std::string, PortInfo> OutputPort(StringView name,
    +
    576 StringView default_value,
    +
    577 StringView description)
    +
    578{
    +
    579 if(default_value.empty() || default_value.front() != '{' || default_value.back() != '}')
    +
    580 {
    +
    581 throw LogicError("Output port can only refer to blackboard entries, i.e. use the "
    +
    582 "syntax '{port_name}'");
    +
    583 }
    +
    584 auto out = CreatePort<T>(PortDirection::OUTPUT, name, description);
    +
    585 out.second.setDefaultValue(default_value);
    +
    586 return out;
    +
    587}
    588
    -
    589template <typename T, typename = void>
    -
    590struct has_static_method_providedPorts : std::false_type
    -
    591{
    -
    592};
    -
    593
    -
    594template <typename T>
    - -
    596 T, typename std::enable_if<
    -
    597 std::is_same<decltype(T::providedPorts()), PortsList>::value>::type>
    -
    598 : std::true_type
    -
    599{
    -
    600};
    -
    601
    -
    602template <typename T, typename = void>
    -
    603struct has_static_method_metadata : std::false_type
    -
    604{
    -
    605};
    -
    606
    -
    607template <typename T>
    - -
    609 T, typename std::enable_if<
    -
    610 std::is_same<decltype(T::metadata()), KeyValueVector>::value>::type>
    -
    611 : std::true_type
    -
    612{
    -
    613};
    -
    614
    -
    615template <typename T>
    -
    616[[nodiscard]] inline PortsList
    -
    617getProvidedPorts(enable_if<has_static_method_providedPorts<T>> = nullptr)
    -
    618{
    -
    619 return T::providedPorts();
    -
    620}
    -
    621
    -
    622template <typename T>
    -
    623[[nodiscard]] inline PortsList
    -
    624getProvidedPorts(enable_if_not<has_static_method_providedPorts<T>> = nullptr)
    -
    625{
    -
    626 return {};
    -
    627}
    -
    628
    -
    629using TimePoint = std::chrono::high_resolution_clock::time_point;
    -
    630using Duration = std::chrono::high_resolution_clock::duration;
    -
    631
    -
    632} // namespace BT
    +
    589//----------
    +
    590
    + +
    592
    +
    593template <typename T, typename = void>
    +
    594struct has_static_method_providedPorts : std::false_type
    +
    595{
    +
    596};
    +
    597
    +
    598template <typename T>
    + +
    600 T, typename std::enable_if<
    +
    601 std::is_same<decltype(T::providedPorts()), PortsList>::value>::type>
    +
    602 : std::true_type
    +
    603{
    +
    604};
    +
    605
    +
    606template <typename T, typename = void>
    +
    607struct has_static_method_metadata : std::false_type
    +
    608{
    +
    609};
    +
    610
    +
    611template <typename T>
    + +
    613 T, typename std::enable_if<
    +
    614 std::is_same<decltype(T::metadata()), KeyValueVector>::value>::type>
    +
    615 : std::true_type
    +
    616{
    +
    617};
    +
    618
    +
    619template <typename T>
    +
    620[[nodiscard]] inline PortsList
    +
    621getProvidedPorts(enable_if<has_static_method_providedPorts<T>> = nullptr)
    +
    622{
    +
    623 return T::providedPorts();
    +
    624}
    +
    625
    +
    626template <typename T>
    +
    627[[nodiscard]] inline PortsList
    +
    628getProvidedPorts(enable_if_not<has_static_method_providedPorts<T>> = nullptr)
    +
    629{
    +
    630 return {};
    +
    631}
    +
    632
    +
    633using TimePoint = std::chrono::high_resolution_clock::time_point;
    +
    634using Duration = std::chrono::high_resolution_clock::duration;
    +
    635
    +
    636} // namespace BT
    Definition: safe_any.hpp:37
    Definition: exceptions.h:46
    -
    Definition: basic_types.h:395
    -
    Definition: basic_types.h:348
    -
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:503
    +
    Definition: basic_types.h:399
    +
    Definition: basic_types.h:352
    +
    The SwitchNode is equivalent to a switch statement, where a certain branch (child) is executed accord...
    Definition: basic_types.h:507
    Definition: action_node.h:25
    -
    std::pair< std::string, PortInfo > BidirectionalPort(StringView name, StringView description={})
    Definition: basic_types.h:496
    +
    std::pair< std::string, PortInfo > BidirectionalPort(StringView name, StringView description={})
    Definition: basic_types.h:500
    NodeStatus
    Definition: basic_types.h:34
    Any convertFromJSON(StringView json_text, std::type_index type)
    convertFromJSON will parse a json string and use JsonExporter to convert its content to a given type....
    -
    std::pair< std::string, PortInfo > OutputPort(StringView name, StringView default_value, StringView description)
    Definition: basic_types.h:571
    +
    std::pair< std::string, PortInfo > OutputPort(StringView name, StringView default_value, StringView description)
    Definition: basic_types.h:575
    std::string toStr(BT::NodeStatus status, bool colored)
    toStr converts NodeStatus to string. Optionally colored.
    T convertFromJSON(StringView str)
    Same as the non template version, but with automatic casting.
    Definition: basic_types.h:104
    NodeType
    Enumerates the possible types of nodes.
    Definition: basic_types.h:21
    -
    std::pair< std::string, PortInfo > InputPort(StringView name, const DefaultT &default_value, StringView description)
    Definition: basic_types.h:542
    -
    std::pair< std::string, PortInfo > OutputPort(StringView name, StringView description={})
    Definition: basic_types.h:484
    -
    std::pair< std::string, PortInfo > InputPort(StringView name, StringView description={})
    Definition: basic_types.h:472
    -
    std::pair< std::string, PortInfo > BidirectionalPort(StringView name, const DefaultT &default_value, StringView description)
    Definition: basic_types.h:557
    -
    std::string toStr(const T &value)
    toStr is the reverse operation of convertFromString.
    Definition: basic_types.h:252
    +
    std::pair< std::string, PortInfo > InputPort(StringView name, const DefaultT &default_value, StringView description)
    Definition: basic_types.h:546
    +
    std::pair< std::string, PortInfo > OutputPort(StringView name, StringView description={})
    Definition: basic_types.h:488
    +
    std::pair< std::string, PortInfo > InputPort(StringView name, StringView description={})
    Definition: basic_types.h:476
    +
    std::pair< std::string, PortInfo > BidirectionalPort(StringView name, const DefaultT &default_value, StringView description)
    Definition: basic_types.h:561
    +
    std::string toStr(const T &value)
    toStr is the reverse operation of convertFromString.
    Definition: basic_types.h:256
    T convertFromString(StringView str)
    Definition: basic_types.h:122
    Definition: basic_types.h:88
    -
    Definition: basic_types.h:336
    -
    Definition: basic_types.h:604
    -
    Definition: basic_types.h:591
    +
    Definition: basic_types.h:340
    +
    Definition: basic_types.h:608
    +
    Definition: basic_types.h:595
    From ef7a4681b6ecc52436b4a33f17fa1387f43f6a6d Mon Sep 17 00:00:00 2001 From: facontidavide Date: Sun, 20 Jul 2025 09:07:25 +0000 Subject: [PATCH 6/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@8d47d397e792d9bcc756048272e1a3a42baef?= =?UTF-8?q?6fd=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- d0/dc6/sequence__node_8h_source.html | 18 +-- .../class_b_t_1_1_sequence_node-members.html | 117 +++++++++--------- d9/ddd/class_b_t_1_1_sequence_node.html | 15 ++- 3 files changed, 80 insertions(+), 70 deletions(-) diff --git a/d0/dc6/sequence__node_8h_source.html b/d0/dc6/sequence__node_8h_source.html index cc459946a..c7138cadd 100644 --- a/d0/dc6/sequence__node_8h_source.html +++ b/d0/dc6/sequence__node_8h_source.html @@ -135,15 +135,17 @@
    40
    41 virtual void halt() override;
    42
    -
    43private:
    +
    43protected:
    44 size_t current_child_idx_;
    -
    45 size_t skipped_count_ = 0;
    -
    46 bool asynch_ = false;
    -
    47
    -
    48 virtual BT::NodeStatus tick() override;
    -
    49};
    -
    50
    -
    51} // namespace BT
    +
    45
    +
    46private:
    +
    47 size_t skipped_count_ = 0;
    +
    48 bool asynch_ = false;
    +
    49
    +
    50 virtual BT::NodeStatus tick() override;
    +
    51};
    +
    52
    +
    53} // namespace BT
    Definition: control_node.h:22
    The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING,...
    Definition: sequence_node.h:35
    virtual void halt() override
    diff --git a/d4/de8/class_b_t_1_1_sequence_node-members.html b/d4/de8/class_b_t_1_1_sequence_node-members.html index 9dfb9b431..509b7b86e 100644 --- a/d4/de8/class_b_t_1_1_sequence_node-members.html +++ b/d4/de8/class_b_t_1_1_sequence_node-members.html @@ -104,64 +104,65 @@
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    keythe name of the port.
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
     
    template<typename T >
    Expected< TimestampgetInputStamped (const std::string &key, T &destination) const
     getInputStamped is similar to getInput(dey, destination), but it returne also the Timestamp object, that can be used to check if a value was updated and when.
     getInputStamped is similar to getInput(dey, destination), but it returns also the Timestamp object, that can be used to check if a value was updated and when.
     
    template<typename T >
    Expected< T > getInput (const std::string &key) const
    std::vector< double > convertFromString< std::vector< double > > (StringView str)
     
    +template<>
    std::vector< bool > convertFromString< std::vector< bool > > (StringView str)
     
    template<>
    std::vector< std::string > convertFromString< std::vector< std::string > > (StringView str)
    config() constBT::TreeNode
    config() (defined in BT::TreeNode)BT::TreeNodeprotected
    ControlNode(const std::string &name, const NodeConfig &config) (defined in BT::ControlNode)BT::ControlNode
    emitWakeUpSignal()BT::TreeNode
    executeTick()BT::TreeNodevirtual
    fullPath() constBT::TreeNode
    getInput(const std::string &key, T &destination) constBT::TreeNodeinline
    getInput(const std::string &key) constBT::TreeNodeinline
    getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
    getInputStamped(const std::string &key) constBT::TreeNodeinline
    getLockedPortContent(const std::string &key)BT::TreeNode
    getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
    getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
    halt() overrideBT::SequenceNodevirtual
    haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
    haltChildren()BT::ControlNode
    haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
    haltNode() (defined in BT::TreeNode)BT::TreeNode
    Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
    isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
    isHalted() const (defined in BT::TreeNode)BT::TreeNode
    modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
    name() constBT::TreeNode
    operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
    operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
    parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
    postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
    PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
    PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
    preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
    PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
    PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
    Ptr typedef (defined in BT::TreeNode)BT::TreeNode
    registrationName() constBT::TreeNode
    requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
    resetChildren()BT::ControlNode
    resetStatus()BT::TreeNodeprotected
    SequenceNode(const std::string &name, bool make_async=false) (defined in BT::SequenceNode)BT::SequenceNode
    setOutput(const std::string &key, const T &value)BT::TreeNodeinline
    setPostTickFunction(PostTickCallback callback)BT::TreeNode
    setPreTickFunction(PreTickCallback callback)BT::TreeNode
    setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
    setStatus(NodeStatus new_status)BT::TreeNodeprotected
    setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
    setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
    status() const (defined in BT::TreeNode)BT::TreeNode
    StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
    StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
    StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
    stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
    subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
    TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
    TreeNode(std::string name, NodeConfig config)BT::TreeNode
    TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
    TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
    type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
    UID() constBT::TreeNode
    waitValidStatus()BT::TreeNode
    ~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
    ~SequenceNode() override=default (defined in BT::SequenceNode)BT::SequenceNodevirtual
    ~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
    current_child_idx_ (defined in BT::SequenceNode)BT::SequenceNodeprotected
    emitWakeUpSignal()BT::TreeNode
    executeTick()BT::TreeNodevirtual
    fullPath() constBT::TreeNode
    getInput(const std::string &key, T &destination) constBT::TreeNodeinline
    getInput(const std::string &key) constBT::TreeNodeinline
    getInputStamped(const std::string &key, T &destination) constBT::TreeNodeinline
    getInputStamped(const std::string &key) constBT::TreeNodeinline
    getLockedPortContent(const std::string &key)BT::TreeNode
    getRawPortValue(const std::string &key) const (defined in BT::TreeNode)BT::TreeNode
    getRemappedKey(StringView port_name, StringView remapped_port) (defined in BT::TreeNode)BT::TreeNodestatic
    halt() overrideBT::SequenceNodevirtual
    haltChild(size_t i) (defined in BT::ControlNode)BT::ControlNode
    haltChildren()BT::ControlNode
    haltChildren(size_t first) (defined in BT::ControlNode)BT::ControlNode
    haltNode() (defined in BT::TreeNode)BT::TreeNode
    Instantiate(const std::string &name, const NodeConfig &config, ExtraArgs... args)BT::TreeNodeinlinestatic
    isBlackboardPointer(StringView str, StringView *stripped_pointer=nullptr)BT::TreeNodestatic
    isHalted() const (defined in BT::TreeNode)BT::TreeNode
    modifyPortsRemapping(const PortsRemapping &new_remapping) (defined in BT::TreeNode)BT::TreeNodeprotected
    name() constBT::TreeNode
    operator=(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
    operator=(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
    parseString(const std::string &str) const (defined in BT::TreeNode)BT::TreeNodeprotected
    postConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
    PostScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
    PostTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
    preConditionsScripts() (defined in BT::TreeNode)BT::TreeNodeprotected
    PreScripts typedef (defined in BT::TreeNode)BT::TreeNodeprotected
    PreTickCallback typedef (defined in BT::TreeNode)BT::TreeNode
    Ptr typedef (defined in BT::TreeNode)BT::TreeNode
    registrationName() constBT::TreeNode
    requiresWakeUp() const (defined in BT::TreeNode)BT::TreeNode
    resetChildren()BT::ControlNode
    resetStatus()BT::TreeNodeprotected
    SequenceNode(const std::string &name, bool make_async=false) (defined in BT::SequenceNode)BT::SequenceNode
    setOutput(const std::string &key, const T &value)BT::TreeNodeinline
    setPostTickFunction(PostTickCallback callback)BT::TreeNode
    setPreTickFunction(PreTickCallback callback)BT::TreeNode
    setRegistrationID(StringView ID) (defined in BT::TreeNode)BT::TreeNodeprotected
    setStatus(NodeStatus new_status)BT::TreeNodeprotected
    setTickMonitorCallback(TickMonitorCallback callback)BT::TreeNode
    setWakeUpInstance(std::shared_ptr< WakeUpSignal > instance) (defined in BT::TreeNode)BT::TreeNodeprotected
    status() const (defined in BT::TreeNode)BT::TreeNode
    StatusChangeCallback typedef (defined in BT::TreeNode)BT::TreeNode
    StatusChangeSignal typedef (defined in BT::TreeNode)BT::TreeNode
    StatusChangeSubscriber typedef (defined in BT::TreeNode)BT::TreeNode
    stripBlackboardPointer(StringView str) (defined in BT::TreeNode)BT::TreeNodestatic
    subscribeToStatusChange(StatusChangeCallback callback)BT::TreeNode
    TickMonitorCallback typedef (defined in BT::TreeNode)BT::TreeNode
    TreeNode(std::string name, NodeConfig config)BT::TreeNode
    TreeNode(const TreeNode &other)=delete (defined in BT::TreeNode)BT::TreeNode
    TreeNode(TreeNode &&other) noexcept (defined in BT::TreeNode)BT::TreeNode
    type() const override final (defined in BT::ControlNode)BT::ControlNodeinlinevirtual
    UID() constBT::TreeNode
    waitValidStatus()BT::TreeNode
    ~ControlNode() override=default (defined in BT::ControlNode)BT::ControlNodevirtual
    ~SequenceNode() override=default (defined in BT::SequenceNode)BT::SequenceNodevirtual
    ~TreeNode() (defined in BT::TreeNode)BT::TreeNodevirtual
    diff --git a/d9/ddd/class_b_t_1_1_sequence_node.html b/d9/ddd/class_b_t_1_1_sequence_node.html index 5734a561d..83751f6ac 100644 --- a/d9/ddd/class_b_t_1_1_sequence_node.html +++ b/d9/ddd/class_b_t_1_1_sequence_node.html @@ -92,6 +92,7 @@
    BT::SequenceNode Class Reference
    @@ -250,6 +251,16 @@ bool requiresWakeUp () const   + + + + + + +

    +Protected Attributes

    +size_t current_child_idx_
     
    - Protected Attributes inherited from BT::ControlNode
    +std::vector< TreeNode * > children_nodes_
     
    @@ -329,10 +340,6 @@ template<typename T > - - -

    Additional Inherited Members

    - Public Types inherited from BT::TreeNode
    parseString (const std::string &str) const
     
    - Protected Attributes inherited from BT::ControlNode
    -std::vector< TreeNode * > children_nodes_
     

    Detailed Description

    The SequenceNode is used to tick children in an ordered sequence. If any child returns RUNNING, previous children will NOT be ticked again.

    From 13eca64bf7e0e3d9a39bba4fcfcfd1b86512449f Mon Sep 17 00:00:00 2001 From: facontidavide Date: Tue, 30 Sep 2025 21:50:25 +0000 Subject: [PATCH 7/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@58ed0ece368395c43e5e88b4059345c8de444?= =?UTF-8?q?fb5=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- d1/d00/wildcards_8hpp.html | 127 ++++++++++++++++ d1/d00/wildcards_8hpp_source.html | 167 ++++++++++++++++++++++ dir_1573ea42ce800d213ff17f25e5e834ef.html | 3 + dir_1573ea42ce800d213ff17f25e5e834ef.js | 3 +- files.html | 29 ++-- navtreedata.js | 4 +- navtreeindex0.js | 98 ++++++------- navtreeindex1.js | 84 +++++------ navtreeindex2.js | 48 ++++--- search/all_17.js | 7 +- search/files_0.js | 4 + search/searchdata.js | 33 +++-- 12 files changed, 458 insertions(+), 149 deletions(-) create mode 100644 d1/d00/wildcards_8hpp.html create mode 100644 d1/d00/wildcards_8hpp_source.html create mode 100644 search/files_0.js diff --git a/d1/d00/wildcards_8hpp.html b/d1/d00/wildcards_8hpp.html new file mode 100644 index 000000000..b96ff9750 --- /dev/null +++ b/d1/d00/wildcards_8hpp.html @@ -0,0 +1,127 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/wildcards.hpp File Reference + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    wildcards.hpp File Reference
    +
    +
    + +

    Simple wildcard matching function supporting '*' and '?'. +More...

    + +

    Go to the source code of this file.

    + + + + +

    +Functions

    +bool wildcards_match (std::string_view str, std::string_view pattern)
     
    +

    Detailed Description

    +

    Simple wildcard matching function supporting '*' and '?'.

    +

    This file provides a function to match strings against patterns containing wildcard characters:

      +
    • '*' matches any sequence of characters (including the empty sequence)
    • +
    • '?' matches any single character
    • +
    +

    The implementation uses recursion with memoization to efficiently handle overlapping subproblems.

    +
    +
    + + + + diff --git a/d1/d00/wildcards_8hpp_source.html b/d1/d00/wildcards_8hpp_source.html new file mode 100644 index 000000000..f0f68391c --- /dev/null +++ b/d1/d00/wildcards_8hpp_source.html @@ -0,0 +1,167 @@ + + + + + + + +BehaviorTree: include/behaviortree_cpp/utils/wildcards.hpp Source File + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    BehaviorTree +
    +
    Core Library to create and execute Behavior Trees
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    wildcards.hpp
    +
    +
    +Go to the documentation of this file.
    1#pragma once
    +
    2
    +
    3/**
    +
    4 * @file wildcards.hpp
    +
    5 * @brief Simple wildcard matching function supporting '*' and '?'.
    +
    6 *
    +
    7 * This file provides a function to match strings against patterns containing
    +
    8 * wildcard characters:
    +
    9 * - '*' matches any sequence of characters (including the empty sequence)
    +
    10 * - '?' matches any single character
    +
    11 *
    +
    12 * The implementation uses recursion with memoization to efficiently handle
    +
    13 * overlapping subproblems.
    +
    14 */
    +
    15
    +
    16inline bool wildcards_match(std::string_view str, std::string_view pattern)
    +
    17{
    +
    18 const size_t n = str.size();
    +
    19 const size_t m = pattern.size();
    +
    20
    +
    21 // Pre-allocate memo table: -1 = not computed, 0 = false, 1 = true
    +
    22 std::vector<int8_t> memo((n + 1) * (m + 1), -1);
    +
    23
    +
    24 auto get_memo = [&](size_t i, size_t j) -> int8_t& { return memo[i * (m + 1) + j]; };
    +
    25
    +
    26 auto match = [&](auto& match_ref, size_t i, size_t j) -> bool {
    +
    27 if(j == m)
    +
    28 {
    +
    29 return i == n;
    +
    30 }
    +
    31
    +
    32 int8_t& cached = get_memo(i, j);
    +
    33 if(cached != -1)
    +
    34 {
    +
    35 return cached == 1;
    +
    36 }
    +
    37
    +
    38 bool result;
    +
    39 if(pattern[j] == '*')
    +
    40 {
    +
    41 result = match_ref(match_ref, i, j + 1);
    +
    42 if(!result && i < n)
    +
    43 {
    +
    44 result = match_ref(match_ref, i + 1, j);
    +
    45 }
    +
    46 }
    +
    47 else if(i < n && (pattern[j] == '?' || pattern[j] == str[i]))
    +
    48 {
    +
    49 result = match_ref(match_ref, i + 1, j + 1);
    +
    50 }
    +
    51 else
    +
    52 {
    +
    53 result = false;
    +
    54 }
    +
    55
    +
    56 cached = result ? 1 : 0;
    +
    57 return result;
    +
    58 };
    +
    59
    +
    60 return match(match, 0, 0);
    +
    61}
    +
    +
    + + + + diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef.html b/dir_1573ea42ce800d213ff17f25e5e834ef.html index 1ba9dee93..a85567e59 100644 --- a/dir_1573ea42ce800d213ff17f25e5e834ef.html +++ b/dir_1573ea42ce800d213ff17f25e5e834ef.html @@ -127,6 +127,9 @@   file  wakeup_signal.hpp [code]   +file  wildcards.hpp [code] + Simple wildcard matching function supporting '*' and '?'.
    diff --git a/dir_1573ea42ce800d213ff17f25e5e834ef.js b/dir_1573ea42ce800d213ff17f25e5e834ef.js index 885a158de..d8134ce0d 100644 --- a/dir_1573ea42ce800d213ff17f25e5e834ef.js +++ b/dir_1573ea42ce800d213ff17f25e5e834ef.js @@ -10,5 +10,6 @@ var dir_1573ea42ce800d213ff17f25e5e834ef = [ "simple_string.hpp", "dd/d3d/simple__string_8hpp_source.html", null ], [ "strcat.hpp", "d7/d3f/strcat_8hpp_source.html", null ], [ "timer_queue.h", "d2/dbf/timer__queue_8h_source.html", null ], - [ "wakeup_signal.hpp", "d2/dd4/wakeup__signal_8hpp_source.html", null ] + [ "wakeup_signal.hpp", "d2/dd4/wakeup__signal_8hpp_source.html", null ], + [ "wildcards.hpp", "d1/d00/wildcards_8hpp.html", null ] ]; \ No newline at end of file diff --git a/files.html b/files.html index 5d641b8c6..3ca505031 100644 --- a/files.html +++ b/files.html @@ -162,20 +162,21 @@  strcat.hpp  timer_queue.h  wakeup_signal.hpp - action_node.h - basic_types.h - behavior_tree.h - blackboard.h - bt_factory.h - bt_parser.h - condition_node.h - control_node.h - decorator_node.h - exceptions.h - json_export.h - leaf_node.h - tree_node.h - xml_parsing.h + wildcards.hppSimple wildcard matching function supporting '*' and '?' + action_node.h + basic_types.h + behavior_tree.h + blackboard.h + bt_factory.h + bt_parser.h + condition_node.h + control_node.h + decorator_node.h + exceptions.h + json_export.h + leaf_node.h + tree_node.h + xml_parsing.h diff --git a/navtreedata.js b/navtreedata.js index ca8025ff1..c52ffdc65 100644 --- a/navtreedata.js +++ b/navtreedata.js @@ -56,8 +56,8 @@ var NAVTREE = var NAVTREEINDEX = [ "annotated.html", -"d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html", -"db/d85/bt__parser_8h_source.html" +"d5/dd6/shared__library_8h_source.html", +"db/d81/bt__factory_8h_source.html" ]; var SYNCONMSG = 'click to disable panel synchronisation'; diff --git a/navtreeindex0.js b/navtreeindex0.js index b4644d10e..c0129a541 100644 --- a/navtreeindex0.js +++ b/navtreeindex0.js @@ -4,8 +4,8 @@ var NAVTREEINDEX0 = "classes.html":[1,1], "d0/d1f/class_b_t_1_1_stateful_action_node.html":[0,0,0,66], "d0/d1f/class_b_t_1_1_stateful_action_node.html":[1,0,0,69], -"d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1":[1,0,0,69,2], "d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1":[0,0,0,66,2], +"d0/d1f/class_b_t_1_1_stateful_action_node.html#a38b0c30c93f98b098881eff45e914aa1":[1,0,0,69,2], "d0/d1f/class_b_t_1_1_stateful_action_node.html#a8206f68b132a2cf682e4189e19e65ba7":[0,0,0,66,0], "d0/d1f/class_b_t_1_1_stateful_action_node.html#a8206f68b132a2cf682e4189e19e65ba7":[1,0,0,69,0], "d0/d1f/class_b_t_1_1_stateful_action_node.html#aa7233f6c3a9854e0c626af687be0de4e":[0,0,0,66,1], @@ -15,68 +15,70 @@ var NAVTREEINDEX0 = "d0/d1f/class_b_t_1_1_stateful_action_node.html#af8c33bb580fc1e14fa3b70da06020701":[1,0,0,69,3], "d0/d1f/class_b_t_1_1_stateful_action_node.html#af8c33bb580fc1e14fa3b70da06020701":[0,0,0,66,3], "d0/d26/struct_b_t_1_1_grammar_1_1_expression_1_1math__prefix.html":[1,0,0,2,3,8], -"d0/d34/class_b_t_1_1_type_info.html":[0,0,0,82], "d0/d34/class_b_t_1_1_type_info.html":[1,0,0,85], +"d0/d34/class_b_t_1_1_type_info.html":[0,0,0,82], "d0/d51/class_b_t_1_1_blackboard.html":[1,0,0,11], "d0/d51/class_b_t_1_1_blackboard.html":[0,0,0,8], "d0/d51/class_b_t_1_1_blackboard.html#a0733879e096350bf7f77d1fb583d325b":[1,0,0,11,4], "d0/d51/class_b_t_1_1_blackboard.html#a0733879e096350bf7f77d1fb583d325b":[0,0,0,8,4], -"d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02":[0,0,0,8,2], "d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02":[1,0,0,11,2], +"d0/d51/class_b_t_1_1_blackboard.html#a445c51ea100151e1256b4a469c77fd02":[0,0,0,8,2], "d0/d51/class_b_t_1_1_blackboard.html#ad536070fc0cc82a4fa1c53e3b2222e58":[1,0,0,11,3], "d0/d51/class_b_t_1_1_blackboard.html#ad536070fc0cc82a4fa1c53e3b2222e58":[0,0,0,8,3], -"d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e":[0,0,0,8,1], "d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e":[1,0,0,11,1], +"d0/d51/class_b_t_1_1_blackboard.html#afd93b989bbb7add02e649a039c0c0b5e":[0,0,0,8,1], "d0/d54/inverter__node_8h_source.html":[2,0,0,0,2,4], "d0/d55/bt__minitrace__logger_8h_source.html":[2,0,0,0,4,3], "d0/d56/struct_b_t_1_1has__static__method__provided_ports.html":[0,0,0,24], "d0/d56/struct_b_t_1_1has__static__method__provided_ports.html":[1,0,0,27], -"d0/d59/struct_b_t_1_1_timestamp.html":[1,0,0,80], "d0/d59/struct_b_t_1_1_timestamp.html":[0,0,0,77], +"d0/d59/struct_b_t_1_1_timestamp.html":[1,0,0,80], "d0/d5d/if__then__else__node_8h_source.html":[2,0,0,0,1,1], "d0/d64/class_b_t_1_1_json_exporter.html":[1,0,0,31], "d0/d64/class_b_t_1_1_json_exporter.html":[0,0,0,28], "d0/d64/class_b_t_1_1_json_exporter.html#a049aa9812d72bd8af80fe153c51d72fc":[0,0,0,28,5], "d0/d64/class_b_t_1_1_json_exporter.html#a049aa9812d72bd8af80fe153c51d72fc":[1,0,0,31,5], -"d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6":[1,0,0,31,3], "d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6":[0,0,0,28,3], -"d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199":[0,0,0,28,2], +"d0/d64/class_b_t_1_1_json_exporter.html#a14d1b56ed46cbafea4527b4d37eaa8f6":[1,0,0,31,3], "d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199":[1,0,0,31,2], -"d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a":[1,0,0,31,6], +"d0/d64/class_b_t_1_1_json_exporter.html#a4be57de0487a1678a25008a3d8906199":[0,0,0,28,2], "d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a":[0,0,0,28,6], +"d0/d64/class_b_t_1_1_json_exporter.html#a7b63a0b886479881ba2a5fade474b84a":[1,0,0,31,6], "d0/d64/class_b_t_1_1_json_exporter.html#a984e954eb7bacad6d9a719d3b1eb8ec7":[1,0,0,31,1], "d0/d64/class_b_t_1_1_json_exporter.html#a984e954eb7bacad6d9a719d3b1eb8ec7":[0,0,0,28,1], -"d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c":[1,0,0,31,4], "d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c":[0,0,0,28,4], -"d0/d64/class_b_t_1_1_json_exporter.html#addc80e35fbb70a74dda8b42eda3e20a8":[1,0,0,31,0], +"d0/d64/class_b_t_1_1_json_exporter.html#ad16bccfe2a740cc35525c5880071043c":[1,0,0,31,4], "d0/d64/class_b_t_1_1_json_exporter.html#addc80e35fbb70a74dda8b42eda3e20a8":[0,0,0,28,0], +"d0/d64/class_b_t_1_1_json_exporter.html#addc80e35fbb70a74dda8b42eda3e20a8":[1,0,0,31,0], "d0/d88/retry__node_8h_source.html":[2,0,0,0,2,8], -"d0/d9c/class_b_t_1_1_always_failure_node.html":[0,0,0,2], "d0/d9c/class_b_t_1_1_always_failure_node.html":[1,0,0,5], +"d0/d9c/class_b_t_1_1_always_failure_node.html":[0,0,0,2], "d0/dc6/sequence__node_8h_source.html":[2,0,0,0,1,7], "d0/de8/struct_b_t_1_1_ast_1_1_environment.html":[1,0,0,0,0], "d0/dee/struct_b_t_1_1_grammar_1_1_expression_1_1comparison.html":[1,0,0,2,3,4], +"d1/d00/wildcards_8hpp.html":[2,0,0,0,6,11], +"d1/d00/wildcards_8hpp_source.html":[2,0,0,0,6,11], "d1/d0e/bt__file__logger__v2_8h_source.html":[2,0,0,0,4,2], "d1/d31/parallel__all__node_8h_source.html":[2,0,0,0,1,3], "d1/d4f/repeat__node_8h_source.html":[2,0,0,0,2,7], -"d1/d52/class_b_t_1_1_std_cout_logger.html":[0,0,0,68], "d1/d52/class_b_t_1_1_std_cout_logger.html":[1,0,0,71], -"d1/d73/class_b_t_1_1_signal.html":[0,0,0,59], +"d1/d52/class_b_t_1_1_std_cout_logger.html":[0,0,0,68], "d1/d73/class_b_t_1_1_signal.html":[1,0,0,62], +"d1/d73/class_b_t_1_1_signal.html":[0,0,0,59], "d1/d77/class_b_t_1_1_unset_blackboard_node.html":[0,0,0,83], "d1/d77/class_b_t_1_1_unset_blackboard_node.html":[1,0,0,86], -"d1/d79/class_b_t_1_1_tree.html":[1,0,0,81], "d1/d79/class_b_t_1_1_tree.html":[0,0,0,78], +"d1/d79/class_b_t_1_1_tree.html":[1,0,0,81], "d1/d79/class_b_t_1_1_tree.html#a39a85b09e4e7203ab586e8012f381d73":[1,0,0,81,4], "d1/d79/class_b_t_1_1_tree.html#a39a85b09e4e7203ab586e8012f381d73":[0,0,0,78,4], -"d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea":[1,0,0,81,1], "d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea":[0,0,0,78,1], -"d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b":[1,0,0,81,5], +"d1/d79/class_b_t_1_1_tree.html#aa1dbe3e49107dc7f193b4e5ff12ff2ea":[1,0,0,81,1], "d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b":[0,0,0,78,5], -"d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5":[1,0,0,81,3], +"d1/d79/class_b_t_1_1_tree.html#ab89741eacae45161d75c7d22ded4228b":[1,0,0,81,5], "d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5":[0,0,0,78,3], -"d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54":[1,0,0,81,2], +"d1/d79/class_b_t_1_1_tree.html#ac9f6b556b8395132be0b14bc4d784be5":[1,0,0,81,3], "d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54":[0,0,0,78,2], +"d1/d79/class_b_t_1_1_tree.html#ae31f344252dd19177240917777b57e54":[1,0,0,81,2], "d1/d7b/class_b_t_1_1_entry_updated_decorator.html":[0,0,0,16], "d1/d7b/class_b_t_1_1_entry_updated_decorator.html":[1,0,0,19], "d1/da6/struct_b_t_1_1has__static__method__metadata.html":[1,0,0,25], @@ -84,38 +86,38 @@ var NAVTREEINDEX0 = "d1/da6/tree__node_8h_source.html":[2,0,0,0,19], "d1/dbb/abstract__logger_8h_source.html":[2,0,0,0,4,0], "d1/dc4/struct_b_t_1_1_grammar_1_1_expression_1_1conditional.html":[1,0,0,2,3,5], -"d1/de2/class_b_t_1_1_leaf_node.html":[0,0,0,30], "d1/de2/class_b_t_1_1_leaf_node.html":[1,0,0,33], -"d1/de7/class_b_t_1_1_decorator_node.html":[0,0,0,13], +"d1/de2/class_b_t_1_1_leaf_node.html":[0,0,0,30], "d1/de7/class_b_t_1_1_decorator_node.html":[1,0,0,16], -"d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882":[0,0,0,13,3], +"d1/de7/class_b_t_1_1_decorator_node.html":[0,0,0,13], "d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882":[1,0,0,16,3], -"d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a":[0,0,0,13,2], +"d1/de7/class_b_t_1_1_decorator_node.html#a4b971192d88c85964907bd4b47dbf882":[0,0,0,13,3], "d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a":[1,0,0,16,2], -"d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d":[0,0,0,13,1], +"d1/de7/class_b_t_1_1_decorator_node.html#a7f5e3f60c5eff1b2742dcd61d928df3a":[0,0,0,13,2], "d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d":[1,0,0,16,1], +"d1/de7/class_b_t_1_1_decorator_node.html#aac8c7957daa10f0b13666283ef774c6d":[0,0,0,13,1], "d1/de7/class_b_t_1_1_decorator_node.html#add55473b513501079f3064dcac8c8dfc":[0,0,0,13,0], "d1/de7/class_b_t_1_1_decorator_node.html#add55473b513501079f3064dcac8c8dfc":[1,0,0,16,0], -"d1/dee/class_b_t_1_1_parallel_node.html":[1,0,0,41], "d1/dee/class_b_t_1_1_parallel_node.html":[0,0,0,38], -"d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a":[0,0,0,38,0], +"d1/dee/class_b_t_1_1_parallel_node.html":[1,0,0,41], "d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a":[1,0,0,41,0], +"d1/dee/class_b_t_1_1_parallel_node.html#a0c36107c5f2569c9e3328c4bc8662f2a":[0,0,0,38,0], "d1/def/class_b_t_1_1_retry_node_typo.html":[1,0,0,52], "d1/def/class_b_t_1_1_retry_node_typo.html":[0,0,0,49], -"d2/d2b/class_b_t_1_1_tree_observer.html":[1,0,0,84], "d2/d2b/class_b_t_1_1_tree_observer.html":[0,0,0,81], +"d2/d2b/class_b_t_1_1_tree_observer.html":[1,0,0,84], "d2/d39/json__export_8h_source.html":[2,0,0,0,17], "d2/d5d/struct_b_t_1_1_ast_1_1_expr_name.html":[1,0,0,0,7], -"d2/d61/class_b_t_1_1_threaded_action.html":[1,0,0,77], "d2/d61/class_b_t_1_1_threaded_action.html":[0,0,0,74], -"d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1":[1,0,0,77,0], +"d2/d61/class_b_t_1_1_threaded_action.html":[1,0,0,77], "d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1":[0,0,0,74,0], -"d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a":[0,0,0,74,1], +"d2/d61/class_b_t_1_1_threaded_action.html#a063739422e68d88b771f3fe3349e1ab1":[1,0,0,77,0], "d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a":[1,0,0,77,1], -"d2/d7b/class_b_t_1_1_file_logger2.html":[1,0,0,21], +"d2/d61/class_b_t_1_1_threaded_action.html#af543496442dd8bafc91f807fa772998a":[0,0,0,74,1], "d2/d7b/class_b_t_1_1_file_logger2.html":[0,0,0,18], -"d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e":[1,0,0,21,1], +"d2/d7b/class_b_t_1_1_file_logger2.html":[1,0,0,21], "d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e":[0,0,0,18,1], +"d2/d7b/class_b_t_1_1_file_logger2.html#a9ac3260fad3e980f093f0f55e0c6436e":[1,0,0,21,1], "d2/d8d/namespace_b_t.html":[0,0,0], "d2/d8d/namespace_b_t.html#a02848b586dc8265d5d51be939401626d":[0,0,0,104], "d2/d8d/namespace_b_t.html#a13321f9dceb6909198966973042a13a1":[0,0,0,95], @@ -172,45 +174,45 @@ var NAVTREEINDEX0 = "d2/dd4/wakeup__signal_8hpp_source.html":[2,0,0,0,6,10], "d2/ddd/class_b_t_1_1_shared_library.html":[0,0,0,58], "d2/ddd/class_b_t_1_1_shared_library.html":[1,0,0,61], -"d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a":[0,0,0,58,6], "d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a":[1,0,0,61,6], -"d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e":[0,0,0,58,2], +"d2/ddd/class_b_t_1_1_shared_library.html#a488bf73639f076bb4bbe6d7bb903881a":[0,0,0,58,6], "d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e":[1,0,0,61,2], -"d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f":[1,0,0,61,8], +"d2/ddd/class_b_t_1_1_shared_library.html#a48f2dd000a04818f10d151300892119e":[0,0,0,58,2], "d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f":[0,0,0,58,8], +"d2/ddd/class_b_t_1_1_shared_library.html#a4ae13d714a3bac4df9534a49a1da6f7f":[1,0,0,61,8], "d2/ddd/class_b_t_1_1_shared_library.html#a5ab4789785c0f37caaf1955bab03b034":[0,0,0,58,5], "d2/ddd/class_b_t_1_1_shared_library.html#a5ab4789785c0f37caaf1955bab03b034":[1,0,0,61,5], -"d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763":[0,0,0,58,7], "d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763":[1,0,0,61,7], +"d2/ddd/class_b_t_1_1_shared_library.html#a79ab0e4030576779db5edea6cf12e763":[0,0,0,58,7], "d2/ddd/class_b_t_1_1_shared_library.html#aab93b1e125fbc01b896b4cf6ef019fcf":[0,0,0,58,3], "d2/ddd/class_b_t_1_1_shared_library.html#aab93b1e125fbc01b896b4cf6ef019fcf":[1,0,0,61,3], -"d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac":[0,0,0,58,1], "d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac":[1,0,0,61,1], -"d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3":[1,0,0,61,4], +"d2/ddd/class_b_t_1_1_shared_library.html#ab505f9eb6d36b38ba74d496047d77fac":[0,0,0,58,1], "d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3":[0,0,0,58,4], +"d2/ddd/class_b_t_1_1_shared_library.html#ade65992bafd0d0c0809c63d2385804b3":[1,0,0,61,4], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cf":[1,0,0,61,0], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cf":[0,0,0,58,0], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5130e85a4b3e349814a493d8947a5c91":[1,0,0,61,0,0], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5130e85a4b3e349814a493d8947a5c91":[0,0,0,58,0,0], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5cc31a63af764ead3372762681b625f8":[1,0,0,61,0,1], "d2/ddd/class_b_t_1_1_shared_library.html#aef39dde7e353d0432f2869ffa9fcd8cfa5cc31a63af764ead3372762681b625f8":[0,0,0,58,0,1], -"d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011":[1,0,0,61,9], "d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011":[0,0,0,58,9], +"d2/ddd/class_b_t_1_1_shared_library.html#afe8e2a5b531966723889e6bfc6ac4011":[1,0,0,61,9], "d2/ded/class_b_t_1_1_inverter_node.html":[0,0,0,27], "d2/ded/class_b_t_1_1_inverter_node.html":[1,0,0,30], "d2/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1assignment.html":[1,0,0,2,3,0], -"d3/d02/class_b_t_1_1_parallel_all_node.html":[0,0,0,37], "d3/d02/class_b_t_1_1_parallel_all_node.html":[1,0,0,40], +"d3/d02/class_b_t_1_1_parallel_all_node.html":[0,0,0,37], "d3/d02/class_b_t_1_1_parallel_all_node.html#a8d277cfa32781567a3ef8b967ce28c70":[0,0,0,37,0], "d3/d02/class_b_t_1_1_parallel_all_node.html#a8d277cfa32781567a3ef8b967ce28c70":[1,0,0,40,0], "d3/d22/bt__cout__logger_8h_source.html":[2,0,0,0,4,1], "d3/d23/struct_b_t_1_1_tree_1_1_subtree.html":[1,0,0,81,0], "d3/d23/struct_b_t_1_1_tree_1_1_subtree.html":[0,0,0,78,0], "d3/d2f/switch__node_8h_source.html":[2,0,0,0,1,9], -"d3/d37/class_b_t_1_1_simple_decorator_node.html":[1,0,0,65], "d3/d37/class_b_t_1_1_simple_decorator_node.html":[0,0,0,62], -"d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29":[1,0,0,65,0], +"d3/d37/class_b_t_1_1_simple_decorator_node.html":[1,0,0,65], "d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29":[0,0,0,62,0], +"d3/d37/class_b_t_1_1_simple_decorator_node.html#a5a32c9308fd1fff81b60aeb88aaf2d29":[1,0,0,65,0], "d3/d46/struct_b_t_1_1_grammar_1_1_expression_1_1bit__and.html":[1,0,0,2,3,1], "d3/d60/platform_8hpp_source.html":[2,0,0,0,6,3], "d3/d86/script__node_8h_source.html":[2,0,0,0,0,4], @@ -219,11 +221,11 @@ var NAVTREEINDEX0 = "d3/d96/bt__observer_8h_source.html":[2,0,0,0,4,4], "d3/db1/decorator__node_8h_source.html":[2,0,0,0,15], "d3/dbc/fallback__node_8h_source.html":[2,0,0,0,1,0], -"d3/de2/class_b_t_1_1_action_node_base.html":[0,0,0,1], "d3/de2/class_b_t_1_1_action_node_base.html":[1,0,0,4], +"d3/de2/class_b_t_1_1_action_node_base.html":[0,0,0,1], "d4/d03/exceptions_8h_source.html":[2,0,0,0,16], -"d4/d20/class_b_t_1_1_timeout_node.html":[1,0,0,78], "d4/d20/class_b_t_1_1_timeout_node.html":[0,0,0,75], +"d4/d20/class_b_t_1_1_timeout_node.html":[1,0,0,78], "d4/d53/safe__any_8hpp_source.html":[2,0,0,0,6,4], "d4/d56/class_b_t_1_1_delay_node.html":[0,0,0,14], "d4/d56/class_b_t_1_1_delay_node.html":[1,0,0,17], @@ -231,8 +233,8 @@ var NAVTREEINDEX0 = "d4/d56/class_b_t_1_1_delay_node.html#ac1442f8346a289ae98dd82be5e0c85a6":[1,0,0,17,0], "d4/d8c/class_b_t_1_1_force_failure_node.html":[0,0,0,19], "d4/d8c/class_b_t_1_1_force_failure_node.html":[1,0,0,22], -"d4/d98/class_b_t_1_1_locked_ptr.html":[1,0,0,34], "d4/d98/class_b_t_1_1_locked_ptr.html":[0,0,0,31], +"d4/d98/class_b_t_1_1_locked_ptr.html":[1,0,0,34], "d4/da9/struct_b_t_1_1_grammar_1_1_integer_1_1integer.html":[1,0,0,2,4,0], "d4/dac/script__condition_8h_source.html":[2,0,0,0,0,3], "d4/dd1/locked__reference_8hpp_source.html":[2,0,0,0,6,2], @@ -242,12 +244,10 @@ var NAVTREEINDEX0 = "d5/d7a/bt__flatbuffer__helper_8h_source.html":[2,0,0,0,3,0], "d5/d7f/class_b_t_1_1_test_node.html":[0,0,0,72], "d5/d7f/class_b_t_1_1_test_node.html":[1,0,0,75], -"d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26":[0,0,0,72,0], "d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26":[1,0,0,75,0], -"d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d":[0,0,0,72,1], +"d5/d7f/class_b_t_1_1_test_node.html#a97800d6ad0d094c9f8dc44a58b381e26":[0,0,0,72,0], "d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d":[1,0,0,75,1], -"d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887":[1,0,0,75,2], +"d5/d7f/class_b_t_1_1_test_node.html#abb5c2599dfb941076e24de3c11fc8d3d":[0,0,0,72,1], "d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887":[0,0,0,72,2], -"d5/dd6/shared__library_8h_source.html":[2,0,0,0,6,5], -"d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html":[0,0,0,25] +"d5/d7f/class_b_t_1_1_test_node.html#ac5cd14d2bc2d9aa0047d08224a080887":[1,0,0,75,2] }; diff --git a/navtreeindex1.js b/navtreeindex1.js index b5d15932f..266806898 100644 --- a/navtreeindex1.js +++ b/navtreeindex1.js @@ -1,5 +1,7 @@ var NAVTREEINDEX1 = { +"d5/dd6/shared__library_8h_source.html":[2,0,0,0,6,5], +"d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html":[0,0,0,25], "d6/d07/struct_b_t_1_1has__static__method__provided_ports_3_01_t_00_01typename_01std_1_1enable__if_3_01s8432b5486894de4ea455ef2f702667bd.html":[1,0,0,28], "d6/d18/struct_b_t_1_1_ast_1_1_expr_comparison.html":[1,0,0,0,4], "d6/d2e/updated__action_8h_source.html":[2,0,0,0,0,9], @@ -7,28 +9,28 @@ var NAVTREEINDEX1 = "d6/d58/struct_b_t_1_1_test_node_config.html":[0,0,0,73], "d6/d58/struct_b_t_1_1_test_node_config.html#a0dc6a6937186ebddc37a52b06d8e3fbd":[1,0,0,76,5], "d6/d58/struct_b_t_1_1_test_node_config.html#a0dc6a6937186ebddc37a52b06d8e3fbd":[0,0,0,73,5], -"d6/d58/struct_b_t_1_1_test_node_config.html#a18fd03863da6bdc40a2453bb9d2b96fc":[1,0,0,76,2], "d6/d58/struct_b_t_1_1_test_node_config.html#a18fd03863da6bdc40a2453bb9d2b96fc":[0,0,0,73,2], +"d6/d58/struct_b_t_1_1_test_node_config.html#a18fd03863da6bdc40a2453bb9d2b96fc":[1,0,0,76,2], "d6/d58/struct_b_t_1_1_test_node_config.html#a24e48bd8764c98aeb4ea762333e19d39":[1,0,0,76,0], "d6/d58/struct_b_t_1_1_test_node_config.html#a24e48bd8764c98aeb4ea762333e19d39":[0,0,0,73,0], "d6/d58/struct_b_t_1_1_test_node_config.html#a87934348c6c5ba67e18e31ad5014961a":[1,0,0,76,4], "d6/d58/struct_b_t_1_1_test_node_config.html#a87934348c6c5ba67e18e31ad5014961a":[0,0,0,73,4], -"d6/d58/struct_b_t_1_1_test_node_config.html#a98806d4cf69c3d88a72d4e5c6230b60d":[0,0,0,73,1], "d6/d58/struct_b_t_1_1_test_node_config.html#a98806d4cf69c3d88a72d4e5c6230b60d":[1,0,0,76,1], -"d6/d58/struct_b_t_1_1_test_node_config.html#abb7ef3fd05d82f075a08f8326a0d79d3":[0,0,0,73,3], +"d6/d58/struct_b_t_1_1_test_node_config.html#a98806d4cf69c3d88a72d4e5c6230b60d":[0,0,0,73,1], "d6/d58/struct_b_t_1_1_test_node_config.html#abb7ef3fd05d82f075a08f8326a0d79d3":[1,0,0,76,3], -"d6/d78/class_b_t_1_1_repeat_node.html":[0,0,0,47], +"d6/d58/struct_b_t_1_1_test_node_config.html#abb7ef3fd05d82f075a08f8326a0d79d3":[0,0,0,73,3], "d6/d78/class_b_t_1_1_repeat_node.html":[1,0,0,50], +"d6/d78/class_b_t_1_1_repeat_node.html":[0,0,0,47], "d6/dae/run__once__node_8h_source.html":[2,0,0,0,2,9], "d6/db1/struct_b_t_1_1_grammar_1_1stmt.html":[1,0,0,2,8], "d6/dc8/script__precondition_8h_source.html":[2,0,0,0,2,10], "d6/dcc/test__node_8h_source.html":[2,0,0,0,0,7], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html":[0,0,0,7], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html":[1,0,0,10], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9":[0,0,0,7,1], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html":[0,0,0,7], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9":[1,0,0,10,1], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd":[1,0,0,10,21], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a085551b236a8aa8c7652ad93450342b9":[0,0,0,7,1], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd":[0,0,0,7,21], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a0b099f547a268fcfa9c64a582b421fbd":[1,0,0,10,21], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a12912a657b84952fb4df8ebd720c7ad2":[1,0,0,10,12], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a12912a657b84952fb4df8ebd720c7ad2":[0,0,0,7,12], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a16d9ccac815fb2dd9c479829bab6d9e3":[1,0,0,10,8], @@ -37,8 +39,8 @@ var NAVTREEINDEX1 = "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a24353332279b7df6a8fcb910ded5ffcb":[1,0,0,10,17], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a2b08c778188748bc26a2d44618b0125e":[0,0,0,7,4], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a2b08c778188748bc26a2d44618b0125e":[1,0,0,10,4], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61":[0,0,0,7,6], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61":[1,0,0,10,6], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a3ba4831fbfd2a66d843e47e4cef8bb61":[0,0,0,7,6], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a615a01e5e1651049e28340f2ed42381e":[1,0,0,10,13], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a615a01e5e1651049e28340f2ed42381e":[0,0,0,7,13], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#a6628bf3b28a82fe2b3562de6b01a42eb":[1,0,0,10,11], @@ -61,34 +63,34 @@ var NAVTREEINDEX1 = "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aad83e88bb1ceb49194702d0be3849f70":[0,0,0,7,0], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ab7ac27ba005c61dc52735bb7e2918bdd":[1,0,0,10,9], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ab7ac27ba005c61dc52735bb7e2918bdd":[0,0,0,7,9], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622":[0,0,0,7,7], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622":[1,0,0,10,7], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ac90771a825bc241f4e68efa8fa718622":[0,0,0,7,7], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#acfccfb4a4fe2d97133cb009d52692455":[1,0,0,10,16], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#acfccfb4a4fe2d97133cb009d52692455":[0,0,0,7,16], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ad1f21dc9192e84ed014f871575575705":[1,0,0,10,5], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#ad1f21dc9192e84ed014f871575575705":[0,0,0,7,5], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412":[1,0,0,10,22], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412":[0,0,0,7,22], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#aeb7054a2c4594a1be38a0d67a7f3f412":[1,0,0,10,22], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#af2c7e0e5cdad5a1816a7862a321767e3":[0,0,0,7,24], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#af2c7e0e5cdad5a1816a7862a321767e3":[1,0,0,10,24], -"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18":[1,0,0,10,14], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18":[0,0,0,7,14], +"d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afbb2d21b84ed10a7a6f3592ee6d82b18":[1,0,0,10,14], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afd433de9fff5bd77eac748e3a657ca5c":[0,0,0,7,15], "d6/dcd/class_b_t_1_1_behavior_tree_factory.html#afd433de9fff5bd77eac748e3a657ca5c":[1,0,0,10,15], -"d6/ddb/class_b_t_1_1_control_node.html":[0,0,0,11], "d6/ddb/class_b_t_1_1_control_node.html":[1,0,0,14], +"d6/ddb/class_b_t_1_1_control_node.html":[0,0,0,11], "d6/ddb/class_b_t_1_1_control_node.html#a18ffb6a67c9a2bd663486b7b2b75edf3":[1,0,0,14,3], "d6/ddb/class_b_t_1_1_control_node.html#a18ffb6a67c9a2bd663486b7b2b75edf3":[0,0,0,11,3], -"d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f":[0,0,0,11,0], "d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f":[1,0,0,14,0], -"d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3":[1,0,0,14,1], +"d6/ddb/class_b_t_1_1_control_node.html#a7a0eef4ae2da07156bcc49f304bbbf4f":[0,0,0,11,0], "d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3":[0,0,0,11,1], -"d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c":[0,0,0,11,2], +"d6/ddb/class_b_t_1_1_control_node.html#a99fcae0869f2a0d792af43987c5921f3":[1,0,0,14,1], "d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c":[1,0,0,14,2], -"d6/dee/struct_b_t_1_1_protected_queue.html":[1,0,0,46], +"d6/ddb/class_b_t_1_1_control_node.html#ae100fb6cf56095d9b2f09d8e08a7fb9c":[0,0,0,11,2], "d6/dee/struct_b_t_1_1_protected_queue.html":[0,0,0,43], -"d6/dfa/struct_b_t_1_1_stamped_value.html":[0,0,0,65], +"d6/dee/struct_b_t_1_1_protected_queue.html":[1,0,0,46], "d6/dfa/struct_b_t_1_1_stamped_value.html":[1,0,0,68], +"d6/dfa/struct_b_t_1_1_stamped_value.html":[0,0,0,65], "d7/d10/control__node_8h_source.html":[2,0,0,0,14], "d7/d26/updated__decorator_8h_source.html":[2,0,0,0,2,13], "d7/d3a/class_b_t_1_1_pop_from_queue.html":[1,0,0,43], @@ -96,12 +98,12 @@ var NAVTREEINDEX1 = "d7/d3a/class_b_t_1_1_pop_from_queue.html#aceea54c073e940b1f2956783f86802b7":[0,0,0,40,0], "d7/d3a/class_b_t_1_1_pop_from_queue.html#aceea54c073e940b1f2956783f86802b7":[1,0,0,43,0], "d7/d3f/strcat_8hpp_source.html":[2,0,0,0,6,8], -"d7/d4f/class_b_t_1_1_set_blackboard_node.html":[0,0,0,57], "d7/d4f/class_b_t_1_1_set_blackboard_node.html":[1,0,0,60], +"d7/d4f/class_b_t_1_1_set_blackboard_node.html":[0,0,0,57], "d7/d54/class_b_t_1_1_while_do_else_node.html":[1,0,0,88], "d7/d54/class_b_t_1_1_while_do_else_node.html":[0,0,0,85], -"d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21":[0,0,0,85,0], "d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21":[1,0,0,88,0], +"d7/d54/class_b_t_1_1_while_do_else_node.html#a8a7df11b044391f850282bf4111dfa21":[0,0,0,85,0], "d7/d62/struct_b_t_1_1_grammar_1_1_any_value.html":[1,0,0,2,1], "d7/d68/action__node_8h_source.html":[2,0,0,0,7], "d7/d86/struct_b_t_1_1_grammar_1_1_expression.html":[1,0,0,2,3], @@ -112,20 +114,20 @@ var NAVTREEINDEX1 = "d7/da7/class_b_t_1_1_simple_action_node.html":[1,0,0,63], "d7/da7/class_b_t_1_1_simple_action_node.html#adde389e53daea5f861962918fdad825c":[1,0,0,63,0], "d7/da7/class_b_t_1_1_simple_action_node.html#adde389e53daea5f861962918fdad825c":[0,0,0,60,0], -"d7/db8/class_b_t_1_1_force_success_node.html":[1,0,0,23], "d7/db8/class_b_t_1_1_force_success_node.html":[0,0,0,20], +"d7/db8/class_b_t_1_1_force_success_node.html":[1,0,0,23], "d7/dd5/class_b_t_1_1_precondition_node.html":[1,0,0,45], "d7/dd5/class_b_t_1_1_precondition_node.html":[0,0,0,42], "d7/df1/delay__node_8h_source.html":[2,0,0,0,2,1], -"d7/df4/class_b_t_1_1_any.html":[0,0,0,4], "d7/df4/class_b_t_1_1_any.html":[1,0,0,7], +"d7/df4/class_b_t_1_1_any.html":[0,0,0,4], "d7/dfa/struct_b_t_1_1_grammar_1_1_expression_1_1expected__operand.html":[1,0,0,2,3,6], "d8/d05/class_b_t_1_1_x_m_l_parser.html":[0,0,0,86], "d8/d05/class_b_t_1_1_x_m_l_parser.html":[1,0,0,89], "d8/d08/class_b_t_1_1_if_then_else_node.html":[1,0,0,29], "d8/d08/class_b_t_1_1_if_then_else_node.html":[0,0,0,26], -"d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11":[1,0,0,29,0], "d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11":[0,0,0,26,0], +"d8/d08/class_b_t_1_1_if_then_else_node.html#a197f02047d5dbcde51f52cf4e1702e11":[1,0,0,29,0], "d8/d1a/groot2__publisher_8h_source.html":[2,0,0,0,4,7], "d8/d39/signal_8h_source.html":[2,0,0,0,6,6], "d8/d5e/class_b_t_1_1_port_info.html":[0,0,0,41], @@ -146,10 +148,10 @@ var NAVTREEINDEX1 = "d8/dff/consume__queue_8h_source.html":[2,0,0,0,2,0], "d9/d04/any__types_8hpp_source.html":[2,0,0,0,5,0], "d9/d0c/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_false.html":[1,0,0,2,2,0], -"d9/d24/class_b_t_1_1details_1_1_semaphore.html":[1,0,0,1,0], "d9/d24/class_b_t_1_1details_1_1_semaphore.html":[0,0,0,0,0], -"d9/d33/class_b_t_1_1_sleep_node.html":[0,0,0,63], +"d9/d24/class_b_t_1_1details_1_1_semaphore.html":[1,0,0,1,0], "d9/d33/class_b_t_1_1_sleep_node.html":[1,0,0,66], +"d9/d33/class_b_t_1_1_sleep_node.html":[0,0,0,63], "d9/d33/class_b_t_1_1_sleep_node.html#abb3c35a140738ca2d43d1f5498972435":[0,0,0,63,2], "d9/d33/class_b_t_1_1_sleep_node.html#abb3c35a140738ca2d43d1f5498972435":[1,0,0,66,2], "d9/d33/class_b_t_1_1_sleep_node.html#af323f98260e2854ff5beb56963df0652":[0,0,0,63,0], @@ -160,21 +162,21 @@ var NAVTREEINDEX1 = "d9/d8c/class_b_t_1_1_queue_size.html":[1,0,0,47], "d9/d8c/class_b_t_1_1_queue_size.html#a51bfd9e2052697530afe7433b21da0fc":[0,0,0,44,0], "d9/d8c/class_b_t_1_1_queue_size.html#a51bfd9e2052697530afe7433b21da0fc":[1,0,0,47,0], -"d9/dbb/class_b_t_1_1_status_change_logger.html":[0,0,0,67], "d9/dbb/class_b_t_1_1_status_change_logger.html":[1,0,0,70], -"d9/ddd/class_b_t_1_1_sequence_node.html":[0,0,0,55], +"d9/dbb/class_b_t_1_1_status_change_logger.html":[0,0,0,67], "d9/ddd/class_b_t_1_1_sequence_node.html":[1,0,0,58], -"d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716":[0,0,0,55,0], +"d9/ddd/class_b_t_1_1_sequence_node.html":[0,0,0,55], "d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716":[1,0,0,58,0], +"d9/ddd/class_b_t_1_1_sequence_node.html#afb7243d9a0a171fb01aa91420a53a716":[0,0,0,55,0], "da/d1e/basic__types_8h_source.html":[2,0,0,0,8], "da/d21/struct_b_t_1_1_grammar_1_1_integer_1_1invalid__suffix.html":[1,0,0,2,4,1], "da/d26/class_b_t_1_1_script_condition.html":[1,0,0,56], "da/d26/class_b_t_1_1_script_condition.html":[0,0,0,53], "da/d27/struct_b_t_1_1_ast_1_1_expr_binary_arithmetic.html":[1,0,0,0,3], -"da/d2f/class_b_t_1_1_wake_up_signal.html":[0,0,0,84], "da/d2f/class_b_t_1_1_wake_up_signal.html":[1,0,0,87], -"da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff":[1,0,0,87,0], +"da/d2f/class_b_t_1_1_wake_up_signal.html":[0,0,0,84], "da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff":[0,0,0,84,0], +"da/d2f/class_b_t_1_1_wake_up_signal.html#a643961042d9375e3b6bda918a3cd4bff":[1,0,0,87,0], "da/d35/class_b_t_1_1_runtime_error.html":[0,0,0,51], "da/d35/class_b_t_1_1_runtime_error.html":[1,0,0,54], "da/d52/condition__node_8h_source.html":[2,0,0,0,13], @@ -186,8 +188,8 @@ var NAVTREEINDEX1 = "da/d61/class_b_t_1_1_tree_node.html#a07d0876cfd608b690650e930d1a629cc":[1,0,0,82,3], "da/d61/class_b_t_1_1_tree_node.html#a15ea206d20defd764035481ceda1de3e":[1,0,0,82,19], "da/d61/class_b_t_1_1_tree_node.html#a15ea206d20defd764035481ceda1de3e":[0,0,0,79,19], -"da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11":[1,0,0,82,11], "da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11":[0,0,0,79,11], +"da/d61/class_b_t_1_1_tree_node.html#a220f3387673ef71c3e47ea320b106c11":[1,0,0,82,11], "da/d61/class_b_t_1_1_tree_node.html#a4fd8498410d2344cc9af272ea97dfd09":[0,0,0,79,8], "da/d61/class_b_t_1_1_tree_node.html#a4fd8498410d2344cc9af272ea97dfd09":[1,0,0,82,8], "da/d61/class_b_t_1_1_tree_node.html#a74618849a9199ab568eb451d580e20fc":[1,0,0,82,13], @@ -196,34 +198,34 @@ var NAVTREEINDEX1 = "da/d61/class_b_t_1_1_tree_node.html#a7d17e161369b535793ed9c6cc0a6a0ac":[0,0,0,79,1], "da/d61/class_b_t_1_1_tree_node.html#a8874bae4b946a2ea6d1b3db1a696cf6a":[0,0,0,79,12], "da/d61/class_b_t_1_1_tree_node.html#a8874bae4b946a2ea6d1b3db1a696cf6a":[1,0,0,82,12], -"da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36":[1,0,0,82,20], "da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36":[0,0,0,79,20], -"da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58":[1,0,0,82,4], +"da/d61/class_b_t_1_1_tree_node.html#a891f5c8b5bfe306eba4111beff799c36":[1,0,0,82,20], "da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58":[0,0,0,79,4], -"da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b":[0,0,0,79,5], +"da/d61/class_b_t_1_1_tree_node.html#a95a3e3c4fab4f50756ba08529685cd58":[1,0,0,82,4], "da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b":[1,0,0,82,5], -"da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6":[1,0,0,82,7], +"da/d61/class_b_t_1_1_tree_node.html#a97f9603998b33e7a6609e311d5bbc61b":[0,0,0,79,5], "da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6":[0,0,0,79,7], +"da/d61/class_b_t_1_1_tree_node.html#ab7b260cce963ad5b77c6fbb07d5d85b6":[1,0,0,82,7], "da/d61/class_b_t_1_1_tree_node.html#ab98b671336cdc496028b52112e21a0ed":[0,0,0,79,16], "da/d61/class_b_t_1_1_tree_node.html#ab98b671336cdc496028b52112e21a0ed":[1,0,0,82,16], -"da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a":[0,0,0,79,9], "da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a":[1,0,0,82,9], -"da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c":[1,0,0,82,10], +"da/d61/class_b_t_1_1_tree_node.html#ac089e3035b5cb8daf7537e6d86485e3a":[0,0,0,79,9], "da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c":[0,0,0,79,10], +"da/d61/class_b_t_1_1_tree_node.html#ac639db3ba4cca6f420b953f36350923c":[1,0,0,82,10], "da/d61/class_b_t_1_1_tree_node.html#ae921e5800a82b7591cb711c710d49725":[1,0,0,82,6], "da/d61/class_b_t_1_1_tree_node.html#ae921e5800a82b7591cb711c710d49725":[0,0,0,79,6], "da/d61/class_b_t_1_1_tree_node.html#aebc95976e7923c048021b553c56489b5":[1,0,0,82,15], "da/d61/class_b_t_1_1_tree_node.html#aebc95976e7923c048021b553c56489b5":[0,0,0,79,15], -"da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e":[0,0,0,79,0], "da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e":[1,0,0,82,0], +"da/d61/class_b_t_1_1_tree_node.html#af001be7dac6922889712e8c5f107787e":[0,0,0,79,0], "da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6":[1,0,0,82,21], "da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6":[0,0,0,79,21], "da/d61/class_b_t_1_1_tree_node.html#afb4606479245153e183b0530e517b3cc":[0,0,0,79,18], "da/d61/class_b_t_1_1_tree_node.html#afb4606479245153e183b0530e517b3cc":[1,0,0,82,18], "da/d61/class_b_t_1_1_tree_node.html#afd27f6b1a6b692b113eccc29957deb31":[0,0,0,79,17], "da/d61/class_b_t_1_1_tree_node.html#afd27f6b1a6b692b113eccc29957deb31":[1,0,0,82,17], -"da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72":[0,0,0,79,14], "da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72":[1,0,0,82,14], +"da/d61/class_b_t_1_1_tree_node.html#afddcc0047aceb3e2d4116c072078be72":[0,0,0,79,14], "da/d65/set__blackboard__node_8h_source.html":[2,0,0,0,0,5], "da/d6d/subtree__node_8h_source.html":[2,0,0,0,2,11], "da/d73/class_b_t_1_1_sync_action_node.html":[0,0,0,71], @@ -235,8 +237,8 @@ var NAVTREEINDEX1 = "da/d75/bt__sqlite__logger_8h_source.html":[2,0,0,0,4,5], "da/d76/manual__node_8h_source.html":[2,0,0,0,1,2], "da/dd4/struct_b_t_1_1_grammar_1_1_expression_1_1bit__or.html":[1,0,0,2,3,2], -"da/df5/class_b_t_1_1_groot2_publisher.html":[1,0,0,24], "da/df5/class_b_t_1_1_groot2_publisher.html":[0,0,0,21], +"da/df5/class_b_t_1_1_groot2_publisher.html":[1,0,0,24], "da/df5/class_b_t_1_1_groot2_publisher.html#aa8266d54c77499c29fca5622941a5583":[0,0,0,21,0], "da/df5/class_b_t_1_1_groot2_publisher.html#aa8266d54c77499c29fca5622941a5583":[1,0,0,24,0], "db/d0e/force__failure__node_8h_source.html":[2,0,0,0,2,2], @@ -247,7 +249,5 @@ var NAVTREEINDEX1 = "db/d6b/struct_b_t_1_1_ast_1_1_expr_if.html":[1,0,0,0,5], "db/d6e/struct_b_t_1_1_ast_1_1_expr_base.html":[1,0,0,0,2], "db/d78/struct_b_t_1_1_ast_1_1_expr_assignment.html":[1,0,0,0,1], -"db/d7e/leaf__node_8h_source.html":[2,0,0,0,18], -"db/d81/bt__factory_8h_source.html":[2,0,0,0,11], -"db/d84/pop__from__queue_8hpp_source.html":[2,0,0,0,0,2] +"db/d7e/leaf__node_8h_source.html":[2,0,0,0,18] }; diff --git a/navtreeindex2.js b/navtreeindex2.js index 7baeb8c83..f06a6ba64 100644 --- a/navtreeindex2.js +++ b/navtreeindex2.js @@ -1,47 +1,49 @@ var NAVTREEINDEX2 = { +"db/d81/bt__factory_8h_source.html":[2,0,0,0,11], +"db/d84/pop__from__queue_8hpp_source.html":[2,0,0,0,0,2], "db/d85/bt__parser_8h_source.html":[2,0,0,0,12], "db/db9/struct_b_t_1_1_grammar_1_1_real_1_1invalid__suffix.html":[1,0,0,2,7,0], "dc/d04/class_b_t_1_1_reactive_fallback.html":[0,0,0,45], "dc/d04/class_b_t_1_1_reactive_fallback.html":[1,0,0,48], "dc/d05/struct_b_t_1_1_monitor_1_1_request_header.html":[1,0,0,3,2], -"dc/d0b/class_b_t_1_1_manual_selector_node.html":[1,0,0,37], "dc/d0b/class_b_t_1_1_manual_selector_node.html":[0,0,0,34], -"dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf":[1,0,0,37,0], +"dc/d0b/class_b_t_1_1_manual_selector_node.html":[1,0,0,37], "dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf":[0,0,0,34,0], -"dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html":[0,0,0,23], +"dc/d0b/class_b_t_1_1_manual_selector_node.html#a486a9ad894d3a5916d9a9003e477bbbf":[1,0,0,37,0], "dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html":[1,0,0,26], +"dc/d0f/struct_b_t_1_1has__static__method__metadata_3_01_t_00_01typename_01std_1_1enable__if_3_01std_1_1065d166f8cc1b3c83dbdb1c2230484f1.html":[0,0,0,23], "dc/d13/struct_b_t_1_1_grammar_1_1_real.html":[1,0,0,2,7], "dc/d26/struct_b_t_1_1_node_config.html":[1,0,0,39], "dc/d26/struct_b_t_1_1_node_config.html":[0,0,0,36], "dc/d27/unset__blackboard__node_8h_source.html":[2,0,0,0,0,8], -"dc/d49/class_b_t_1_1_simple_condition_node.html":[0,0,0,61], "dc/d49/class_b_t_1_1_simple_condition_node.html":[1,0,0,64], -"dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad":[1,0,0,64,0], +"dc/d49/class_b_t_1_1_simple_condition_node.html":[0,0,0,61], "dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad":[0,0,0,61,0], +"dc/d49/class_b_t_1_1_simple_condition_node.html#ade661435cabc970f4a331b5111c152ad":[1,0,0,64,0], "dc/d4e/script__parser_8hpp_source.html":[2,0,0,0,5,2], -"dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html":[0,0,0,18,0], "dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html":[1,0,0,21,0], -"dc/d6c/struct_b_t_1_1_tree_node_manifest.html":[1,0,0,83], +"dc/d6c/struct_b_t_1_1_file_logger2_1_1_transition.html":[0,0,0,18,0], "dc/d6c/struct_b_t_1_1_tree_node_manifest.html":[0,0,0,80], +"dc/d6c/struct_b_t_1_1_tree_node_manifest.html":[1,0,0,83], "dc/d6e/struct_b_t_1_1_monitor_1_1_hook.html":[1,0,0,3,0], "dc/d73/struct_b_t_1_1_monitor_1_1_reply_header.html":[1,0,0,3,1], "dc/d75/struct_b_t_1_1_grammar_1_1_integer.html":[1,0,0,2,4], -"dc/da6/class_b_t_1_1_fallback_node.html":[1,0,0,20], "dc/da6/class_b_t_1_1_fallback_node.html":[0,0,0,17], +"dc/da6/class_b_t_1_1_fallback_node.html":[1,0,0,20], "dc/da6/class_b_t_1_1_fallback_node.html#a254b111f7bde893dd711327f4879e290":[1,0,0,20,0], "dc/da6/class_b_t_1_1_fallback_node.html#a254b111f7bde893dd711327f4879e290":[0,0,0,17,0], -"dc/dae/class_b_t_1_1_switch_node.html":[1,0,0,73], "dc/dae/class_b_t_1_1_switch_node.html":[0,0,0,70], -"dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb":[1,0,0,73,0], +"dc/dae/class_b_t_1_1_switch_node.html":[1,0,0,73], "dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb":[0,0,0,70,0], +"dc/dae/class_b_t_1_1_switch_node.html#aa7c2861279a1505a713cade9012d96eb":[1,0,0,73,0], "dc/df7/struct_b_t_1_1_grammar_1_1_expression_1_1bit__prefix.html":[1,0,0,2,3,3], "dc/dfc/class_b_t_1_1_condition_node.html":[1,0,0,12], "dc/dfc/class_b_t_1_1_condition_node.html":[0,0,0,9], "dc/dfc/class_b_t_1_1_condition_node.html#ad6dc34ea7ed32903800f9384416e1bac":[0,0,0,9,0], "dc/dfc/class_b_t_1_1_condition_node.html#ad6dc34ea7ed32903800f9384416e1bac":[1,0,0,12,0], -"dd/d32/class_b_t_1_1_loop_node.html":[0,0,0,33], "dd/d32/class_b_t_1_1_loop_node.html":[1,0,0,36], +"dd/d32/class_b_t_1_1_loop_node.html":[0,0,0,33], "dd/d32/class_b_t_1_1_loop_node.html#a0797d0b208dc24644a8d51cbc7606cd7":[0,0,0,33,0], "dd/d32/class_b_t_1_1_loop_node.html#a0797d0b208dc24644a8d51cbc7606cd7":[1,0,0,36,0], "dd/d3d/simple__string_8hpp_source.html":[2,0,0,0,6,7], @@ -56,32 +58,32 @@ var NAVTREEINDEX2 = "dd/dce/struct_b_t_1_1_ast_1_1_expr_literal.html":[1,0,0,0,6], "dd/de4/class_b_t_1_1_retry_node.html":[1,0,0,51], "dd/de4/class_b_t_1_1_retry_node.html":[0,0,0,48], -"dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678":[1,0,0,51,0], "dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678":[0,0,0,48,0], -"de/d22/class_b_t_1_1_keep_running_until_failure_node.html":[1,0,0,32], +"dd/de4/class_b_t_1_1_retry_node.html#a760b77b3c1744cc00c86f122abb6a678":[1,0,0,51,0], "de/d22/class_b_t_1_1_keep_running_until_failure_node.html":[0,0,0,29], +"de/d22/class_b_t_1_1_keep_running_until_failure_node.html":[1,0,0,32], "de/d34/class_safe_any_1_1_simple_string.html":[1,0,1,0], -"de/d4f/class_b_t_1_1_minitrace_logger.html":[0,0,0,35], "de/d4f/class_b_t_1_1_minitrace_logger.html":[1,0,0,38], -"de/d69/class_b_t_1_1_sequence_with_memory.html":[1,0,0,59], +"de/d4f/class_b_t_1_1_minitrace_logger.html":[0,0,0,35], "de/d69/class_b_t_1_1_sequence_with_memory.html":[0,0,0,56], +"de/d69/class_b_t_1_1_sequence_with_memory.html":[1,0,0,59], "de/d69/class_b_t_1_1_sequence_with_memory.html#a1337e21debce05cc2fc2fe4481663a22":[0,0,0,56,0], "de/d69/class_b_t_1_1_sequence_with_memory.html#a1337e21debce05cc2fc2fe4481663a22":[1,0,0,59,0], "de/d78/convert__impl_8hpp_source.html":[2,0,0,0,6,0], "de/d79/groot2__protocol_8h_source.html":[2,0,0,0,4,6], "de/d7b/struct_b_t_1_1_ast_1_1_expr_unary_arithmetic.html":[1,0,0,0,8], -"de/d9f/class_b_t_1_1_reactive_sequence.html":[0,0,0,46], "de/d9f/class_b_t_1_1_reactive_sequence.html":[1,0,0,49], +"de/d9f/class_b_t_1_1_reactive_sequence.html":[0,0,0,46], "de/da6/class_b_t_1_1_parser.html":[0,0,0,39], "de/da6/class_b_t_1_1_parser.html":[1,0,0,42], "de/dc7/struct_b_t_1_1_grammar_1_1_expression_1_1logical.html":[1,0,0,2,3,7], "de/dc9/struct_b_t_1_1_grammar_1_1_expression_1_1string__concat.html":[1,0,0,2,3,11], "de/dfa/while__do__else__node_8h_source.html":[2,0,0,0,1,10], "df/d2d/struct_b_t_1_1_grammar_1_1__xid__start__character.html":[1,0,0,2,0], -"df/d34/class_b_t_1_1_sub_tree_node.html":[0,0,0,69], "df/d34/class_b_t_1_1_sub_tree_node.html":[1,0,0,72], -"df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b":[0,0,0,69,0], +"df/d34/class_b_t_1_1_sub_tree_node.html":[0,0,0,69], "df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b":[1,0,0,72,0], +"df/d34/class_b_t_1_1_sub_tree_node.html#a34293e9b2e63195d6839384bbba5e96b":[0,0,0,69,0], "df/d4b/struct_b_t_1_1_grammar_1_1_string_literal.html":[1,0,0,2,9], "df/d4c/class_b_t_1_1_timer_queue.html":[0,0,0,76], "df/d4c/class_b_t_1_1_timer_queue.html":[1,0,0,79], @@ -91,25 +93,25 @@ var NAVTREEINDEX2 = "df/d4c/class_b_t_1_1_timer_queue.html#a5564436f2a8e071bfdf59be5daea279a":[1,0,0,79,1], "df/d4c/class_b_t_1_1_timer_queue.html#a663265e8c343946094e5d16a1b59d483":[0,0,0,76,2], "df/d4c/class_b_t_1_1_timer_queue.html#a663265e8c343946094e5d16a1b59d483":[1,0,0,79,2], -"df/d4f/class_b_t_1_1_logic_error.html":[1,0,0,35], "df/d4f/class_b_t_1_1_logic_error.html":[0,0,0,32], +"df/d4f/class_b_t_1_1_logic_error.html":[1,0,0,35], "df/d72/struct_b_t_1_1_grammar_1_1_expression_1_1math__product.html":[1,0,0,2,3,9], -"df/d93/class_b_t_1_1_behavior_tree_exception.html":[1,0,0,9], "df/d93/class_b_t_1_1_behavior_tree_exception.html":[0,0,0,6], +"df/d93/class_b_t_1_1_behavior_tree_exception.html":[1,0,0,9], "df/d99/struct_b_t_1_1_grammar_1_1nested__expr.html":[1,0,0,2,6], "df/d9f/class_b_t_1_1_entry_updated_action.html":[1,0,0,18], "df/d9f/class_b_t_1_1_entry_updated_action.html":[0,0,0,15], "df/da2/sequence__with__memory__node_8h_source.html":[2,0,0,0,1,8], "df/da8/namespace_b_t_1_1details.html":[0,0,0,0], "df/daf/struct_b_t_1_1_grammar_1_1_boolean_literal_1_1_true.html":[1,0,0,2,2,1], -"df/dc2/class_b_t_1_1_consume_queue.html":[1,0,0,13], "df/dc2/class_b_t_1_1_consume_queue.html":[0,0,0,10], +"df/dc2/class_b_t_1_1_consume_queue.html":[1,0,0,13], "df/dc2/class_b_t_1_1_consume_queue.html#ab19b8bfa150b60b6d9c726b96500cbd1":[0,0,0,10,0], "df/dc2/class_b_t_1_1_consume_queue.html#ab19b8bfa150b60b6d9c726b96500cbd1":[1,0,0,13,0], -"df/ddb/class_b_t_1_1_sqlite_logger.html":[1,0,0,67], "df/ddb/class_b_t_1_1_sqlite_logger.html":[0,0,0,64], -"df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d":[1,0,0,67,0], +"df/ddb/class_b_t_1_1_sqlite_logger.html":[1,0,0,67], "df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d":[0,0,0,64,0], +"df/ddb/class_b_t_1_1_sqlite_logger.html#a4e1e513a4d32778b5015b1d4ab82819d":[1,0,0,67,0], "dir_0079e7ae641af117c6a457ee281e6635.html":[2,0,0,0,2], "dir_1573ea42ce800d213ff17f25e5e834ef.html":[2,0,0,0,6], "dir_235a16759d8d8fc57a402b291db0fa77.html":[2,0,0,0,5], diff --git a/search/all_17.js b/search/all_17.js index 1a72ff873..b59a9d201 100644 --- a/search/all_17.js +++ b/search/all_17.js @@ -4,7 +4,8 @@ var searchData= ['waitvalidstatus_1',['waitValidStatus',['../da/d61/class_b_t_1_1_tree_node.html#af205048e4151dfa2cfa91c12baba85b6',1,'BT::TreeNode']]], ['wakeupsignal_2',['WakeUpSignal',['../da/d2f/class_b_t_1_1_wake_up_signal.html',1,'BT']]], ['whiledoelsenode_3',['WhileDoElseNode',['../d7/d54/class_b_t_1_1_while_do_else_node.html',1,'BT']]], - ['writetreenodesmodelxml_4',['writeTreeNodesModelXML',['../d2/d8d/namespace_b_t.html#a7f653b41d3df395036c6245ef3265424',1,'BT']]], - ['writetreetoxml_5',['WriteTreeToXML',['../d2/d8d/namespace_b_t.html#a4a84d486b78c9a316e997bd3cc799f75',1,'BT']]], - ['writetreexsd_6',['writeTreeXSD',['../d2/d8d/namespace_b_t.html#a415454b3b6fe0ce36db71ef677c13a4e',1,'BT']]] + ['wildcards_2ehpp_4',['wildcards.hpp',['../d1/d00/wildcards_8hpp.html',1,'']]], + ['writetreenodesmodelxml_5',['writeTreeNodesModelXML',['../d2/d8d/namespace_b_t.html#a7f653b41d3df395036c6245ef3265424',1,'BT']]], + ['writetreetoxml_6',['WriteTreeToXML',['../d2/d8d/namespace_b_t.html#a4a84d486b78c9a316e997bd3cc799f75',1,'BT']]], + ['writetreexsd_7',['writeTreeXSD',['../d2/d8d/namespace_b_t.html#a415454b3b6fe0ce36db71ef677c13a4e',1,'BT']]] ]; diff --git a/search/files_0.js b/search/files_0.js new file mode 100644 index 000000000..d1760d710 --- /dev/null +++ b/search/files_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wildcards_2ehpp_0',['wildcards.hpp',['../d1/d00/wildcards_8hpp.html',1,'']]] +]; diff --git a/search/searchdata.js b/search/searchdata.js index 17f64803a..24c74fed7 100644 --- a/search/searchdata.js +++ b/search/searchdata.js @@ -3,11 +3,12 @@ var indexSectionsWithContent = 0: "_abcdefghijklmnopqrstuvwx~", 1: "_abcdefghijklmnpqrstuwx", 2: "b", - 3: "abcefghilmnoprstuvw~", - 4: "acfprs", - 5: "aenr", - 6: "fn", - 7: "s" + 3: "w", + 4: "abcefghilmnoprstuvw~", + 5: "acfprs", + 6: "aenr", + 7: "fn", + 8: "s" }; var indexSectionNames = @@ -15,11 +16,12 @@ var indexSectionNames = 0: "all", 1: "classes", 2: "namespaces", - 3: "functions", - 4: "variables", - 5: "typedefs", - 6: "enums", - 7: "enumvalues" + 3: "files", + 4: "functions", + 5: "variables", + 6: "typedefs", + 7: "enums", + 8: "enumvalues" }; var indexSectionLabels = @@ -27,10 +29,11 @@ var indexSectionLabels = 0: "All", 1: "Classes", 2: "Namespaces", - 3: "Functions", - 4: "Variables", - 5: "Typedefs", - 6: "Enumerations", - 7: "Enumerator" + 3: "Files", + 4: "Functions", + 5: "Variables", + 6: "Typedefs", + 7: "Enumerations", + 8: "Enumerator" }; From ea52f040f558e683197c85833519bac5fecaef01 Mon Sep 17 00:00:00 2001 From: facontidavide Date: Tue, 30 Sep 2025 22:13:07 +0000 Subject: [PATCH 8/8] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20Beha?= =?UTF-8?q?viorTree/BehaviorTree.CPP@624b11b9c80f2af7ef7651cb02fb1341209de?= =?UTF-8?q?bb8=20=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- da/d75/bt__sqlite__logger_8h_source.html | 190 +++++++++++------------ 1 file changed, 94 insertions(+), 96 deletions(-) diff --git a/da/d75/bt__sqlite__logger_8h_source.html b/da/d75/bt__sqlite__logger_8h_source.html index 5cef32788..3b066a03c 100644 --- a/da/d75/bt__sqlite__logger_8h_source.html +++ b/da/d75/bt__sqlite__logger_8h_source.html @@ -98,107 +98,105 @@
    3#include <filesystem>
    4#include "behaviortree_cpp/loggers/abstract_logger.h"
    5
    -
    6namespace sqlite
    -
    7{
    -
    8class Connection;
    -
    9}
    -
    10
    -
    11namespace BT
    -
    12{
    -
    13
    -
    14/** SQL schema
    -
    15 *
    -
    16 * CREATE TABLE IF NOT EXISTS Definitions (
    -
    17 * session_id INTEGER PRIMARY KEY AUTOINCREMENT,
    -
    18 * date TEXT NOT NULL,
    -
    19 * xml_tree TEXT NOT NULL);
    -
    20 *
    -
    21 * CREATE TABLE IF NOT EXISTS Nodes ("
    -
    22 * session_id INTEGER NOT NULL,
    -
    23 * fullpath VARCHAR, "
    -
    24 * node_uid INTEGER NOT NULL );
    -
    25 *
    -
    26 * CREATE TABLE IF NOT EXISTS Transitions (
    -
    27 * timestamp INTEGER PRIMARY KEY NOT NULL,
    -
    28 * session_id INTEGER NOT NULL,
    -
    29 * node_uid INTEGER NOT NULL,
    -
    30 * duration INTEGER,
    -
    31 * state INTEGER NOT NULL,
    -
    32 * extra_data VARCHAR );
    -
    33 *
    -
    34 */
    -
    35
    -
    36/**
    -
    37 * @brief The SqliteLogger is a logger that will store the tree and all the
    -
    38 * status transitions in a SQLite database (single file).
    -
    39 *
    -
    40 * You can append data to the same file; this allows you to store multiple experiments into the database.
    -
    41 * Yn that case, each recording has a unique session_id.
    -
    42 *
    -
    43 * This is primarily meant to be used with Groot2, but the content of
    -
    44 * the tables is sufficiently self-explaining, and you can create
    -
    45 * your own tools to extract the information.
    -
    46 */
    - -
    48{
    -
    49public:
    -
    50 /**
    -
    51 * @brief To correctly read this log with Groot2, you must use the suffix ".db3".
    -
    52 * Constructor will throw otherwise.
    -
    53 *
    -
    54 * @param tree the tree to log
    -
    55 * @param filepath path of the file where info will be stored
    -
    56 * @param append if true, add this recording to the database
    -
    57 */
    -
    58 SqliteLogger(const Tree& tree, std::filesystem::path const& file, bool append = false);
    +
    6// forward declaration
    +
    7struct sqlite3;
    +
    8
    +
    9namespace BT
    +
    10{
    +
    11
    +
    12/** SQL schema
    +
    13 *
    +
    14 * CREATE TABLE IF NOT EXISTS Definitions (
    +
    15 * session_id INTEGER PRIMARY KEY AUTOINCREMENT,
    +
    16 * date TEXT NOT NULL,
    +
    17 * xml_tree TEXT NOT NULL);
    +
    18 *
    +
    19 * CREATE TABLE IF NOT EXISTS Nodes ("
    +
    20 * session_id INTEGER NOT NULL,
    +
    21 * fullpath VARCHAR, "
    +
    22 * node_uid INTEGER NOT NULL );
    +
    23 *
    +
    24 * CREATE TABLE IF NOT EXISTS Transitions (
    +
    25 * timestamp INTEGER PRIMARY KEY NOT NULL,
    +
    26 * session_id INTEGER NOT NULL,
    +
    27 * node_uid INTEGER NOT NULL,
    +
    28 * duration INTEGER,
    +
    29 * state INTEGER NOT NULL,
    +
    30 * extra_data VARCHAR );
    +
    31 *
    +
    32 */
    +
    33
    +
    34/**
    +
    35 * @brief The SqliteLogger is a logger that will store the tree and all the
    +
    36 * status transitions in a SQLite database (single file).
    +
    37 *
    +
    38 * You can append data to the same file; this allows you to store multiple experiments into the database.
    +
    39 * Yn that case, each recording has a unique session_id.
    +
    40 *
    +
    41 * This is primarily meant to be used with Groot2, but the content of
    +
    42 * the tables is sufficiently self-explaining, and you can create
    +
    43 * your own tools to extract the information.
    +
    44 */
    + +
    46{
    +
    47public:
    +
    48 /**
    +
    49 * @brief To correctly read this log with Groot2, you must use the suffix ".db3".
    +
    50 * Constructor will throw otherwise.
    +
    51 *
    +
    52 * @param tree the tree to log
    +
    53 * @param filepath path of the file where info will be stored
    +
    54 * @param append if true, add this recording to the database
    +
    55 */
    +
    56 SqliteLogger(const Tree& tree, std::filesystem::path const& file, bool append = false);
    +
    57
    +
    58 virtual ~SqliteLogger() override;
    59
    -
    60 virtual ~SqliteLogger() override;
    -
    61
    -
    62 // You can inject a function that add a string to the Transitions table,
    -
    63 // in the column "extra_data".
    -
    64 // The arguments of the function are the same as SqliteLogger::callback()
    -
    65 using ExtraCallback =
    -
    66 std::function<std::string(Duration, const TreeNode&, NodeStatus, NodeStatus)>;
    -
    67 void setAdditionalCallback(ExtraCallback func);
    -
    68
    -
    69 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
    -
    70 NodeStatus status) override;
    +
    60 // You can inject a function that add a string to the Transitions table,
    +
    61 // in the column "extra_data".
    +
    62 // The arguments of the function are the same as SqliteLogger::callback()
    +
    63 using ExtraCallback =
    +
    64 std::function<std::string(Duration, const TreeNode&, NodeStatus, NodeStatus)>;
    +
    65 void setAdditionalCallback(ExtraCallback func);
    +
    66
    +
    67 virtual void callback(Duration timestamp, const TreeNode& node, NodeStatus prev_status,
    +
    68 NodeStatus status) override;
    +
    69
    +
    70 void execSqlStatement(std::string statement);
    71
    -
    72 void execSqlStatement(std::string statement);
    +
    72 virtual void flush() override;
    73
    -
    74 virtual void flush() override;
    -
    75
    -
    76private:
    -
    77 std::unique_ptr<sqlite::Connection> db_;
    -
    78
    -
    79 int64_t monotonic_timestamp_ = 0;
    -
    80 std::unordered_map<const BT::TreeNode*, int64_t> starting_time_;
    +
    74private:
    +
    75 sqlite3* db_ = nullptr;
    +
    76
    +
    77 int64_t monotonic_timestamp_ = 0;
    +
    78 std::unordered_map<const BT::TreeNode*, int64_t> starting_time_;
    +
    79
    +
    80 int session_id_ = -1;
    81
    -
    82 int session_id_ = -1;
    -
    83
    -
    84 struct Transition
    -
    85 {
    -
    86 uint16_t node_uid;
    -
    87 int64_t timestamp;
    -
    88 int64_t duration;
    -
    89 NodeStatus status;
    -
    90 std::string extra_data;
    -
    91 };
    -
    92
    -
    93 std::deque<Transition> transitions_queue_;
    -
    94 std::condition_variable queue_cv_;
    -
    95 std::mutex queue_mutex_;
    -
    96
    -
    97 std::thread writer_thread_;
    -
    98 std::atomic_bool loop_ = true;
    +
    82 struct Transition
    +
    83 {
    +
    84 uint16_t node_uid;
    +
    85 int64_t timestamp;
    +
    86 int64_t duration;
    +
    87 NodeStatus status;
    +
    88 std::string extra_data;
    +
    89 };
    +
    90
    +
    91 std::deque<Transition> transitions_queue_;
    +
    92 std::condition_variable queue_cv_;
    +
    93 std::mutex queue_mutex_;
    +
    94
    +
    95 std::thread writer_thread_;
    +
    96 std::atomic_bool loop_ = true;
    +
    97
    +
    98 ExtraCallback extra_func_;
    99
    -
    100 ExtraCallback extra_func_;
    -
    101
    -
    102 void writerLoop();
    -
    103};
    -
    104
    -
    105} // namespace BT
    -
    The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite data...
    Definition: bt_sqlite_logger.h:48
    +
    100 void writerLoop();
    +
    101};
    +
    102
    +
    103} // namespace BT
    +
    The SqliteLogger is a logger that will store the tree and all the status transitions in a SQLite data...
    Definition: bt_sqlite_logger.h:46
    SqliteLogger(const Tree &tree, std::filesystem::path const &file, bool append=false)
    To correctly read this log with Groot2, you must use the suffix ".db3". Constructor will throw otherw...
    Definition: abstract_logger.h:16
    Struct used to store a tree. If this object goes out of scope, the tree is destroyed.
    Definition: bt_factory.h:92

    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    +
    Class Hierarchy
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + +
    + + + +
    + + + + + + + + + +
    + + + + +
    + + + + + +
    + + + + + +
    + + + + +
    + + + + + + + + +
    + + + + +
    + + + + +
    + + + +
    + + + + + + +
    + + + + + +
    + + + + + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    +
    Loading...
    +
    Searching...
    +
    No Matches
    +
    +
    +
    +
    + +
    + +
    BT::Ast::ExprLiteral Struct Reference
    +
    +
    +
    +Inheritance diagram for BT::Ast::ExprLiteral:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for BT::Ast::ExprLiteral:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

    ExprLiteral (Any v)
     
    Any evaluate (Environment &) const override
     
    +virtual Any evaluate (Environment &env) const =0
     
    + + + +

    +Public Attributes

    +Any value
     
    + + + + +

    +Additional Inherited Members

    - Public Types inherited from BT::Ast::ExprBase
    +using Ptr = std::shared_ptr< ExprBase >
     
    +

    Member Function Documentation

    + +

    ◆ evaluate()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Any BT::Ast::ExprLiteral::evaluate (Environment) const
    +
    +inlineoverridevirtual
    +
    + +

    Implements BT::Ast::ExprBase.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +