1
/*---------------------------------------------------------------------\
3
| |__ / \ / / . \ . \ |
8
\---------------------------------------------------------------------*/
9
/** \file zypp/ResKind.h
12
#ifndef ZYPP_RESKIND_H
13
#define ZYPP_RESKIND_H
18
#include "zypp/APIConfig.h"
19
#include "zypp/base/String.h"
20
#include "zypp/IdStringType.h"
22
///////////////////////////////////////////////////////////////////
24
{ /////////////////////////////////////////////////////////////////
26
///////////////////////////////////////////////////////////////////
28
// CLASS NAME : ResKind
31
* A \b lowercased string and used as identification.
32
* Comparison against string values is always case
35
class ResKind : public IdStringType<ResKind>
38
/** \name Some builtin ResKind constants. */
40
/** Value representing \c nokind (<tt>""</tt>)*/
41
static const ResKind nokind;
43
static const ResKind package;
44
static const ResKind patch;
45
static const ResKind pattern;
46
static const ResKind product;
47
static const ResKind srcpackage;
51
/** Default ctor: \ref nokind */
54
/** Ctor taking kind as string. */
55
explicit ResKind( sat::detail::IdType id_r ) : _str( str::toLower(IdString(id_r).c_str()) ) {}
56
explicit ResKind( const IdString & idstr_r ) : _str( str::toLower(idstr_r.c_str()) ) {}
57
explicit ResKind( const std::string & str_r ) : _str( str::toLower(str_r) ) {}
58
explicit ResKind( const char * cstr_r ) : _str( str::toLower(cstr_r) ) {}
61
/** Return libsolv identifier for name.
62
* Libsolv combines the objects kind and name in a single
63
* identifier \c "pattern:kde_multimedia", \b except for packages
64
* and source packes. They are not prefixed by any kind string.
66
static std::string satIdent( const ResKind & refers_r, const std::string & name_r );
68
std::string satIdent( const std::string & name_r ) const
69
{ return satIdent( *this, name_r ); }
72
static int _doCompare( const char * lhs, const char * rhs )
74
if ( lhs == rhs ) return 0;
75
if ( lhs && rhs ) return ::strcasecmp( lhs, rhs );
76
return( lhs ? 1 : -1 );
80
friend class IdStringType<ResKind>;
84
/** \relates ResKind XML output. */
85
inline std::ostream & dumpAsXmlOn( std::ostream & str, const ResKind & obj )
86
{ return str << "<kind>" << obj << "</kind>"; }
88
/////////////////////////////////////////////////////////////////
90
///////////////////////////////////////////////////////////////////
91
#endif // ZYPP_RESKIND_H