libzypp: zypp::Capability Class Reference

libzypp 17.38.6

zypp::Capability Class Reference

A sat capability. More...

`#include <zypp/Capability.h>`

Inheritance diagram for zypp::Capability:

## Classes
struct | Matches
| matches functor. More...

## Public Types
enum | CtorFlag { PARSED , UNPARSED }

## Public Member Functions
| Capability ()
| Default ctor, Empty capability.
| Capability (sat::detail::IdType id_r)
| Ctor from id.
Ctors parsing a Capability: <tt>"name[.arch] [op edition]"</tt> or <tt>( arch, "name [op edition]")</tt>
| Capability (const char *str_r, const ResKind &prefix_r=ResKind(), CtorFlag flag_r=UNPARSED)
| Ctor from string.
| Capability (const std::string &str_r, const ResKind &prefix_r=ResKind(), CtorFlag flag_r=UNPARSED)
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const Arch &arch_r, const char *str_r, const ResKind &prefix_r=ResKind(), CtorFlag flag_r=UNPARSED)
| Capability (const Arch &arch_r, const std::string &str_r, const ResKind &prefix_r=ResKind(), CtorFlag flag_r=UNPARSED)
| Capability (const char *str_r, CtorFlag flag_r, const ResKind &prefix_r=ResKind())
| Capability (const std::string &str_r, CtorFlag flag_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const Arch &arch_r, const char *str_r, CtorFlag flag_r, const ResKind &prefix_r=ResKind())
| Capability (const Arch &arch_r, const std::string &str_r, CtorFlag flag_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Ctors parsing a broken down Capability: <tt>( "name[.arch]", op, edition )</tt>
| Capability (const std::string &name_r, const std::string &op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| Ctor from name[.arch] op edition.
| Capability (const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Ctors taking a broken down Capability: <tt>( arch, name, op, edition )</tt>
| Capability (const std::string &arch_r, const std::string &name_r, const std::string &op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| Ctor from arch name op edition.
| Capability (const std::string &arch_r, const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const std::string &arch_r, const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const Arch &arch_r, const std::string &name_r, const std::string &op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const Arch &arch_r, const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
| Capability (const Arch &arch_r, const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Ctor creating a namespace: capability.
An empty value_r (std::string or IdString) will also be mapped to IdString::Null, creating a namespace: capability which in most contexts matches all members of this namespace.
| Capability (ResolverNamespace namespace_r, IdString value_r=IdString::Null)
| Capability (ResolverNamespace namespace_r, const char *value_r)
| Capability (ResolverNamespace namespace_r, const std::string &value_r)

## Ctor for creating expressions
enum | CapRel { CAP_AND = 16 , CAP_OR = 17 , CAP_COND = 22 , CAP_UNLESS = 29 , CAP_ELSE = 26 , CAP_WITH = 18 , CAP_WITHOUT = 28 , CAP_NAMESPACE = 19 , CAP_ARCH = 20 }
| Enum values correspond with libsolv defines. More...
static const Capability | Null
| No or Null Capability ( Id `0` ).
static const Capability | Empty
| Empty Capability.
| Capability (CapRel rel_r, const Capability &lhs_r, const Capability &rhs_r)
| operator bool () const
| Evaluate in a boolean context ( !
bool | empty () const
| Whether the Capability is empty.
const char * | c_str () const
| Conversion to const char *.
std::string | asString () const
| This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
CapDetail | detail () const
| Helper providing more detailed information about a Capability.

## Match two simple capabilities.
Two simple capabilities match if they have the same `name` and their `edition` ranges overlap. Where no edition matches ANY edition. See also Edition::match. If a capability expression is involved, matches returns CapMatch::irrelevant.
sat::detail::IdType | _id
CapMatch | matches (const Capability &rhs) const
CapMatch | matches (const IdString &rhs) const
CapMatch | matches (const std::string &rhs) const
CapMatch | matches (const char *rhs) const
sat::detail::IdType | id () const
| Expert backdoor.
static CapMatch | matches (const Capability &lhs, const Capability &rhs)
static CapMatch | matches (const Capability &lhs, const IdString &rhs)
static CapMatch | matches (const Capability &lhs, const std::string &rhs)
static CapMatch | matches (const Capability &lhs, const char *rhs)
static CapMatch | matches (const IdString &lhs, const Capability &rhs)
static CapMatch | matches (const IdString &lhs, const IdString &rhs)
static CapMatch | matches (const IdString &lhs, const std::string &rhs)
static CapMatch | matches (const IdString &lhs, const char *rhs)
static CapMatch | matches (const std::string &lhs, const Capability &rhs)
static CapMatch | matches (const std::string &lhs, const IdString &rhs)
static CapMatch | matches (const std::string &lhs, const std::string &rhs)
static CapMatch | matches (const std::string &lhs, const char *rhs)
static CapMatch | matches (const char *lhs, const Capability &rhs)
static CapMatch | matches (const char *lhs, const IdString &rhs)
static CapMatch | matches (const char *lhs, const std::string &rhs)
static CapMatch | matches (const char *lhs, const char *rhs)
static bool | isInterestingFileSpec (const IdString &name_r)
| Test for a filename that is likely being REQUIRED.
static bool | isInterestingFileSpec (const std::string &name_r)
static bool | isInterestingFileSpec (const char *name_r)
static Capability | guessPackageSpec (const std::string &str_r)
| Capability parser also guessing `"libzypp-1.2.3-4.5.x86_64"` formats.
static Capability | guessPackageSpec (const std::string &str_r, bool &rewrote_r)
static CapMatch | _doMatch (sat::detail::IdType lhs, sat::detail::IdType rhs)
| Match two Capabilities.

## Additional Inherited Members
Static Protected Member Functions inherited from zypp::sat::detail::PoolMember
static PoolImpl & | myPool ()
static bool | poolValid ()

## Detailed Description

A sat capability.

A Capability: "name[.arch] [op edition]" or a `richdep`[1]

If a certain ResKind is specified upon construction, the capabilities name part is prefixed, unless it already contains a well known kind spec. If no ResKind is specified, it's assumed you refer to a package or the name is already prefixed:

Capability( "foo" ) ==> 'foo'
Capability( "foo", ResKind::package ) ==> 'foo'
Capability( "foo", ResKind::pattern ) ==> 'pattern:foo'
Capability( "pattern:foo" ) ==> 'pattern:foo'
// in doubt an explicit name prefix wins:
Capability( "pattern:foo", ResKind::package ) ==> 'pattern:foo'
Capability( "package:foo", ResKind::pattern ) ==> 'foo'
zypp::Capability::Capability
Capability()
Default ctor, Empty capability.
Definition Capability.h:69
zypp::ResKind::pattern
static const ResKind pattern
Definition ResKind.h:42
zypp::ResKind::package
static const ResKind package
Definition ResKind.h:40

[1] https://rpm-software-management.github.io/rpm/manual/boolean_dependencies.html

See also
  CapDetail

Definition at line 62 of file Capability.h.

## Member Enumeration Documentation

## ◆ CtorFlag

enum zypp::Capability::CtorFlag

Enumerator
PARSED |
UNPARSED |

Definition at line 65 of file Capability.h.

## ◆ CapRel

enum zypp::Capability::CapRel

Enum values correspond with libsolv defines.

Note
  MPL check in PoolImpl.cc

Enumerator
CAP_AND | `and`
CAP_OR | `or`
CAP_COND | `if`
CAP_UNLESS | `unless`
CAP_ELSE | `else`
CAP_WITH | `with`
CAP_WITHOUT | `without`
CAP_NAMESPACE |
CAP_ARCH | Used internally.

Definition at line 151 of file Capability.h.

## Constructor & Destructor Documentation

## ◆ Capability() [1/23]

zypp::Capability::Capability | ( |  | ) |
| inline

Default ctor, Empty capability.

Definition at line 69 of file Capability.h.

## ◆ Capability() [2/23]

zypp::Capability::Capability | ( | sat::detail::IdType | id_r | ) |
| inlineexplicit

Ctor from id.

Definition at line 72 of file Capability.h.

## ◆ Capability() [3/23]

zypp::Capability::Capability | ( | const char * | str_r,
|  | const ResKind & | prefix_r = ResKind(),
|  | CtorFlag | flag_r = UNPARSED )
| explicit

Ctor from string.

str_r is parsed to see if it forms a richdep. Subsequent arguments are meaningless in that case. If it's no richdep we continue as described below.

str_r is parsed to check whether it contains an [op edition] part, unless the PARSED flag is passed to the ctor. In that case "name[.arch]" is assumed.

Capability legacy is to parse everything unknown into a NAMED cap. This is often used to turn user supplied search strings with an optional edition range restriction into PoolQuery arguments ('/gcc[0-9]+/ >= 8').

Definition at line 261 of file Capability.cc.

## ◆ Capability() [4/23]

zypp::Capability::Capability | ( | const std::string & | str_r,
|  | const ResKind & | prefix_r = ResKind(),
|  | CtorFlag | flag_r = UNPARSED )
| explicit

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 265 of file Capability.cc.

## ◆ Capability() [5/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const char * | str_r,
|  | const ResKind & | prefix_r = ResKind(),
|  | CtorFlag | flag_r = UNPARSED )

Definition at line 269 of file Capability.cc.

## ◆ Capability() [6/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const std::string & | str_r,
|  | const ResKind & | prefix_r = ResKind(),
|  | CtorFlag | flag_r = UNPARSED )

Definition at line 273 of file Capability.cc.

## ◆ Capability() [7/23]

zypp::Capability::Capability | ( | const char * | str_r,
|  | CtorFlag | flag_r,
|  | const ResKind & | prefix_r = ResKind() )

Definition at line 277 of file Capability.cc.

## ◆ Capability() [8/23]

zypp::Capability::Capability | ( | const std::string & | str_r,
|  | CtorFlag | flag_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 281 of file Capability.cc.

## ◆ Capability() [9/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const char * | str_r,
|  | CtorFlag | flag_r,
|  | const ResKind & | prefix_r = ResKind() )

Definition at line 285 of file Capability.cc.

## ◆ Capability() [10/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const std::string & | str_r,
|  | CtorFlag | flag_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 289 of file Capability.cc.

## ◆ Capability() [11/23]

zypp::Capability::Capability | ( | const std::string & | name_r,
|  | const std::string & | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

Ctor from name[.arch] op edition.

Definition at line 297 of file Capability.cc.

## ◆ Capability() [12/23]

zypp::Capability::Capability | ( | const std::string & | name_r,
|  | Rel | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 300 of file Capability.cc.

## ◆ Capability() [13/23]

zypp::Capability::Capability | ( | const std::string & | name_r,
|  | Rel | op_r,
|  | const Edition & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 303 of file Capability.cc.

## ◆ Capability() [14/23]

zypp::Capability::Capability | ( | const std::string & | arch_r,
|  | const std::string & | name_r,
|  | const std::string & | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

Ctor from arch name op edition.

Definition at line 311 of file Capability.cc.

## ◆ Capability() [15/23]

zypp::Capability::Capability | ( | const std::string & | arch_r,
|  | const std::string & | name_r,
|  | Rel | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 314 of file Capability.cc.

## ◆ Capability() [16/23]

zypp::Capability::Capability | ( | const std::string & | arch_r,
|  | const std::string & | name_r,
|  | Rel | op_r,
|  | const Edition & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 317 of file Capability.cc.

## ◆ Capability() [17/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const std::string & | name_r,
|  | const std::string & | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 320 of file Capability.cc.

## ◆ Capability() [18/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const std::string & | name_r,
|  | Rel | op_r,
|  | const std::string & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 323 of file Capability.cc.

## ◆ Capability() [19/23]

zypp::Capability::Capability | ( | const Arch & | arch_r,
|  | const std::string & | name_r,
|  | Rel | op_r,
|  | const Edition & | ed_r,
|  | const ResKind & | prefix_r = ResKind() )

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 326 of file Capability.cc.

## ◆ Capability() [20/23]

zypp::Capability::Capability | ( | ResolverNamespace | namespace_r,
|  | IdString | value_r = IdString::Null )

Definition at line 334 of file Capability.cc.

## ◆ Capability() [21/23]

zypp::Capability::Capability | ( | ResolverNamespace | namespace_r,
|  | const char * | value_r )
| inline

Definition at line 142 of file Capability.h.

## ◆ Capability() [22/23]

zypp::Capability::Capability | ( | ResolverNamespace | namespace_r,
|  | const std::string & | value_r )
| inline

Definition at line 143 of file Capability.h.

## ◆ Capability() [23/23]

zypp::Capability::Capability | ( | Capability::CapRel | rel_r,
|  | const Capability & | lhs_r,
|  | const Capability & | rhs_r )

Definition at line 342 of file Capability.cc.

## Member Function Documentation

## ◆ operator bool()

zypp::Capability::operator bool | ( |  | ) | const
| inlineexplicit

Evaluate in a boolean context ( !

empty() ).

Definition at line 179 of file Capability.h.

## ◆ empty()

bool zypp::Capability::empty | ( |  | ) | const
| inline

Whether the Capability is empty.

This is true for Null and Empty.

Definition at line 185 of file Capability.h.

## ◆ c_str()

const char * zypp::Capability::c_str | ( |  | ) | const

Conversion to const char *.

Definition at line 447 of file Capability.cc.

## ◆ asString()

std::string zypp::Capability::asString | ( |  | ) | const
| inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 193 of file Capability.h.

## ◆ detail()

CapDetail zypp::Capability::detail | ( |  | ) | const
| inline

Helper providing more detailed information about a Capability.

Definition at line 453 of file Capability.h.

## ◆ matches() [1/20]

CapMatch zypp::Capability::matches | ( | const Capability & | lhs,
|  | const Capability & | rhs )
| inlinestatic

Definition at line 211 of file Capability.h.

## ◆ matches() [2/20]

CapMatch zypp::Capability::matches | ( | const Capability & | lhs,
|  | const IdString & | rhs )
| inlinestatic

Definition at line 212 of file Capability.h.

## ◆ matches() [3/20]

CapMatch zypp::Capability::matches | ( | const Capability & | lhs,
|  | const std::string & | rhs )
| inlinestatic

Definition at line 213 of file Capability.h.

## ◆ matches() [4/20]

CapMatch zypp::Capability::matches | ( | const Capability & | lhs,
|  | const char * | rhs )
| inlinestatic

Definition at line 214 of file Capability.h.

## ◆ matches() [5/20]

CapMatch zypp::Capability::matches | ( | const IdString & | lhs,
|  | const Capability & | rhs )
| inlinestatic

Definition at line 216 of file Capability.h.

## ◆ matches() [6/20]

CapMatch zypp::Capability::matches | ( | const IdString & | lhs,
|  | const IdString & | rhs )
| inlinestatic

Definition at line 217 of file Capability.h.

## ◆ matches() [7/20]

CapMatch zypp::Capability::matches | ( | const IdString & | lhs,
|  | const std::string & | rhs )
| inlinestatic

Definition at line 218 of file Capability.h.

## ◆ matches() [8/20]

CapMatch zypp::Capability::matches | ( | const IdString & | lhs,
|  | const char * | rhs )
| inlinestatic

Definition at line 219 of file Capability.h.

## ◆ matches() [9/20]

CapMatch zypp::Capability::matches | ( | const std::string & | lhs,
|  | const Capability & | rhs )
| inlinestatic

Definition at line 221 of file Capability.h.

## ◆ matches() [10/20]

CapMatch zypp::Capability::matches | ( | const std::string & | lhs,
|  | const IdString & | rhs )
| inlinestatic

Definition at line 222 of file Capability.h.

## ◆ matches() [11/20]

CapMatch zypp::Capability::matches | ( | const std::string & | lhs,
|  | const std::string & | rhs )
| inlinestatic

Definition at line 223 of file Capability.h.

## ◆ matches() [12/20]

CapMatch zypp::Capability::matches | ( | const std::string & | lhs,
|  | const char * | rhs )
| inlinestatic

Definition at line 224 of file Capability.h.

## ◆ matches() [13/20]

CapMatch zypp::Capability::matches | ( | const char * | lhs,
|  | const Capability & | rhs )
| inlinestatic

Definition at line 226 of file Capability.h.

## ◆ matches() [14/20]

CapMatch zypp::Capability::matches | ( | const char * | lhs,
|  | const IdString & | rhs )
| inlinestatic

Definition at line 227 of file Capability.h.

## ◆ matches() [15/20]

CapMatch zypp::Capability::matches | ( | const char * | lhs,
|  | const std::string & | rhs )
| inlinestatic

Definition at line 228 of file Capability.h.

## ◆ matches() [16/20]

CapMatch zypp::Capability::matches | ( | const char * | lhs,
|  | const char * | rhs )
| inlinestatic

Definition at line 229 of file Capability.h.

## ◆ matches() [17/20]

CapMatch zypp::Capability::matches | ( | const Capability & | rhs | ) | const
| inline

Definition at line 231 of file Capability.h.

## ◆ matches() [18/20]

CapMatch zypp::Capability::matches | ( | const IdString & | rhs | ) | const
| inline

Definition at line 232 of file Capability.h.

## ◆ matches() [19/20]

CapMatch zypp::Capability::matches | ( | const std::string & | rhs | ) | const
| inline

Definition at line 233 of file Capability.h.

## ◆ matches() [20/20]

CapMatch zypp::Capability::matches | ( | const char * | rhs | ) | const
| inline

Definition at line 234 of file Capability.h.

## ◆ isInterestingFileSpec() [1/3]

bool zypp::Capability::isInterestingFileSpec | ( | const IdString & | name_r | ) |
| inlinestatic

Test for a filename that is likely being REQUIRED.

Files below `/bin` , `/sbin` , `/lib` etc. Scanning a packages filelist, an interesting filename might be worth being remembered in PROVIDES.

Definition at line 251 of file Capability.h.

## ◆ isInterestingFileSpec() [2/3]

bool zypp::Capability::isInterestingFileSpec | ( | const std::string & | name_r | ) |
| inlinestatic

Definition at line 252 of file Capability.h.

## ◆ isInterestingFileSpec() [3/3]

bool zypp::Capability::isInterestingFileSpec | ( | const char * | name_r | ) |
| static

Definition at line 510 of file Capability.cc.

## ◆ guessPackageSpec() [1/2]

Capability zypp::Capability::guessPackageSpec | ( | const std::string & | str_r | ) |
| static

Capability parser also guessing `"libzypp-1.2.3-4.5.x86_64"` formats.

The argument might be in the form `"libzypp-devel-1.2.3.x86_64"`. Passed to the Capability ctor, this would correctly be parsed as name capability, because actually the edition part had to be separated by a `'='`, and the architecture had to be appended to the name. So this is how it actually had to look like: `"libzypp-devel.x86_64=1.2.3"`

Obviously we have to guess if, and where to split name and edition. In fact `"devel"` could also be the version and `"1.2.3"` would be the release then.

Assuming this Capability should be provided by some package in the ResPool, we check this. If unprovided, we substitute the last, (or one but last) `'-'` by a `'='`. If the name part (without version) of the resulting Capability matches a package name (not provides!) in the ResPool, this Capability is returned.

Otherwise we return the Capability originally created from str_r.

Note
  : As this method will access the global pool, the returned result depends on the pools content.

Definition at line 573 of file Capability.cc.

## ◆ guessPackageSpec() [2/2]

Capability zypp::Capability::guessPackageSpec | ( | const std::string & | str_r,
|  | bool & | rewrote_r )
| static

Definition at line 520 of file Capability.cc.

## ◆ id()

sat::detail::IdType zypp::Capability::id | ( |  | ) | const
| inline

Expert backdoor.

Definition at line 289 of file Capability.h.

## ◆ _doMatch()

CapMatch zypp::Capability::_doMatch | ( | sat::detail::IdType | lhs,
|  | sat::detail::IdType | rhs )
| staticprivate

Match two Capabilities.

Definition at line 459 of file Capability.cc.

## Member Data Documentation

## ◆ Null

const Capability zypp::Capability::Null
| static

No or Null Capability ( Id `0` ).

Definition at line 172 of file Capability.h.

## ◆ Empty

const Capability zypp::Capability::Empty
| static

Empty Capability.

Definition at line 175 of file Capability.h.

## ◆ _id

sat::detail::IdType zypp::Capability::_id
| private

Definition at line 295 of file Capability.h.

The documentation for this class was generated from the following files:

- zypp/Capability.h
- zypp/Capability.cc