mirror of
https://github.com/wiiu-env/WiiUPluginLoaderBackend.git
synced 2024-11-22 04:39:17 +01:00
API: Add WUPSGetPluginMetaInformationByPathEx and WUPSGetPluginMetaInformationByBufferEx
This commit is contained in:
parent
9d82eb7e44
commit
cada64d86e
@ -92,7 +92,7 @@ extern "C" PluginBackendApiErrorType WUPSLoadPluginAsDataByBuffer(wups_backend_p
|
|||||||
return WUPSLoadPluginAsData(PLUGIN_INFORMATION_INPUT_TYPE_BUFFER, nullptr, buffer, size, output);
|
return WUPSLoadPluginAsData(PLUGIN_INFORMATION_INPUT_TYPE_BUFFER, nullptr, buffer, size, output);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformation(WUPSBackendGetPluginInformationInputType inputType, const char *path, char *buffer, size_t size, wups_backend_plugin_information *output) {
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationEx(WUPSBackendGetPluginInformationInputType inputType, const char *path, char *buffer, size_t size, wups_backend_plugin_information *output, PluginBackendPluginParseError *errOut) {
|
||||||
if (output == nullptr) {
|
if (output == nullptr) {
|
||||||
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_INVALID_ARG");
|
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_INVALID_ARG");
|
||||||
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
||||||
@ -105,10 +105,31 @@ extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformation(WUPSBackendGet
|
|||||||
} else if (inputType == PLUGIN_INFORMATION_INPUT_TYPE_BUFFER && buffer != nullptr && size > 0) {
|
} else if (inputType == PLUGIN_INFORMATION_INPUT_TYPE_BUFFER && buffer != nullptr && size > 0) {
|
||||||
pluginInfo = PluginMetaInformationFactory::loadPlugin(std::span<uint8_t const>((uint8_t *) buffer, size), error);
|
pluginInfo = PluginMetaInformationFactory::loadPlugin(std::span<uint8_t const>((uint8_t *) buffer, size), error);
|
||||||
} else {
|
} else {
|
||||||
|
if (errOut) {
|
||||||
|
*errOut = PLUGIN_BACKEND_PLUGIN_PARSE_ERROR_UNKNOWN;
|
||||||
|
}
|
||||||
|
|
||||||
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_INVALID_ARG");
|
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_INVALID_ARG");
|
||||||
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (errOut) {
|
||||||
|
switch (error) {
|
||||||
|
case PLUGIN_PARSE_ERROR_NONE:
|
||||||
|
*errOut = PLUGIN_BACKEND_PLUGIN_PARSE_ERROR_NONE;
|
||||||
|
break;
|
||||||
|
case PLUGIN_PARSE_ERROR_INCOMPATIBLE_VERSION:
|
||||||
|
*errOut = PLUGIN_BACKEND_PLUGIN_PARSE_ERROR_INCOMPATIBLE_VERSION;
|
||||||
|
break;
|
||||||
|
case PLUGIN_PARSE_ERROR_UNKNOWN:
|
||||||
|
case PLUGIN_PARSE_ERROR_BUFFER_EMPTY:
|
||||||
|
case PLUGIN_PARSE_ERROR_ELFIO_PARSE_FAILED:
|
||||||
|
case PLUGIN_PARSE_ERROR_IO_ERROR:
|
||||||
|
*errOut = PLUGIN_BACKEND_PLUGIN_PARSE_ERROR_UNKNOWN;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!pluginInfo) {
|
if (!pluginInfo) {
|
||||||
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_FILE_NOT_FOUND");
|
DEBUG_FUNCTION_LINE_ERR("PLUGIN_BACKEND_API_ERROR_FILE_NOT_FOUND");
|
||||||
return PLUGIN_BACKEND_API_ERROR_FILE_NOT_FOUND;
|
return PLUGIN_BACKEND_API_ERROR_FILE_NOT_FOUND;
|
||||||
@ -118,12 +139,16 @@ extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformation(WUPSBackendGet
|
|||||||
return PLUGIN_BACKEND_API_ERROR_NONE;
|
return PLUGIN_BACKEND_API_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformation(WUPSBackendGetPluginInformationInputType inputType, const char *path, char *buffer, size_t size, wups_backend_plugin_information *output) {
|
||||||
|
return WUPSGetPluginMetaInformationEx(inputType, path, buffer, size, output, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByPath(wups_backend_plugin_information *output, const char *path) {
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByPath(wups_backend_plugin_information *output, const char *path) {
|
||||||
return WUPSGetPluginMetaInformation(PLUGIN_INFORMATION_INPUT_TYPE_PATH, path, nullptr, 0, output);
|
return WUPSGetPluginMetaInformationEx(PLUGIN_INFORMATION_INPUT_TYPE_PATH, path, nullptr, 0, output, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByBuffer(wups_backend_plugin_information *output, char *buffer, size_t size) {
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByBuffer(wups_backend_plugin_information *output, char *buffer, size_t size) {
|
||||||
return WUPSGetPluginMetaInformation(PLUGIN_INFORMATION_INPUT_TYPE_BUFFER, nullptr, buffer, size, output);
|
return WUPSGetPluginMetaInformationEx(PLUGIN_INFORMATION_INPUT_TYPE_BUFFER, nullptr, buffer, size, output, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern "C" PluginBackendApiErrorType WUPSGetPluginDataForContainerHandles(const wups_backend_plugin_container_handle *plugin_container_handle_list, wups_backend_plugin_data_handle *plugin_data_list, uint32_t buffer_size) {
|
extern "C" PluginBackendApiErrorType WUPSGetPluginDataForContainerHandles(const wups_backend_plugin_container_handle *plugin_container_handle_list, wups_backend_plugin_data_handle *plugin_data_list, uint32_t buffer_size) {
|
||||||
@ -226,7 +251,7 @@ extern "C" PluginBackendApiErrorType WUPSGetAPIVersion(WUPSBackendAPIVersion *ou
|
|||||||
if (outVersion == nullptr) {
|
if (outVersion == nullptr) {
|
||||||
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
return PLUGIN_BACKEND_API_ERROR_INVALID_ARG;
|
||||||
}
|
}
|
||||||
*outVersion = 2;
|
*outVersion = 3;
|
||||||
return PLUGIN_BACKEND_API_ERROR_NONE;
|
return PLUGIN_BACKEND_API_ERROR_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,3 +329,15 @@ WUMS_EXPORT_FUNCTION(WUPSGetNumberOfLoadedPlugins);
|
|||||||
WUMS_EXPORT_FUNCTION(WUPSGetSectionInformationForPlugin);
|
WUMS_EXPORT_FUNCTION(WUPSGetSectionInformationForPlugin);
|
||||||
WUMS_EXPORT_FUNCTION(WUPSWillReloadPluginsOnNextLaunch);
|
WUMS_EXPORT_FUNCTION(WUPSWillReloadPluginsOnNextLaunch);
|
||||||
WUMS_EXPORT_FUNCTION(WUPSGetSectionMemoryAddresses);
|
WUMS_EXPORT_FUNCTION(WUPSGetSectionMemoryAddresses);
|
||||||
|
|
||||||
|
// API 3.0
|
||||||
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByPathEx(wups_backend_plugin_information *output, const char *path, PluginBackendPluginParseError *err) {
|
||||||
|
return WUPSGetPluginMetaInformationEx(PLUGIN_INFORMATION_INPUT_TYPE_PATH, path, nullptr, 0, output, err);
|
||||||
|
}
|
||||||
|
|
||||||
|
extern "C" PluginBackendApiErrorType WUPSGetPluginMetaInformationByBufferEx(wups_backend_plugin_information *output, char *buffer, size_t size, PluginBackendPluginParseError *err) {
|
||||||
|
return WUPSGetPluginMetaInformationEx(PLUGIN_INFORMATION_INPUT_TYPE_BUFFER, nullptr, buffer, size, output, err);
|
||||||
|
}
|
||||||
|
|
||||||
|
WUMS_EXPORT_FUNCTION(WUPSGetPluginMetaInformationByPathEx);
|
||||||
|
WUMS_EXPORT_FUNCTION(WUPSGetPluginMetaInformationByBufferEx);
|
||||||
|
Loading…
Reference in New Issue
Block a user