winget-cli

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

AppContent.h (2464B)


      1 // Copyright (c) Microsoft Corporation.
      2 // Licensed under the MIT License.
      3 
      4 #pragma once
      5 
      6 #include "AppFile.h"
      7 #include "Content.h"
      8 
      9 #include <memory>
     10 #include <string>
     11 #include <vector>
     12 
     13 namespace SFS
     14 {
     15 class AppPrerequisiteContent
     16 {
     17   public:
     18     [[nodiscard]] static Result Make(std::unique_ptr<ContentId>&& contentId,
     19                                      std::vector<AppFile>&& files,
     20                                      std::unique_ptr<AppPrerequisiteContent>& out) noexcept;
     21 
     22     AppPrerequisiteContent(AppPrerequisiteContent&&) noexcept;
     23 
     24     AppPrerequisiteContent(const AppPrerequisiteContent&) = delete;
     25     AppPrerequisiteContent& operator=(const AppPrerequisiteContent&) = delete;
     26 
     27     /**
     28      * @return Unique content identifier
     29      */
     30     const ContentId& GetContentId() const noexcept;
     31 
     32     /**
     33      * @return Files belonging to this Prequisite
     34      */
     35     const std::vector<AppFile>& GetFiles() const noexcept;
     36 
     37   private:
     38     AppPrerequisiteContent() = default;
     39 
     40     std::unique_ptr<ContentId> m_contentId;
     41     std::vector<AppFile> m_files;
     42 };
     43 
     44 class AppContent
     45 {
     46   public:
     47     [[nodiscard]] static Result Make(std::unique_ptr<ContentId>&& contentId,
     48                                      std::string updateId,
     49                                      std::vector<AppPrerequisiteContent>&& prerequisites,
     50                                      std::vector<AppFile>&& files,
     51                                      std::unique_ptr<AppContent>& out) noexcept;
     52 
     53     AppContent(AppContent&&) noexcept;
     54 
     55     AppContent(const AppContent&) = delete;
     56     AppContent& operator=(const AppContent&) = delete;
     57 
     58     /**
     59      * @return Unique content identifier
     60      */
     61     const ContentId& GetContentId() const noexcept;
     62 
     63     /**
     64      * @return Unique Update Id
     65      */
     66     const std::string& GetUpdateId() const noexcept;
     67 
     68     /**
     69      * @return Files belonging to this App
     70      */
     71     const std::vector<AppFile>& GetFiles() const noexcept;
     72 
     73     /**
     74      * @return List of Prerequisite content needed for this App. Prerequisites don't have further dependencies.
     75      */
     76     const std::vector<AppPrerequisiteContent>& GetPrerequisites() const noexcept;
     77 
     78   private:
     79     AppContent() = default;
     80 
     81     std::unique_ptr<ContentId> m_contentId;
     82     std::vector<AppFile> m_files;
     83 
     84     std::string m_updateId;
     85     std::vector<AppPrerequisiteContent> m_prerequisites;
     86 };
     87 } // namespace SFS