From 982b94ba9d7615d2b5a6420411c3d41356fdf19a Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sun, 21 Dec 2025 22:56:13 +0100 Subject: solver3: Implement value(Lit) and use it --- apt-pkg/solver3.h | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'apt-pkg/solver3.h') diff --git a/apt-pkg/solver3.h b/apt-pkg/solver3.h index 8310bb1c5..235717d86 100644 --- a/apt-pkg/solver3.h +++ b/apt-pkg/solver3.h @@ -79,10 +79,12 @@ using FastContiguousCacheMap = ContiguousCacheMap; */ class Solver { + public: enum class Decision : uint16_t; - enum class Hint : uint16_t; struct Var; struct Lit; + + private: struct CompareProviders3; struct State; struct Clause; @@ -277,6 +279,7 @@ class Solver return static_cast(choices.size()); } inline Var bestReason(Clause const *clause, Var var) const; + inline Decision value(Lit lit) const; public: // \brief Create a new decision level. @@ -583,3 +586,17 @@ constexpr APT::Solver::Lit APT::Solver::Var::operator~() const { return ~Lit(*this); } + +inline APT::Solver::Decision operator~(APT::Solver::Decision decision) +{ + switch (decision) + { + case APT::Solver::Decision::NONE: + return APT::Solver::Decision::NONE; + case APT::Solver::Decision::MUST: + return APT::Solver::Decision::MUSTNOT; + case APT::Solver::Decision::MUSTNOT: + return APT::Solver::Decision::MUST; + } + abort(); +} -- cgit v1.2.3-70-g09d2