[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / addons / addoninfo / AddonInfoBuilder.h
blobadbbc84a87bb01cf0dac71a585ac3c1aa8fc2eb4
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #pragma once
11 #include "addons/IAddon.h"
13 #include <map>
14 #include <memory>
15 #include <string>
16 #include <unordered_map>
17 #include <vector>
19 class CDateTime;
20 class TiXmlElement;
22 namespace ADDON
24 enum class AddonLifecycleState;
25 enum class AddonType;
27 class CAddonExtensions;
28 class CAddonType;
30 struct DependencyInfo;
31 struct RepositoryDirInfo;
33 class CAddonInfo;
34 using AddonInfoPtr = std::shared_ptr<CAddonInfo>;
36 class CAddonInfoBuilder
38 public:
39 static AddonInfoPtr Generate(const std::string& id, AddonType type);
40 static AddonInfoPtr Generate(const std::string& addonPath, bool platformCheck = true);
41 static AddonInfoPtr Generate(const TiXmlElement* baseElement,
42 const RepositoryDirInfo& repo,
43 bool platformCheck = true);
45 /*!
46 * @brief Parts used from CAddonDatabase
48 //@{
49 static void SetInstallData(const AddonInfoPtr& addon, const CDateTime& installDate,
50 const CDateTime& lastUpdated, const CDateTime& lastUsed, const std::string& origin);
51 //@}
53 private:
54 static bool ParseXML(const AddonInfoPtr& addon,
55 const TiXmlElement* element,
56 const std::string& addonPath);
57 static bool ParseXML(const AddonInfoPtr& addon,
58 const TiXmlElement* element,
59 const std::string& addonPath,
60 const RepositoryDirInfo& repo);
61 static bool ParseXMLTypes(CAddonType& addonType,
62 const AddonInfoPtr& info,
63 const TiXmlElement* child);
64 static bool ParseXMLExtension(CAddonExtensions& addonExt, const TiXmlElement* element);
65 static bool GetTextList(const TiXmlElement* element, const std::string& tag, std::unordered_map<std::string, std::string>& translatedValues);
66 static const char* GetPlatformLibraryName(const TiXmlElement* element);
67 static bool PlatformSupportsAddon(const AddonInfoPtr& addon);
70 class CAddonInfoBuilderFromDB
72 public:
73 CAddonInfoBuilderFromDB();
75 void SetId(std::string id);
76 void SetName(std::string name);
77 void SetLicense(std::string license);
78 void SetSummary(std::string summary);
79 void SetDescription(std::string description);
80 void SetDisclaimer(std::string disclaimer);
81 void SetAuthor(std::string author);
82 void SetSource(std::string source);
83 void SetWebsite(std::string website);
84 void SetForum(std::string forum);
85 void SetEMail(std::string email);
86 void SetIcon(std::string icon);
87 void SetArt(const std::string& type, std::string value);
88 void SetArt(std::map<std::string, std::string> art);
89 void SetScreenshots(std::vector<std::string> screenshots);
90 void SetChangelog(std::string changelog);
91 void SetLifecycleState(AddonLifecycleState state, std::string description);
92 void SetPath(std::string path);
93 void SetLibName(std::string libname);
94 void SetVersion(CAddonVersion version);
95 void SetDependencies(std::vector<DependencyInfo> dependencies);
96 void SetExtrainfo(InfoMap extrainfo);
97 void SetInstallDate(const CDateTime& installDate);
98 void SetLastUpdated(const CDateTime& lastUpdated);
99 void SetLastUsed(const CDateTime& lastUsed);
100 void SetOrigin(std::string origin);
101 void SetPackageSize(uint64_t size);
102 void SetExtensions(CAddonType addonType);
104 const AddonInfoPtr& get() { return m_addonInfo; }
106 private:
107 AddonInfoPtr m_addonInfo;