53d9c1afc1aaf8623440e999695beb187b897400
[platform/upstream/libzypp.git] / zypp / parser / IniParser.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/parser/IniParser.h
10  *
11 */
12 #ifndef ZYPP_PARSER_INIPARSER_H
13 #define ZYPP_PARSER_INIPARSER_H
14
15 #include <iosfwd>
16 #include <string>
17 #include <list>
18
19 #include "zypp/base/PtrTypes.h"
20 #include "zypp/base/NonCopyable.h"
21 #include "zypp/base/InputStream.h"
22 #include "zypp/ProgressData.h"
23
24 ///////////////////////////////////////////////////////////////////
25 namespace zypp
26 { /////////////////////////////////////////////////////////////////
27 ///////////////////////////////////////////////////////////////////
28 namespace parser
29 { /////////////////////////////////////////////////////////////////
30
31 ///////////////////////////////////////////////////////////////////
32 //
33 //      CLASS NAME : IniParser
34 //
35 /** Basic SUSEtags parser.
36  * Will replace parser/tagfile/ and  parser/taggedfile/ stuff.
37 */
38 class IniParser : private base::NonCopyable
39 {
40 public:
41   /** Default ctor */
42   IniParser();
43   /** Dtor */
44   virtual ~IniParser();
45   /** Parse the stream.
46    * \throw ParseException on errors. Invoke \ref consume
47    * for each tag. \ref consume might throw other exceptions
48    * as well.
49   */
50   void parse( const InputStream & imput_r, const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc() );
51
52 public:
53   /** Called when start parsing. */
54   virtual void beginParse();
55   /** Called when a section is found. */
56   virtual void consume( const std::string &section );
57   /** Called when a key value is found. */
58   virtual void consume( const std::string &section, const std::string &key, const std::string &value );
59   /** Called when the parse is done. */
60   virtual void endParse();
61 public:
62   /** Name of the current InputStream. */
63   const std::string & inputname() const
64   {
65     return _inputname;
66   }
67
68 private:
69   std::string _inputname;
70   std::string _current_section;
71   int _line_nr;
72   //ProgressData _ticks;
73 };
74
75 /////////////////////////////////////////////////////////////////
76 } // namespace parser
77 ///////////////////////////////////////////////////////////////////
78 /////////////////////////////////////////////////////////////////
79 } // namespace zypp
80 ///////////////////////////////////////////////////////////////////
81 #endif // ZYPP_PARSER_INIPARSER_H