libzypp  15.28.6
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  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  std::string registerFlavor() const;
65 
66  public:
67  std::string updaterepokey() const;
68 
69  public:
71 
72  struct Upgrade
73  {
74  public:
75  class Impl;
77  Upgrade( Impl * allocated_r = 0 );
78 
79  public:
80  std::string name() const;
81  std::string summary() const;
82  std::string repository() const;
83  std::string product() const;
84  bool notify() const;
85  std::string status() const;
86 
87  private:
89  };
91 
92  typedef std::vector<Upgrade> Upgrades;
93  const Upgrades & upgrades() const;
94 
95  private:
97  };
99 
101  std::ostream & operator<<( std::ostream & str, const ProductFileData & obj );
102 
104  std::ostream & operator<<( std::ostream & str, const ProductFileData::Upgrade & obj );
105 
107  //
108  // CLASS NAME : ProductFileReader
109  //
121  {
122  public:
126  typedef function<bool( const ProductFileData & )> Consumer;
127 
128  public:
130  {}
131 
132  ProductFileReader( const Consumer & consumer_r )
133  : _consumer( consumer_r )
134  {}
135 
136  ProductFileReader( const Consumer & consumer_r, const InputStream & input_r )
137  : _consumer( consumer_r )
138  { parse( input_r ); }
139 
140  public:
141  const Consumer & consumer() const
142  { return _consumer; }
143 
144  void setConsumer( const Consumer & consumer_r )
145  { _consumer = consumer_r; }
146 
147  public:
153  bool parse( const InputStream & input_r = InputStream() ) const;
154 
155  public:
161  static bool scanDir( const Consumer & consumer_r, const Pathname & dir_r );
162 
165  static ProductFileData scanFile( const Pathname & file_r );
166 
167  private:
169  };
171 
173  } // namespace parser
176 } // namespace zypp
178 #endif // ZYPP_PARSER_PRODUCTSDREADER_H
std::string shortName() const
ProductFileReader(const Consumer &consumer_r)
Architecture.
Definition: Arch.h:36
static ProductFileData scanFile(const Pathname &file_r)
Parse one file (or symlink) and return the ProductFileData parsed.
ProductFileReader(const Consumer &consumer_r, const InputStream &input_r)
Access to the sat-pools string space.
Definition: IdString.h:41
std::ostream & operator<<(std::ostream &str, const IniDict &obj)
Definition: IniDict.cc:143
Helper to create and pass std::istream.
Definition: InputStream.h:56
Edition represents [epoch:]version[-release]
Definition: Edition.h:60
RWCOW_pointer< Impl > _pimpl
std::string registerFlavor() const
const Upgrades & upgrades() const
const Consumer & consumer() const
std::string registerTarget() const
bool parse(const InputStream &input_r=InputStream()) const
Parse the input stream and call _consumer for each parsed section.
constexpr bool empty() const
Whether the string is empty.
Definition: IdString.h:80
Data returned by ProductFileReader.
Upgrade(Impl *allocated_r=0)
Ctor takes ownership of allocated_r.
std::string productline() const
ProductFileData(Impl *allocated_r=0)
Ctor takes ownership of allocated_r.
std::vector< Upgrade > Upgrades
std::string registerRelease() const
Parser for /etc/products.d enries (just relevant entires).
void setConsumer(const Consumer &consumer_r)
bool empty() const
Whether this is an empty object without valid data.
std::string updaterepokey() const
static bool scanDir(const Consumer &consumer_r, const Pathname &dir_r)
Parse all files (no symlinks) in dir_r and call consumer_r for each ProductFileData parsed...
function< bool(const ProductFileData &)> Consumer
Callback being invoked for each ProductFileData parsed.