| #pragma once |
| |
| #include "store.hpp" |
| #include "types.hpp" |
| |
| #include <variant> |
| |
| namespace openpower |
| { |
| namespace vpd |
| { |
| namespace parser |
| { |
| namespace interface |
| { |
| using kwdVpdMap = openpower::vpd::inventory::KeywordVpdMap; |
| |
| /** @class ParserInterface |
| * @brief Interface class for vpd parsers. |
| * |
| * Any concrete parser class, implementing the parser logic needs to |
| * derive from this interface class and ovverride the methods declared |
| * in this class. |
| */ |
| class ParserInterface |
| { |
| public: |
| /** |
| * @brief An api to implement parsing logic for VPD file. |
| * Needs to be implemented by all the class deriving from |
| * parser inerface. |
| * |
| * @return parsed format for vpd data, depending upon the |
| * parsing logic. |
| */ |
| virtual std::variant<kwdVpdMap, Store> parse() = 0; |
| |
| /** |
| * @brief An api to return interface name which will hold the |
| * data on cache. |
| * Needs to be implemented by all the class deriving fronm |
| * parser inerface |
| * |
| * @return - Interface name for that vpd type. |
| */ |
| virtual std::string getInterfaceName() const = 0; |
| // virtual void test() = 0; |
| |
| /** |
| * @brief Virtual destructor for the interface. |
| */ |
| virtual ~ParserInterface() |
| { |
| } |
| |
| }; // class Parserinterface |
| } // namespace interface |
| } // namespace parser |
| } // namespace vpd |
| } // namespace openpower |