1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/ResKind.h
12 #ifndef ZYPP_RESKIND_H
13 #define ZYPP_RESKIND_H
18 #include "zypp/base/Deprecated.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 the satsolver identifier for name.
62 * Libsatsolver 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 /////////////////////////////////////////////////////////////////
86 ///////////////////////////////////////////////////////////////////
87 #endif // ZYPP_RESKIND_H