libzypp  15.28.6
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 
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
IdType id() const
Expert backdoor.
Definition: IdString.h:115
IdType _id
Definition: IdString.h:119
Access to the sat-pools string space.
Definition: IdString.h:41
constexpr IdString()
Default ctor, empty string.
Definition: IdString.h:48
static const IdString Empty
Empty string.
Definition: IdString.h:70
static const IdType emptyId(1)
std::ostream & operator<<(std::ostream &str, const Exception &obj)
Definition: Exception.cc:120
std::ostream & dumpOn(std::ostream &str, const Capability &obj)
Definition: Capability.cc:446
static PoolImpl & myPool()
Definition: PoolImpl.cc:167
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
static const IdString Null
No or Null string ( Id 0 ).
Definition: IdString.h:67
static const IdType noId(0)
unsigned size() const
The strings size.
Definition: IdString.cc:47