~thopiekar/zypper/libzypp-manual-import

« back to all changes in this revision

Viewing changes to zypp/parser/IniParser.h

  • Committer: Thomas-Karl Pietrowski
  • Date: 2014-01-29 22:44:28 UTC
  • Revision ID: thopiekar@googlemail.com-20140129224428-gpcqnsdakby362n8
firstĀ import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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