yum-mirror/VkFFT
git clone https://git.yummers.dev/yum-mirror/VkFFT
ba7001c
master
1//------------------------------------------------------------------------------------------------------------------------------------------------------------- 2// 3// QuartzCore/CAPrivate.hpp 4// 5// Copyright 2020-2021 Apple Inc. 6// 7// Licensed under the Apache License, Version 2.0 (the "License"); 8// you may not use this file except in compliance with the License. 9// You may obtain a copy of the License at 10// 11// http://www.apache.org/licenses/LICENSE-2.0 12// 13// Unless required by applicable law or agreed to in writing, software 14// distributed under the License is distributed on an "AS IS" BASIS, 15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16// See the License for the specific language governing permissions and 17// limitations under the License. 18// 19//------------------------------------------------------------------------------------------------------------------------------------------------------------- 20 21#pragma once 22 23//------------------------------------------------------------------------------------------------------------------------------------------------------------- 24 25#include "CADefines.hpp" 26 27#include <objc/runtime.h> 28 29//------------------------------------------------------------------------------------------------------------------------------------------------------------- 30 31#define _CA_PRIVATE_CLS (symbol ) (Private::Class::s_k##symbol) 32#define _CA_PRIVATE_SEL (accessor ) (Private::Selector::s_k##accessor) 33 34//------------------------------------------------------------------------------------------------------------------------------------------------------------- 35 36#if defined(CA_PRIVATE_IMPLEMENTATION ) 37 38#define _CA_PRIVATE_VISIBILITY __attribute__((visibility("default"))) 39#define _CA_PRIVATE_IMPORT __attribute__((weak_import)) 40 41#if __OBJC__ 42#define _CA_PRIVATE_OBJC_LOOKUP_CLASS (symbol ) ((__bridge void*)objc_lookUpClass(#symbol)) 43#else 44#define _CA_PRIVATE_OBJC_LOOKUP_CLASS (symbol ) objc_lookUpClass(#symbol) 45#endif // __OBJC__ 46 47#define _CA_PRIVATE_DEF_CLS (symbol ) void* s_k##symbol _CA_PRIVATE_VISIBILITY = _CA_PRIVATE_OBJC_LOOKUP_CLASS(symbol); 48#define _CA_PRIVATE_DEF_PRO (symbol ) 49#define _CA_PRIVATE_DEF_SEL (accessor ,symbol ) SEL s_k##accessor _CA_PRIVATE_VISIBILITY = sel_registerName(symbol); 50#define _CA_PRIVATE_DEF_STR (type ,symbol ) \ 51 _CA_EXTERN type const CA##symbol _CA_PRIVATE_IMPORT; \ 52 type const CA::symbol = (nullptr != &CA##symbol) ? CA##symbol : nullptr; 53 54#else 55 56#define _CA_PRIVATE_DEF_CLS (symbol ) extern void* s_k##symbol; 57#define _CA_PRIVATE_DEF_PRO (symbol ) 58#define _CA_PRIVATE_DEF_SEL (accessor ,symbol ) extern SEL s_k##accessor; 59#define _CA_PRIVATE_DEF_STR (type ,symbol ) 60 61#endif // CA_PRIVATE_IMPLEMENTATION 62 63//------------------------------------------------------------------------------------------------------------------------------------------------------------- 64 65namespace CA 66{ 67namespace Private 68{ 69namespace Class 70 { 71 72 }// Class 73}// Private 74}// CA 75 76//------------------------------------------------------------------------------------------------------------------------------------------------------------- 77 78namespace CA 79{ 80namespace Private 81{ 82namespace Protocol 83 { 84 85_CA_PRIVATE_DEF_PRO (CAMetalDrawable ); 86 87 }// Protocol 88}// Private 89}// CA 90 91//------------------------------------------------------------------------------------------------------------------------------------------------------------- 92 93namespace CA 94{ 95namespace Private 96{ 97namespace Selector 98 { 99 100_CA_PRIVATE_DEF_SEL (layer , 101"layer" ); 102_CA_PRIVATE_DEF_SEL (texture , 103"texture" ); 104 105 }// Class 106}// Private 107}// CA 108 109//-------------------------------------------------------------------------------------------------------------------------------------------------------------