libzypp  17.38.7
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>
13 #include <zypp-core/base/String.h>
14 #include <zypp/ng/sat/capability.h>
16 #include <zypp/ng/sat/stringpool.h>
17 #include <zypp/ng/sat/cap2str.h>
18 
19 extern "C"
20 {
21 #include <solv/pool.h>
22 }
23 
24 namespace 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;
58  auto pool = sat::StringPool::instance().getPool();
59  auto op = obj.capRel();
60  if ( obj.capRel() == sat::CapDetail::CAP_NAMESPACE ) {
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
Edition ed() const
Definition: capability.h:394
detail::CPool * getPool() const
Explicit accessor for the raw sat-pool.
Definition: stringpool.h:60
String related utilities and Regular expression matching.
const char * c_str() const
Conversion to const char *
Definition: capability.cc:342
sat::detail::IdType id() const
Expert backdoor.
Definition: capability.h:301
IdString arch() const
Definition: capability.h:391
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
static StringPool & instance()
Access the global StringPool instance.
Definition: stringpool.cc:18
Capability lhs() const
Definition: capability.h:399
Capability rhs() const
Definition: capability.h:401
Helper providing more detailed information about a Capability.
Definition: capability.h:338
CapRel
Enum values corresponding with libsolv defines.
Definition: capability.h:352
A sat capability.
Definition: capability.h:73
std::string numstring(char n, int w=0)
Definition: String.h:290
CapRel capRel() const
Definition: capability.h:400
bool hasArch() const
Definition: capability.h:390
const char * capRel2Str(int op_r)
Convert a relation operator to its string representation.
Definition: cap2str.cc:119
Primary trait for object formatting.
Definition: format.h:67
IdString name() const
Definition: capability.h:392