[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / addons / addoninfo / AddonType.h
blob9a0ee260cffbdf8b069d49580e5b643305e8e05e
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/addoninfo/AddonExtensions.h"
13 #include <set>
14 #include <string>
16 class TiXmlElement;
18 namespace ADDON
21 enum class AddonType
23 UNKNOWN = 0,
24 VISUALIZATION,
25 SKIN,
26 PVRDLL,
27 INPUTSTREAM,
28 GAMEDLL,
29 PERIPHERALDLL,
30 SCRIPT,
31 SCRIPT_WEATHER,
32 SUBTITLE_MODULE,
33 SCRIPT_LYRICS,
34 SCRAPER_ALBUMS,
35 SCRAPER_ARTISTS,
36 SCRAPER_MOVIES,
37 SCRAPER_MUSICVIDEOS,
38 SCRAPER_TVSHOWS,
39 SCREENSAVER,
40 PLUGIN,
41 REPOSITORY,
42 WEB_INTERFACE,
43 SERVICE,
44 AUDIOENCODER,
45 CONTEXTMENU_ITEM,
46 AUDIODECODER,
47 RESOURCE_IMAGES,
48 RESOURCE_LANGUAGE,
49 RESOURCE_UISOUNDS,
50 RESOURCE_GAMES,
51 RESOURCE_FONT,
52 VFS,
53 IMAGEDECODER,
54 SCRAPER_LIBRARY,
55 SCRIPT_LIBRARY,
56 SCRIPT_MODULE,
57 GAME_CONTROLLER,
58 VIDEOCODEC,
60 /**
61 * @brief virtual addon types
63 //@{
64 VIDEO,
65 AUDIO,
66 IMAGE,
67 EXECUTABLE,
68 GAME,
69 //@}
71 MAX_TYPES
74 class CAddonInfoBuilder;
75 class CAddonDatabaseSerializer;
77 class CAddonType : public CAddonExtensions
79 public:
80 CAddonType(AddonType type = AddonType::UNKNOWN) : m_type(type) {}
82 AddonType Type() const { return m_type; }
83 std::string LibPath() const;
84 const std::string& LibName() const { return m_libname; }
86 bool ProvidesSubContent(const AddonType& content) const
88 return content == AddonType::UNKNOWN
89 ? false
90 : m_type == content || m_providedSubContent.count(content) > 0;
93 bool ProvidesSeveralSubContents() const
95 return m_providedSubContent.size() > 1;
98 size_t ProvidedSubContents() const
100 return m_providedSubContent.size();
104 * @brief Indicates whether a given type is a dependency type (e.g. addons which the main type is
105 * a script.module)
107 * @param[in] type the provided type
108 * @return true if type is one of the dependency types
110 static bool IsDependencyType(AddonType type);
112 private:
113 friend class CAddonInfoBuilder;
114 friend class CAddonInfoBuilderFromDB;
115 friend class CAddonDatabaseSerializer;
117 void SetProvides(const std::string& content);
119 AddonType m_type;
120 std::string m_path;
121 std::string m_libname;
122 std::set<AddonType> m_providedSubContent;
125 } /* namespace ADDON */