libzypp  17.38.7
zyppng::sat::Capability Class Reference

A sat capability. More...

#include <zypp/ng/sat/capability.h>

Classes

struct  Matches
 matches functor. More...
 

Public Types

enum  CtorFlag { PARSED, UNPARSED }
 

Public Member Functions

 Capability ()
 Default ctor, Empty capability. More...
 
 Capability (sat::detail::IdType id_r)
 Ctor from id. More...
 
 operator bool () const
 Evaluate in a boolean context ( ! empty() ). More...
 
bool empty () const
 Whether the Capability is empty. More...
 
const char * c_str () const
 Conversion to const char * More...
 
std::string asString () const
 
CapDetail detail () const
 Helper providing more detailed information about a Capability. More...
 
sat::detail::IdType id () const
 Expert backdoor. More...
 
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. More...
 
 Capability (const std::string &str_r, const ResKind &prefix_r=ResKind(), CtorFlag flag_r=UNPARSED)
 
 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())
 
 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())
 
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. More...
 
 Capability (const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
 
 Capability (const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
 
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. More...
 
 Capability (const std::string &arch_r, const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
 
 Capability (const std::string &arch_r, const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
 
 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())
 
 Capability (const Arch &arch_r, const std::string &name_r, Rel op_r, const std::string &ed_r, const ResKind &prefix_r=ResKind())
 
 Capability (const Arch &arch_r, const std::string &name_r, Rel op_r, const Edition &ed_r, const ResKind &prefix_r=ResKind())
 
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)
 

Static Public Member Functions

static bool isInterestingFileSpec (const IdString &name_r)
 Test for a filename that is likely being REQUIRED. More...
 
static bool isInterestingFileSpec (const std::string &name_r)
 
static bool isInterestingFileSpec (const char *name_r)
 

Static Public Attributes

static const Capability Null
 No or Null Capability ( Id 0 ). More...
 
static const Capability Empty
 Empty Capability. More...
 

Static Private Member Functions

static CapMatch _doMatch (sat::detail::IdType lhs, sat::detail::IdType rhs)
 Match two Capabilities. More...
 

Private Attributes

sat::detail::IdType _id
 

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...
 
 Capability (CapRel rel_r, const Capability &lhs_r, const Capability &rhs_r)
 

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.

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
 
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)
 

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'

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

See also
CapDetail
Note
Pool binding: Capability stores a single IdType integer — an index into the libsolv stringpool, not into any specific solver pool's solvable array. It is therefore intentionally not a PoolMember and calls StringPool::instance() directly in its constructors.

Contrast with Solvable (stores a SolvableIdType — index into a specific pool's solvable array) and Repository (stores a CRepo* — pool-specific pointer), which are solver-pool-bound.

Todo:
When multiple solver Pool instances sharing the same StringPool are supported, this distinction will matter: a Capability will remain valid across all of them, while a Solvable or Repository will not.

Definition at line 73 of file capability.h.

Member Enumeration Documentation

◆ CtorFlag

Enumerator
PARSED 
UNPARSED 

Definition at line 76 of file capability.h.

◆ CapRel

Enum values correspond with libsolv defines.

Note
Compile-time check in pool.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 161 of file capability.h.

Constructor & Destructor Documentation

◆ Capability() [1/23]

zyppng::sat::Capability::Capability ( )
inline

Default ctor, Empty capability.

Definition at line 80 of file capability.h.

◆ Capability() [2/23]

zyppng::sat::Capability::Capability ( sat::detail::IdType  id_r)
inlineexplicit

Ctor from id.

Definition at line 83 of file capability.h.

◆ Capability() [3/23]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::Capability::Capability ( const Arch arch_r,
const char *  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.

Definition at line 269 of file capability.cc.

◆ Capability() [6/23]

zyppng::sat::Capability::Capability ( const Arch arch_r,
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.

Definition at line 273 of file capability.cc.

◆ Capability() [7/23]

zyppng::sat::Capability::Capability ( const char *  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 277 of file capability.cc.

◆ Capability() [8/23]

zyppng::sat::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]

zyppng::sat::Capability::Capability ( const Arch arch_r,
const char *  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 285 of file capability.cc.

◆ Capability() [10/23]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::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]

zyppng::sat::Capability::Capability ( ResolverNamespace  namespace_r,
IdString  value_r = IdString::Null 
)

Definition at line 338 of file capability.cc.

◆ Capability() [21/23]

zyppng::sat::Capability::Capability ( ResolverNamespace  namespace_r,
const char *  value_r 
)
inline

Definition at line 153 of file capability.h.

◆ Capability() [22/23]

zyppng::sat::Capability::Capability ( ResolverNamespace  namespace_r,
const std::string &  value_r 
)
inline

Definition at line 154 of file capability.h.

◆ Capability() [23/23]

zyppng::sat::Capability::Capability ( Capability::CapRel  rel_r,
const Capability lhs_r,
const Capability rhs_r 
)

Definition at line 330 of file capability.cc.

Member Function Documentation

◆ operator bool()

zyppng::sat::Capability::operator bool ( ) const
inlineexplicit

Evaluate in a boolean context ( ! empty() ).

Definition at line 189 of file capability.h.

◆ empty()

bool zyppng::sat::Capability::empty ( ) const
inline

Whether the Capability is empty.

This is true for Null and Empty.

Definition at line 195 of file capability.h.

◆ c_str()

const char * zyppng::sat::Capability::c_str ( ) const

Conversion to const char *

Definition at line 342 of file capability.cc.

◆ asString()

std::string zyppng::sat::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 203 of file capability.h.

◆ detail()

CapDetail zyppng::sat::Capability::detail ( ) const
inline

Helper providing more detailed information about a Capability.

Definition at line 414 of file capability.h.

◆ matches() [1/20]

static CapMatch zyppng::sat::Capability::matches ( const Capability lhs,
const Capability rhs 
)
inlinestatic

Definition at line 221 of file capability.h.

◆ matches() [2/20]

static CapMatch zyppng::sat::Capability::matches ( const Capability lhs,
const IdString rhs 
)
inlinestatic

Definition at line 222 of file capability.h.

◆ matches() [3/20]

static CapMatch zyppng::sat::Capability::matches ( const Capability lhs,
const std::string &  rhs 
)
inlinestatic

Definition at line 223 of file capability.h.

◆ matches() [4/20]

static CapMatch zyppng::sat::Capability::matches ( const Capability lhs,
const char *  rhs 
)
inlinestatic

Definition at line 224 of file capability.h.

◆ matches() [5/20]

static CapMatch zyppng::sat::Capability::matches ( const IdString lhs,
const Capability rhs 
)
inlinestatic

Definition at line 226 of file capability.h.

◆ matches() [6/20]

static CapMatch zyppng::sat::Capability::matches ( const IdString lhs,
const IdString rhs 
)
inlinestatic

Definition at line 227 of file capability.h.

◆ matches() [7/20]

static CapMatch zyppng::sat::Capability::matches ( const IdString lhs,
const std::string &  rhs 
)
inlinestatic

Definition at line 228 of file capability.h.

◆ matches() [8/20]

static CapMatch zyppng::sat::Capability::matches ( const IdString lhs,
const char *  rhs 
)
inlinestatic

Definition at line 229 of file capability.h.

◆ matches() [9/20]

static CapMatch zyppng::sat::Capability::matches ( const std::string &  lhs,
const Capability rhs 
)
inlinestatic

Definition at line 231 of file capability.h.

◆ matches() [10/20]

static CapMatch zyppng::sat::Capability::matches ( const std::string &  lhs,
const IdString rhs 
)
inlinestatic

Definition at line 232 of file capability.h.

◆ matches() [11/20]

static CapMatch zyppng::sat::Capability::matches ( const std::string &  lhs,
const std::string &  rhs 
)
inlinestatic

Definition at line 233 of file capability.h.

◆ matches() [12/20]

static CapMatch zyppng::sat::Capability::matches ( const std::string &  lhs,
const char *  rhs 
)
inlinestatic

Definition at line 234 of file capability.h.

◆ matches() [13/20]

static CapMatch zyppng::sat::Capability::matches ( const char *  lhs,
const Capability rhs 
)
inlinestatic

Definition at line 236 of file capability.h.

◆ matches() [14/20]

static CapMatch zyppng::sat::Capability::matches ( const char *  lhs,
const IdString rhs 
)
inlinestatic

Definition at line 237 of file capability.h.

◆ matches() [15/20]

static CapMatch zyppng::sat::Capability::matches ( const char *  lhs,
const std::string &  rhs 
)
inlinestatic

Definition at line 238 of file capability.h.

◆ matches() [16/20]

static CapMatch zyppng::sat::Capability::matches ( const char *  lhs,
const char *  rhs 
)
inlinestatic

Definition at line 239 of file capability.h.

◆ matches() [17/20]

CapMatch zyppng::sat::Capability::matches ( const Capability rhs) const
inline

Definition at line 241 of file capability.h.

◆ matches() [18/20]

CapMatch zyppng::sat::Capability::matches ( const IdString rhs) const
inline

Definition at line 242 of file capability.h.

◆ matches() [19/20]

CapMatch zyppng::sat::Capability::matches ( const std::string &  rhs) const
inline

Definition at line 243 of file capability.h.

◆ matches() [20/20]

CapMatch zyppng::sat::Capability::matches ( const char *  rhs) const
inline

Definition at line 244 of file capability.h.

◆ isInterestingFileSpec() [1/3]

static bool zyppng::sat::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 261 of file capability.h.

◆ isInterestingFileSpec() [2/3]

static bool zyppng::sat::Capability::isInterestingFileSpec ( const std::string &  name_r)
inlinestatic

Definition at line 262 of file capability.h.

◆ isInterestingFileSpec() [3/3]

bool zyppng::sat::Capability::isInterestingFileSpec ( const char *  name_r)
static

Definition at line 398 of file capability.cc.

◆ id()

sat::detail::IdType zyppng::sat::Capability::id ( ) const
inline

Expert backdoor.

Definition at line 301 of file capability.h.

◆ _doMatch()

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

Match two Capabilities.

Definition at line 347 of file capability.cc.

Member Data Documentation

◆ Null

const Capability zyppng::sat::Capability::Null
static

No or Null Capability ( Id 0 ).

Definition at line 182 of file capability.h.

◆ Empty

const Capability zyppng::sat::Capability::Empty
static

Empty Capability.

Definition at line 185 of file capability.h.

◆ _id

sat::detail::IdType zyppng::sat::Capability::_id
private

Definition at line 307 of file capability.h.


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