libzypp 17.31.23
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
15#include <zypp/IdString.h>
16
17#include <zypp/sat/detail/PoolImpl.h>
18#include <zypp/sat/Pool.h>
19
20using std::endl;
21
23namespace zypp
24{
25
26 const IdString IdString::Null ( sat::detail::noId );
27 const IdString IdString::Empty( sat::detail::emptyId );
28
30
31 IdString::IdString( const char * str_r )
32 : _id( ::pool_str2id( myPool().getPool(), str_r, /*create*/true ) )
33 {}
34
35 IdString::IdString( const char * str_r, unsigned len_r )
36 : _id( ::pool_strn2id( myPool().getPool(), str_r, len_r, /*create*/true ) )
37 {}
38
39 IdString::IdString( const std::string & str_r )
40 : IdString( str_r.c_str(), str_r.length() )
41 {}
42
43 IdString::IdString( boost::string_ref str_r )
44 : IdString( str_r.data(), str_r.length() )
45 {}
46
47 unsigned IdString::size() const
48 { return ::strlen( c_str() ); }
49
50 const char * IdString::c_str() const
51 { return _id ? ::pool_id2str( myPool().getPool(), _id ) : ""; }
52
53 int IdString::compare( const IdString & rhs ) const
54 {
55 if ( _id == rhs._id )
56 return 0;
57 // Explicitly handle IdString::Null < ""
58 if ( ! _id )
59 return -1;
60 if ( ! rhs._id )
61 return 1;
62 return ::strcmp( c_str(), rhs.c_str() );
63 }
64
65 int IdString::compare( const char * rhs ) const
66 {
67 // Explicitly handle IdString::Null == (const char *)0
68 if ( ! _id )
69 return rhs ? -1 : 0;
70 if ( ! rhs )
71 return _id ? 1 : 0;
72 return ::strcmp( c_str(), rhs );
73 }
74
75 /******************************************************************
76 **
77 ** FUNCTION NAME : operator<<
78 ** FUNCTION TYPE : std::ostream &
79 */
80 std::ostream & operator<<( std::ostream & str, const IdString & obj )
81 {
82 return str << obj.c_str();
83 }
84
85 std::ostream & dumpOn( std::ostream & str, const IdString & obj )
86 {
87 return str << '(' << obj.id() << ')' << obj.c_str();
88 }
89
91} // namespace zypp
Access to the sat-pools string space.
Definition: IdString.h:43
unsigned size() const
The strings size.
Definition: IdString.cc:47
const char * c_str() const
Conversion to const char *
Definition: IdString.cc:50
int compare(const IdString &rhs) const
Compare IdString returning -1,0,1.
Definition: IdString.cc:53
IdType _id
Definition: IdString.h:126
IdType id() const
Expert backdoor.
Definition: IdString.h:122
static const IdString Null
No or Null string ( Id 0 ).
Definition: IdString.h:74
static const IdString Empty
Empty string.
Definition: IdString.h:77
constexpr IdString()
Default ctor, empty string.
Definition: IdString.h:49
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.
Definition: CodePitfalls.doc:2
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
Definition: Capability.cc:580
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition: SerialNumber.cc:52
static PoolImpl & myPool()
Definition: PoolImpl.cc:184