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/IdStr.h"
20 #include "zypp/sat/Solvable.h"
21 #include "zypp/sat/Repo.h"
25 ///////////////////////////////////////////////////////////////////
27 { /////////////////////////////////////////////////////////////////
28 ///////////////////////////////////////////////////////////////////
30 { /////////////////////////////////////////////////////////////////
32 const Solvable Solvable::nosolvable;
34 /////////////////////////////////////////////////////////////////
36 ::_Solvable * Solvable::get() const
37 { return myPool().getSolvable( _id ); }
39 Solvable Solvable::nextInPool() const
40 { return Solvable( myPool().getNextId( _id ) ); }
42 #define NO_SOLVABLE_RETURN( VAL ) \
43 ::_Solvable * _solvable( get() ); \
44 if ( ! _solvable ) return VAL
46 NameId Solvable::name() const
48 NO_SOLVABLE_RETURN( NameId() );
49 return NameId( _solvable->name ); }
51 EvrId Solvable::evr() const
53 NO_SOLVABLE_RETURN( EvrId() );
54 return EvrId( _solvable->evr );
57 ArchId Solvable::arch() const
59 NO_SOLVABLE_RETURN( ArchId() );
60 return ArchId( _solvable->arch );
63 VendorId Solvable::vendor() const
65 NO_SOLVABLE_RETURN( VendorId() );
66 return VendorId( _solvable->vendor );
69 Repo Solvable::repo() const
71 NO_SOLVABLE_RETURN( Repo::norepo );
72 return Repo( _solvable->repo );
75 /******************************************************************
77 ** FUNCTION NAME : operator<<
78 ** FUNCTION TYPE : std::ostream &
80 std::ostream & operator<<( std::ostream & str, const Solvable & obj )
83 return str << "sat::solvable()";
85 return str << "sat::solvable(" << obj.id() << "|" << obj.name() << '-' << obj.evr() << '.' << obj.arch() << "){"
86 << obj.repo().name() << "}";
89 /////////////////////////////////////////////////////////////////
91 ///////////////////////////////////////////////////////////////////
92 /////////////////////////////////////////////////////////////////
94 ///////////////////////////////////////////////////////////////////