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 calss 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 * @return - Pointer to concrete parser class object. 34 */ 35 static interface::ParserInterface* getParser(Binary&& vpdVector); 36 37 /** 38 * @brief A method to delete the parser object. 39 * @param[in] - Pointer to the parser object. 40 */ 41 static void freeParser(interface::ParserInterface* parser); 42 }; // ParserFactory 43 44 } // namespace factory 45 } // namespace parser 46 } // namespace vpd 47 } // namespace openpower