[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / addons / IAddon.h
blob81fb84fdc0261213f3130bf8126f778d3135c999
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 <map>
12 #include <memory>
13 #include <string>
14 #include <vector>
16 class CDateTime;
17 class TiXmlElement;
19 namespace ADDON
21 enum class AddonInstanceSupport;
22 enum class AddonLifecycleState;
23 enum class AddonType;
25 class CAddonMgr;
26 class CAddonSettings;
27 class CAddonVersion;
29 struct DependencyInfo;
31 using AddonInstanceId = uint32_t;
33 constexpr const char* ADDON_SETTING_INSTANCE_GROUP = "kodi_addon_instance";
34 constexpr const char* ADDON_SETTING_INSTANCE_NAME_VALUE = "kodi_addon_instance_name";
35 constexpr const char* ADDON_SETTING_INSTANCE_ENABLED_VALUE = "kodi_addon_instance_enabled";
37 /*!
38 * @brief Identifier denoting default add-on instance.
40 * All numbers greater than 0 denote add-ons with support for multiple instances.
42 constexpr AddonInstanceId ADDON_SINGLETON_INSTANCE_ID = 0;
44 /*!
45 * @brief Identifier denoting initial first add-on instance.
47 constexpr AddonInstanceId ADDON_FIRST_INSTANCE_ID = 1;
49 /*!
50 * @brief Identifier denoting add-on instance id as unused.
52 * @sa ADDON::IAddonInstanceHandler
54 constexpr AddonInstanceId ADDON_INSTANCE_ID_UNUSED = ADDON_SINGLETON_INSTANCE_ID;
56 /*!
57 * @brief Identifier denoting default add-on settings.xml.
59 * All numbers greater than 0 denote add-on instances with an individual set of settings.
61 constexpr AddonInstanceId ADDON_SETTINGS_ID = ADDON_SINGLETON_INSTANCE_ID;
63 constexpr char const* ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda";
65 class IAddon;
66 typedef std::shared_ptr<IAddon> AddonPtr;
67 typedef std::vector<AddonPtr> VECADDONS;
69 using InfoMap = std::map<std::string, std::string>;
70 using ArtMap = std::map<std::string, std::string>;
72 class IAddon : public std::enable_shared_from_this<IAddon>
74 public:
75 virtual ~IAddon() = default;
76 virtual AddonType MainType() const = 0;
77 virtual AddonType Type() const = 0;
78 virtual bool HasType(AddonType type) const = 0;
79 virtual bool HasMainType(AddonType type) const = 0;
80 virtual std::string ID() const = 0;
81 virtual std::string Name() const = 0;
82 virtual bool IsInUse() const = 0;
83 virtual bool IsBinary() const = 0;
84 virtual CAddonVersion Version() const = 0;
85 virtual CAddonVersion MinVersion() const = 0;
86 virtual std::string Summary() const = 0;
87 virtual std::string Description() const = 0;
88 virtual std::string Path() const = 0;
89 virtual std::string Profile() const = 0;
90 virtual std::string LibPath() const = 0;
91 virtual std::string ChangeLog() const = 0;
92 virtual std::string FanArt() const = 0;
93 virtual ArtMap Art() const = 0;
94 virtual std::vector<std::string> Screenshots() const = 0;
95 virtual std::string Author() const = 0;
96 virtual std::string Icon() const = 0;
97 virtual std::string Disclaimer() const = 0;
98 virtual AddonLifecycleState LifecycleState() const = 0;
99 virtual std::string LifecycleStateDescription() const = 0;
100 virtual CDateTime InstallDate() const = 0;
101 virtual CDateTime LastUpdated() const = 0;
102 virtual CDateTime LastUsed() const = 0;
103 virtual std::string Origin() const = 0;
104 virtual std::string OriginName() const = 0;
105 virtual uint64_t PackageSize() const = 0;
106 virtual const InfoMap& ExtraInfo() const = 0;
107 virtual bool SupportsMultipleInstances() const = 0;
108 virtual AddonInstanceSupport InstanceUseType() const = 0;
109 virtual std::vector<AddonInstanceId> GetKnownInstanceIds() const = 0;
110 virtual bool SupportsInstanceSettings() const = 0;
111 virtual bool DeleteInstanceSettings(AddonInstanceId instance) = 0;
112 virtual bool CanHaveAddonOrInstanceSettings() = 0;
113 virtual bool HasSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
114 virtual bool HasUserSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
115 virtual bool SaveSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
116 virtual void UpdateSetting(const std::string& key,
117 const std::string& value,
118 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
119 virtual bool UpdateSettingBool(const std::string& key,
120 bool value,
121 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
122 virtual bool UpdateSettingInt(const std::string& key,
123 int value,
124 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
125 virtual bool UpdateSettingNumber(const std::string& key,
126 double value,
127 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
128 virtual bool UpdateSettingString(const std::string& key,
129 const std::string& value,
130 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
131 virtual std::string GetSetting(const std::string& key,
132 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
133 virtual bool GetSettingBool(const std::string& key,
134 bool& value,
135 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
136 virtual bool GetSettingInt(const std::string& key,
137 int& value,
138 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
139 virtual bool GetSettingNumber(const std::string& key,
140 double& value,
141 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
142 virtual bool GetSettingString(const std::string& key,
143 std::string& value,
144 AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
145 virtual std::shared_ptr<CAddonSettings> GetSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
146 virtual const std::vector<DependencyInfo>& GetDependencies() const = 0;
147 virtual CAddonVersion GetDependencyVersion(const std::string& dependencyID) const = 0;
148 virtual bool MeetsVersion(const CAddonVersion& versionMin,
149 const CAddonVersion& version) const = 0;
150 virtual bool ReloadSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
151 virtual void ResetSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
152 virtual AddonPtr GetRunningInstance() const = 0;
153 virtual void OnPreInstall() = 0;
154 virtual void OnPostInstall(bool update, bool modal) = 0;
155 virtual void OnPreUnInstall() = 0;
156 virtual void OnPostUnInstall() = 0;
159 }; // namespace ADDON