iOS fixes

This commit is contained in:
Nick Fisher
2023-04-20 22:15:50 +08:00
parent 9dc30f6eff
commit 80a781a3c4
19 changed files with 154 additions and 138 deletions

View File

@@ -3,6 +3,7 @@
#include <stdint.h>
#if defined(__cplusplus)
#include "Log.hpp"
extern "C" {
#endif
//
@@ -38,6 +39,43 @@ extern "C" {
uint32_t size;
uint32_t id;
};
typedef struct ResourceBuffer ResourceBuffer;
typedef ResourceBuffer (*LoadResource)(const char* uri);
typedef ResourceBuffer (*LoadResourceFromOwner)(const char* const, void* const owner);
typedef void (*FreeResource)(ResourceBuffer);
typedef void (*FreeResourceFromOwner)(ResourceBuffer, void* const owner);
struct ResourceLoaderWrapper {
#if defined(__cplusplus)
ResourceLoaderWrapper(LoadResource loader, FreeResource freeResource) : mLoadResource(loader), mFreeResource(freeResource) {};
ResourceLoaderWrapper(LoadResourceFromOwner loader, FreeResourceFromOwner freeResource, void* const owner) : mLoadResourceFromOwner(loader), mFreeResourceFromOwner(freeResource), mOwner(owner) {};
ResourceBuffer load(const char* uri) {
Log("LOADING %s", uri);
if(mLoadResourceFromOwner) {
return mLoadResourceFromOwner(uri, mOwner);
}
return mLoadResource(uri);
}
void free(ResourceBuffer rb) {
if(mFreeResourceFromOwner) {
mFreeResourceFromOwner(rb, mOwner);
} else {
mFreeResource(rb);
}
}
#endif
void* mOwner;
LoadResource mLoadResource;
FreeResource mFreeResource;
LoadResourceFromOwner mLoadResourceFromOwner;
FreeResourceFromOwner mFreeResourceFromOwner;
};
typedef struct ResourceLoaderWrapper ResourceLoaderWrapper;
#if defined(__cplusplus)
}
#endif