From 1445115906139f5c6d14bcbbacdcc0cfb543fd80 Mon Sep 17 00:00:00 2001 From: Daniel Shaw Date: Wed, 19 Jul 2017 14:19:11 -0700 Subject: refactor feature packages --- toolsrc/include/vcpkg_Dependencies.h | 40 +++++++++++------------------------- 1 file changed, 12 insertions(+), 28 deletions(-) (limited to 'toolsrc/include') diff --git a/toolsrc/include/vcpkg_Dependencies.h b/toolsrc/include/vcpkg_Dependencies.h index 92523a654..ff559c0f1 100644 --- a/toolsrc/include/vcpkg_Dependencies.h +++ b/toolsrc/include/vcpkg_Dependencies.h @@ -44,20 +44,20 @@ namespace vcpkg::Dependencies struct FeatureNodeEdges { - std::vector dotted; - std::vector dashed; + std::vector remove_edges; + std::vector build_edges; bool plus = false; }; std::vector to_feature_specs(const std::vector depends, const std::unordered_map str_to_spec); struct Cluster { - ClusterNode cluster_node; + ClusterNode cluster_data; std::unordered_map edges; - std::unordered_set tracked_nodes; - std::unordered_set original_nodes; - bool minus = false; - bool zero = true; + std::unordered_set to_install_features; + std::unordered_set original_features; + bool will_remove = false; + bool transient_uninstalled = true; Cluster() = default; private: @@ -81,7 +81,7 @@ namespace vcpkg::Dependencies InstallPlanAction(const PackageSpec& spec, const AnyParagraph& any_paragraph, const RequestType& request_type); InstallPlanAction(const PackageSpec& spec, const SourceControlFile& any_paragraph, - std::unordered_set features, + const std::unordered_set& features, const RequestType& request_type); InstallPlanAction(const InstallPlanAction&) = delete; InstallPlanAction(InstallPlanAction&&) = default; @@ -163,6 +163,10 @@ namespace vcpkg::Dependencies mutable std::unordered_map cache; explicit PathsPortFile(const VcpkgPaths& paths); const SourceControlFile& get_control_file(const PackageSpec& spec) const override; + + private: + PathsPortFile(const PathsPortFile&) = delete; + PathsPortFile& operator=(const PathsPortFile&) = delete; }; std::vector create_install_plan(const PortFileProvider& port_file_provider, @@ -177,26 +181,6 @@ namespace vcpkg::Dependencies const StatusParagraphs& status_db); } -template<> -struct std::hash -{ - size_t operator()(const vcpkg::Dependencies::Cluster& value) const - { - size_t hash = 17; - if (auto source = value.cluster_node.source_paragraph.get()) - { - hash = hash * 31 + std::hash()((*source)->core_paragraph->name); - } - else if (!value.cluster_node.status_paragraphs.empty()) - { - auto start = *value.cluster_node.status_paragraphs.begin(); - hash = hash * 31 + std::hash()(start.package.displayname()); - } - - return hash; - } -}; - namespace vcpkg::Dependencies { struct GraphPlan -- cgit v1.2.3