added new state VALIDATE in ResStatus
[platform/upstream/libzypp.git] / zypp / ResStatus.h
index ba340da..4716626 100644 (file)
@@ -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<FieldType> BitFieldType;
     // Bit Ranges within FieldType defined by 1st bit and size:
     typedef bit::Range<FieldType,0,                          1> StateField;
-    typedef bit::Range<FieldType,StateField::end,            2> TransactField;
+    typedef bit::Range<FieldType,StateField::end,            2> ValidateField;      
+    typedef bit::Range<FieldType,ValidateField::end,         2> TransactField;
     typedef bit::Range<FieldType,TransactField::end,         2> TransactByField;
     typedef bit::Range<FieldType,TransactByField::end,       2> TransactDetailField;
     typedef bit::Range<FieldType,TransactDetailField::end,   1> SolverStateField;
@@ -79,6 +84,13 @@ namespace zypp
         UNINSTALLED = bit::RangeValue<StateField,0>::value,
         INSTALLED   = bit::RangeValue<StateField,1>::value
       };
+    enum ValidateValue
+      {
+       UNDETERMINED = bit::RangeValue<ValidateField,0>::value,
+        BROKEN       = bit::RangeValue<ValidateField,1>::value,
+        SATISFIED    = bit::RangeValue<ValidateField,2>::value,
+        NONRELEVANT  = bit::RangeValue<ValidateField,3>::value
+      };
     enum TransactValue
       {
         KEEP_STATE = bit::RangeValue<TransactField,0>::value,
@@ -181,6 +193,18 @@ namespace zypp
        fieldValueAssign<WeakField>( toVal_r ? SUGGESTED : NO_WEAK );
     }
 
+    bool isUndetermined() const
+    { return fieldValueIs<ValidateField>( UNDETERMINED ); }
+
+    bool isSatisfied() const
+    { return fieldValueIs<ValidateField>( SATISFIED ); }
+
+    bool isBroken() const
+    { return fieldValueIs<ValidateField>( BROKEN ); }
+
+    bool isNonRelevant() const
+    { return fieldValueIs<ValidateField>( NONRELEVANT ); }
+
   public:
     // These two are IMMUTABLE!
 
@@ -527,6 +551,30 @@ namespace zypp
        return true;
     }
 
+    bool setUndetermined ()
+    {
+      fieldValueAssign<ValidateField>(UNDETERMINED);
+      return true;
+    }
+
+    bool setSatisfied ()
+    {
+      fieldValueAssign<ValidateField>(SATISFIED);
+      return true;
+    }
+
+    bool setBroken ()
+    {
+      fieldValueAssign<ValidateField>(BROKEN);
+      return true;
+    }
+
+    bool setNonRelevant ()
+    {
+      fieldValueAssign<ValidateField>(NONRELEVANT);
+      return true;
+    }
+
     bool isSeen () const
     { return fieldValueIs<SolverStateField>( 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,