/* License: Apache 2.0. See LICENSE file in root directory. */ /* Copyright(c) 2019 Intel Corporation. All Rights Reserved. */ #pragma once #include "../../third-party/rapidxml/rapidxml_utils.hpp" #include "fw-logs-formating-options.h" using namespace rapidxml; namespace librealsense { namespace fw_logs { class fw_logs_xml_helper { public: enum node_type { event, file, thread, enums, none }; fw_logs_xml_helper(std::string xml_content); ~fw_logs_xml_helper(void); bool build_log_meta_data(fw_logs_formating_options* logs_formating_options); private: bool init(); bool build_meta_data_structure(xml_node<>* xml_node_list_of_events, fw_logs_formating_options* logs_formating_options); node_type get_next_node(xml_node<>* xml_node_list_of_events, int* id, int* num_of_params, std::string* line); bool get_thread_node(xml_node<>* node_file, int* thread_id, std::string* thread_name); bool get_event_node(xml_node<>* node_event, int* event_id, int* num_of_params, std::string* line); bool get_enum_name_node(xml_node<>* node_file, int* thread_id, std::string* thread_name); bool get_enum_value_node(xml_node<>* node_file, int* thread_id, std::string* enum_name); bool get_file_node(xml_node<>* node_file, int* file_id, std::string* file_name); bool get_root_node(xml_node<>** node); bool try_load_external_xml(); bool _init_done; std::string _xml_content; xml_document<> _xml_doc; std::vector _document_buffer; }; } }