backup
[platform/upstream/libzypp.git] / zypp / sat / Solvable.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/sat/Solvable.cc
10  *
11 */
12 #include <iostream>
13
14 #include "zypp/base/Logger.h"
15 #include "zypp/base/Gettext.h"
16 #include "zypp/base/Exception.h"
17
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"
22
23 using std::endl;
24
25 ///////////////////////////////////////////////////////////////////
26 namespace zypp
27 { /////////////////////////////////////////////////////////////////
28   ///////////////////////////////////////////////////////////////////
29   namespace sat
30   { /////////////////////////////////////////////////////////////////
31
32     const Solvable Solvable::nosolvable;
33
34     /////////////////////////////////////////////////////////////////
35
36     ::_Solvable * Solvable::get() const
37     { return myPool().getSolvable( _id ); }
38
39     Solvable Solvable::nextInPool() const
40     { return Solvable( myPool().getNextId( _id ) ); }
41
42 #define NO_SOLVABLE_RETURN( VAL ) \
43     ::_Solvable * _solvable( get() ); \
44     if ( ! _solvable ) return VAL
45
46     NameId Solvable::name() const
47     {
48       NO_SOLVABLE_RETURN( NameId() );
49       return NameId( _solvable->name ); }
50
51     EvrId Solvable::evr() const
52     {
53       NO_SOLVABLE_RETURN( EvrId() );
54       return EvrId( _solvable->evr );
55     }
56
57     ArchId Solvable::arch() const
58     {
59       NO_SOLVABLE_RETURN( ArchId() );
60       return ArchId( _solvable->arch );
61     }
62
63     VendorId Solvable::vendor() const
64     {
65       NO_SOLVABLE_RETURN( VendorId() );
66       return VendorId( _solvable->vendor );
67     }
68
69     Repo Solvable::repo() const
70     {
71       NO_SOLVABLE_RETURN( Repo::norepo );
72       return Repo( _solvable->repo );
73     }
74
75     /******************************************************************
76     **
77     **  FUNCTION NAME : operator<<
78     **  FUNCTION TYPE : std::ostream &
79     */
80     std::ostream & operator<<( std::ostream & str, const Solvable & obj )
81     {
82       if ( ! obj )
83         return str << "sat::solvable()";
84
85       return str << "sat::solvable(" << obj.id() << "|" << obj.name() << '-' << obj.evr() << '.' << obj.arch() << "){"
86           << obj.repo().name() << "}";
87     }
88
89     /////////////////////////////////////////////////////////////////
90   } // namespace sat
91   ///////////////////////////////////////////////////////////////////
92   /////////////////////////////////////////////////////////////////
93 } // namespace zypp
94 ///////////////////////////////////////////////////////////////////