libzypp  17.34.1
SolvableSpec.h
Go to the documentation of this file.
1 /*---------------------------------------------------------------------\
2 | ____ _ __ __ ___ |
3 | |__ / \ / / . \ . \ |
4 | / / \ V /| _/ _/ |
5 | / /__ | | | | | | |
6 | /_____||_| |_| |_| |
7 | |
8 \---------------------------------------------------------------------*/
11 #ifndef ZYPP_SAT_SOLVABLESPEC_H
12 #define ZYPP_SAT_SOLVABLESPEC_H
13 
14 #include <iosfwd>
15 
16 #include <zypp/APIConfig.h>
17 #include <zypp/base/PtrTypes.h>
18 #include <zypp-core/base/InputStream>
19 #include <zypp/base/String.h>
20 
21 #include <zypp/sat/SolvableType.h>
22 
24 namespace zypp
25 {
27  namespace sat
28  {
45  {
46  public:
48  SolvableSpec();
49 
51  ~SolvableSpec();
52 
53  SolvableSpec(const SolvableSpec &) = default;
54  SolvableSpec(SolvableSpec &&) noexcept = default;
55  SolvableSpec &operator=(const SolvableSpec &) = default;
56  SolvableSpec &operator=(SolvableSpec &&) noexcept = default;
57 
58  public:
60  void addIdent( IdString ident_r );
61 
63  void addProvides( Capability provides_r );
64 
69  bool addIdenticalInstalledToo() const;
70  void addIdenticalInstalledToo( bool yesno_r );
71 
72  public:
74  void parse( const C_Str & spec_r );
75 
77  void parseFrom( const InputStream & istr_r );
78 
80  template <class TIterator>
81  void parseFrom( TIterator begin, TIterator end )
82  { for_( it, begin, end ) parse( *it ); }
83 
85  void splitParseFrom( const C_Str & multispec_r );
86 
87  public:
93  bool contains( const sat::Solvable & solv_r ) const;
95  template <class Derived>
96  bool contains( const SolvableType<Derived> & solv_r ) const
97  { return contains( solv_r.satSolvable() ); }
98 
100  bool dirty() const;
101 
107  void setDirty() const;
108 
109  public:
111  bool empty() const;
112 
114  bool containsIdent( const IdString & ident_r ) const;
115 
117  bool containsProvides( const Capability & provides_r ) const;
118 
119  public:
120  class Impl;
121  private:
123  friend std::ostream & operator<<( std::ostream & str, const SolvableSpec & obj );
124  };
125 
127  std::ostream & operator<<( std::ostream & str, const SolvableSpec & obj );
128 
129  } // namespace sat
131 } // namespace zypp
133 #endif // ZYPP_SAT_SOLVABLESPEC_H
A Solvable object within the sat Pool.
Definition: Solvable.h:53
std::ostream & operator<<(std::ostream &str, const FileConflicts &obj)
#define for_(IT, BEG, END)
Convenient for-loops using iterator.
Definition: Easy.h:28
String related utilities and Regular expression matching.
Access to the sat-pools string space.
Definition: IdString.h:43
Helper to create and pass std::istream.
Definition: inputstream.h:56
Define a set of Solvables by ident and provides.
Definition: SolvableSpec.h:44
bool contains(const Container &c, const Elem &elem)
Definition: Algorithm.h:70
bool contains(const SolvableType< Derived > &solv_r) const
Definition: SolvableSpec.h:96
Convenience char* constructible from std::string and char*, it maps (char*)0 to an empty string...
Definition: String.h:90
void parseFrom(TIterator begin, TIterator end)
Parse and add specs from iterator range.
Definition: SolvableSpec.h:81
SolvableSpec implementation.
Definition: SolvableSpec.cc:32
#define ZYPP_TESTS
Definition: Globals.h:60
A sat capability.
Definition: Capability.h:62
Base class for creating Solvable based types.
Definition: SolvableType.h:54
Easy-to use interface to the ZYPP dependency resolver.
Definition: Application.cc:19
Solvable satSolvable() const
Return the corresponding sat::Solvable.
Definition: SolvableType.h:57
RWCOW_pointer< Impl > _pimpl
Implementation class.
Definition: SolvableSpec.h:120