bool InstanceSelector::IsProductMatch()

in src/vswhere.lib/InstanceSelector.cpp [213:247]


bool InstanceSelector::IsProductMatch(_In_ ISetupInstance2* pInstance) const
{
    _ASSERT(pInstance);

    ISetupPackageReferencePtr product;

    auto hr = pInstance->GetProduct(&product);
    if (FAILED(hr) || !product)
    {
        // Should always have a product so no match.
        return false;
    }

    // Asterisk on command line will clear the array to find any products.
    const auto products = m_args.get_Products();
    if (products.empty())
    {
        return true;
    }

    const auto productId = GetId(product);
    if (productId.empty())
    {
        return false;
    }

    const auto ci_equal_productId = bind(ci_equal(), productId, _1);
    const auto it = find_if(products.begin(), products.end(), ci_equal_productId);
    if (it == products.end())
    {
        return false;
    }

    return true;
}