/ include / Metal / MTLVisibleFunctionTable.hpp
MTLVisibleFunctionTable.hpp
  1  //-------------------------------------------------------------------------------------------------------------------------------------------------------------
  2  //
  3  // Metal/MTLVisibleFunctionTable.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 "MTLResource.hpp"
 30  #include "MTLTypes.hpp"
 31  
 32  namespace MTL
 33  {
 34  class VisibleFunctionTableDescriptor : public NS::Copying<VisibleFunctionTableDescriptor>
 35  {
 36  public:
 37      static class VisibleFunctionTableDescriptor* alloc();
 38  
 39      class VisibleFunctionTableDescriptor*        init();
 40  
 41      static class VisibleFunctionTableDescriptor* visibleFunctionTableDescriptor();
 42  
 43      NS::UInteger                                 functionCount() const;
 44      void                                         setFunctionCount(NS::UInteger functionCount);
 45  };
 46  
 47  class VisibleFunctionTable : public NS::Referencing<VisibleFunctionTable, Resource>
 48  {
 49  public:
 50      MTL::ResourceID gpuResourceID() const;
 51  
 52      void            setFunction(const class FunctionHandle* function, NS::UInteger index);
 53  
 54      void            setFunctions(const class FunctionHandle* const functions[], NS::Range range);
 55  };
 56  
 57  }
 58  
 59  // static method: alloc
 60  _MTL_INLINE MTL::VisibleFunctionTableDescriptor* MTL::VisibleFunctionTableDescriptor::alloc()
 61  {
 62      return NS::Object::alloc<MTL::VisibleFunctionTableDescriptor>(_MTL_PRIVATE_CLS(MTLVisibleFunctionTableDescriptor));
 63  }
 64  
 65  // method: init
 66  _MTL_INLINE MTL::VisibleFunctionTableDescriptor* MTL::VisibleFunctionTableDescriptor::init()
 67  {
 68      return NS::Object::init<MTL::VisibleFunctionTableDescriptor>();
 69  }
 70  
 71  // static method: visibleFunctionTableDescriptor
 72  _MTL_INLINE MTL::VisibleFunctionTableDescriptor* MTL::VisibleFunctionTableDescriptor::visibleFunctionTableDescriptor()
 73  {
 74      return Object::sendMessage<MTL::VisibleFunctionTableDescriptor*>(_MTL_PRIVATE_CLS(MTLVisibleFunctionTableDescriptor), _MTL_PRIVATE_SEL(visibleFunctionTableDescriptor));
 75  }
 76  
 77  // property: functionCount
 78  _MTL_INLINE NS::UInteger MTL::VisibleFunctionTableDescriptor::functionCount() const
 79  {
 80      return Object::sendMessage<NS::UInteger>(this, _MTL_PRIVATE_SEL(functionCount));
 81  }
 82  
 83  _MTL_INLINE void MTL::VisibleFunctionTableDescriptor::setFunctionCount(NS::UInteger functionCount)
 84  {
 85      Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctionCount_), functionCount);
 86  }
 87  
 88  // property: gpuResourceID
 89  _MTL_INLINE MTL::ResourceID MTL::VisibleFunctionTable::gpuResourceID() const
 90  {
 91      return Object::sendMessage<MTL::ResourceID>(this, _MTL_PRIVATE_SEL(gpuResourceID));
 92  }
 93  
 94  // method: setFunction:atIndex:
 95  _MTL_INLINE void MTL::VisibleFunctionTable::setFunction(const MTL::FunctionHandle* function, NS::UInteger index)
 96  {
 97      Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunction_atIndex_), function, index);
 98  }
 99  
100  // method: setFunctions:withRange:
101  _MTL_INLINE void MTL::VisibleFunctionTable::setFunctions(const MTL::FunctionHandle* const functions[], NS::Range range)
102  {
103      Object::sendMessage<void>(this, _MTL_PRIVATE_SEL(setFunctions_withRange_), functions, range);
104  }