mirror of
https://github.com/wiiu-env/WiiUPluginSystem.git
synced 2026-08-26 11:45:27 -05:00
New config API
This commit is contained in:
@@ -71,7 +71,7 @@ void WUPSConfigItemBoolean_onDelete(void *context) {
|
||||
extern "C" bool
|
||||
WUPSConfigItemBoolean_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *configId, const char *displayName, bool defaultValue, BooleanValueChangedCallback callback, const char *trueValue,
|
||||
const char *falseValue) {
|
||||
if (cat == 0) {
|
||||
if (cat == nullptr) {
|
||||
return false;
|
||||
}
|
||||
auto *item = (ConfigItemBoolean *) malloc(sizeof(ConfigItemBoolean));
|
||||
@@ -91,7 +91,7 @@ WUPSConfigItemBoolean_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *
|
||||
snprintf(item->trueValue, sizeof(item->trueValue), "%s", trueValue);
|
||||
snprintf(item->falseValue, sizeof(item->falseValue), "%s", falseValue);
|
||||
|
||||
WUPSConfigCallbacks_t callbacks = {
|
||||
WUPSConfigAPIItemCallbacksV1 callbacks = {
|
||||
.getCurrentValueDisplay = &WUPSConfigItemBoolean_getCurrentValueDisplay,
|
||||
.getCurrentValueSelectedDisplay = &WUPSConfigItemBoolean_getCurrentValueSelectedDisplay,
|
||||
.onSelected = &WUPSConfigItemBoolean_onSelected,
|
||||
@@ -101,13 +101,19 @@ WUPSConfigItemBoolean_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *
|
||||
.onButtonPressed = &WUPSConfigItemBoolean_onButtonPressed,
|
||||
.onDelete = &WUPSConfigItemBoolean_onDelete};
|
||||
|
||||
if (WUPSConfigItem_Create(&item->handle, configId, displayName, callbacks, item) < 0) {
|
||||
WUPSConfigAPIItemOptionsV1 options = {
|
||||
.displayName = displayName,
|
||||
.context = item,
|
||||
.callbacks = callbacks,
|
||||
};
|
||||
|
||||
if (WUPSConfigAPI_Item_Create(options, &item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigItemBoolean_Cleanup(item);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (WUPSConfigCategory_AddItem(cat, item->handle) < 0) {
|
||||
WUPSConfigItem_Destroy(item->handle);
|
||||
if (WUPSConfigAPI_Category_AddItem(cat, item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigAPI_Item_Destroy(item->handle);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -96,7 +96,7 @@ extern "C" bool WUPSConfigItemIntegerRange_AddToCategory(WUPSConfigCategoryHandl
|
||||
item->maxValue = maxValue;
|
||||
item->callback = (void *) callback;
|
||||
|
||||
WUPSConfigCallbacks_t callbacks = {
|
||||
WUPSConfigAPIItemCallbacksV1 callbacks = {
|
||||
.getCurrentValueDisplay = &WUPSConfigItemIntegerRange_getCurrentValueDisplay,
|
||||
.getCurrentValueSelectedDisplay = &WUPSConfigItemIntegerRange_getCurrentValueSelectedDisplay,
|
||||
.onSelected = &WUPSConfigItemIntegerRange_onSelected,
|
||||
@@ -106,13 +106,19 @@ extern "C" bool WUPSConfigItemIntegerRange_AddToCategory(WUPSConfigCategoryHandl
|
||||
.onButtonPressed = &WUPSConfigItemIntegerRange_onButtonPressed,
|
||||
.onDelete = &WUPSConfigItemIntegerRange_onDelete};
|
||||
|
||||
if (WUPSConfigItem_Create(&(item->handle), configId, displayName, callbacks, item) < 0) {
|
||||
WUPSConfigAPIItemOptionsV1 options = {
|
||||
.displayName = displayName,
|
||||
.context = item,
|
||||
.callbacks = callbacks,
|
||||
};
|
||||
|
||||
if (WUPSConfigAPI_Item_Create(options, &(item->handle)) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigItemIntegerRange_Cleanup(item);
|
||||
return false;
|
||||
};
|
||||
|
||||
if (WUPSConfigCategory_AddItem(cat, item->handle) < 0) {
|
||||
WUPSConfigItem_Destroy(item->handle);
|
||||
if (WUPSConfigAPI_Category_AddItem(cat, item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigAPI_Item_Destroy(item->handle);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -126,7 +126,7 @@ WUPSConfigItemMultipleValues_AddToCategory(WUPSConfigCategoryHandle cat, const c
|
||||
item->configId = nullptr;
|
||||
}
|
||||
|
||||
WUPSConfigCallbacks_t callbacks = {
|
||||
WUPSConfigAPIItemCallbacksV1 callbacks = {
|
||||
.getCurrentValueDisplay = &WUPSConfigItemMultipleValues_getCurrentValueDisplay,
|
||||
.getCurrentValueSelectedDisplay = &WUPSConfigItemMultipleValues_getCurrentValueSelectedDisplay,
|
||||
.onSelected = &WUPSConfigItemMultipleValues_onSelected,
|
||||
@@ -136,13 +136,19 @@ WUPSConfigItemMultipleValues_AddToCategory(WUPSConfigCategoryHandle cat, const c
|
||||
.onButtonPressed = &WUPSConfigItemMultipleValues_onButtonPressed,
|
||||
.onDelete = &WUPSConfigItemMultipleValues_onDelete};
|
||||
|
||||
if (WUPSConfigItem_Create(&item->handle, configId, displayName, callbacks, item) < 0) {
|
||||
WUPSConfigAPIItemOptionsV1 options = {
|
||||
.displayName = displayName,
|
||||
.context = item,
|
||||
.callbacks = callbacks,
|
||||
};
|
||||
|
||||
if (WUPSConfigAPI_Item_Create(options, &item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigItemMultipleValues_Cleanup(item);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (WUPSConfigCategory_AddItem(cat, item->handle) < 0) {
|
||||
WUPSConfigItem_Destroy(item->handle);
|
||||
if (WUPSConfigAPI_Category_AddItem(cat, item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigAPI_Item_Destroy(item->handle);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -51,7 +51,7 @@ WUPSConfigItemStub_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *con
|
||||
return false;
|
||||
}
|
||||
|
||||
WUPSConfigCallbacks_t callbacks = {
|
||||
WUPSConfigAPIItemCallbacksV1 callbacks = {
|
||||
.getCurrentValueDisplay = &WUPSConfigItemStub_getCurrentValueDisplay,
|
||||
.getCurrentValueSelectedDisplay = &WUPSConfigItemStub_getCurrentValueSelectedDisplay,
|
||||
.onSelected = &WUPSConfigItemStub_onSelected,
|
||||
@@ -61,13 +61,19 @@ WUPSConfigItemStub_AddToCategoryEx(WUPSConfigCategoryHandle cat, const char *con
|
||||
.onButtonPressed = &WUPSConfigItemStub_onButtonPressed,
|
||||
.onDelete = &WUPSConfigItemStub_onDelete};
|
||||
|
||||
if (WUPSConfigItem_Create(&item->handle, configID, displayName, callbacks, item) < 0) {
|
||||
WUPSConfigAPIItemOptionsV1 options = {
|
||||
.displayName = displayName,
|
||||
.context = item,
|
||||
.callbacks = callbacks,
|
||||
};
|
||||
|
||||
if (WUPSConfigAPI_Item_Create(options, &item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigItemStub_Cleanup(item);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (WUPSConfigCategory_AddItem(cat, item->handle) < 0) {
|
||||
WUPSConfigItem_Destroy(item->handle);
|
||||
if (WUPSConfigAPI_Category_AddItem(cat, item->handle) != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
WUPSConfigAPI_Item_Destroy(item->handle);
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
:NAME homebrew_wupsbackend
|
||||
|
||||
:TEXT
|
||||
WUPSConfigItem_Create
|
||||
WUPSConfigItem_Destroy
|
||||
WUPSConfigItem_SetDisplayName
|
||||
WUPSConfigItem_GetDisplayName
|
||||
WUPSConfigItem_SetConfigID
|
||||
WUPSConfigItem_GetConfigID
|
||||
|
||||
WUPSConfig_Create
|
||||
WUPSConfig_Destroy
|
||||
WUPSConfig_GetName
|
||||
WUPSConfig_AddCategoryByName
|
||||
WUPSConfig_AddCategory
|
||||
|
||||
WUPSConfigCategory_Create
|
||||
WUPSConfigCategory_Destroy
|
||||
WUPSConfigCategory_GetName
|
||||
WUPSConfigCategory_AddItem
|
||||
245
libraries/libwups/config_api.cpp
Normal file
245
libraries/libwups/config_api.cpp
Normal file
@@ -0,0 +1,245 @@
|
||||
#include "wups/config_api.h"
|
||||
#include "wups.h"
|
||||
#include <coreinit/dynload.h>
|
||||
#include <wups/config.h>
|
||||
|
||||
static OSDynLoad_Module sModuleHandle = nullptr;
|
||||
|
||||
static WUPSConfigAPIStatus (*sAPIGetVersion)(WUPSConfigAPIVersion *out) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPIInitEx)(uint32_t pluginIdentifier, WUPSConfigAPIOptions options, WUPSConfigAPI_MenuOpenedCallback openedCallback, WUPSConfigAPI_MenuClosedCallback closedCallback) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPICategoryCreateEx)(WUPSConfigAPICreateCategoryOptions options, WUPSConfigCategoryHandle *out) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPICategoryDestroy)(WUPSConfigCategoryHandle handle) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPICategoryAddCategory)(WUPSConfigCategoryHandle parentHandle, WUPSConfigCategoryHandle categoryHandle) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPICategoryAddItem)(WUPSConfigCategoryHandle parentHandle, WUPSConfigItemHandle itemHandle) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPIItemCreateEx)(WUPSConfigAPICreateItemOptions options, WUPSConfigItemHandle *out) = nullptr;
|
||||
static WUPSConfigAPIStatus (*sAPIItemDestroy)(WUPSConfigItemHandle handle) = nullptr;
|
||||
|
||||
static WUPSConfigAPIVersion sConfigAPIVersion = WUPS_CONFIG_API_VERSION_ERROR;
|
||||
|
||||
static bool sConfigLibInitDone = false;
|
||||
static uint32_t sConfigPluginIdentifier = 0xFFFFFFFF;
|
||||
|
||||
const char *WUPSConfigAPI_GetStatusStr(WUPSConfigAPIStatus status) {
|
||||
switch (status) {
|
||||
case WUPSCONFIG_API_RESULT_SUCCESS:
|
||||
return "WUPSCONFIG_API_RESULT_SUCCESS";
|
||||
case WUPSCONFIG_API_RESULT_INVALID_ARGUMENT:
|
||||
return "WUPSCONFIG_API_RESULT_INVALID_ARGUMENT";
|
||||
case WUPSCONFIG_API_RESULT_OUT_OF_MEMORY:
|
||||
return "WUPSCONFIG_API_RESULT_OUT_OF_MEMORY";
|
||||
case WUPSCONFIG_API_RESULT_NOT_FOUND:
|
||||
return "WUPSCONFIG_API_RESULT_NOT_FOUND";
|
||||
case WUPSCONFIG_API_RESULT_MODULE_NOT_FOUND:
|
||||
return "WUPSCONFIG_API_RESULT_MODULE_NOT_FOUND";
|
||||
case WUPSCONFIG_API_RESULT_INVALID_PLUGIN_IDENTIFIER:
|
||||
return "WUPSCONFIG_API_RESULT_INVALID_PLUGIN_IDENTIFIER";
|
||||
case WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT:
|
||||
return "WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT";
|
||||
case WUPSCONFIG_API_RESULT_UNSUPPORTED_VERSION:
|
||||
return "WUPSCONFIG_API_RESULT_UNSUPPORTED_VERSION";
|
||||
case WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND:
|
||||
return "WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND";
|
||||
case WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED:
|
||||
return "WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED";
|
||||
case WUPSCONFIG_API_RESULT_UNKNOWN_ERROR:
|
||||
return "WUPSCONFIG_API_RESULT_UNKNOWN_ERROR";
|
||||
case WUPSCONFIG_API_RESULT_MISSING_CALLBACK:
|
||||
return "WUPSCONFIG_API_RESULT_MISSING_CALLBACK";
|
||||
}
|
||||
return "WUPSCONFIG_API_RESULT_UNKNOWN_ERROR";
|
||||
}
|
||||
|
||||
extern "C" WUPSConfigAPIStatus WUPSConfigAPI_InitLibrary_Internal(wups_loader_init_config_args_t args) {
|
||||
if (sConfigLibInitDone) {
|
||||
return WUPSCONFIG_API_RESULT_SUCCESS;
|
||||
}
|
||||
if (args.arg_version != 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_VERSION;
|
||||
}
|
||||
|
||||
if (OSDynLoad_Acquire("homebrew_wupsbackend", &sModuleHandle) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libuwps: OSDynLoad_Acquire \"homebrew_wupsbackend\" failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_NOT_FOUND;
|
||||
}
|
||||
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_GetVersion", (void **) &sAPIGetVersion) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libuwps: FindExport WUPSConfigAPI_GetVersion failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
auto res = WUPSConfigAPI_GetVersion(&sConfigAPIVersion);
|
||||
if (res != WUPSCONFIG_API_RESULT_SUCCESS) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_VERSION;
|
||||
}
|
||||
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_InitEx", (void **) &sAPIInitEx) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_InitEx failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Category_CreateEx", (void **) &sAPICategoryCreateEx) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Category_CreateEx failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Category_Destroy", (void **) &sAPICategoryDestroy) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Category_Destroy failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Category_AddCategory", (void **) &sAPICategoryAddCategory) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Category_AddCategory failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Category_AddItem", (void **) &sAPICategoryAddItem) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Category_AddItem failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Item_CreateEx", (void **) &sAPIItemCreateEx) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Item_Create failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_Item_Destroy", (void **) &sAPIItemDestroy) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_Item_Destroy failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
|
||||
sConfigLibInitDone = true;
|
||||
sConfigPluginIdentifier = args.plugin_identifier;
|
||||
|
||||
return WUPSCONFIG_API_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
extern "C" WUPSConfigAPIStatus WUPSConfigAPI_DeInitLibrary_Internal() {
|
||||
return WUPSCONFIG_API_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_GetVersion(WUPSConfigAPIVersion *outVariable) {
|
||||
if (sAPIGetVersion == nullptr) {
|
||||
if (OSDynLoad_Acquire("homebrew_notifications", &sModuleHandle) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: OSDynLoad_Acquire failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_NOT_FOUND;
|
||||
}
|
||||
|
||||
if (OSDynLoad_FindExport(sModuleHandle, OS_DYNLOAD_EXPORT_FUNC, "WUPSConfigAPI_GetVersion", (void **) &sAPIGetVersion) != OS_DYNLOAD_OK) {
|
||||
WUPS_DEBUG_REPORT("libwups: FindExport WUPSConfigAPI_GetVersion failed.\n");
|
||||
return WUPSCONFIG_API_RESULT_MODULE_MISSING_EXPORT;
|
||||
}
|
||||
}
|
||||
|
||||
return sAPIGetVersion(outVariable);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_InitEx(uint32_t pluginIdentifier, WUPSConfigAPIOptions options, WUPSConfigAPI_MenuOpenedCallback openedCallback, WUPSConfigAPI_MenuClosedCallback closedCallback) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPIInitEx == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (openedCallback == nullptr || closedCallback == nullptr || options.version != 1) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPIInitEx(pluginIdentifier, options, openedCallback, closedCallback);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Init(WUPSConfigAPIOptionsV1 optionsV1, WUPSConfigAPI_MenuOpenedCallback openedCallback, WUPSConfigAPI_MenuClosedCallback closedCallback) {
|
||||
if (sConfigPluginIdentifier == 0xFFFFFFFF) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_PLUGIN_IDENTIFIER;
|
||||
}
|
||||
WUPSConfigAPIOptions options = {
|
||||
.version = WUPS_API_CONFIG_API_OPTION_VERSION_V1,
|
||||
.data = {.v1 = optionsV1},
|
||||
};
|
||||
return WUPSConfigAPI_InitEx(sConfigPluginIdentifier, options, openedCallback, closedCallback);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Category_CreateEx(WUPSConfigAPICreateCategoryOptions options, WUPSConfigCategoryHandle *out) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPICategoryCreateEx == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (out == nullptr) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPICategoryCreateEx(options, out);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Category_Destroy(WUPSConfigCategoryHandle handle) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPICategoryDestroy == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (handle == nullptr) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPICategoryDestroy(handle);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Category_AddCategory(WUPSConfigCategoryHandle parentHandle, WUPSConfigCategoryHandle categoryHandle) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPICategoryAddCategory == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (parentHandle == nullptr || categoryHandle == nullptr) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPICategoryAddCategory(parentHandle, categoryHandle);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Category_AddItem(WUPSConfigCategoryHandle parentHandle, WUPSConfigItemHandle itemHandle) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPICategoryAddItem == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (parentHandle == 0 || itemHandle == 0) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPICategoryAddItem(parentHandle, itemHandle);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Item_CreateEx(WUPSConfigAPICreateItemOptions options, WUPSConfigItemHandle *out) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPIItemCreateEx == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (out == nullptr) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPIItemCreateEx(options, out);
|
||||
}
|
||||
|
||||
WUPSConfigAPIStatus WUPSConfigAPI_Item_Destroy(WUPSConfigItemHandle handle) {
|
||||
if (sConfigAPIVersion == WUPS_CONFIG_API_VERSION_ERROR) {
|
||||
return WUPSCONFIG_API_RESULT_LIB_UNINITIALIZED;
|
||||
}
|
||||
if (sAPIItemDestroy == nullptr || sConfigAPIVersion < 1) {
|
||||
return WUPSCONFIG_API_RESULT_UNSUPPORTED_COMMAND;
|
||||
}
|
||||
|
||||
if (handle == nullptr) {
|
||||
return WUPSCONFIG_API_RESULT_INVALID_ARGUMENT;
|
||||
}
|
||||
|
||||
return sAPIItemDestroy(handle);
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
#include <cstdlib>
|
||||
#include <cstring>
|
||||
#include <wups.h>
|
||||
#include <wups/storage.h>
|
||||
|
||||
struct wups_internal_functions_t {
|
||||
OpenStorageFunction openfunction_ptr = nullptr;
|
||||
@@ -18,7 +17,7 @@ struct wups_internal_functions_t {
|
||||
static wups_internal_functions_t __internal_functions __attribute__((section(".data"))) = {};
|
||||
|
||||
WUPSStorageError WUPS_InitStorage(wups_loader_init_storage_args_t args) {
|
||||
if (args.version != WUPS_STORAGE_CUR_API_VERSION) {
|
||||
if (args.version > WUPS_STORAGE_CUR_API_VERSION) {
|
||||
__internal_functions = {};
|
||||
return WUPS_STORAGE_ERROR_INVALID_VERSION;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user