cemu-vcpkg/toolsrc/include/vcpkg/statusparagraph.h
Billy O'Neal 5504dfa7da
[vcpkg] Turn on tests and PREfast in CI, and fix tests to pass. (#11239)
Co-authored-by: nicole mazzuca <mazzucan@outlook.com>
2020-05-14 12:49:31 -07:00

65 lines
1.4 KiB
C++

#pragma once
#include <vcpkg/binaryparagraph.h>
#include <map>
namespace vcpkg
{
enum class InstallState
{
ERROR_STATE,
NOT_INSTALLED,
HALF_INSTALLED,
INSTALLED,
};
enum class Want
{
ERROR_STATE,
UNKNOWN,
INSTALL,
HOLD,
DEINSTALL,
PURGE
};
/// <summary>
/// Installed package metadata
/// </summary>
struct StatusParagraph
{
StatusParagraph() noexcept;
explicit StatusParagraph(Parse::Paragraph&& fields);
bool is_installed() const { return want == Want::INSTALL && state == InstallState::INSTALLED; }
BinaryParagraph package;
Want want;
InstallState state;
};
void serialize(const StatusParagraph& pgh, std::string& out_str);
std::string to_string(InstallState f);
std::string to_string(Want f);
struct InstalledPackageView
{
InstalledPackageView() noexcept : core(nullptr) {}
InstalledPackageView(const StatusParagraph* c, std::vector<const StatusParagraph*>&& fs)
: core(c), features(std::move(fs))
{
}
const PackageSpec& spec() const { return core->package.spec; }
std::vector<PackageSpec> dependencies() const;
std::map<std::string, std::vector<FeatureSpec>> feature_dependencies() const;
const StatusParagraph* core;
std::vector<const StatusParagraph*> features;
};
}