diff options
Diffstat (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h')
| -rw-r--r-- | xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h | 399 |
1 files changed, 99 insertions, 300 deletions
diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h index d9f72c1..8b02e33 100644 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h +++ b/xbmc/addons/kodi-addon-dev-kit/include/kodi/libXBMC_addon.h | |||
| @@ -27,6 +27,7 @@ | |||
| 27 | #include <stdint.h> | 27 | #include <stdint.h> |
| 28 | #include <stdarg.h> | 28 | #include <stdarg.h> |
| 29 | 29 | ||
| 30 | #include "versions.h" | ||
| 30 | #if defined(BUILD_KODI_ADDON) | 31 | #if defined(BUILD_KODI_ADDON) |
| 31 | #include "IFileTypes.h" | 32 | #include "IFileTypes.h" |
| 32 | #else | 33 | #else |
| @@ -44,62 +45,11 @@ typedef intptr_t ssize_t; | |||
| 44 | 45 | ||
| 45 | #if defined(BUILD_KODI_ADDON) | 46 | #if defined(BUILD_KODI_ADDON) |
| 46 | #include "p8-platform/windows/dlfcn-win32.h" | 47 | #include "p8-platform/windows/dlfcn-win32.h" |
| 47 | #else | ||
| 48 | #include "dlfcn-win32.h" | ||
| 49 | #endif | 48 | #endif |
| 50 | |||
| 51 | #define ADDON_HELPER_EXT ".dll" | ||
| 52 | #define ADDON_HELPER_PATHSEP "\\" | ||
| 53 | #define ADDON_HELPER_ARCHSEP "" | ||
| 54 | #define ADDON_HELPER_ARCH "" | ||
| 55 | |||
| 56 | #else // windows | 49 | #else // windows |
| 57 | #define ADDON_HELPER_PATHSEP "/" | ||
| 58 | #define ADDON_HELPER_ARCHSEP "-" | ||
| 59 | // the ADDON_HELPER_ARCH is the platform dependend name which is used | ||
| 60 | // as part of the name of dynamic addon libraries. It has to match the | ||
| 61 | // strings which are set in configure.ac for the "ARCH" variable. | ||
| 62 | #if defined(__APPLE__) // osx | ||
| 63 | #if defined(__arm__) || defined(__aarch64__) | ||
| 64 | #define ADDON_HELPER_ARCH "arm-osx" | ||
| 65 | #else | ||
| 66 | #define ADDON_HELPER_ARCH "x86-osx" | ||
| 67 | #endif | ||
| 68 | #define ADDON_HELPER_EXT ".dylib" | ||
| 69 | #else // linux | ||
| 70 | #if defined(__x86_64__) | ||
| 71 | #define ADDON_HELPER_ARCH "x86_64-linux" | ||
| 72 | #elif defined(_POWERPC) | ||
| 73 | #define ADDON_HELPER_ARCH "powerpc-linux" | ||
| 74 | #elif defined(_POWERPC64) | ||
| 75 | #define ADDON_HELPER_ARCH "powerpc64-linux" | ||
| 76 | #elif defined(__ARMEL__) | ||
| 77 | #define ADDON_HELPER_ARCH "arm" | ||
| 78 | #elif defined(__aarch64__) | ||
| 79 | #define ADDON_HELPER_ARCH "aarch64" | ||
| 80 | #elif defined(__mips__) | ||
| 81 | #define ADDON_HELPER_ARCH "mips" | ||
| 82 | #else | ||
| 83 | #define ADDON_HELPER_ARCH "i486-linux" | ||
| 84 | #endif | ||
| 85 | #define ADDON_HELPER_EXT ".so" | ||
| 86 | #endif | ||
| 87 | #include <dlfcn.h> // linux+osx | 50 | #include <dlfcn.h> // linux+osx |
| 88 | #endif | 51 | #endif |
| 89 | 52 | ||
| 90 | #define KODI_DLL_NAME(name) "libKODI_" name ADDON_HELPER_ARCHSEP ADDON_HELPER_ARCH ADDON_HELPER_EXT | ||
| 91 | #define XBMC_DLL_NAME(name) "libXBMC_" name ADDON_HELPER_ARCHSEP ADDON_HELPER_ARCH ADDON_HELPER_EXT | ||
| 92 | #if defined(ANDROID) | ||
| 93 | #define KODI_DLL(name) ADDON_HELPER_PATHSEP KODI_DLL_NAME(name) | ||
| 94 | #define XBMC_DLL(name) ADDON_HELPER_PATHSEP XBMC_DLL_NAME(name) | ||
| 95 | #else | ||
| 96 | #define KODI_DLL(name) ADDON_HELPER_PATHSEP "library.kodi." name ADDON_HELPER_PATHSEP KODI_DLL_NAME(name) | ||
| 97 | #define XBMC_DLL(name) ADDON_HELPER_PATHSEP "library.xbmc." name ADDON_HELPER_PATHSEP XBMC_DLL_NAME(name) | ||
| 98 | #endif | ||
| 99 | |||
| 100 | #define ADDON_DLL_NAME XBMC_DLL_NAME("addon") | ||
| 101 | #define ADDON_DLL XBMC_DLL("addon") | ||
| 102 | |||
| 103 | #ifdef LOG_DEBUG | 53 | #ifdef LOG_DEBUG |
| 104 | #undef LOG_DEBUG | 54 | #undef LOG_DEBUG |
| 105 | #endif | 55 | #endif |
| @@ -113,9 +63,6 @@ typedef intptr_t ssize_t; | |||
| 113 | #undef LOG_ERROR | 63 | #undef LOG_ERROR |
| 114 | #endif | 64 | #endif |
| 115 | 65 | ||
| 116 | /* current addon API version */ | ||
| 117 | #define KODI_ADDON_API_VERSION "1.0.0" | ||
| 118 | |||
| 119 | typedef void* (*KODIAddOnLib_RegisterMe)(void *addonData); | 66 | typedef void* (*KODIAddOnLib_RegisterMe)(void *addonData); |
| 120 | typedef void (*KODIAddOnLib_UnRegisterMe)(void *addonData, void *cbTable); | 67 | typedef void (*KODIAddOnLib_UnRegisterMe)(void *addonData, void *cbTable); |
| 121 | typedef void* (*KODIAudioEngineLib_RegisterMe)(void *addonData); | 68 | typedef void* (*KODIAudioEngineLib_RegisterMe)(void *addonData); |
| @@ -175,186 +122,82 @@ namespace ADDON | |||
| 175 | QUEUE_WARNING, | 122 | QUEUE_WARNING, |
| 176 | QUEUE_ERROR | 123 | QUEUE_ERROR |
| 177 | } queue_msg_t; | 124 | } queue_msg_t; |
| 125 | } | ||
| 126 | |||
| 127 | namespace KodiAPI | ||
| 128 | { | ||
| 129 | namespace AddOn | ||
| 130 | { | ||
| 131 | typedef struct CB_AddOn | ||
| 132 | { | ||
| 133 | void (*Log)(void *addonData, const ADDON::addon_log_t loglevel, const char *msg); | ||
| 134 | void (*QueueNotification)(void *addonData, const ADDON::queue_msg_t type, const char *msg); | ||
| 135 | bool (*WakeOnLan)(const char* mac); | ||
| 136 | bool (*GetSetting)(void *addonData, const char *settingName, void *settingValue); | ||
| 137 | char* (*TranslateSpecialProtocol)(const char *strSource); | ||
| 138 | char* (*UnknownToUTF8)(const char *sourceDest); | ||
| 139 | char* (*GetLocalizedString)(const void* addonData, long dwCode); | ||
| 140 | char* (*GetDVDMenuLanguage)(const void* addonData); | ||
| 141 | void (*FreeString)(const void* addonData, char* str); | ||
| 142 | |||
| 143 | void* (*OpenFile)(const void* addonData, const char* strFileName, unsigned int flags); | ||
| 144 | void* (*OpenFileForWrite)(const void* addonData, const char* strFileName, bool bOverWrite); | ||
| 145 | ssize_t (*ReadFile)(const void* addonData, void* file, void* lpBuf, size_t uiBufSize); | ||
| 146 | bool (*ReadFileString)(const void* addonData, void* file, char *szLine, int iLineLength); | ||
| 147 | ssize_t (*WriteFile)(const void* addonData, void* file, const void* lpBuf, size_t uiBufSize); | ||
| 148 | void (*FlushFile)(const void* addonData, void* file); | ||
| 149 | int64_t (*SeekFile)(const void* addonData, void* file, int64_t iFilePosition, int iWhence); | ||
| 150 | int (*TruncateFile)(const void* addonData, void* file, int64_t iSize); | ||
| 151 | int64_t (*GetFilePosition)(const void* addonData, void* file); | ||
| 152 | int64_t (*GetFileLength)(const void* addonData, void* file); | ||
| 153 | double (*GetFileDownloadSpeed)(const void* addonData, void* file); | ||
| 154 | void (*CloseFile)(const void* addonData, void* file); | ||
| 155 | int (*GetFileChunkSize)(const void* addonData, void* file); | ||
| 156 | bool (*FileExists)(const void* addonData, const char *strFileName, bool bUseCache); | ||
| 157 | int (*StatFile)(const void* addonData, const char *strFileName, struct __stat64* buffer); | ||
| 158 | bool (*DeleteFile)(const void* addonData, const char *strFileName); | ||
| 159 | bool (*CanOpenDirectory)(const void* addonData, const char* strURL); | ||
| 160 | bool (*CreateDirectory)(const void* addonData, const char *strPath); | ||
| 161 | bool (*DirectoryExists)(const void* addonData, const char *strPath); | ||
| 162 | bool (*RemoveDirectory)(const void* addonData, const char *strPath); | ||
| 163 | bool (*GetDirectory)(const void* addonData, const char *strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items); | ||
| 164 | void (*FreeDirectory)(const void* addonData, VFSDirEntry* items, unsigned int num_items); | ||
| 165 | void* (*CURLCreate)(const void* addonData, const char* strURL); | ||
| 166 | bool (*CURLAddOption)(const void* addonData, void* file, XFILE::CURLOPTIONTYPE type, const char* name, const char * value); | ||
| 167 | bool (*CURLOpen)(const void* addonData, void* file, unsigned int flags); | ||
| 168 | } CB_AddOnLib; | ||
| 169 | |||
| 170 | } /* namespace AddOn */ | ||
| 171 | } /* namespace KodiAPI */ | ||
| 178 | 172 | ||
| 173 | namespace ADDON | ||
| 174 | { | ||
| 179 | class CHelper_libXBMC_addon | 175 | class CHelper_libXBMC_addon |
| 180 | { | 176 | { |
| 181 | public: | 177 | public: |
| 182 | CHelper_libXBMC_addon() | 178 | CHelper_libXBMC_addon() |
| 183 | { | 179 | { |
| 184 | m_libXBMC_addon = NULL; | 180 | m_Handle = nullptr; |
| 185 | m_Handle = NULL; | 181 | m_Callbacks = nullptr; |
| 186 | } | 182 | } |
| 187 | 183 | ||
| 188 | ~CHelper_libXBMC_addon() | 184 | ~CHelper_libXBMC_addon() |
| 189 | { | 185 | { |
| 190 | if (m_libXBMC_addon) | 186 | if (m_Handle && m_Callbacks) |
| 191 | { | 187 | { |
| 192 | XBMC_unregister_me(m_Handle, m_Callbacks); | 188 | m_Handle->AddOnLib_UnRegisterMe(m_Handle->addonData, m_Callbacks); |
| 193 | dlclose(m_libXBMC_addon); | ||
| 194 | } | 189 | } |
| 195 | } | 190 | } |
| 196 | 191 | ||
| 197 | bool RegisterMe(void *Handle) | 192 | bool RegisterMe(void *handle) |
| 198 | { | 193 | { |
| 199 | m_Handle = Handle; | 194 | m_Handle = static_cast<AddonCB*>(handle); |
| 200 | 195 | if (m_Handle) | |
| 201 | std::string libBasePath; | 196 | m_Callbacks = (KodiAPI::AddOn::CB_AddOnLib*)m_Handle->AddOnLib_RegisterMe(m_Handle->addonData); |
| 202 | libBasePath = ((cb_array*)m_Handle)->libPath; | 197 | if (!m_Callbacks) |
| 203 | libBasePath += ADDON_DLL; | 198 | fprintf(stderr, "libXBMC_addon-ERROR: AddOnLib_RegisterMe can't get callback table from Kodi !!!\n"); |
| 204 | 199 | ||
| 205 | m_libXBMC_addon = dlopen(libBasePath.c_str(), RTLD_LAZY); | 200 | return m_Callbacks != nullptr; |
| 206 | if (m_libXBMC_addon == NULL) | ||
| 207 | { | ||
| 208 | fprintf(stderr, "Unable to load %s\n", dlerror()); | ||
| 209 | return false; | ||
| 210 | } | ||
| 211 | |||
| 212 | XBMC_register_me = (void* (*)(void *HANDLE)) | ||
| 213 | dlsym(m_libXBMC_addon, "XBMC_register_me"); | ||
| 214 | if (XBMC_register_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 215 | |||
| 216 | XBMC_unregister_me = (void (*)(void* HANDLE, void* CB)) | ||
| 217 | dlsym(m_libXBMC_addon, "XBMC_unregister_me"); | ||
| 218 | if (XBMC_unregister_me == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 219 | |||
| 220 | XBMC_log = (void (*)(void* HANDLE, void* CB, const addon_log_t loglevel, const char *msg)) | ||
| 221 | dlsym(m_libXBMC_addon, "XBMC_log"); | ||
| 222 | if (XBMC_log == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 223 | |||
| 224 | XBMC_get_setting = (bool (*)(void* HANDLE, void* CB, const char* settingName, void *settingValue)) | ||
| 225 | dlsym(m_libXBMC_addon, "XBMC_get_setting"); | ||
| 226 | if (XBMC_get_setting == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 227 | |||
| 228 | XBMC_translate_special = (char* (*)(void* HANDLE, void* CB, const char* source)) | ||
| 229 | dlsym(m_libXBMC_addon, "XBMC_translate_special"); | ||
| 230 | if (XBMC_translate_special == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 231 | |||
| 232 | XBMC_queue_notification = (void (*)(void* HANDLE, void* CB, const queue_msg_t loglevel, const char *msg)) | ||
| 233 | dlsym(m_libXBMC_addon, "XBMC_queue_notification"); | ||
| 234 | if (XBMC_queue_notification == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 235 | |||
| 236 | XBMC_wake_on_lan = (bool (*)(void* HANDLE, void *CB, const char *mac)) | ||
| 237 | dlsym(m_libXBMC_addon, "XBMC_wake_on_lan"); | ||
| 238 | if (XBMC_wake_on_lan == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 239 | |||
| 240 | XBMC_unknown_to_utf8 = (char* (*)(void* HANDLE, void* CB, const char* str)) | ||
| 241 | dlsym(m_libXBMC_addon, "XBMC_unknown_to_utf8"); | ||
| 242 | if (XBMC_unknown_to_utf8 == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 243 | |||
| 244 | XBMC_get_localized_string = (char* (*)(void* HANDLE, void* CB, int dwCode)) | ||
| 245 | dlsym(m_libXBMC_addon, "XBMC_get_localized_string"); | ||
| 246 | if (XBMC_get_localized_string == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 247 | |||
| 248 | XBMC_free_string = (void (*)(void* HANDLE, void* CB, char* str)) | ||
| 249 | dlsym(m_libXBMC_addon, "XBMC_free_string"); | ||
| 250 | if (XBMC_free_string == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 251 | |||
| 252 | XBMC_get_dvd_menu_language = (char* (*)(void* HANDLE, void* CB)) | ||
| 253 | dlsym(m_libXBMC_addon, "XBMC_get_dvd_menu_language"); | ||
| 254 | if (XBMC_get_dvd_menu_language == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 255 | |||
| 256 | XBMC_open_file = (void* (*)(void* HANDLE, void* CB, const char* strFileName, unsigned int flags)) | ||
| 257 | dlsym(m_libXBMC_addon, "XBMC_open_file"); | ||
| 258 | if (XBMC_open_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 259 | |||
| 260 | XBMC_open_file_for_write = (void* (*)(void* HANDLE, void* CB, const char* strFileName, bool bOverWrite)) | ||
| 261 | dlsym(m_libXBMC_addon, "XBMC_open_file_for_write"); | ||
| 262 | if (XBMC_open_file_for_write == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 263 | |||
| 264 | XBMC_read_file = (ssize_t (*)(void* HANDLE, void* CB, void* file, void* lpBuf, size_t uiBufSize)) | ||
| 265 | dlsym(m_libXBMC_addon, "XBMC_read_file"); | ||
| 266 | if (XBMC_read_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 267 | |||
| 268 | XBMC_read_file_string = (bool (*)(void* HANDLE, void* CB, void* file, char *szLine, int iLineLength)) | ||
| 269 | dlsym(m_libXBMC_addon, "XBMC_read_file_string"); | ||
| 270 | if (XBMC_read_file_string == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 271 | |||
| 272 | XBMC_write_file = (ssize_t (*)(void* HANDLE, void* CB, void* file, const void* lpBuf, size_t uiBufSize)) | ||
| 273 | dlsym(m_libXBMC_addon, "XBMC_write_file"); | ||
| 274 | if (XBMC_write_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 275 | |||
| 276 | XBMC_flush_file = (void (*)(void* HANDLE, void* CB, void* file)) | ||
| 277 | dlsym(m_libXBMC_addon, "XBMC_flush_file"); | ||
| 278 | if (XBMC_flush_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 279 | |||
| 280 | XBMC_seek_file = (int64_t (*)(void* HANDLE, void* CB, void* file, int64_t iFilePosition, int iWhence)) | ||
| 281 | dlsym(m_libXBMC_addon, "XBMC_seek_file"); | ||
| 282 | if (XBMC_seek_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 283 | |||
| 284 | XBMC_truncate_file = (int (*)(void* HANDLE, void* CB, void* file, int64_t iSize)) | ||
| 285 | dlsym(m_libXBMC_addon, "XBMC_truncate_file"); | ||
| 286 | if (XBMC_truncate_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 287 | |||
| 288 | XBMC_get_file_position = (int64_t (*)(void* HANDLE, void* CB, void* file)) | ||
| 289 | dlsym(m_libXBMC_addon, "XBMC_get_file_position"); | ||
| 290 | if (XBMC_get_file_position == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 291 | |||
| 292 | XBMC_get_file_length = (int64_t (*)(void* HANDLE, void* CB, void* file)) | ||
| 293 | dlsym(m_libXBMC_addon, "XBMC_get_file_length"); | ||
| 294 | if (XBMC_get_file_length == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 295 | |||
| 296 | XBMC_get_file_download_speed = (double(*)(void* HANDLE, void* CB, void* file)) | ||
| 297 | dlsym(m_libXBMC_addon, "XBMC_get_file_download_speed"); | ||
| 298 | if (XBMC_get_file_download_speed == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 299 | |||
| 300 | XBMC_close_file = (void (*)(void* HANDLE, void* CB, void* file)) | ||
| 301 | dlsym(m_libXBMC_addon, "XBMC_close_file"); | ||
| 302 | if (XBMC_close_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 303 | |||
| 304 | XBMC_get_file_chunk_size = (int (*)(void* HANDLE, void* CB, void* file)) | ||
| 305 | dlsym(m_libXBMC_addon, "XBMC_get_file_chunk_size"); | ||
| 306 | if (XBMC_get_file_chunk_size == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 307 | |||
| 308 | XBMC_file_exists = (bool (*)(void* HANDLE, void* CB, const char *strFileName, bool bUseCache)) | ||
| 309 | dlsym(m_libXBMC_addon, "XBMC_file_exists"); | ||
| 310 | if (XBMC_file_exists == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 311 | |||
| 312 | XBMC_stat_file = (int (*)(void* HANDLE, void* CB, const char *strFileName, struct __stat64* buffer)) | ||
| 313 | dlsym(m_libXBMC_addon, "XBMC_stat_file"); | ||
| 314 | if (XBMC_stat_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 315 | |||
| 316 | XBMC_delete_file = (bool (*)(void* HANDLE, void* CB, const char *strFileName)) | ||
| 317 | dlsym(m_libXBMC_addon, "XBMC_delete_file"); | ||
| 318 | if (XBMC_delete_file == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 319 | |||
| 320 | XBMC_can_open_directory = (bool (*)(void* HANDLE, void* CB, const char* strURL)) | ||
| 321 | dlsym(m_libXBMC_addon, "XBMC_can_open_directory"); | ||
| 322 | if (XBMC_can_open_directory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 323 | |||
| 324 | XBMC_create_directory = (bool (*)(void* HANDLE, void* CB, const char* strPath)) | ||
| 325 | dlsym(m_libXBMC_addon, "XBMC_create_directory"); | ||
| 326 | if (XBMC_create_directory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 327 | |||
| 328 | XBMC_directory_exists = (bool (*)(void* HANDLE, void* CB, const char* strPath)) | ||
| 329 | dlsym(m_libXBMC_addon, "XBMC_directory_exists"); | ||
| 330 | if (XBMC_directory_exists == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 331 | |||
| 332 | XBMC_remove_directory = (bool (*)(void* HANDLE, void* CB, const char* strPath)) | ||
| 333 | dlsym(m_libXBMC_addon, "XBMC_remove_directory"); | ||
| 334 | if (XBMC_remove_directory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 335 | |||
| 336 | XBMC_get_directory = (bool (*)(void* HANDLE, void* CB, const char* strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items)) | ||
| 337 | dlsym(m_libXBMC_addon, "XBMC_get_directory"); | ||
| 338 | if (XBMC_get_directory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 339 | |||
| 340 | XBMC_free_directory = (void (*)(void* HANDLE, void* CB, VFSDirEntry* items, unsigned int num_items)) | ||
| 341 | dlsym(m_libXBMC_addon, "XBMC_free_directory"); | ||
| 342 | if (XBMC_free_directory == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 343 | |||
| 344 | XBMC_curl_create = (void* (*)(void *HANDLE, void* CB, const char* strURL)) | ||
| 345 | dlsym(m_libXBMC_addon, "XBMC_curl_create"); | ||
| 346 | if (XBMC_curl_create == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 347 | |||
| 348 | XBMC_curl_add_option = (bool (*)(void *HANDLE, void* CB, void *file, XFILE::CURLOPTIONTYPE type, const char* name, const char *value)) | ||
| 349 | dlsym(m_libXBMC_addon, "XBMC_curl_add_option"); | ||
| 350 | if (XBMC_curl_add_option == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 351 | |||
| 352 | XBMC_curl_open = (bool (*)(void *HANDLE, void* CB, void *file, unsigned int flags)) | ||
| 353 | dlsym(m_libXBMC_addon, "XBMC_curl_open"); | ||
| 354 | if (XBMC_curl_open == NULL) { fprintf(stderr, "Unable to assign function %s\n", dlerror()); return false; } | ||
| 355 | |||
| 356 | m_Callbacks = XBMC_register_me(m_Handle); | ||
| 357 | return m_Callbacks != NULL; | ||
| 358 | } | 201 | } |
| 359 | 202 | ||
| 360 | /*! | 203 | /*! |
| @@ -369,7 +212,7 @@ namespace ADDON | |||
| 369 | va_start (args, format); | 212 | va_start (args, format); |
| 370 | vsprintf (buffer, format, args); | 213 | vsprintf (buffer, format, args); |
| 371 | va_end (args); | 214 | va_end (args); |
| 372 | return XBMC_log(m_Handle, m_Callbacks, loglevel, buffer); | 215 | m_Callbacks->Log(m_Handle->addonData, loglevel, buffer); |
| 373 | } | 216 | } |
| 374 | 217 | ||
| 375 | /*! | 218 | /*! |
| @@ -380,7 +223,7 @@ namespace ADDON | |||
| 380 | */ | 223 | */ |
| 381 | bool GetSetting(const char* settingName, void *settingValue) | 224 | bool GetSetting(const char* settingName, void *settingValue) |
| 382 | { | 225 | { |
| 383 | return XBMC_get_setting(m_Handle, m_Callbacks, settingName, settingValue); | 226 | return m_Callbacks->GetSetting(m_Handle->addonData, settingName, settingValue); |
| 384 | } | 227 | } |
| 385 | 228 | ||
| 386 | /*! | 229 | /*! |
| @@ -390,7 +233,7 @@ namespace ADDON | |||
| 390 | */ | 233 | */ |
| 391 | char *TranslateSpecialProtocol(const char *source) | 234 | char *TranslateSpecialProtocol(const char *source) |
| 392 | { | 235 | { |
| 393 | return XBMC_translate_special(m_Handle, m_Callbacks, source); | 236 | return m_Callbacks->TranslateSpecialProtocol(source); |
| 394 | } | 237 | } |
| 395 | 238 | ||
| 396 | /*! | 239 | /*! |
| @@ -405,7 +248,7 @@ namespace ADDON | |||
| 405 | va_start (args, format); | 248 | va_start (args, format); |
| 406 | vsprintf (buffer, format, args); | 249 | vsprintf (buffer, format, args); |
| 407 | va_end (args); | 250 | va_end (args); |
| 408 | return XBMC_queue_notification(m_Handle, m_Callbacks, type, buffer); | 251 | m_Callbacks->QueueNotification(m_Handle->addonData, type, buffer); |
| 409 | } | 252 | } |
| 410 | 253 | ||
| 411 | /*! | 254 | /*! |
| @@ -415,7 +258,7 @@ namespace ADDON | |||
| 415 | */ | 258 | */ |
| 416 | bool WakeOnLan(const char* mac) | 259 | bool WakeOnLan(const char* mac) |
| 417 | { | 260 | { |
| 418 | return XBMC_wake_on_lan(m_Handle, m_Callbacks, mac); | 261 | return m_Callbacks->WakeOnLan(mac); |
| 419 | } | 262 | } |
| 420 | 263 | ||
| 421 | /*! | 264 | /*! |
| @@ -425,7 +268,7 @@ namespace ADDON | |||
| 425 | */ | 268 | */ |
| 426 | char* UnknownToUTF8(const char* str) | 269 | char* UnknownToUTF8(const char* str) |
| 427 | { | 270 | { |
| 428 | return XBMC_unknown_to_utf8(m_Handle, m_Callbacks, str); | 271 | return m_Callbacks->UnknownToUTF8(str); |
| 429 | } | 272 | } |
| 430 | 273 | ||
| 431 | /*! | 274 | /*! |
| @@ -435,17 +278,16 @@ namespace ADDON | |||
| 435 | */ | 278 | */ |
| 436 | char* GetLocalizedString(int dwCode) | 279 | char* GetLocalizedString(int dwCode) |
| 437 | { | 280 | { |
| 438 | return XBMC_get_localized_string(m_Handle, m_Callbacks, dwCode); | 281 | return m_Callbacks->GetLocalizedString(m_Handle->addonData, dwCode); |
| 439 | } | 282 | } |
| 440 | 283 | ||
| 441 | |||
| 442 | /*! | 284 | /*! |
| 443 | * @brief Get the DVD menu language. | 285 | * @brief Get the DVD menu language. |
| 444 | * @return The language. Must be freed by calling FreeString() when done. | 286 | * @return The language. Must be freed by calling FreeString() when done. |
| 445 | */ | 287 | */ |
| 446 | char* GetDVDMenuLanguage() | 288 | char* GetDVDMenuLanguage() |
| 447 | { | 289 | { |
| 448 | return XBMC_get_dvd_menu_language(m_Handle, m_Callbacks); | 290 | return m_Callbacks->GetDVDMenuLanguage(m_Handle->addonData); |
| 449 | } | 291 | } |
| 450 | 292 | ||
| 451 | /*! | 293 | /*! |
| @@ -454,7 +296,7 @@ namespace ADDON | |||
| 454 | */ | 296 | */ |
| 455 | void FreeString(char* str) | 297 | void FreeString(char* str) |
| 456 | { | 298 | { |
| 457 | return XBMC_free_string(m_Handle, m_Callbacks, str); | 299 | m_Callbacks->FreeString(m_Handle->addonData, str); |
| 458 | } | 300 | } |
| 459 | 301 | ||
| 460 | /*! | 302 | /*! |
| @@ -465,7 +307,7 @@ namespace ADDON | |||
| 465 | */ | 307 | */ |
| 466 | void* OpenFile(const char* strFileName, unsigned int flags) | 308 | void* OpenFile(const char* strFileName, unsigned int flags) |
| 467 | { | 309 | { |
| 468 | return XBMC_open_file(m_Handle, m_Callbacks, strFileName, flags); | 310 | return m_Callbacks->OpenFile(m_Handle->addonData, strFileName, flags); |
| 469 | } | 311 | } |
| 470 | 312 | ||
| 471 | /*! | 313 | /*! |
| @@ -476,7 +318,7 @@ namespace ADDON | |||
| 476 | */ | 318 | */ |
| 477 | void* OpenFileForWrite(const char* strFileName, bool bOverWrite) | 319 | void* OpenFileForWrite(const char* strFileName, bool bOverWrite) |
| 478 | { | 320 | { |
| 479 | return XBMC_open_file_for_write(m_Handle, m_Callbacks, strFileName, bOverWrite); | 321 | return m_Callbacks->OpenFileForWrite(m_Handle->addonData, strFileName, bOverWrite); |
| 480 | } | 322 | } |
| 481 | 323 | ||
| 482 | /*! | 324 | /*! |
| @@ -490,7 +332,7 @@ namespace ADDON | |||
| 490 | */ | 332 | */ |
| 491 | ssize_t ReadFile(void* file, void* lpBuf, size_t uiBufSize) | 333 | ssize_t ReadFile(void* file, void* lpBuf, size_t uiBufSize) |
| 492 | { | 334 | { |
| 493 | return XBMC_read_file(m_Handle, m_Callbacks, file, lpBuf, uiBufSize); | 335 | return m_Callbacks->ReadFile(m_Handle->addonData, file, lpBuf, uiBufSize); |
| 494 | } | 336 | } |
| 495 | 337 | ||
| 496 | /*! | 338 | /*! |
| @@ -502,7 +344,7 @@ namespace ADDON | |||
| 502 | */ | 344 | */ |
| 503 | bool ReadFileString(void* file, char *szLine, int iLineLength) | 345 | bool ReadFileString(void* file, char *szLine, int iLineLength) |
| 504 | { | 346 | { |
| 505 | return XBMC_read_file_string(m_Handle, m_Callbacks, file, szLine, iLineLength); | 347 | return m_Callbacks->ReadFileString(m_Handle->addonData, file, szLine, iLineLength); |
| 506 | } | 348 | } |
| 507 | 349 | ||
| 508 | /*! | 350 | /*! |
| @@ -516,7 +358,7 @@ namespace ADDON | |||
| 516 | */ | 358 | */ |
| 517 | ssize_t WriteFile(void* file, const void* lpBuf, size_t uiBufSize) | 359 | ssize_t WriteFile(void* file, const void* lpBuf, size_t uiBufSize) |
| 518 | { | 360 | { |
| 519 | return XBMC_write_file(m_Handle, m_Callbacks, file, lpBuf, uiBufSize); | 361 | return m_Callbacks->WriteFile(m_Handle->addonData, file, lpBuf, uiBufSize); |
| 520 | } | 362 | } |
| 521 | 363 | ||
| 522 | /*! | 364 | /*! |
| @@ -525,7 +367,7 @@ namespace ADDON | |||
| 525 | */ | 367 | */ |
| 526 | void FlushFile(void* file) | 368 | void FlushFile(void* file) |
| 527 | { | 369 | { |
| 528 | return XBMC_flush_file(m_Handle, m_Callbacks, file); | 370 | m_Callbacks->FlushFile(m_Handle->addonData, file); |
| 529 | } | 371 | } |
| 530 | 372 | ||
| 531 | /*! | 373 | /*! |
| @@ -537,7 +379,7 @@ namespace ADDON | |||
| 537 | */ | 379 | */ |
| 538 | int64_t SeekFile(void* file, int64_t iFilePosition, int iWhence) | 380 | int64_t SeekFile(void* file, int64_t iFilePosition, int iWhence) |
| 539 | { | 381 | { |
| 540 | return XBMC_seek_file(m_Handle, m_Callbacks, file, iFilePosition, iWhence); | 382 | return m_Callbacks->SeekFile(m_Handle->addonData, file, iFilePosition, iWhence); |
| 541 | } | 383 | } |
| 542 | 384 | ||
| 543 | /*! | 385 | /*! |
| @@ -548,7 +390,7 @@ namespace ADDON | |||
| 548 | */ | 390 | */ |
| 549 | int TruncateFile(void* file, int64_t iSize) | 391 | int TruncateFile(void* file, int64_t iSize) |
| 550 | { | 392 | { |
| 551 | return XBMC_truncate_file(m_Handle, m_Callbacks, file, iSize); | 393 | return m_Callbacks->TruncateFile(m_Handle->addonData, file, iSize); |
| 552 | } | 394 | } |
| 553 | 395 | ||
| 554 | /*! | 396 | /*! |
| @@ -558,7 +400,7 @@ namespace ADDON | |||
| 558 | */ | 400 | */ |
| 559 | int64_t GetFilePosition(void* file) | 401 | int64_t GetFilePosition(void* file) |
| 560 | { | 402 | { |
| 561 | return XBMC_get_file_position(m_Handle, m_Callbacks, file); | 403 | return m_Callbacks->GetFilePosition(m_Handle->addonData, file); |
| 562 | } | 404 | } |
| 563 | 405 | ||
| 564 | /*! | 406 | /*! |
| @@ -568,7 +410,7 @@ namespace ADDON | |||
| 568 | */ | 410 | */ |
| 569 | int64_t GetFileLength(void* file) | 411 | int64_t GetFileLength(void* file) |
| 570 | { | 412 | { |
| 571 | return XBMC_get_file_length(m_Handle, m_Callbacks, file); | 413 | return m_Callbacks->GetFileLength(m_Handle->addonData, file); |
| 572 | } | 414 | } |
| 573 | 415 | ||
| 574 | /*! | 416 | /*! |
| @@ -578,7 +420,7 @@ namespace ADDON | |||
| 578 | */ | 420 | */ |
| 579 | double GetFileDownloadSpeed(void* file) | 421 | double GetFileDownloadSpeed(void* file) |
| 580 | { | 422 | { |
| 581 | return XBMC_get_file_download_speed(m_Handle, m_Callbacks, file); | 423 | return m_Callbacks->GetFileDownloadSpeed(m_Handle->addonData, file); |
| 582 | } | 424 | } |
| 583 | 425 | ||
| 584 | /*! | 426 | /*! |
| @@ -587,7 +429,7 @@ namespace ADDON | |||
| 587 | */ | 429 | */ |
| 588 | void CloseFile(void* file) | 430 | void CloseFile(void* file) |
| 589 | { | 431 | { |
| 590 | return XBMC_close_file(m_Handle, m_Callbacks, file); | 432 | m_Callbacks->CloseFile(m_Handle->addonData, file); |
| 591 | } | 433 | } |
| 592 | 434 | ||
| 593 | /*! | 435 | /*! |
| @@ -597,7 +439,7 @@ namespace ADDON | |||
| 597 | */ | 439 | */ |
| 598 | int GetFileChunkSize(void* file) | 440 | int GetFileChunkSize(void* file) |
| 599 | { | 441 | { |
| 600 | return XBMC_get_file_chunk_size(m_Handle, m_Callbacks, file); | 442 | return m_Callbacks->GetFileChunkSize(m_Handle->addonData, file); |
| 601 | } | 443 | } |
| 602 | 444 | ||
| 603 | /*! | 445 | /*! |
| @@ -608,7 +450,7 @@ namespace ADDON | |||
| 608 | */ | 450 | */ |
| 609 | bool FileExists(const char *strFileName, bool bUseCache) | 451 | bool FileExists(const char *strFileName, bool bUseCache) |
| 610 | { | 452 | { |
| 611 | return XBMC_file_exists(m_Handle, m_Callbacks, strFileName, bUseCache); | 453 | return m_Callbacks->FileExists(m_Handle->addonData, strFileName, bUseCache); |
| 612 | } | 454 | } |
| 613 | 455 | ||
| 614 | /*! | 456 | /*! |
| @@ -619,7 +461,7 @@ namespace ADDON | |||
| 619 | */ | 461 | */ |
| 620 | int StatFile(const char *strFileName, struct __stat64* buffer) | 462 | int StatFile(const char *strFileName, struct __stat64* buffer) |
| 621 | { | 463 | { |
| 622 | return XBMC_stat_file(m_Handle, m_Callbacks, strFileName, buffer); | 464 | return m_Callbacks->StatFile(m_Handle->addonData, strFileName, buffer); |
| 623 | } | 465 | } |
| 624 | 466 | ||
| 625 | /*! | 467 | /*! |
| @@ -629,7 +471,7 @@ namespace ADDON | |||
| 629 | */ | 471 | */ |
| 630 | bool DeleteFile(const char *strFileName) | 472 | bool DeleteFile(const char *strFileName) |
| 631 | { | 473 | { |
| 632 | return XBMC_delete_file(m_Handle, m_Callbacks, strFileName); | 474 | return m_Callbacks->DeleteFile(m_Handle->addonData, strFileName); |
| 633 | } | 475 | } |
| 634 | 476 | ||
| 635 | /*! | 477 | /*! |
| @@ -639,7 +481,7 @@ namespace ADDON | |||
| 639 | */ | 481 | */ |
| 640 | bool CanOpenDirectory(const char* strUrl) | 482 | bool CanOpenDirectory(const char* strUrl) |
| 641 | { | 483 | { |
| 642 | return XBMC_can_open_directory(m_Handle, m_Callbacks, strUrl); | 484 | return m_Callbacks->CanOpenDirectory(m_Handle->addonData, strUrl); |
| 643 | } | 485 | } |
| 644 | 486 | ||
| 645 | /*! | 487 | /*! |
| @@ -649,7 +491,7 @@ namespace ADDON | |||
| 649 | */ | 491 | */ |
| 650 | bool CreateDirectory(const char *strPath) | 492 | bool CreateDirectory(const char *strPath) |
| 651 | { | 493 | { |
| 652 | return XBMC_create_directory(m_Handle, m_Callbacks, strPath); | 494 | return m_Callbacks->CreateDirectory(m_Handle->addonData, strPath); |
| 653 | } | 495 | } |
| 654 | 496 | ||
| 655 | /*! | 497 | /*! |
| @@ -659,7 +501,7 @@ namespace ADDON | |||
| 659 | */ | 501 | */ |
| 660 | bool DirectoryExists(const char *strPath) | 502 | bool DirectoryExists(const char *strPath) |
| 661 | { | 503 | { |
| 662 | return XBMC_directory_exists(m_Handle, m_Callbacks, strPath); | 504 | return m_Callbacks->DirectoryExists(m_Handle->addonData, strPath); |
| 663 | } | 505 | } |
| 664 | 506 | ||
| 665 | /*! | 507 | /*! |
| @@ -669,7 +511,7 @@ namespace ADDON | |||
| 669 | */ | 511 | */ |
| 670 | bool RemoveDirectory(const char *strPath) | 512 | bool RemoveDirectory(const char *strPath) |
| 671 | { | 513 | { |
| 672 | return XBMC_remove_directory(m_Handle, m_Callbacks, strPath); | 514 | return m_Callbacks->RemoveDirectory(m_Handle->addonData, strPath); |
| 673 | } | 515 | } |
| 674 | 516 | ||
| 675 | /*! | 517 | /*! |
| @@ -682,7 +524,7 @@ namespace ADDON | |||
| 682 | */ | 524 | */ |
| 683 | bool GetDirectory(const char *strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items) | 525 | bool GetDirectory(const char *strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items) |
| 684 | { | 526 | { |
| 685 | return XBMC_get_directory(m_Handle, m_Callbacks, strPath, mask, items, num_items); | 527 | return m_Callbacks->GetDirectory(m_Handle->addonData, strPath, mask, items, num_items); |
| 686 | } | 528 | } |
| 687 | 529 | ||
| 688 | /*! | 530 | /*! |
| @@ -692,7 +534,7 @@ namespace ADDON | |||
| 692 | */ | 534 | */ |
| 693 | void FreeDirectory(VFSDirEntry* items, unsigned int num_items) | 535 | void FreeDirectory(VFSDirEntry* items, unsigned int num_items) |
| 694 | { | 536 | { |
| 695 | return XBMC_free_directory(m_Handle, m_Callbacks, items, num_items); | 537 | m_Callbacks->FreeDirectory(m_Handle->addonData, items, num_items); |
| 696 | } | 538 | } |
| 697 | 539 | ||
| 698 | /*! | 540 | /*! |
| @@ -701,7 +543,7 @@ namespace ADDON | |||
| 701 | */ | 543 | */ |
| 702 | void* CURLCreate(const char* strURL) | 544 | void* CURLCreate(const char* strURL) |
| 703 | { | 545 | { |
| 704 | return XBMC_curl_create(m_Handle, m_Callbacks, strURL); | 546 | return m_Callbacks->CURLCreate(m_Handle->addonData, strURL); |
| 705 | } | 547 | } |
| 706 | 548 | ||
| 707 | /*! | 549 | /*! |
| @@ -713,7 +555,7 @@ namespace ADDON | |||
| 713 | */ | 555 | */ |
| 714 | bool CURLAddOption(void* file, XFILE::CURLOPTIONTYPE type, const char* name, const char * value) | 556 | bool CURLAddOption(void* file, XFILE::CURLOPTIONTYPE type, const char* name, const char * value) |
| 715 | { | 557 | { |
| 716 | return XBMC_curl_add_option(m_Handle, m_Callbacks, file, type, name, value); | 558 | return m_Callbacks->CURLAddOption(m_Handle->addonData, file, type, name, value); |
| 717 | } | 559 | } |
| 718 | 560 | ||
| 719 | /*! | 561 | /*! |
| @@ -723,54 +565,11 @@ namespace ADDON | |||
| 723 | */ | 565 | */ |
| 724 | bool CURLOpen(void* file, unsigned int flags) | 566 | bool CURLOpen(void* file, unsigned int flags) |
| 725 | { | 567 | { |
| 726 | return XBMC_curl_open(m_Handle, m_Callbacks, file, flags); | 568 | return m_Callbacks->CURLOpen(m_Handle->addonData, file, flags); |
| 727 | } | 569 | } |
| 728 | |||
| 729 | protected: | ||
| 730 | void* (*XBMC_register_me)(void *HANDLE); | ||
| 731 | void (*XBMC_unregister_me)(void *HANDLE, void* CB); | ||
| 732 | void (*XBMC_log)(void *HANDLE, void* CB, const addon_log_t loglevel, const char *msg); | ||
| 733 | bool (*XBMC_get_setting)(void *HANDLE, void* CB, const char* settingName, void *settingValue); | ||
| 734 | char*(*XBMC_translate_special)(void *HANDLE, void* CB, const char* source); | ||
| 735 | void (*XBMC_queue_notification)(void *HANDLE, void* CB, const queue_msg_t type, const char *msg); | ||
| 736 | bool (*XBMC_wake_on_lan)(void *HANDLE, void* CB, const char* mac); | ||
| 737 | char* (*XBMC_unknown_to_utf8)(void *HANDLE, void* CB, const char* str); | ||
| 738 | char* (*XBMC_get_localized_string)(void *HANDLE, void* CB, int dwCode); | ||
| 739 | char* (*XBMC_get_dvd_menu_language)(void *HANDLE, void* CB); | ||
| 740 | void (*XBMC_free_string)(void *HANDLE, void* CB, char* str); | ||
| 741 | void* (*XBMC_open_file)(void *HANDLE, void* CB, const char* strFileName, unsigned int flags); | ||
| 742 | void* (*XBMC_open_file_for_write)(void *HANDLE, void* CB, const char* strFileName, bool bOverWrite); | ||
| 743 | ssize_t (*XBMC_read_file)(void *HANDLE, void* CB, void* file, void* lpBuf, size_t uiBufSize); | ||
| 744 | bool (*XBMC_read_file_string)(void *HANDLE, void* CB, void* file, char *szLine, int iLineLength); | ||
| 745 | ssize_t(*XBMC_write_file)(void *HANDLE, void* CB, void* file, const void* lpBuf, size_t uiBufSize); | ||
| 746 | void (*XBMC_flush_file)(void *HANDLE, void* CB, void* file); | ||
| 747 | int64_t (*XBMC_seek_file)(void *HANDLE, void* CB, void* file, int64_t iFilePosition, int iWhence); | ||
| 748 | int (*XBMC_truncate_file)(void *HANDLE, void* CB, void* file, int64_t iSize); | ||
| 749 | int64_t (*XBMC_get_file_position)(void *HANDLE, void* CB, void* file); | ||
| 750 | int64_t (*XBMC_get_file_length)(void *HANDLE, void* CB, void* file); | ||
| 751 | double(*XBMC_get_file_download_speed)(void *HANDLE, void* CB, void* file); | ||
| 752 | void (*XBMC_close_file)(void *HANDLE, void* CB, void* file); | ||
| 753 | int (*XBMC_get_file_chunk_size)(void *HANDLE, void* CB, void* file); | ||
| 754 | bool (*XBMC_file_exists)(void *HANDLE, void* CB, const char *strFileName, bool bUseCache); | ||
| 755 | int (*XBMC_stat_file)(void *HANDLE, void* CB, const char *strFileName, struct __stat64* buffer); | ||
| 756 | bool (*XBMC_delete_file)(void *HANDLE, void* CB, const char *strFileName); | ||
| 757 | bool (*XBMC_can_open_directory)(void *HANDLE, void* CB, const char* strURL); | ||
| 758 | bool (*XBMC_create_directory)(void *HANDLE, void* CB, const char* strPath); | ||
| 759 | bool (*XBMC_directory_exists)(void *HANDLE, void* CB, const char* strPath); | ||
| 760 | bool (*XBMC_remove_directory)(void *HANDLE, void* CB, const char* strPath); | ||
| 761 | bool (*XBMC_get_directory)(void *HANDLE, void* CB, const char* strPath, const char* mask, VFSDirEntry** items, unsigned int* num_items); | ||
| 762 | void (*XBMC_free_directory)(void *HANDLE, void* CB, VFSDirEntry* items, unsigned int num_items); | ||
| 763 | void* (*XBMC_curl_create)(void *HANDLE, void* CB, const char* strURL); | ||
| 764 | bool (*XBMC_curl_add_option)(void *HANDLE, void* CB, void *file, XFILE::CURLOPTIONTYPE type, const char* name, const char *value); | ||
| 765 | bool (*XBMC_curl_open)(void *m_Handle, void *m_Callbacks, void *file, unsigned int flags); | ||
| 766 | 570 | ||
| 767 | private: | 571 | private: |
| 768 | void *m_libXBMC_addon; | 572 | AddonCB* m_Handle; |
| 769 | void *m_Handle; | 573 | KodiAPI::AddOn::CB_AddOnLib *m_Callbacks; |
| 770 | void *m_Callbacks; | ||
| 771 | struct cb_array | ||
| 772 | { | ||
| 773 | const char* libPath; | ||
| 774 | }; | ||
| 775 | }; | 574 | }; |
| 776 | }; | 575 | }; |
