libzypp  11.13.5
ProductFileReader.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
12 #ifndef ZYPP_PARSER_PRODUCTSDREADER_H
13 #define ZYPP_PARSER_PRODUCTSDREADER_H
14 
15 #include <iosfwd>
16 
17 #include "zypp/base/PtrTypes.h"
18 #include "zypp/base/Function.h"
19 #include "zypp/base/InputStream.h"
20 
21 #include "zypp/Pathname.h"
22 #include "zypp/IdString.h"
23 #include "zypp/Edition.h"
24 #include "zypp/Arch.h"
25 
27 namespace zypp
28 {
29 
30  namespace parser
31  {
32 
34  //
35  // CLASS NAME : ProductFileData
36  //
41  {
42  public:
43  class Impl;
45  ProductFileData( Impl * allocated_r = 0 );
46 
48  bool empty() const
49  { return name().empty(); }
50 
51  public:
52  IdString vendor() const;
53  IdString name() const;
54  Edition edition() const;
55  Arch arch() const;
56 
57  std::string shortName() const;
58  std::string summary() const;
59 
60  public:
61  std::string productline() const;
62  std::string registerTarget() const;
63  std::string registerRelease() const;
64 
65  public:
66  std::string updaterepokey() const;
67 
68  public:
70 
71  struct Upgrade
72  {
73  public:
74  class Impl;
76  Upgrade( Impl * allocated_r = 0 );
77 
78  public:
79  std::string name() const;
80  std::string summary() const;
81  std::string repository() const;
82  std::string product() const;
83  bool notify() const;
84  std::string status() const;
85 
86  private:
88  };
90 
91  typedef std::vector<Upgrade> Upgrades;
92  const Upgrades & upgrades() const;
93 
94  private:
96  };
98 
100  std::ostream & operator<<( std::ostream & str, const ProductFileData & obj );
101 
103  std::ostream & operator<<( std::ostream & str, const ProductFileData::Upgrade & obj );
104 
106  //
107  // CLASS NAME : ProductFileReader
108  //
120  {
121  public:
125  typedef function<bool( const ProductFileData & )> Consumer;
126 
127  public:
129  {}
130 
131  ProductFileReader( const Consumer & consumer_r )
132  : _consumer( consumer_r )
133  {}
134 
135  ProductFileReader( const Consumer & consumer_r, const InputStream & input_r )
136  : _consumer( consumer_r )
137  { parse( input_r ); }
138 
139  public:
140  const Consumer & consumer() const
141  { return _consumer; }
142 
143  void setConsumer( const Consumer & consumer_r )
144  { _consumer = consumer_r; }
145 
146  public:
152  bool parse( const InputStream & input_r = InputStream() ) const;
153 
154  public:
160  static bool scanDir( const Consumer & consumer_r, const Pathname & dir_r );
161 
164  static ProductFileData scanFile( const Pathname & file_r );
165 
166  private:
168  };
170 
172  } // namespace parser
175 } // namespace zypp
177 #endif // ZYPP_PARSER_PRODUCTSDREADER_H