1 #pragma once 2 3 #include "impl.hpp" 4 #include "parser_interface.hpp" 5 #include "types.hpp" 6 7 namespace openpower 8 { 9 namespace vpd 10 { 11 namespace memory 12 { 13 namespace parser 14 { 15 using ParserInterface = openpower::vpd::parser::interface::ParserInterface; 16 using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap; 17 18 class memoryVpdParser : public ParserInterface 19 { 20 public: 21 memoryVpdParser() = delete; 22 memoryVpdParser(const memoryVpdParser&) = delete; 23 memoryVpdParser& operator=(const memoryVpdParser&) = delete; 24 memoryVpdParser(memoryVpdParser&&) = delete; 25 memoryVpdParser& operator=(memoryVpdParser&&) = delete; 26 ~memoryVpdParser() = default; 27 28 /** 29 * @brief Constructor 30 * 31 * Move memVpdVector to parser object's memVpdVector 32 */ 33 memoryVpdParser(Binary&& VpdVector) : memVpd(std::move(VpdVector)) 34 { 35 } 36 37 /** 38 * @brief Parse the memory VPD binary data. 39 * Collects and emplace the keyword-value pairs in map. 40 * 41 * @return map of keyword:value 42 */ 43 std::variant<kwdVpdMap, Store> parse(); 44 45 /** 46 * @brief An api to return interface name with respect to 47 * publish data on cache 48 * 49 * @return - Interface name for that vpd type. 50 */ 51 std::string getInterfaceName() const; 52 53 private: 54 /** 55 * @brief An api to read keywords. 56 * 57 * @return- map of kwd:value 58 */ 59 kwdVpdMap readKeywords(Binary::const_iterator iterator); 60 61 // vdp file to be parsed 62 Binary memVpd; 63 }; 64 } // namespace parser 65 } // namespace memory 66 } // namespace vpd 67 } // namespace openpower