mirror of
https://github.com/wiiu-env/WiiUPluginSystem.git
synced 2026-08-20 00:34:37 -05:00
Rewrite of the StorageAPI
This commit is contained in:
@@ -47,7 +47,7 @@ typedef enum wups_loader_hook_type_t {
|
||||
WUPS_LOADER_HOOK_GET_CONFIG,
|
||||
WUPS_LOADER_HOOK_CONFIG_CLOSED,
|
||||
|
||||
WUPS_LOADER_HOOK_INIT_STORAGE, /* Only for internal usage */
|
||||
WUPS_LOADER_HOOK_INIT_STORAGE_DEPRECATED, /* Deprecated implementation */
|
||||
|
||||
WUPS_LOADER_HOOK_INIT_PLUGIN, /* Called when exiting the plugin loader */
|
||||
WUPS_LOADER_HOOK_DEINIT_PLUGIN, /* Called when re-entering the plugin loader */
|
||||
@@ -56,6 +56,8 @@ typedef enum wups_loader_hook_type_t {
|
||||
WUPS_LOADER_HOOK_ACQUIRED_FOREGROUND, /* Called when an foreground is acquired */
|
||||
WUPS_LOADER_HOOK_APPLICATION_REQUESTS_EXIT, /* Called when an application wants to exit */
|
||||
WUPS_LOADER_HOOK_APPLICATION_ENDS, /* Called when an application ends */
|
||||
|
||||
WUPS_LOADER_HOOK_INIT_STORAGE, /* Only for internal usage */
|
||||
} wups_loader_hook_type_t;
|
||||
|
||||
typedef struct wups_loader_hook_t {
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define WUPS_VERSION_STR "0.7.1"
|
||||
#define WUPS_VERSION_STR "0.7.2"
|
||||
#define WUPS_PLUGIN_NAME(__plugin_name) \
|
||||
WUPS_META(name, __plugin_name); \
|
||||
WUPS_META(wups, WUPS_VERSION_STR); \
|
||||
|
||||
@@ -7,48 +7,64 @@ extern "C" {
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
|
||||
typedef enum wups_storage_type_t_ {
|
||||
WUPS_STORAGE_TYPE_INVALID,
|
||||
WUPS_STORAGE_TYPE_STRING,
|
||||
WUPS_STORAGE_TYPE_INT,
|
||||
WUPS_STORAGE_TYPE_ITEM,
|
||||
} wups_storage_type_t;
|
||||
|
||||
typedef enum {
|
||||
WUPS_STORAGE_ERROR_SUCCESS = 0,
|
||||
WUPS_STORAGE_ERROR_NOT_OPENED = -1,
|
||||
WUPS_STORAGE_ERROR_ALREADY_OPENED = -2,
|
||||
WUPS_STORAGE_ERROR_INVALID_ARGS = -3,
|
||||
WUPS_STORAGE_ERROR_NOT_FOUND = -4,
|
||||
WUPS_STORAGE_ERROR_NOT_INITIALIZED = -5,
|
||||
WUPS_STORAGE_ERROR_INVALID_BACKEND_PARAMS = -6,
|
||||
WUPS_STORAGE_ERROR_INVALID_JSON = -7,
|
||||
WUPS_STORAGE_ERROR_IO = -8,
|
||||
WUPS_STORAGE_ERROR_B64_DECODE_FAILED = -9,
|
||||
WUPS_STORAGE_ERROR_BUFFER_TOO_SMALL = -10,
|
||||
WUPS_STORAGE_ERROR_MALLOC_FAILED = -11,
|
||||
WUPS_STORAGE_ERROR_NOT_ACTIVE_CATEGORY = -13,
|
||||
WUPS_STORAGE_ERROR_SUCCESS = 0,
|
||||
WUPS_STORAGE_ERROR_INVALID_ARGS = 1,
|
||||
WUPS_STORAGE_ERROR_INVALID_POINTER = 2,
|
||||
WUPS_STORAGE_ERROR_INVALID_VERSION = 3,
|
||||
WUPS_STORAGE_ERROR_UNEXPECTED_DATA_TYPE = 4,
|
||||
WUPS_STORAGE_ERROR_NOT_FOUND = 5,
|
||||
WUPS_STORAGE_ERROR_MALLOC_FAILED = 6,
|
||||
WUPS_STORAGE_ERROR_ALREADY_OPENED = 7,
|
||||
WUPS_STORAGE_ERROR_BUFFER_TOO_SMALL = 8,
|
||||
WUPS_STORAGE_ERROR_ALREADY_EXISTS = 9,
|
||||
WUPS_STORAGE_ERROR_UNKNOWN_ERROR = 10
|
||||
} WUPSStorageError;
|
||||
|
||||
typedef struct wups_storage_item_t_ {
|
||||
char *key;
|
||||
void *data;
|
||||
uint32_t data_size;
|
||||
uint32_t deleted;
|
||||
wups_storage_type_t type;
|
||||
} wups_storage_item_t;
|
||||
typedef enum {
|
||||
WUPS_STORAGE_ITEM_S32 = 0,
|
||||
WUPS_STORAGE_ITEM_S64 = 1,
|
||||
WUPS_STORAGE_ITEM_U32 = 2,
|
||||
WUPS_STORAGE_ITEM_U64 = 3,
|
||||
WUPS_STORAGE_ITEM_STRING = 4,
|
||||
WUPS_STORAGE_ITEM_BINARY = 5,
|
||||
WUPS_STORAGE_ITEM_BOOL = 6,
|
||||
WUPS_STORAGE_ITEM_FLOAT = 7,
|
||||
WUPS_STORAGE_ITEM_DOUBLE = 8,
|
||||
} WUPSStorageItemTypes;
|
||||
|
||||
typedef WUPSStorageError (*OpenStorageFunction)(const char *plugin_id, wups_storage_item_t *items);
|
||||
typedef WUPSStorageError (*CloseStorageFunction)(const char *plugin_id, wups_storage_item_t *items);
|
||||
typedef uint32_t WUPSStorageItemType;
|
||||
|
||||
typedef void *wups_storage_root_item;
|
||||
typedef void *wups_storage_item;
|
||||
|
||||
typedef WUPSStorageError (*OpenStorageFunction)(const char *plugin_id, wups_storage_root_item *root);
|
||||
typedef WUPSStorageError (*CloseStorageFunction)(const char *plugin_id);
|
||||
typedef WUPSStorageError (*DeleteItemFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key);
|
||||
typedef WUPSStorageError (*CreateSubItemFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key, wups_storage_item *outItem);
|
||||
typedef WUPSStorageError (*GetSubItemFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key, wups_storage_item *outItem);
|
||||
typedef WUPSStorageError (*StoreItemFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key, WUPSStorageItemType itemType, void *data, uint32_t length);
|
||||
typedef WUPSStorageError (*GetItemFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key, WUPSStorageItemType itemType, void *data, uint32_t maxSize, uint32_t *outSize);
|
||||
typedef WUPSStorageError (*GetItemSizeFunction)(wups_storage_root_item root, wups_storage_item parent, const char *key, uint32_t *outSize);
|
||||
|
||||
typedef uint32_t WUPS_STORAGE_API_VERSION;
|
||||
#define WUPS_STORAGE_CUR_API_VERSION 0x02
|
||||
|
||||
typedef struct wups_loader_init_storage_args_t_ {
|
||||
WUPS_STORAGE_API_VERSION version;
|
||||
OpenStorageFunction open_storage_ptr;
|
||||
CloseStorageFunction close_storage_ptr;
|
||||
DeleteItemFunction delete_item_function_ptr;
|
||||
CreateSubItemFunction create_sub_item_function_ptr;
|
||||
GetSubItemFunction get_sub_item_function_ptr;
|
||||
StoreItemFunction store_item_function_ptr;
|
||||
GetItemFunction get_item_function_ptr;
|
||||
GetItemSizeFunction get_item_size_function_ptr;
|
||||
const char *plugin_id;
|
||||
} wups_loader_init_storage_args_t;
|
||||
|
||||
/* called by backend */
|
||||
void WUPS_InitStorage(wups_loader_init_storage_args_t args);
|
||||
WUPSStorageError WUPS_InitStorage(wups_loader_init_storage_args_t args);
|
||||
|
||||
const char *WUPS_GetStorageStatusStr(WUPSStorageError status);
|
||||
|
||||
@@ -59,24 +75,37 @@ WUPSStorageError WUPS_OpenStorage(void);
|
||||
WUPSStorageError WUPS_CloseStorage(void);
|
||||
|
||||
/* deletes key from storage */
|
||||
WUPSStorageError WUPS_DeleteItem(wups_storage_item_t *parent, const char *key);
|
||||
WUPSStorageError WUPS_DeleteItem(wups_storage_item parent, const char *key);
|
||||
|
||||
/* returns the size of key on success, or an error code */
|
||||
// TODO do we need this? what about binary data?
|
||||
// int32_t WUPS_GetSize(const char* key);
|
||||
WUPSStorageError WUPS_CreateSubItem(wups_storage_item parent, const char *key, wups_storage_item *outItem);
|
||||
WUPSStorageError WUPS_GetSubItem(wups_storage_item parent, const char *key, wups_storage_item *outItem);
|
||||
|
||||
WUPSStorageError WUPS_CreateSubItem(wups_storage_item_t *parent, const char *key, wups_storage_item_t **outItem);
|
||||
WUPSStorageError WUPS_GetSubItem(wups_storage_item_t *parent, const char *key, wups_storage_item_t **outItem);
|
||||
WUPSStorageError WUPS_StoreString(wups_storage_item parent, const char *key, const char *string);
|
||||
WUPSStorageError WUPS_StoreBool(wups_storage_item parent, const char *key, bool value);
|
||||
WUPSStorageError WUPS_StoreInt(wups_storage_item parent, const char *key, int32_t value);
|
||||
WUPSStorageError WUPS_StoreS32(wups_storage_item parent, const char *key, int32_t value);
|
||||
WUPSStorageError WUPS_StoreS64(wups_storage_item parent, const char *key, int64_t value);
|
||||
WUPSStorageError WUPS_StoreU32(wups_storage_item parent, const char *key, uint32_t value);
|
||||
WUPSStorageError WUPS_StoreU64(wups_storage_item parent, const char *key, uint64_t value);
|
||||
WUPSStorageError WUPS_StoreFloat(wups_storage_item parent, const char *key, float value);
|
||||
WUPSStorageError WUPS_StoreDouble(wups_storage_item parent, const char *key, double value);
|
||||
WUPSStorageError WUPS_StoreBinary(wups_storage_item parent, const char *key, const void *data, uint32_t size);
|
||||
|
||||
WUPSStorageError WUPS_StoreString(wups_storage_item_t *parent, const char *key, const char *string);
|
||||
WUPSStorageError WUPS_StoreBool(wups_storage_item_t *parent, const char *key, bool value);
|
||||
WUPSStorageError WUPS_StoreInt(wups_storage_item_t *parent, const char *key, int32_t value);
|
||||
WUPSStorageError WUPS_StoreBinary(wups_storage_item_t *parent, const char *key, const void *data, uint32_t size);
|
||||
WUPSStorageError WUPS_GetString(wups_storage_item parent, const char *key, char *outString, uint32_t maxSize, uint32_t *outSize);
|
||||
WUPSStorageError WUPS_GetBool(wups_storage_item parent, const char *key, bool *outValue);
|
||||
WUPSStorageError WUPS_GetInt(wups_storage_item parent, const char *key, int32_t *outValue);
|
||||
WUPSStorageError WUPS_GetS32(wups_storage_item parent, const char *key, int32_t *outValue);
|
||||
WUPSStorageError WUPS_GetS64(wups_storage_item parent, const char *key, int64_t *outValue);
|
||||
WUPSStorageError WUPS_GetU32(wups_storage_item parent, const char *key, uint32_t *outValue);
|
||||
WUPSStorageError WUPS_GetU64(wups_storage_item parent, const char *key, uint64_t *outValue);
|
||||
WUPSStorageError WUPS_GetFloat(wups_storage_item parent, const char *key, float *outValue);
|
||||
WUPSStorageError WUPS_GetDouble(wups_storage_item parent, const char *key, double *outValue);
|
||||
WUPSStorageError WUPS_GetBinary(wups_storage_item parent, const char *key, void *outData, uint32_t maxSize, uint32_t *outSize);
|
||||
|
||||
WUPSStorageError WUPS_GetString(wups_storage_item_t *parent, const char *key, char *outString, uint32_t maxSize);
|
||||
WUPSStorageError WUPS_GetBool(wups_storage_item_t *parent, const char *key, bool *outBool);
|
||||
WUPSStorageError WUPS_GetInt(wups_storage_item_t *parent, const char *key, int32_t *outInt);
|
||||
WUPSStorageError WUPS_GetBinary(wups_storage_item_t *parent, const char *key, void *outData, uint32_t maxSize);
|
||||
/**
|
||||
* Return the size of a stored string or binary item.
|
||||
*/
|
||||
WUPSStorageError WUPS_GetItemSize(wups_storage_item parent, const char *key, uint32_t *outSize);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user