libzypp 17.38.7
IdString.cc
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#include <iostream>
13#include <boost/mpl/int.hpp>
14#include <boost/utility/string_ref.hpp>
15
16#include <zypp/IdString.h>
18
19using std::endl;
20
22namespace zypp
23{
24
27
28 using zyppng::sat::StringPool;
29
31
32 IdString::IdString( const char * str_r )
33 : _id( ::pool_str2id( StringPool::instance().getPool() , str_r, /*create*/true ) )
34 {}
35
36 IdString::IdString( const char * str_r, unsigned len_r )
37 : _id( ::pool_strn2id( StringPool::instance().getPool(), str_r, len_r, /*create*/true ) )
38 {}
39
40 IdString::IdString( const std::string & str_r )
41 : IdString( str_r.c_str(), str_r.length() )
42 {}
43
44 IdString::IdString( boost::string_ref str_r )
45 : IdString( str_r.data(), str_r.length() )
46 {}
47
48 unsigned IdString::size() const
49 { return ::strlen( c_str() ); }
50
51 const char * IdString::c_str() const
52 { return _id ? ::pool_id2str( StringPool::instance().getPool(), _id ) : ""; }
53
54 int IdString::compare( const IdString & rhs ) const
55 {
56 if ( _id == rhs._id )
57 return 0;
58 // Explicitly handle IdString::Null < ""
59 if ( ! _id )
60 return -1;
61 if ( ! rhs._id )
62 return 1;
63 return ::strcmp( c_str(), rhs.c_str() );
64 }
65
66 int IdString::compare( const char * rhs ) const
67 {
68 // Explicitly handle IdString::Null == (const char *)0
69 if ( ! _id )
70 return rhs ? -1 : 0;
71 if ( ! rhs )
72 return _id ? 1 : 0;
73 return ::strcmp( c_str(), rhs );
74 }
75
76 /******************************************************************
77 **
78 ** FUNCTION NAME : operator<<
79 ** FUNCTION TYPE : std::ostream &
80 */
81 std::ostream & operator<<( std::ostream & str, const IdString & obj )
82 {
83 return str << obj.c_str();
84 }
85
86 std::ostream & dumpOn( std::ostream & str, const IdString & obj )
87 {
88 return str << '(' << obj.id() << ')' << obj.c_str();
89 }
90
92} // namespace zypp
Access to the sat-pools string space.
Definition IdString.h:55
unsigned size() const
The strings size.
Definition IdString.cc:48
const char * c_str() const
Conversion to const char *.
Definition IdString.cc:51
int compare(const IdString &rhs) const
Compare IdString returning -1,0,1.
Definition IdString.cc:54
IdType id() const
Expert backdoor.
Definition IdString.h:144
static const IdString Null
No or Null string ( Id 0 ).
Definition IdString.h:86
static const IdString Empty
Empty string.
Definition IdString.h:89
constexpr IdString()
Default ctor, empty string.
Definition IdString.h:61
static StringPool & instance()
Access the global StringPool instance.
Definition stringpool.cc:18
Singleton manager for the underlying libsolv string pool.
Definition stringpool.h:35
String related utilities and Regular expression matching.
static const IdType emptyId(1)
static const IdType noId(0)
Easy-to use interface to the ZYPP dependency resolver.
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
relates: Capability Detailed stream output
std::ostream & operator<<(std::ostream &str, const Capabilities &obj)
relates: Capabilities Stream output