![]() |
Ember
|
Thread-safe XML parser using libxml2 for behavior tree files. More...
#include <LibXMLBehaviorTreeParser.h>
Classes | |
| struct | FileParseInfo |
| Per-file parsing information for project validation. More... | |
| struct | ParseError |
| Error information for parsing failures (enhanced with libxml2 details) More... | |
| struct | ParseResult |
| Result of parallel parsing operation. More... | |
| struct | ProjectParseResult |
| Result of project parsing operation. More... | |
Private Member Functions | |
| bool | ParseXMLDocument (xmlDocPtr doc, const EmberCore::String &source_path="") |
| std::shared_ptr< BehaviorTree > | ParseBehaviorTree (xmlNodePtr tree_node) |
| std::unique_ptr< Node > | ParseNode (xmlNodePtr xml_node) |
| std::unique_ptr< Node > | ParseControlNode (xmlNodePtr xml_node) |
| std::unique_ptr< Node > | ParseActionNode (xmlNodePtr xml_node) |
| std::unique_ptr< Node > | ParseConditionNode (xmlNodePtr xml_node) |
| std::unique_ptr< Node > | ParseDecoratorNode (xmlNodePtr xml_node) |
| std::unique_ptr< Node > | ParseSubTreeNode (xmlNodePtr xml_node) |
| std::unique_ptr< Blackboard > | ParseBlackboard (xmlNodePtr blackboard_node) |
| std::unique_ptr< BlackboardEntry > | ParseBlackboardEntry (xmlNodePtr entry_node) |
| void | SetNodeAttributes (Node *node, xmlNodePtr xml_node) |
| void | ParseChildNodes (Node *parent, xmlNodePtr xml_parent) |
| void | CaptureComments (xmlNodePtr parent, BehaviorTree *tree, Node *node=nullptr) |
| void | ExpandAllSubTreePlaceholders () |
| bool | ExpandSubTreePlaceholder (Node *node) |
| void | ExpandAllSubTreePlaceholdersForProject () |
| bool | ExpandSubTreePlaceholderForProject (Node *node) |
| void | CollectSubTreeReferences (Node *node, std::set< EmberCore::String > &references) |
| void | AddError (ParseError::Type type, const EmberCore::String &message, xmlNodePtr node=nullptr, const EmberCore::String &context="") |
| EmberCore::String | GetNodePath (xmlNodePtr node) |
| bool | ValidateRequiredAttribute (xmlNodePtr node, const EmberCore::String &attr_name) |
| bool | ReportProgress (const EmberCore::String &message, int current=0, int total=0) |
| EmberCore::String | GetNodeName (xmlNodePtr node) |
| EmberCore::String | GetNodeAttribute (xmlNodePtr node, const EmberCore::String &attr_name) |
| void | InitializeLibXML2 () |
Private Attributes | |
| ParserConfig | config_ |
| std::mutex | errors_mutex_ |
| std::vector< ParseError > | errors_ |
| EmberCore::String | main_tree_name_ |
| std::map< EmberCore::String, std::shared_ptr< BehaviorTree > > | parsed_trees_ |
| std::map< EmberCore::String, std::unique_ptr< Blackboard > > | parsed_blackboards_ |
| std::set< EmberCore::String > | expanded_subtree_cache_ |
| std::set< EmberCore::String > | expansion_stack_ |
| std::set< EmberCore::String > | circular_references_ |
| EmberCore::String | current_file_path_ |
| IParseProgressCallback * | progress_callback_ |
| std::map< EmberCore::String, TreeImplementationStatus > | tree_implementation_statuses_ |
| std::set< EmberCore::String > | unimplemented_references_ |
| bool | project_parsing_mode_ |
| size_t | max_threads_ |
| bool | thread_safe_ |
| bool | libxml2_initialized_ |
Static Private Attributes | |
| static std::once_flag | libxml2_init_flag_ |
| static bool | global_libxml2_initialized_ = false |
| static std::mutex | destruction_mutex_ |
Thread-safe XML parser using libxml2 for behavior tree files.
This parser provides the same interface as XMLBehaviorTreeParser but uses libxml2 for better performance, thread safety, and parallel parsing capabilities.
Features:
Definition at line 55 of file LibXMLBehaviorTreeParser.h.
| EmberCore::LibXMLBehaviorTreeParser::LibXMLBehaviorTreeParser | ( | ) |
Definition at line 18 of file LibXMLBehaviorTreeParser.cpp.
|
explicit |
Definition at line 24 of file LibXMLBehaviorTreeParser.cpp.
| EmberCore::LibXMLBehaviorTreeParser::~LibXMLBehaviorTreeParser | ( | ) |
Definition at line 30 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1173 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1734 of file LibXMLBehaviorTreeParser.cpp.
| void EmberCore::LibXMLBehaviorTreeParser::ClearErrors | ( | ) |
Definition at line 1168 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 851 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1615 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 876 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1628 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 893 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 191 of file LibXMLBehaviorTreeParser.h.
| const std::vector< LibXMLBehaviorTreeParser::ParseError > & EmberCore::LibXMLBehaviorTreeParser::GetErrors | ( | ) | const |
Definition at line 1163 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 182 of file LibXMLBehaviorTreeParser.h.
|
inline |
Definition at line 187 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 1144 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1138 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1193 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 183 of file LibXMLBehaviorTreeParser.h.
|
inline |
Definition at line 166 of file LibXMLBehaviorTreeParser.h.
| std::vector< EmberCore::String > EmberCore::LibXMLBehaviorTreeParser::GetUnimplementedReferences | ( | ) | const |
Definition at line 990 of file LibXMLBehaviorTreeParser.cpp.
| bool EmberCore::LibXMLBehaviorTreeParser::HasErrors | ( | ) | const |
Definition at line 1158 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 51 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 188 of file LibXMLBehaviorTreeParser.h.
| bool EmberCore::LibXMLBehaviorTreeParser::IsTreeImplemented | ( | const EmberCore::String & | tree_id | ) | const |
Definition at line 982 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1375 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1231 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1477 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1512 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1588 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1401 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1350 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1427 of file LibXMLBehaviorTreeParser.cpp.
| LibXMLBehaviorTreeParser::ProjectParseResult EmberCore::LibXMLBehaviorTreeParser::ParseFilesWithSharedRegistry | ( | const std::vector< EmberCore::String > & | filepaths | ) |
Definition at line 349 of file LibXMLBehaviorTreeParser.cpp.
| std::shared_ptr< BehaviorTree > EmberCore::LibXMLBehaviorTreeParser::ParseFromFile | ( | const EmberCore::String & | filepath | ) |
Definition at line 72 of file LibXMLBehaviorTreeParser.cpp.
| std::shared_ptr< BehaviorTree > EmberCore::LibXMLBehaviorTreeParser::ParseFromString | ( | const EmberCore::String & | xml_content | ) |
Definition at line 212 of file LibXMLBehaviorTreeParser.cpp.
| std::vector< LibXMLBehaviorTreeParser::ParseResult > EmberCore::LibXMLBehaviorTreeParser::ParseMultipleFiles | ( | const std::vector< EmberCore::String > & | filepaths | ) |
Definition at line 278 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1295 of file LibXMLBehaviorTreeParser.cpp.
| LibXMLBehaviorTreeParser::ProjectParseResult EmberCore::LibXMLBehaviorTreeParser::ParseProject | ( | BehaviorTreeProject * | project | ) |
Definition at line 324 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1452 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1002 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 1223 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 192 of file LibXMLBehaviorTreeParser.h.
|
inline |
Definition at line 186 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 1550 of file LibXMLBehaviorTreeParser.cpp.
|
inline |
Definition at line 163 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 1719 of file LibXMLBehaviorTreeParser.cpp.
|
private |
Definition at line 257 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 247 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 258 of file LibXMLBehaviorTreeParser.h.
|
staticprivate |
Definition at line 276 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 251 of file LibXMLBehaviorTreeParser.h.
|
mutableprivate |
Definition at line 250 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 255 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 256 of file LibXMLBehaviorTreeParser.h.
|
staticprivate |
Definition at line 273 of file LibXMLBehaviorTreeParser.h.
|
staticprivate |
Definition at line 272 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 269 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 252 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 267 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 254 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 253 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 259 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 264 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 268 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 262 of file LibXMLBehaviorTreeParser.h.
|
private |
Definition at line 263 of file LibXMLBehaviorTreeParser.h.