NSSet.hpp
1 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 2 // 3 // Foundation/NSSet.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 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 24 25 #include "NSObject.hpp" 26 #include "NSEnumerator.hpp" 27 28 /*****Immutable Set*******/ 29 30 namespace NS 31 { 32 class Set : public NS::Copying <Set> 33 { 34 public: 35 UInteger count() const; 36 Enumerator<Object>* objectEnumerator() const; 37 38 static Set* alloc(); 39 40 Set* init(); 41 Set* init(const Object* const* pObjects, UInteger count); 42 Set* init(const class Coder* pCoder); 43 44 }; 45 } 46 47 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 48 49 _NS_INLINE NS::UInteger NS::Set::count() const 50 { 51 return NS::Object::sendMessage<NS::UInteger>(this, _NS_PRIVATE_SEL(count)); 52 } 53 54 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 55 56 _NS_INLINE NS::Enumerator<NS::Object>* NS::Set::objectEnumerator() const 57 { 58 return NS::Object::sendMessage<Enumerator<NS::Object>*>(this, _NS_PRIVATE_SEL(objectEnumerator)); 59 } 60 61 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 62 63 _NS_INLINE NS::Set* NS::Set::alloc() 64 { 65 return NS::Object::alloc<Set>(_NS_PRIVATE_CLS(NSSet)); 66 } 67 68 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 69 70 _NS_INLINE NS::Set* NS::Set::init() 71 { 72 return NS::Object::init<Set>(); 73 } 74 75 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 76 77 _NS_INLINE NS::Set* NS::Set::init(const Object* const* pObjects, NS::UInteger count) 78 { 79 return NS::Object::sendMessage<Set*>(this, _NS_PRIVATE_SEL(initWithObjects_count_), pObjects, count); 80 } 81 82 //------------------------------------------------------------------------------------------------------------------------------------------------------------- 83 84 _NS_INLINE NS::Set* NS::Set::init(const class Coder* pCoder) 85 { 86 return Object::sendMessage<Set*>(this, _NS_PRIVATE_SEL(initWithCoder_), pCoder); 87 }