1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/sat/IdString.cc
13 #include <boost/mpl/int.hpp>
15 #include "zypp/IdString.h"
17 #include "zypp/sat/detail/PoolImpl.h"
18 #include "zypp/sat/Pool.h"
22 ///////////////////////////////////////////////////////////////////
24 { /////////////////////////////////////////////////////////////////
26 const IdString IdString::Null ( sat::detail::noId );
27 const IdString IdString::Empty( sat::detail::emptyId );
29 /////////////////////////////////////////////////////////////////
31 IdString::IdString( const char * str_r )
32 : _id( ::pool_str2id( myPool().getPool(), str_r, /*create*/true ) )
35 IdString::IdString( const char * str_r, unsigned len_r )
36 : _id( ::pool_strn2id( myPool().getPool(), str_r, len_r, /*create*/true ) )
39 IdString::IdString( const std::string & str_r )
40 : IdString( str_r.c_str(), str_r.length() )
43 IdString::IdString( boost::string_ref str_r )
44 : IdString( str_r.data(), str_r.length() )
47 unsigned IdString::size() const
48 { return ::strlen( c_str() ); }
50 const char * IdString::c_str() const
51 { return _id ? ::pool_id2str( myPool().getPool(), _id ) : ""; }
53 int IdString::compare( const IdString & rhs ) const
57 // Explicitly handle IdString::Null < ""
62 return ::strcmp( c_str(), rhs.c_str() );
65 int IdString::compare( const char * rhs ) const
67 // Explicitly handle IdString::Null == (const char *)0
72 return ::strcmp( c_str(), rhs );
75 /******************************************************************
77 ** FUNCTION NAME : operator<<
78 ** FUNCTION TYPE : std::ostream &
80 std::ostream & operator<<( std::ostream & str, const IdString & obj )
82 return str << obj.c_str();
85 std::ostream & dumpOn( std::ostream & str, const IdString & obj )
87 return str << '(' << obj.id() << ')' << obj.c_str();
90 /////////////////////////////////////////////////////////////////
92 ///////////////////////////////////////////////////////////////////