MTLFunctionHandle.hpp
1 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 // 3 // Metal/MTLFunctionHandle.hpp 4 // 5 // Copyright 2020-2024 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 #include "MTLDefines.hpp" 24 #include "MTLHeaderBridge.hpp" 25 #include "MTLPrivate.hpp" 26 27 #include <Foundation/Foundation.hpp> 28 29 #include "MTLLibrary.hpp" 30 31 namespace MTL 32 { 33 class FunctionHandle : public NS::Referencing<FunctionHandle> 34 { 35 public: 36 MTL::FunctionType functionType() const; 37 38 NS::String* name() const; 39 40 class Device* device() const; 41 }; 42 43 } 44 45 // property: functionType 46 _MTL_INLINE MTL::FunctionType MTL::FunctionHandle::functionType() const 47 { 48 return Object::sendMessage<MTL::FunctionType>(this, _MTL_PRIVATE_SEL(functionType)); 49 } 50 51 // property: name 52 _MTL_INLINE NS::String* MTL::FunctionHandle::name() const 53 { 54 return Object::sendMessage<NS::String*>(this, _MTL_PRIVATE_SEL(name)); 55 } 56 57 // property: device 58 _MTL_INLINE MTL::Device* MTL::FunctionHandle::device() const 59 { 60 return Object::sendMessage<MTL::Device*>(this, _MTL_PRIVATE_SEL(device)); 61 }