- Create the cache directly from the schema (installed) file.
[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, UNDETERMINED, TRANSACT);
24   const ResStatus ResStatus::toBeInstalledSoft           (UNINSTALLED, UNDETERMINED, TRANSACT, SOFT_INSTALL);
25   const ResStatus ResStatus::toBeUninstalled             (INSTALLED,   UNDETERMINED, TRANSACT);
26   const ResStatus ResStatus::impossible                  (UNINSTALLED, UNDETERMINED, KEEP_STATE, EXPLICIT_INSTALL, EXPLICIT_REMOVE, IMPOSSIBLE);
27   const ResStatus ResStatus::toBeUninstalledSoft         (INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, SOFT_REMOVE);
28   const ResStatus ResStatus::toBeUninstalledDueToUnlink  (INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_UNLINK);
29   const ResStatus ResStatus::toBeUninstalledDueToObsolete(INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_OBSOLETE);
30   const ResStatus ResStatus::toBeUninstalledDueToUpgrade (INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_UPGRADE);
31   const ResStatus ResStatus::installed                   (INSTALLED,   UNDETERMINED);
32   const ResStatus ResStatus::uninstalled                 (UNINSTALLED, UNDETERMINED);
33   const ResStatus ResStatus::incomplete                  (INSTALLED,   INCOMPLETE);
34   const ResStatus ResStatus::complete                    (INSTALLED,   SATISFIED);
35   const ResStatus ResStatus::satisfied                   (UNINSTALLED, SATISFIED);
36   const ResStatus ResStatus::unneeded                    (UNINSTALLED, UNNEEDED);
37   const ResStatus ResStatus::needed                      (UNINSTALLED, INCOMPLETE);
38
39   ///////////////////////////////////////////////////////////////////
40   //
41   //    METHOD NAME : ResStatus::ResStatus
42   //    METHOD TYPE : Ctor
43   //
44   ResStatus::ResStatus()
45   {}
46
47   ///////////////////////////////////////////////////////////////////
48   //
49   //    METHOD NAME : ResStatus::ResStatus
50   //    METHOD TYPE : Ctor
51   //
52   ResStatus::ResStatus( bool isInstalled_r )
53   : _bitfield( isInstalled_r ? INSTALLED : UNINSTALLED )
54   {}
55
56   ///////////////////////////////////////////////////////////////////
57   //
58   //    METHOD NAME : ResStatus::~ResStatus
59   //    METHOD TYPE : Dtor
60   //
61   ResStatus::~ResStatus()
62   {}
63
64
65   ResStatus::ResStatus (enum StateValue s, enum EstablishValue e, enum TransactValue t, enum InstallDetailValue i, enum RemoveDetailValue r, enum SolverStateValue ssv)
66     : _bitfield (s)
67   {
68     fieldValueAssign<EstablishField>(e);
69     fieldValueAssign<TransactField>(t);
70     if (t == TRANSACT) {
71         if (s == INSTALLED) fieldValueAssign<TransactDetailField>(r);
72         else fieldValueAssign<TransactDetailField>(i);
73     }
74     if (ssv != NORMAL) {
75         fieldValueAssign<SolverStateField>(ssv);
76     }
77   }
78
79
80   /******************************************************************
81   **
82   **    FUNCTION NAME : operator<<
83   **    FUNCTION TYPE : std::ostream &
84   */
85   std::ostream & operator<<( std::ostream & str, const ResStatus & obj )
86   {
87     str << (obj.isInstalled() ? "I" : "U");
88
89     str << (obj.isEstablishedUneeded() ? "U" :
90         ( obj.isEstablishedSatisfied() ? "S" :
91         ( obj.isEstablishedIncomplete() ? "I" : "_") ) );
92
93     str << (obj.transacts () ? "T"
94                              : (obj.isLocked() ? "L" : "_") );
95
96     if (obj.isBySolver()) str << "s";
97     else if (obj.isByApplLow()) str << "l";
98     else if (obj.isByApplHigh()) str << "h";
99     else if (obj.isByUser()) str << "u";
100
101     str << (obj.isToBeUninstalledDueToObsolete() ? "O" :
102         ( obj.isToBeUninstalledDueToUnlink() ? "L" :
103         ( obj.isToBeUninstalledDueToUpgrade() ? "U" :
104         ( obj.isToBeInstalledSoft() ? "S" : "_" ) ) ) );
105
106     str << (obj.isSeen() ? "@" :
107         ( obj.isImpossible() ? "X" : "" ) );
108
109     return str;
110   }
111
112   /////////////////////////////////////////////////////////////////
113 } // namespace zypp
114 ///////////////////////////////////////////////////////////////////