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  SHADERDLL,
30  PERIPHERALDLL,
31  SCRIPT,
32  SCRIPT_WEATHER,
33  SUBTITLE_MODULE,
34  SCRIPT_LYRICS,
35  SCRAPER_ALBUMS,
36  SCRAPER_ARTISTS,
37  SCRAPER_MOVIES,
38  SCRAPER_MUSICVIDEOS,
39  SCRAPER_TVSHOWS,
40  SCREENSAVER,
41  PLUGIN,
42  REPOSITORY,
43  WEB_INTERFACE,
44  SERVICE,
45  AUDIOENCODER,
46  CONTEXTMENU_ITEM,
47  AUDIODECODER,
48  RESOURCE_IMAGES,
49  RESOURCE_LANGUAGE,
50  RESOURCE_UISOUNDS,
51  RESOURCE_GAMES,
52  RESOURCE_FONT,
53  VFS,
54  IMAGEDECODER,
55  SCRAPER_LIBRARY,
56  SCRIPT_LIBRARY,
57  SCRIPT_MODULE,
58  GAME_CONTROLLER,
59  VIDEOCODEC,
60 
65  VIDEO,
66  AUDIO,
67  IMAGE,
68  EXECUTABLE,
69  GAME,
71 
72  MAX_TYPES
73 };
74 
75 class CAddonInfoBuilder;
76 class CAddonDatabaseSerializer;
77 
79 {
80 public:
81  CAddonType(AddonType type = AddonType::UNKNOWN) : m_type(type) {}
82 
83  AddonType Type() const { return m_type; }
84  std::string LibPath() const;
85  const std::string& LibName() const { return m_libname; }
86 
87  bool ProvidesSubContent(const AddonType& content) const
88  {
89  return content == AddonType::UNKNOWN
90  ? false
91  : m_type == content || m_providedSubContent.count(content) > 0;
92  }
93 
94  bool ProvidesSeveralSubContents() const
95  {
96  return m_providedSubContent.size() > 1;
97  }
98 
99  size_t ProvidedSubContents() const
100  {
101  return m_providedSubContent.size();
102  }
103 
111  static bool IsDependencyType(AddonType type);
112 
113 private:
114  friend class CAddonInfoBuilder;
115  friend class CAddonInfoBuilderFromDB;
116  friend class CAddonDatabaseSerializer;
117 
118  void SetProvides(const std::string& content);
119 
120  AddonType m_type;
121  std::string m_path;
122  std::string m_libname;
123  std::set<AddonType> m_providedSubContent;
124 };
125 
126 } /* namespace ADDON */
Definition: AddonType.h:78
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