fixup Fix to build with libxml 2.12.x (fixes #505)
[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::toBeUninstalled             (INSTALLED,   UNDETERMINED, TRANSACT);
25   const ResStatus ResStatus::toBeUninstalledDueToUpgrade (INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_UPGRADE);
26   const ResStatus ResStatus::toBeUninstalledDueToObsolete(INSTALLED,   UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_OBSOLETE);
27
28   ///////////////////////////////////////////////////////////////////
29   //
30   //    METHOD NAME : ResStatus::ResStatus
31   //    METHOD TYPE : Ctor
32   //
33   ResStatus::ResStatus()
34   {}
35
36   ///////////////////////////////////////////////////////////////////
37   //
38   //    METHOD NAME : ResStatus::ResStatus
39   //    METHOD TYPE : Ctor
40   //
41   ResStatus::ResStatus( bool isInstalled_r )
42   : _bitfield( isInstalled_r ? INSTALLED : UNINSTALLED )
43   {}
44
45   ///////////////////////////////////////////////////////////////////
46   //
47   //    METHOD NAME : ResStatus::~ResStatus
48   //    METHOD TYPE : Dtor
49   //
50   ResStatus::~ResStatus()
51   {}
52
53
54   ResStatus::ResStatus (enum StateValue s, enum ValidateValue v, enum TransactValue t, enum InstallDetailValue i, enum RemoveDetailValue r)
55     : _bitfield (s)
56   {
57     fieldValueAssign<ValidateField>(v);
58     fieldValueAssign<TransactField>(t);
59     if (t == TRANSACT) {
60         if (s == INSTALLED) fieldValueAssign<TransactDetailField>(r);
61         else fieldValueAssign<TransactDetailField>(i);
62     }
63   }
64
65
66   /******************************************************************
67   **
68   **    FUNCTION NAME : operator<<
69   **    FUNCTION TYPE : std::ostream &
70   */
71   std::ostream & operator<<( std::ostream & str, const ResStatus & obj )
72   {
73     str << (obj.isInstalled() ? "I" : "U");
74
75     str << (obj.isBroken() ? "B" :
76         ( obj.isSatisfied() ? "S" :
77         ( obj.isNonRelevant() ? "N" : "_") ) );
78
79     str << (obj.transacts () ? "T"
80                              : (obj.isLocked() ? "L" : "_") );
81
82     if (obj.isBySolver()) str << "s";
83     else if (obj.isByApplLow()) str << "l";
84     else if (obj.isByApplHigh()) str << "h";
85     else if (obj.isByUser()) str << "u";
86
87     str << (obj.isToBeUninstalledDueToObsolete() ? "O" :
88         ( obj.isToBeUninstalledDueToUpgrade() ? "U" :
89         ( obj.isToBeInstalledSoft() ? "S" : "_" ) ) );
90
91     str << (obj.isRecommended() ? "r" : "" );
92     str << (obj.isSuggested() ? "s" : "" );
93     str << (obj.isOrphaned() ? "o" : "" );
94     str << (obj.isUnneeded() ? "u" : "" );
95
96     return str;
97   }
98
99
100 #define OUTS(X) case ResStatus::X: return str << #X; break
101
102   std::ostream & operator<<( std::ostream & str, ResStatus::TransactValue obj )
103   {
104     switch ( obj )
105     {
106       OUTS( KEEP_STATE );
107       OUTS( LOCKED );
108       OUTS( TRANSACT );
109     }
110     return str;
111   }
112
113   std::ostream & operator<<( std::ostream & str, ResStatus::TransactByValue obj )
114   {
115     switch ( obj )
116     {
117       OUTS( SOLVER );
118       OUTS( APPL_LOW );
119       OUTS( APPL_HIGH );
120       OUTS( USER );
121     }
122     return str;
123   }
124
125   /////////////////////////////////////////////////////////////////
126 } // namespace zypp
127 ///////////////////////////////////////////////////////////////////