180814287SRaphael Isemann //===-- CFCMutableSet.cpp -------------------------------------------------===// 230fdc8d8SChris Lattner // 32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 630fdc8d8SChris Lattner // 730fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 830fdc8d8SChris Lattner 930fdc8d8SChris Lattner #include "CFCMutableSet.h" 1030fdc8d8SChris Lattner 1130fdc8d8SChris Lattner 1230fdc8d8SChris Lattner // CFCString constructor CFCMutableSet(CFMutableSetRef s)13b9c1b51eSKate StoneCFCMutableSet::CFCMutableSet(CFMutableSetRef s) 14b9c1b51eSKate Stone : CFCReleaser<CFMutableSetRef>(s) {} 1530fdc8d8SChris Lattner 1630fdc8d8SChris Lattner // CFCMutableSet copy constructor 17*24f9a2f5SShafik Yaghmour CFCMutableSet::CFCMutableSet(const CFCMutableSet &rhs) = default; 1830fdc8d8SChris Lattner 1930fdc8d8SChris Lattner // CFCMutableSet copy constructor operator =(const CFCMutableSet & rhs)20b9c1b51eSKate Stoneconst CFCMutableSet &CFCMutableSet::operator=(const CFCMutableSet &rhs) { 2130fdc8d8SChris Lattner if (this != &rhs) 2230fdc8d8SChris Lattner *this = rhs; 2330fdc8d8SChris Lattner return *this; 2430fdc8d8SChris Lattner } 2530fdc8d8SChris Lattner 2630fdc8d8SChris Lattner // Destructor 27fd2433e1SJonas Devlieghere CFCMutableSet::~CFCMutableSet() = default; 2830fdc8d8SChris Lattner GetCount() const29b9c1b51eSKate StoneCFIndex CFCMutableSet::GetCount() const { 3030fdc8d8SChris Lattner CFMutableSetRef set = get(); 3130fdc8d8SChris Lattner if (set) 3230fdc8d8SChris Lattner return ::CFSetGetCount(set); 3330fdc8d8SChris Lattner return 0; 3430fdc8d8SChris Lattner } 3530fdc8d8SChris Lattner GetCountOfValue(const void * value) const36b9c1b51eSKate StoneCFIndex CFCMutableSet::GetCountOfValue(const void *value) const { 3730fdc8d8SChris Lattner CFMutableSetRef set = get(); 3830fdc8d8SChris Lattner if (set) 3930fdc8d8SChris Lattner return ::CFSetGetCountOfValue(set, value); 4030fdc8d8SChris Lattner return 0; 4130fdc8d8SChris Lattner } 4230fdc8d8SChris Lattner GetValue(const void * value) const43b9c1b51eSKate Stoneconst void *CFCMutableSet::GetValue(const void *value) const { 4430fdc8d8SChris Lattner CFMutableSetRef set = get(); 4530fdc8d8SChris Lattner if (set) 4630fdc8d8SChris Lattner return ::CFSetGetValue(set, value); 4730fdc8d8SChris Lattner return NULL; 4830fdc8d8SChris Lattner } 4930fdc8d8SChris Lattner AddValue(const void * value,bool can_create)50b9c1b51eSKate Stoneconst void *CFCMutableSet::AddValue(const void *value, bool can_create) { 5130fdc8d8SChris Lattner CFMutableSetRef set = get(); 52b9c1b51eSKate Stone if (set == NULL) { 53a6682a41SJonas Devlieghere if (!can_create) 5419503a2aSGreg Clayton return NULL; 5530fdc8d8SChris Lattner set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); 5630fdc8d8SChris Lattner reset(set); 5730fdc8d8SChris Lattner } 58b9c1b51eSKate Stone if (set != NULL) { 5930fdc8d8SChris Lattner ::CFSetAddValue(set, value); 6030fdc8d8SChris Lattner return value; 6130fdc8d8SChris Lattner } 6230fdc8d8SChris Lattner return NULL; 6330fdc8d8SChris Lattner } 6430fdc8d8SChris Lattner RemoveValue(const void * value)65b9c1b51eSKate Stonevoid CFCMutableSet::RemoveValue(const void *value) { 6630fdc8d8SChris Lattner CFMutableSetRef set = get(); 6730fdc8d8SChris Lattner if (set) 6830fdc8d8SChris Lattner ::CFSetRemoveValue(set, value); 6930fdc8d8SChris Lattner } 7030fdc8d8SChris Lattner RemoveAllValues()71b9c1b51eSKate Stonevoid CFCMutableSet::RemoveAllValues() { 7230fdc8d8SChris Lattner CFMutableSetRef set = get(); 7330fdc8d8SChris Lattner if (set) 7430fdc8d8SChris Lattner ::CFSetRemoveAllValues(set); 7530fdc8d8SChris Lattner } 76