libzypp 17.37.10

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
20 using std::endl;
21
23 namespace 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
IdString.h
Pool.h
zypp::IdString
Access to the sat-pools string space.
Definition IdString.h:44
zypp::IdString::size
unsigned size() const
The strings size.
Definition IdString.cc:47
zypp::IdString::c_str
const char * c_str() const
Conversion to const char *
Definition IdString.cc:50
zypp::IdString::compare
int compare(const IdString &rhs) const
Compare IdString returning -1,0,1.
Definition IdString.cc:53
zypp::IdString::_id
IdType _id
Definition IdString.h:137
zypp::IdString::id
IdType id() const
Expert backdoor.
Definition IdString.h:133
zypp::IdString::Null
static const IdString Null
No or Null string ( Id 0 ).
Definition IdString.h:75
zypp::IdString::Empty
static const IdString Empty
Empty string.
Definition IdString.h:78
zypp::IdString::IdString
constexpr IdString()
Default ctor, empty string.
Definition IdString.h:50
str
String related utilities and Regular expression matching.
zypp::sat::detail::emptyId
static const IdType emptyId(1)
zypp::sat::detail::noId
static const IdType noId(0)
zypp
Easy-to use interface to the ZYPP dependency resolver.
Definition Application.cc:20
zypp::dumpOn
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
Definition Capability.cc:580
zypp::operator<<
std::ostream & operator<<(std::ostream &str, const SerialNumber &obj)
Definition SerialNumber.cc:52
PoolImpl.h
zypp::sat::detail::PoolMember::myPool
static PoolImpl & myPool()
Definition PoolImpl.cc:185