[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / addons / AddonBuilder.cpp
blob7d52ee04310c411357b3bdaaf08ffb236fe27b63
1 /*
2 * Copyright (C) 2016-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 #include "addons/AddonBuilder.h"
11 #include "ServiceBroker.h"
12 #include "addons/ContextMenuAddon.h"
13 #include "addons/FontResource.h"
14 #include "addons/GameResource.h"
15 #include "addons/ImageResource.h"
16 #include "addons/LanguageResource.h"
17 #include "addons/PluginSource.h"
18 #include "addons/Repository.h"
19 #include "addons/Scraper.h"
20 #include "addons/Service.h"
21 #include "addons/Skin.h"
22 #include "addons/UISoundsResource.h"
23 #include "addons/Webinterface.h"
24 #include "addons/addoninfo/AddonInfo.h"
25 #include "addons/addoninfo/AddonType.h"
26 #include "games/addons/GameClient.h"
27 #include "games/controllers/Controller.h"
28 #include "pvr/addons/PVRClient.h"
29 #include "utils/StringUtils.h"
31 using namespace KODI;
33 namespace ADDON
36 AddonPtr CAddonBuilder::Generate(const AddonInfoPtr& info, AddonType type)
38 if (!info || info->ID().empty())
39 return AddonPtr();
41 if (type == AddonType::UNKNOWN)
42 type = info->MainType();
43 if (type == AddonType::UNKNOWN)
44 return std::make_shared<CAddon>(info, AddonType::UNKNOWN);
46 // Handle screensaver special cases
47 if (type == AddonType::SCREENSAVER)
49 // built in screensaver or python screensaver
50 if (StringUtils::StartsWithNoCase(info->ID(), "screensaver.xbmc.builtin.") ||
51 URIUtils::HasExtension(info->LibName(), ".py"))
52 return std::make_shared<CAddon>(info, type);
55 // Handle audio encoder special cases
56 if (type == AddonType::AUDIOENCODER)
58 // built in audio encoder
59 if (StringUtils::StartsWithNoCase(info->ID(), "audioencoder.kodi.builtin."))
60 return std::make_shared<CAddonDll>(info, type);
63 switch (type)
65 case AddonType::AUDIODECODER:
66 case AddonType::AUDIOENCODER:
67 case AddonType::IMAGEDECODER:
68 case AddonType::INPUTSTREAM:
69 case AddonType::PERIPHERALDLL:
70 case AddonType::PVRDLL:
71 case AddonType::VFS:
72 case AddonType::VISUALIZATION:
73 case AddonType::SCREENSAVER:
74 return std::make_shared<CAddonDll>(info, type);
75 case AddonType::GAMEDLL:
76 return std::make_shared<GAME::CGameClient>(info);
77 case AddonType::PLUGIN:
78 case AddonType::SCRIPT:
79 return std::make_shared<CPluginSource>(info, type);
80 case AddonType::SCRIPT_LIBRARY:
81 case AddonType::SCRIPT_LYRICS:
82 case AddonType::SCRIPT_MODULE:
83 case AddonType::SUBTITLE_MODULE:
84 case AddonType::SCRIPT_WEATHER:
85 return std::make_shared<CAddon>(info, type);
86 case AddonType::WEB_INTERFACE:
87 return std::make_shared<CWebinterface>(info);
88 case AddonType::SERVICE:
89 return std::make_shared<CService>(info);
90 case AddonType::SCRAPER_ALBUMS:
91 case AddonType::SCRAPER_ARTISTS:
92 case AddonType::SCRAPER_MOVIES:
93 case AddonType::SCRAPER_MUSICVIDEOS:
94 case AddonType::SCRAPER_TVSHOWS:
95 case AddonType::SCRAPER_LIBRARY:
96 return std::make_shared<CScraper>(info, type);
97 case AddonType::SKIN:
98 return std::make_shared<CSkinInfo>(info);
99 case AddonType::RESOURCE_FONT:
100 return std::make_shared<CFontResource>(info);
101 case AddonType::RESOURCE_IMAGES:
102 return std::make_shared<CImageResource>(info);
103 case AddonType::RESOURCE_GAMES:
104 return std::make_shared<CGameResource>(info);
105 case AddonType::RESOURCE_LANGUAGE:
106 return std::make_shared<CLanguageResource>(info);
107 case AddonType::RESOURCE_UISOUNDS:
108 return std::make_shared<CUISoundsResource>(info);
109 case AddonType::REPOSITORY:
110 return std::make_shared<CRepository>(info);
111 case AddonType::CONTEXTMENU_ITEM:
112 return std::make_shared<CContextMenuAddon>(info);
113 case AddonType::GAME_CONTROLLER:
114 return std::make_shared<GAME::CController>(info);
115 default:
116 break;
118 return AddonPtr();