0673cb2f625f7104cb4e237d67b9fd078e626392
[platform/upstream/libzypp.git] / zypp / ResStatus.cc
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ResStatus.cc
10  *
11 */
12 #include <iostream>
13 //#include "zypp/base/Logger.h"
14
15 #include "zypp/ResStatus.h"
16
17 using std::endl;
18
19 ///////////////////////////////////////////////////////////////////
20 namespace zypp
21 { /////////////////////////////////////////////////////////////////
22
23   const ResStatus ResStatus::toBeInstalled               (UNINSTALLED, TRANSACT);
24   const ResStatus ResStatus::toBeInstalledSoft           (UNINSTALLED, TRANSACT, SOFT_INSTALL);
25   const ResStatus ResStatus::toBeUninstalled             (INSTALLED,   TRANSACT);
26   const ResStatus ResStatus::toBeUninstalledSoft         (INSTALLED,   TRANSACT, EXPLICIT_INSTALL, SOFT_REMOVE);
27   const ResStatus ResStatus::toBeUninstalledDueToObsolete(INSTALLED,   TRANSACT, EXPLICIT_INSTALL, DUE_TO_OBSOLETE);
28   const ResStatus ResStatus::toBeUninstalledDueToUpgrade (INSTALLED,   TRANSACT, EXPLICIT_INSTALL, DUE_TO_UPGRADE);
29   const ResStatus ResStatus::installed                   (INSTALLED);
30   const ResStatus ResStatus::uninstalled                 (UNINSTALLED);
31
32   ///////////////////////////////////////////////////////////////////
33   //
34   //    METHOD NAME : ResStatus::ResStatus
35   //    METHOD TYPE : Ctor
36   //
37   ResStatus::ResStatus()
38   {}
39
40   ///////////////////////////////////////////////////////////////////
41   //
42   //    METHOD NAME : ResStatus::ResStatus
43   //    METHOD TYPE : Ctor
44   //
45   ResStatus::ResStatus( bool isInstalled_r )
46   : _bitfield( isInstalled_r ? INSTALLED : UNINSTALLED )
47   {}
48
49   ///////////////////////////////////////////////////////////////////
50   //
51   //    METHOD NAME : ResStatus::~ResStatus
52   //    METHOD TYPE : Dtor
53   //
54   ResStatus::~ResStatus()
55   {}
56
57
58   ResStatus::ResStatus (enum StateValue s, enum TransactValue t, enum InstallDetailValue i, enum RemoveDetailValue r, enum SolverStateValue ssv)
59     : _bitfield (s)
60   {
61     fieldValueAssign<TransactField>(t);
62     if (t == TRANSACT) {
63         if (s == INSTALLED) fieldValueAssign<TransactDetailField>(r);
64         else fieldValueAssign<TransactDetailField>(i);
65     }
66     if (ssv != NORMAL) {
67         fieldValueAssign<SolverStateField>(ssv);
68     }
69   }
70
71
72   /******************************************************************
73   **
74   **    FUNCTION NAME : operator<<
75   **    FUNCTION TYPE : std::ostream &
76   */
77   std::ostream & operator<<( std::ostream & str, const ResStatus & obj )
78   {
79     str << (obj.isInstalled() ? "I" : "U");
80
81     str << (obj.transacts () ? "T"
82                              : (obj.isLocked() ? "L" : "_") );
83
84     if (obj.isBySolver()) str << "s";
85     else if (obj.isByApplLow()) str << "l";
86     else if (obj.isByApplHigh()) str << "h";
87     else if (obj.isByUser()) str << "u";
88
89     str << (obj.isToBeUninstalledDueToObsolete() ? "O" :
90         ( obj.isToBeUninstalledDueToUpgrade() ? "U" :
91         ( obj.isToBeInstalledSoft() ? "S" : "_" ) ) );
92
93     str << (obj.isSeen() ? "@" : "" );
94
95     str << (obj.isRecommended() ? "r" : "" );
96
97     str << (obj.isSuggested() ? "s" : "" );    
98
99     return str;
100   }
101
102   /////////////////////////////////////////////////////////////////
103 } // namespace zypp
104 ///////////////////////////////////////////////////////////////////