1 #pragma once 2 #include "parser_interface.hpp" 3 #include "types.hpp" 4 5 namespace openpower 6 { 7 namespace vpd 8 { 9 namespace parser 10 { 11 namespace factory 12 { 13 /** @class ParserFactory 14 * @brief Factory class to instantiate concrete parser class. 15 * 16 * This class should be used to instantiate an instance of parser class based 17 * on the typeof vpd file. 18 */ 19 20 class ParserFactory 21 { 22 public: 23 ParserFactory() = delete; 24 ~ParserFactory() = delete; 25 ParserFactory(const ParserFactory&) = delete; 26 ParserFactory& operator=(const ParserFactory&) = delete; 27 ParserFactory(ParserFactory&&) = delete; 28 ParserFactory& operator=(ParserFactory&&) = delete; 29 30 /** 31 * @brief A method to get object of concrete parser class. 32 * @param[in] - vpd file to check for the type. 33 * @param[in] - InventoryPath to call out FRU in case PEL is logged. 34 * @param[in] - vpdFilePath for VPD HW path. 35 * @param[in] - vpdStartOffset for starting offset of VPD. 36 * @return - Pointer to concrete parser class object. 37 */ 38 static interface::ParserInterface* 39 getParser(const Binary& vpdVector, const std::string& inventoryPath, 40 const std::string& vpdFilePath, uint32_t vpdStartOffset); 41 42 /** 43 * @brief A method to delete the parser object. 44 * @param[in] - Pointer to the parser object. 45 */ 46 static void freeParser(interface::ParserInterface* parser); 47 }; // ParserFactory 48 49 } // namespace factory 50 } // namespace parser 51 } // namespace vpd 52 } // namespace openpower 53