1 /*---------------------------------------------------------------------\
3 | |__ / \ / / . \ . \ |
8 \---------------------------------------------------------------------*/
9 /** \file zypp/sat/Solvable.cc
14 #include "zypp/base/Logger.h"
15 #include "zypp/base/Gettext.h"
16 #include "zypp/base/Exception.h"
18 #include "zypp/sat/detail/PoolImpl.h"
19 #include "zypp/sat/Solvable.h"
20 #include "zypp/sat/Repo.h"
24 ///////////////////////////////////////////////////////////////////
26 { /////////////////////////////////////////////////////////////////
27 ///////////////////////////////////////////////////////////////////
29 { /////////////////////////////////////////////////////////////////
31 const PoolId PoolId::noid;
33 /******************************************************************
35 ** FUNCTION NAME : operator<<
36 ** FUNCTION TYPE : std::ostream &
38 std::ostream & operator<<( std::ostream & str, const PoolId & obj )
40 return str << ::id2str( detail::PoolMember::myPool().getPool(), obj.get() );
41 return str << "sat::Id(" << obj.get() << ")";
44 /////////////////////////////////////////////////////////////////
46 const Solvable Solvable::nosolvable;
48 /////////////////////////////////////////////////////////////////
50 ::_Solvable * Solvable::get() const
51 { return myPool().getSolvable( _id ); }
53 Solvable Solvable::nextInPool() const
54 { return Solvable( myPool().getNextId( _id ) ); }
56 #define NO_SOLVABLE_RETURN( VAL ) \
57 ::_Solvable * _solvable( get() ); \
58 if ( ! _solvable ) return VAL
60 NameId Solvable::name() const
62 NO_SOLVABLE_RETURN( NameId::noid );
63 return _solvable->name; }
65 EvrId Solvable::evr() const
67 NO_SOLVABLE_RETURN( EvrId::noid );
68 return _solvable->arch;
71 ArchId Solvable::arch() const
73 NO_SOLVABLE_RETURN( ArchId::noid );
74 return _solvable->evr;
77 VendorId Solvable::vendor() const
79 NO_SOLVABLE_RETURN( VendorId::noid );
80 return _solvable->vendor;
83 Repo Solvable::repo() const
85 NO_SOLVABLE_RETURN( Repo::norepo );
86 return Repo( _solvable->repo );
89 const char * Solvable::string( const PoolId & id_r ) const
91 NO_SOLVABLE_RETURN( "" );
93 SEC << " n " << ::id2str( _solvable->repo->pool, id_r.get() ) << endl;
94 SEC << " e " << ::dep2str( _solvable->repo->pool, id_r.get() )<< endl;
95 SEC << " a " << ::id2rel( _solvable->repo->pool, id_r.get() )<< endl;
96 SEC << " v " << ::id2evr( _solvable->repo->pool, id_r.get() )<< endl;
97 return ::id2str( _solvable->repo->pool, id_r.get() );
101 /******************************************************************
103 ** FUNCTION NAME : operator<<
104 ** FUNCTION TYPE : std::ostream &
106 std::ostream & operator<<( std::ostream & str, const Solvable & obj )
109 return str << "sat::solvable()";
111 return str << "sat::solvable(" << obj.id() << "|" << obj.name() << '-' << obj.evr() << '.' << obj.arch() << "){"
112 << obj.repo().name() << "}";
115 /////////////////////////////////////////////////////////////////
117 ///////////////////////////////////////////////////////////////////
118 /////////////////////////////////////////////////////////////////
120 ///////////////////////////////////////////////////////////////////