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