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 std::string & str_r )
36 : _id( ::pool_str2id( myPool().getPool(), str_r.c_str(), /*create*/true ) )
39 unsigned IdString::size() const
40 { return ::strlen( c_str() ); }
42 const char * IdString::c_str() const
43 { return _id ? ::pool_id2str( myPool().getPool(), _id ) : ""; }
45 int IdString::compare( const IdString & rhs ) const
49 // Explicitly handle IdString::Null < ""
54 return ::strcmp( c_str(), rhs.c_str() );
57 int IdString::compare( const char * rhs ) const
59 // Explicitly handle IdString::Null == (const char *)0
64 return ::strcmp( c_str(), rhs );
67 /******************************************************************
69 ** FUNCTION NAME : operator<<
70 ** FUNCTION TYPE : std::ostream &
72 std::ostream & operator<<( std::ostream & str, const IdString & obj )
74 return str << obj.c_str();
77 std::ostream & dumpOn( std::ostream & str, const IdString & obj )
79 return str << '(' << obj.id() << ')' << obj.c_str();
82 /////////////////////////////////////////////////////////////////
84 ///////////////////////////////////////////////////////////////////