libzypp 17.38.6
capability.cc
Go to the documentation of this file.
1/*---------------------------------------------------------------------
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8----------------------------------------------------------------------*/
9#include "capability.h"
10
11#include <iostream>
17#include <zypp/ng/sat/cap2str.h>
18
19extern "C"
20{
21#include <solv/pool.h>
22}
23
24namespace zyppng {
25
26 namespace log {
27 std::ostream &formatter<sat::Capability>::stream(std::ostream &str, const sat::Capability &obj)
28 {
29 return str << obj.c_str();
30 }
31
32 std::ostream &formatter<sat::CapDetail>::stream(std::ostream &str, const sat::CapDetail &obj)
33 {
34 static const char archsep = '.';
35 switch ( obj.kind() )
36 {
38 return str << "<NoCap>";
39 break;
40
42 str << obj.name();
43 if ( obj.hasArch() )
44 str << archsep << obj.arch();
45 return str;
46 break;
47
49 str << obj.name();
50 if ( obj.hasArch() )
51 str << archsep << obj.arch();
52 return str << " " << obj.op() << " " << obj.ed();
53 break;
54
56 {
57 std::string outs;
59 auto op = obj.capRel();
61 sat::detail::cap2str( outs, pool, obj.lhs().id(), op );
62 outs += "(";
63 sat::detail::cap2str( outs, pool, obj.rhs().id(), op );
64 outs += ")";
65 }
66 else {
67 outs += "(";
68 sat::detail::cap2str( outs, pool, obj.lhs().id(), op );
69 outs += sat::detail::capRel2Str( op );
70 sat::detail::cap2str( outs, pool, obj.rhs().id(), op );
71 outs += ")";
72 }
73 return str << outs;
74 }
75 break;
76 }
77 return str << "<UnknownCap(" << obj.lhs() << " " << obj.capRel() << " " << obj.rhs() << ")>";
78 }
79
81 {
82 switch ( obj )
83 {
84 case sat::CapDetail::NOCAP: return str << "NoCap"; break;
85 case sat::CapDetail::NAMED: return str << "NamedCap"; break;
86 case sat::CapDetail::VERSIONED: return str << "VersionedCap"; break;
87 case sat::CapDetail::EXPRESSION: return str << "CapExpression"; break;
88 }
89 return str << "UnknownCap";
90 }
91
93 {
94 switch ( obj )
95 {
96 case sat::CapDetail::REL_NONE: return str << "NoCapRel"; break;
97 case sat::CapDetail::CAP_AND: return str << "and"; break; // &
98 case sat::CapDetail::CAP_OR: return str << "or"; break; // |
99 case sat::CapDetail::CAP_COND: return str << "if"; break;
100 case sat::CapDetail::CAP_UNLESS: return str << "unless"; break;
101 case sat::CapDetail::CAP_ELSE: return str << "else"; break;
102 case sat::CapDetail::CAP_WITH: return str << "with"; break; // +
103 case sat::CapDetail::CAP_WITHOUT: return str << "without"; break; // -
104 case sat::CapDetail::CAP_NAMESPACE: return str << "NAMESPACE"; break;
105 case sat::CapDetail::CAP_ARCH: return str << "ARCH"; break;
106 }
107 return str << "UnknownCapRel("+zypp::str::numstring(obj)+")";
108 }
109 }
110} // namespace zyppng
Helper providing more detailed information about a Capability.
Definition capability.h:339
Edition ed() const
Definition capability.h:394
Capability lhs() const
Definition capability.h:399
IdString name() const
Definition capability.h:392
CapRel capRel() const
Definition capability.h:400
CapRel
Enum values corresponding with libsolv defines.
Definition capability.h:353
@ REL_NONE
Not an expression.
Definition capability.h:354
@ CAP_ARCH
Used internally.
Definition capability.h:366
Capability rhs() const
Definition capability.h:401
IdString arch() const
Definition capability.h:391
A sat capability.
Definition capability.h:74
sat::detail::IdType id() const
Expert backdoor.
Definition capability.h:301
const char * c_str() const
Conversion to const char *.
detail::CPool * getPool() const
Explicit accessor for the raw sat-pool.
Definition stringpool.h:60
static StringPool & instance()
Access the global StringPool instance.
Definition stringpool.cc:18
String related utilities and Regular expression matching.
std::string numstring(char n, int w=0)
Definition String.h:290
const char * capRel2Str(int op_r)
Convert a relation operator to its string representation.
Definition cap2str.cc:119
void cap2str(std::string &outs_r, CPool *pool_r, IdType id_r, int parop_r)
Shared logic to convert a sat ID into a human readable string.
Definition cap2str.cc:56
Primary trait for object formatting.
Definition format.h:67