// file : build2/target.txx -*- C++ -*- // copyright : Copyright (c) 2014-2017 Code Synthesis Ltd // license : MIT; see accompanying LICENSE file #include #include #include namespace build2 { // prerequisite_members_range // template void prerequisite_members_range::iterator:: switch_mode () { // A group could be empty, so we may have to iterate. // do { g_ = resolve_group_members (r_->l_, r_->a_, search (*i_)); assert (g_.members != nullptr); // Group could not be resolved. if (g_.count != 0) // Skip empty see through groups. { j_ = 1; // Start from the first group member. break; } } while (++i_ != r_->e_ && i_->type.see_through); } // // template optional target_extension_fix (const target_key&, const scope&, bool) { return string (ext); } template optional target_extension_var (const target_key& tk, const scope& s, bool) { // Include target type/pattern-specific variables. // if (auto l = s.find (var_pool[var], tk)) { // Help the user here and strip leading '.' from the extension. // const string& e (cast (l)); return !e.empty () && e.front () == '.' ? string (e, 1) : e; } return def != nullptr ? optional (def) : nullopt; } }