#include #import #import #import "../../../native/include/generated/ThermionTextureSwiftObjCAPI.h" #if !__has_feature(objc_arc) #error "This file must be compiled with ARC enabled" #endif #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wundeclared-selector" typedef struct { int64_t version; void* (*newWaiter)(void); void (*awaitWaiter)(void*); void* (*currentIsolate)(void); void (*enterIsolate)(void*); void (*exitIsolate)(void); int64_t (*getMainPortId)(void); bool (*getCurrentThreadOwnsIsolate)(int64_t); } DOBJC_Context; id objc_retainBlock(id); #define BLOCKING_BLOCK_IMPL(ctx, BLOCK_SIG, INVOKE_DIRECT, INVOKE_LISTENER) \ assert(ctx->version >= 1); \ void* targetIsolate = ctx->currentIsolate(); \ int64_t targetPort = ctx->getMainPortId == NULL ? 0 : ctx->getMainPortId(); \ return BLOCK_SIG { \ void* currentIsolate = ctx->currentIsolate(); \ bool mayEnterIsolate = \ currentIsolate == NULL && \ ctx->getCurrentThreadOwnsIsolate != NULL && \ ctx->getCurrentThreadOwnsIsolate(targetPort); \ if (currentIsolate == targetIsolate || mayEnterIsolate) { \ if (mayEnterIsolate) { \ ctx->enterIsolate(targetIsolate); \ } \ INVOKE_DIRECT; \ if (mayEnterIsolate) { \ ctx->exitIsolate(); \ } \ } else { \ void* waiter = ctx->newWaiter(); \ INVOKE_LISTENER; \ ctx->awaitWaiter(waiter); \ } \ }; Protocol* _ThermionTextureSwift_MTLDevice(void) { return @protocol(MTLDevice); } Protocol* _ThermionTextureSwift_MTLTexture(void) { return @protocol(MTLTexture); } typedef id (^ProtocolTrampoline)(void * sel); __attribute__((visibility("default"))) __attribute__((used)) id _ThermionTextureSwift_protocolTrampoline_1mbt9g9(id target, void * sel) { return ((ProtocolTrampoline)((id (*)(id, SEL, SEL))objc_msgSend)(target, @selector(getDOBJCDartProtocolMethodForSelector:), sel))(sel); } #undef BLOCKING_BLOCK_IMPL #pragma clang diagnostic pop