130fdc8d8SChris Lattner //===-- CFCMutableSet.cpp ---------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 3*2946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*2946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 5*2946cd70SChandler 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 //---------------------------------------------------------------------- 1330fdc8d8SChris Lattner // CFCString constructor 1430fdc8d8SChris Lattner //---------------------------------------------------------------------- 15b9c1b51eSKate Stone CFCMutableSet::CFCMutableSet(CFMutableSetRef s) 16b9c1b51eSKate Stone : CFCReleaser<CFMutableSetRef>(s) {} 1730fdc8d8SChris Lattner 1830fdc8d8SChris Lattner //---------------------------------------------------------------------- 1930fdc8d8SChris Lattner // CFCMutableSet copy constructor 2030fdc8d8SChris Lattner //---------------------------------------------------------------------- 21b9c1b51eSKate Stone CFCMutableSet::CFCMutableSet(const CFCMutableSet &rhs) 22b9c1b51eSKate Stone : CFCReleaser<CFMutableSetRef>(rhs) {} 2330fdc8d8SChris Lattner 2430fdc8d8SChris Lattner //---------------------------------------------------------------------- 2530fdc8d8SChris Lattner // CFCMutableSet copy constructor 2630fdc8d8SChris Lattner //---------------------------------------------------------------------- 27b9c1b51eSKate Stone const CFCMutableSet &CFCMutableSet::operator=(const CFCMutableSet &rhs) { 2830fdc8d8SChris Lattner if (this != &rhs) 2930fdc8d8SChris Lattner *this = rhs; 3030fdc8d8SChris Lattner return *this; 3130fdc8d8SChris Lattner } 3230fdc8d8SChris Lattner 3330fdc8d8SChris Lattner //---------------------------------------------------------------------- 3430fdc8d8SChris Lattner // Destructor 3530fdc8d8SChris Lattner //---------------------------------------------------------------------- 36b9c1b51eSKate Stone CFCMutableSet::~CFCMutableSet() {} 3730fdc8d8SChris Lattner 38b9c1b51eSKate Stone CFIndex CFCMutableSet::GetCount() const { 3930fdc8d8SChris Lattner CFMutableSetRef set = get(); 4030fdc8d8SChris Lattner if (set) 4130fdc8d8SChris Lattner return ::CFSetGetCount(set); 4230fdc8d8SChris Lattner return 0; 4330fdc8d8SChris Lattner } 4430fdc8d8SChris Lattner 45b9c1b51eSKate Stone CFIndex CFCMutableSet::GetCountOfValue(const void *value) const { 4630fdc8d8SChris Lattner CFMutableSetRef set = get(); 4730fdc8d8SChris Lattner if (set) 4830fdc8d8SChris Lattner return ::CFSetGetCountOfValue(set, value); 4930fdc8d8SChris Lattner return 0; 5030fdc8d8SChris Lattner } 5130fdc8d8SChris Lattner 52b9c1b51eSKate Stone const void *CFCMutableSet::GetValue(const void *value) const { 5330fdc8d8SChris Lattner CFMutableSetRef set = get(); 5430fdc8d8SChris Lattner if (set) 5530fdc8d8SChris Lattner return ::CFSetGetValue(set, value); 5630fdc8d8SChris Lattner return NULL; 5730fdc8d8SChris Lattner } 5830fdc8d8SChris Lattner 59b9c1b51eSKate Stone const void *CFCMutableSet::AddValue(const void *value, bool can_create) { 6030fdc8d8SChris Lattner CFMutableSetRef set = get(); 61b9c1b51eSKate Stone if (set == NULL) { 62a6682a41SJonas Devlieghere if (!can_create) 6319503a2aSGreg Clayton return NULL; 6430fdc8d8SChris Lattner set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); 6530fdc8d8SChris Lattner reset(set); 6630fdc8d8SChris Lattner } 67b9c1b51eSKate Stone if (set != NULL) { 6830fdc8d8SChris Lattner ::CFSetAddValue(set, value); 6930fdc8d8SChris Lattner return value; 7030fdc8d8SChris Lattner } 7130fdc8d8SChris Lattner return NULL; 7230fdc8d8SChris Lattner } 7330fdc8d8SChris Lattner 74b9c1b51eSKate Stone void CFCMutableSet::RemoveValue(const void *value) { 7530fdc8d8SChris Lattner CFMutableSetRef set = get(); 7630fdc8d8SChris Lattner if (set) 7730fdc8d8SChris Lattner ::CFSetRemoveValue(set, value); 7830fdc8d8SChris Lattner } 7930fdc8d8SChris Lattner 80b9c1b51eSKate Stone void CFCMutableSet::RemoveAllValues() { 8130fdc8d8SChris Lattner CFMutableSetRef set = get(); 8230fdc8d8SChris Lattner if (set) 8330fdc8d8SChris Lattner ::CFSetRemoveAllValues(set); 8430fdc8d8SChris Lattner } 85