libzypp  13.10.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 std::string & str_r )
36  : _id( ::pool_str2id( myPool().getPool(), str_r.c_str(), /*create*/true ) )
37  {}
38 
39  unsigned IdString::size() const
40  { return ::strlen( c_str() ); }
41 
42  const char * IdString::c_str() const
43  { return _id ? ::pool_id2str( myPool().getPool(), _id ) : ""; }
44 
45  int IdString::compare( const IdString & rhs ) const
46  {
47  if ( _id == rhs._id )
48  return 0;
49  // Explicitly handle IdString::Null < ""
50  if ( ! _id )
51  return -1;
52  if ( ! rhs._id )
53  return 1;
54  return ::strcmp( c_str(), rhs.c_str() );
55  }
56 
57  int IdString::compare( const char * rhs ) const
58  {
59  // Explicitly handle IdString::Null == (const char *)0
60  if ( ! _id )
61  return rhs ? -1 : 0;
62  if ( ! rhs )
63  return _id ? 1 : 0;
64  return ::strcmp( c_str(), rhs );
65  }
66 
67  /******************************************************************
68  **
69  ** FUNCTION NAME : operator<<
70  ** FUNCTION TYPE : std::ostream &
71  */
72  std::ostream & operator<<( std::ostream & str, const IdString & obj )
73  {
74  return str << obj.c_str();
75  }
76 
77  std::ostream & dumpOn( std::ostream & str, const IdString & obj )
78  {
79  return str << '(' << obj.id() << ')' << obj.c_str();
80  }
81 
83 } // namespace zypp
IdType id() const
Expert backdoor.
Definition: IdString.h:103
IdType _id
Definition: IdString.h:107
Access to the sat-pools string space.
Definition: IdString.h:39
static const IdString Empty
Empty string.
Definition: IdString.h:62
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:435
static PoolImpl & myPool()
Definition: PoolImpl.cc:164
const char * c_str() const
Conversion to const char *
Definition: IdString.cc:42
int compare(const IdString &rhs) const
Compare IdString returning -1,0,1.
Definition: IdString.cc:45
IdString()
Default ctor, empty string.
Definition: IdString.h:46
static const IdString Null
No or Null string ( Id 0 ).
Definition: IdString.h:59
static const IdType noId(0)
unsigned size() const
The strings size.
Definition: IdString.cc:39