From 03a7d89721e1c902d074459e01082fc913f070b0 Mon Sep 17 00:00:00 2001 From: Stefan Schubert Date: Fri, 11 Apr 2008 10:27:21 +0000 Subject: [PATCH] added new state VALIDATE in ResStatus --- zypp/ResStatus.cc | 19 ++++++++++++------- zypp/ResStatus.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 62 insertions(+), 8 deletions(-) diff --git a/zypp/ResStatus.cc b/zypp/ResStatus.cc index 0673cb2..7201a04 100644 --- a/zypp/ResStatus.cc +++ b/zypp/ResStatus.cc @@ -20,12 +20,12 @@ using std::endl; namespace zypp { ///////////////////////////////////////////////////////////////// - const ResStatus ResStatus::toBeInstalled (UNINSTALLED, TRANSACT); - const ResStatus ResStatus::toBeInstalledSoft (UNINSTALLED, TRANSACT, SOFT_INSTALL); - const ResStatus ResStatus::toBeUninstalled (INSTALLED, TRANSACT); - const ResStatus ResStatus::toBeUninstalledSoft (INSTALLED, TRANSACT, EXPLICIT_INSTALL, SOFT_REMOVE); - const ResStatus ResStatus::toBeUninstalledDueToObsolete(INSTALLED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_OBSOLETE); - const ResStatus ResStatus::toBeUninstalledDueToUpgrade (INSTALLED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_UPGRADE); + const ResStatus ResStatus::toBeInstalled (UNINSTALLED, UNDETERMINED, TRANSACT); + const ResStatus ResStatus::toBeInstalledSoft (UNINSTALLED, UNDETERMINED, TRANSACT, SOFT_INSTALL); + const ResStatus ResStatus::toBeUninstalled (INSTALLED, UNDETERMINED, TRANSACT); + const ResStatus ResStatus::toBeUninstalledSoft (INSTALLED, UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, SOFT_REMOVE); + const ResStatus ResStatus::toBeUninstalledDueToObsolete(INSTALLED, UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_OBSOLETE); + const ResStatus ResStatus::toBeUninstalledDueToUpgrade (INSTALLED, UNDETERMINED, TRANSACT, EXPLICIT_INSTALL, DUE_TO_UPGRADE); const ResStatus ResStatus::installed (INSTALLED); const ResStatus ResStatus::uninstalled (UNINSTALLED); @@ -55,9 +55,10 @@ namespace zypp {} - ResStatus::ResStatus (enum StateValue s, enum TransactValue t, enum InstallDetailValue i, enum RemoveDetailValue r, enum SolverStateValue ssv) + ResStatus::ResStatus (enum StateValue s, enum ValidateValue v, enum TransactValue t, enum InstallDetailValue i, enum RemoveDetailValue r, enum SolverStateValue ssv) : _bitfield (s) { + fieldValueAssign(v); fieldValueAssign(t); if (t == TRANSACT) { if (s == INSTALLED) fieldValueAssign(r); @@ -78,6 +79,10 @@ namespace zypp { str << (obj.isInstalled() ? "I" : "U"); + str << (obj.isBroken() ? "B" : + ( obj.isSatisfied() ? "S" : + ( obj.isNonRelevant() ? "N" : "_") ) ); + str << (obj.transacts () ? "T" : (obj.isLocked() ? "L" : "_") ); diff --git a/zypp/ResStatus.h b/zypp/ResStatus.h index ba340da..4716626 100644 --- a/zypp/ResStatus.h +++ b/zypp/ResStatus.h @@ -27,6 +27,10 @@ namespace zypp /** Status bitfield. * * \li \c StateField Whether the resolvable is or uninstalled (available). + * \li \c ValidateField Validate status computed by the solver as + * nonrelevant: it is unimportant for the user + * satisfied: it important nothing has to be done + * broken: it is incomplete. So e.g. an update is needed * \li \c TransactField Wheter to transact this resolvable * (delete if installed install if uninstalled). * In case the resolvable is locked, only USER may modify the @@ -56,7 +60,8 @@ namespace zypp typedef bit::BitField BitFieldType; // Bit Ranges within FieldType defined by 1st bit and size: typedef bit::Range StateField; - typedef bit::Range TransactField; + typedef bit::Range ValidateField; + typedef bit::Range TransactField; typedef bit::Range TransactByField; typedef bit::Range TransactDetailField; typedef bit::Range SolverStateField; @@ -79,6 +84,13 @@ namespace zypp UNINSTALLED = bit::RangeValue::value, INSTALLED = bit::RangeValue::value }; + enum ValidateValue + { + UNDETERMINED = bit::RangeValue::value, + BROKEN = bit::RangeValue::value, + SATISFIED = bit::RangeValue::value, + NONRELEVANT = bit::RangeValue::value + }; enum TransactValue { KEEP_STATE = bit::RangeValue::value, @@ -181,6 +193,18 @@ namespace zypp fieldValueAssign( toVal_r ? SUGGESTED : NO_WEAK ); } + bool isUndetermined() const + { return fieldValueIs( UNDETERMINED ); } + + bool isSatisfied() const + { return fieldValueIs( SATISFIED ); } + + bool isBroken() const + { return fieldValueIs( BROKEN ); } + + bool isNonRelevant() const + { return fieldValueIs( NONRELEVANT ); } + public: // These two are IMMUTABLE! @@ -527,6 +551,30 @@ namespace zypp return true; } + bool setUndetermined () + { + fieldValueAssign(UNDETERMINED); + return true; + } + + bool setSatisfied () + { + fieldValueAssign(SATISFIED); + return true; + } + + bool setBroken () + { + fieldValueAssign(BROKEN); + return true; + } + + bool setNonRelevant () + { + fieldValueAssign(NONRELEVANT); + return true; + } + bool isSeen () const { return fieldValueIs( SEEN ); } @@ -573,6 +621,7 @@ namespace zypp private: /** Ctor for intialization of builtin constants. */ ResStatus( StateValue s, + ValidateValue v = UNDETERMINED, TransactValue t = KEEP_STATE, InstallDetailValue i = EXPLICIT_INSTALL, RemoveDetailValue r = EXPLICIT_REMOVE, -- 2.7.4