From fd2c0dc9707714d82580dc61854efc06335e6091 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Tue, 6 Oct 2015 08:43:01 +0200 Subject: Track prerequisite packages, handle in pkg-{con,dis}figure --- bpkg/satisfaction | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 bpkg/satisfaction (limited to 'bpkg/satisfaction') diff --git a/bpkg/satisfaction b/bpkg/satisfaction new file mode 100644 index 0000000..2200688 --- /dev/null +++ b/bpkg/satisfaction @@ -0,0 +1,39 @@ +// file : bpkg/satisfaction -*- C++ -*- +// copyright : Copyright (c) 2014-2015 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +#ifndef BPKG_SATISFACTION +#define BPKG_SATISFACTION + +#include +#include +#include + +namespace bpkg +{ + // Return true if version satisfies the constraint. + // + bool + satisfies (const version&, const dependency_constraint&); + + inline bool + satisfies (const version& v, const optional& c) + { + return !c || satisfies (v, *c); + } + + // Return true if any version that satisfies l also satisfies r, or, in + // other words, l is stricter than or equal to r. + // + bool + satisfies (const dependency_constraint& l, const dependency_constraint& r); + + inline bool + satisfies (const optional& l, + const optional& r) + { + return l ? (!r || satisfies (*l, *r)) : !r; + } +} + +#endif // BPKG_SATISFACTION -- cgit v1.1