blob: c66e42be2825cf0ef5f0e41981a8701978825c5d [file] [log] [blame]
SunnySrivastava1984e12b1812020-05-26 02:23:11 -05001#pragma once
2#include "parser_interface.hpp"
3#include "types.hpp"
4
5namespace openpower
6{
7namespace vpd
8{
9namespace parser
10{
11namespace 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
20class 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