From 1c7d67d9895c2bdbef13541b154ea17d25b8d515 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 23 Jan 2017 10:53:33 +0200 Subject: Go back to storing scope instead of target in prerequisite Turns out this was semantically the right way to do it. --- build2/prerequisite.cxx | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) (limited to 'build2/prerequisite.cxx') diff --git a/build2/prerequisite.cxx b/build2/prerequisite.cxx index 469bdf9..3bffa3d 100644 --- a/build2/prerequisite.cxx +++ b/build2/prerequisite.cxx @@ -51,38 +51,22 @@ namespace build2 // prerequisite // prerequisite:: - prerequisite (const prerequisite& p, target_type& w) - : proj (p.proj), - type (p.type), - dir (p.dir), - out (p.out), - name (p.name), - ext (p.ext), - owner (w), - target (nullptr) - { - assert (&w.base_scope () == &p.owner.base_scope ()); - } - - // Make a prerequisite from a target. - // - prerequisite:: - prerequisite (target_type& t, target_type& w) + prerequisite (target_type& t) : proj (nullopt), type (t.type ()), dir (t.dir), out (t.out), // @@ If it's empty, then we treat as undetermined? name (t.name), ext (t.ext), - owner (w), + scope (t.base_scope ()), target (&t) { } - prerequisite_key prerequisite:: - key () const + bool prerequisite:: + belongs (const target_type& t) const { - return prerequisite_key { - proj, {&type, &dir, &out, &name, ext}, &owner.base_scope ()}; + const auto& p (t.prerequisites); + return !(p.empty () || this < &p.front () || this > &p.back ()); } } -- cgit v1.1