summaryrefslogtreecommitdiffstats
path: root/xbmc/addons/interfaces/AddonBase.h
diff options
context:
space:
mode:
Diffstat (limited to 'xbmc/addons/interfaces/AddonBase.h')
-rw-r--r--xbmc/addons/interfaces/AddonBase.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/xbmc/addons/interfaces/AddonBase.h b/xbmc/addons/interfaces/AddonBase.h
new file mode 100644
index 0000000..6dcc53c
--- /dev/null
+++ b/xbmc/addons/interfaces/AddonBase.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2005-2020 Team Kodi
+ * This file is part of Kodi - https://kodi.tv
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ * See LICENSES/README.md for more information.
+ */
+
+#pragma once
+
+#include "addons/IAddon.h"
+#include "addons/kodi-dev-kit/include/kodi/c-api/addon_base.h"
+
+extern "C"
+{
+namespace ADDON
+{
+
+typedef void* (*ADDON_GET_INTERFACE_FN)(const std::string& name, const std::string& version);
+
+class CAddonDll;
+
+/*!
+ * @brief Global general Add-on to Kodi callback functions
+ *
+ * To hold general functions not related to a instance type and usable for
+ * every add-on type.
+ *
+ * Related add-on header is "./xbmc/addons/kodi-dev-kit/include/kodi/General.h"
+ */
+struct Interface_Base
+{
+ static bool InitInterface(CAddonDll* addon,
+ AddonGlobalInterface& addonInterface,
+ KODI_ADDON_INSTANCE_STRUCT* firstKodiInstance);
+ static void DeInitInterface(AddonGlobalInterface& addonInterface);
+ static void RegisterInterface(ADDON_GET_INTERFACE_FN fn);
+ static bool UpdateSettingInActiveDialog(CAddonDll* addon,
+ AddonInstanceId instanceId,
+ const char* id,
+ const std::string& value);
+
+ static std::vector<ADDON_GET_INTERFACE_FN> s_registeredInterfaces;
+
+ /*!
+ * @brief callback functions from add-on to kodi
+ *
+ * @note To add a new function use the "_" style to directly identify an
+ * add-on callback function. Everything with CamelCase is only to be used
+ * in Kodi.
+ *
+ * The parameter `kodiBase` is used to become the pointer for a `CAddonDll`
+ * class.
+ */
+ //@{
+ static void addon_log_msg(const KODI_ADDON_BACKEND_HDL hdl,
+ const int addonLogLevel,
+ const char* strMessage);
+ static char* get_type_version(const KODI_ADDON_BACKEND_HDL hdl, int type);
+ static char* get_addon_path(const KODI_ADDON_BACKEND_HDL hdl);
+ static char* get_lib_path(const KODI_ADDON_BACKEND_HDL hdl);
+ static char* get_user_path(const KODI_ADDON_BACKEND_HDL hdl);
+ static char* get_temp_path(const KODI_ADDON_BACKEND_HDL hdl);
+ static char* get_localized_string(const KODI_ADDON_BACKEND_HDL hdl, long label_id);
+ static char* get_addon_info(const KODI_ADDON_BACKEND_HDL hdl, const char* id);
+ static bool open_settings_dialog(const KODI_ADDON_BACKEND_HDL hdl);
+ static bool is_setting_using_default(const KODI_ADDON_BACKEND_HDL hdl, const char* id);
+ static bool get_setting_bool(const KODI_ADDON_BACKEND_HDL hdl, const char* id, bool* value);
+ static bool get_setting_int(const KODI_ADDON_BACKEND_HDL hdl, const char* id, int* value);
+ static bool get_setting_float(const KODI_ADDON_BACKEND_HDL hdl, const char* id, float* value);
+ static bool get_setting_string(const KODI_ADDON_BACKEND_HDL hdl, const char* id, char** value);
+ static bool set_setting_bool(const KODI_ADDON_BACKEND_HDL hdl, const char* id, bool value);
+ static bool set_setting_int(const KODI_ADDON_BACKEND_HDL hdl, const char* id, int value);
+ static bool set_setting_float(const KODI_ADDON_BACKEND_HDL hdl, const char* id, float value);
+ static bool set_setting_string(const KODI_ADDON_BACKEND_HDL hdl,
+ const char* id,
+ const char* value);
+ static void free_string(const KODI_ADDON_BACKEND_HDL hdl, char* str);
+ static void free_string_array(const KODI_ADDON_BACKEND_HDL hdl, char** arr, int numElements);
+ static void* get_interface(const KODI_ADDON_BACKEND_HDL hdl,
+ const char* name,
+ const char* version);
+ //@}
+};
+
+} /* namespace ADDON */
+} /* extern "C" */