.. _program_listing_file_src_parser_configuration.h: Program Listing for File parser_configuration.h =============================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/parser_configuration.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef PJ_PARSER_CONFIGURATION_H #define PJ_PARSER_CONFIGURATION_H #include #include #include #include #include namespace PJ { struct RosParserConfig { QStringList topics; unsigned max_array_size = 999; bool use_header_stamp = false; bool discard_large_arrays = false; bool boolean_strings_to_number = false; bool remove_suffix_from_strings = false; void xmlSaveState(QDomDocument& doc, QDomElement& plugin_elem) const; void xmlLoadState(const QDomElement& parent_element); void saveToSettings(QSettings& setting, QString prefix) const; void loadFromSettings(const QSettings& settings, QString prefix); }; // aggregator front-end to many parsers class CompositeParser { public: void addParser(const std::string& topic_name, std::shared_ptr parser); const RosParserConfig& getConfig(); void setConfig(const RosParserConfig& config); bool parseMessage(const std::string& topic_name, MessageRef serialized_msg, double& timestamp); void clear() { _parsers.clear(); } bool hasParser(const std::string& topic_name) { return _parsers.count(topic_name) != 0; } protected: std::unordered_map> _parsers; RosParserConfig _config; }; bool ParseDouble(const std::string& str, double& value, bool remover_suffix, bool parse_boolean); } #endif // PARSER_CONFIGURATION_H