xbmc
AddonType.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "addons/addoninfo/AddonExtensions.h"
12 
13 #include <set>
14 #include <string>
15 
16 class TiXmlElement;
17 
18 namespace ADDON
19 {
20 
21 enum class AddonType
22 {
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,
59 
64  VIDEO,
65  AUDIO,
66  IMAGE,
67  EXECUTABLE,
68  GAME,
70 
71  MAX_TYPES
72 };
73 
74 class CAddonInfoBuilder;
75 class CAddonDatabaseSerializer;
76 
78 {
79 public:
80  CAddonType(AddonType type = AddonType::UNKNOWN) : m_type(type) {}
81 
82  AddonType Type() const { return m_type; }
83  std::string LibPath() const;
84  const std::string& LibName() const { return m_libname; }
85 
86  bool ProvidesSubContent(const AddonType& content) const
87  {
88  return content == AddonType::UNKNOWN
89  ? false
90  : m_type == content || m_providedSubContent.count(content) > 0;
91  }
92 
93  bool ProvidesSeveralSubContents() const
94  {
95  return m_providedSubContent.size() > 1;
96  }
97 
98  size_t ProvidedSubContents() const
99  {
100  return m_providedSubContent.size();
101  }
102 
110  static bool IsDependencyType(AddonType type);
111 
112 private:
113  friend class CAddonInfoBuilder;
114  friend class CAddonInfoBuilderFromDB;
115  friend class CAddonDatabaseSerializer;
116 
117  void SetProvides(const std::string& content);
118 
119  AddonType m_type;
120  std::string m_path;
121  std::string m_libname;
122  std::set<AddonType> m_providedSubContent;
123 };
124 
125 } /* namespace ADDON */
Definition: AddonType.h:77
Definition: AddonExtensions.h:54
Definition: AddonInfoBuilder.h:70
Addon content serializer/deserializer.
Definition: AddonDatabase.h:48
Definition: Application.h:74
Definition: Addon.cpp:39
Definition: AddonInfoBuilder.h:36