2022-03-04 00:59:38 +01:00
|
|
|
#include "exports.h"
|
|
|
|
#include <cstring>
|
|
|
|
#include <sdutils/sdutils.h>
|
|
|
|
#include <wums.h>
|
|
|
|
|
|
|
|
#define MAX_HANDLERS 16
|
|
|
|
static SDAttachHandlerFn sHandlers[MAX_HANDLERS] = {nullptr};
|
|
|
|
|
|
|
|
void callAttachCallbacks(SDUtilsAttachStatus status) {
|
|
|
|
int i;
|
|
|
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
|
|
|
if (sHandlers[i]) {
|
|
|
|
sHandlers[i](status);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void cleanUpAttachCallbacks() {
|
|
|
|
memset(sHandlers, 0, sizeof(sHandlers));
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SDUtilsAddAttachHandler(SDAttachHandlerFn fn) {
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
|
|
|
if (sHandlers[i] == fn) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
if (!sHandlers[i]) {
|
|
|
|
sHandlers[i] = fn;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
bool SDUtilsRemoveAttachHandler(SDAttachHandlerFn fn) {
|
|
|
|
int i;
|
|
|
|
|
|
|
|
for (i = 0; i < MAX_HANDLERS; ++i) {
|
|
|
|
if (sHandlers[i] == fn) {
|
|
|
|
sHandlers[i] = nullptr;
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2022-04-28 20:01:19 +02:00
|
|
|
SDUtilsVersion SDUtilsGetVersion() {
|
|
|
|
return SDUTILS_MODULE_VERSION;
|
|
|
|
}
|
|
|
|
|
|
|
|
WUMS_EXPORT_FUNCTION(SDUtilsGetVersion);
|
|
|
|
|
2022-03-04 00:59:38 +01:00
|
|
|
WUMS_EXPORT_FUNCTION(SDUtilsAddAttachHandler);
|
|
|
|
WUMS_EXPORT_FUNCTION(SDUtilsRemoveAttachHandler);
|