1dda28197Spatrick //===-- CFCMutableSet.cpp -------------------------------------------------===// 2061da546Spatrick // 3061da546Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4061da546Spatrick // See https://llvm.org/LICENSE.txt for license information. 5061da546Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6061da546Spatrick // 7061da546Spatrick //===----------------------------------------------------------------------===// 8061da546Spatrick 9061da546Spatrick #include "CFCMutableSet.h" 10061da546Spatrick 11061da546Spatrick 12061da546Spatrick // CFCString constructor 13061da546Spatrick CFCMutableSet::CFCMutableSet(CFMutableSetRef s) 14061da546Spatrick : CFCReleaser<CFMutableSetRef>(s) {} 15061da546Spatrick 16061da546Spatrick // CFCMutableSet copy constructor 17061da546Spatrick CFCMutableSet::CFCMutableSet(const CFCMutableSet &rhs) 18061da546Spatrick : CFCReleaser<CFMutableSetRef>(rhs) {} 19061da546Spatrick 20061da546Spatrick // CFCMutableSet copy constructor 21061da546Spatrick const CFCMutableSet &CFCMutableSet::operator=(const CFCMutableSet &rhs) { 22061da546Spatrick if (this != &rhs) 23061da546Spatrick *this = rhs; 24061da546Spatrick return *this; 25061da546Spatrick } 26061da546Spatrick 27061da546Spatrick // Destructor 28*be691f3bSpatrick CFCMutableSet::~CFCMutableSet() = default; 29061da546Spatrick 30061da546Spatrick CFIndex CFCMutableSet::GetCount() const { 31061da546Spatrick CFMutableSetRef set = get(); 32061da546Spatrick if (set) 33061da546Spatrick return ::CFSetGetCount(set); 34061da546Spatrick return 0; 35061da546Spatrick } 36061da546Spatrick 37061da546Spatrick CFIndex CFCMutableSet::GetCountOfValue(const void *value) const { 38061da546Spatrick CFMutableSetRef set = get(); 39061da546Spatrick if (set) 40061da546Spatrick return ::CFSetGetCountOfValue(set, value); 41061da546Spatrick return 0; 42061da546Spatrick } 43061da546Spatrick 44061da546Spatrick const void *CFCMutableSet::GetValue(const void *value) const { 45061da546Spatrick CFMutableSetRef set = get(); 46061da546Spatrick if (set) 47061da546Spatrick return ::CFSetGetValue(set, value); 48061da546Spatrick return NULL; 49061da546Spatrick } 50061da546Spatrick 51061da546Spatrick const void *CFCMutableSet::AddValue(const void *value, bool can_create) { 52061da546Spatrick CFMutableSetRef set = get(); 53061da546Spatrick if (set == NULL) { 54061da546Spatrick if (!can_create) 55061da546Spatrick return NULL; 56061da546Spatrick set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); 57061da546Spatrick reset(set); 58061da546Spatrick } 59061da546Spatrick if (set != NULL) { 60061da546Spatrick ::CFSetAddValue(set, value); 61061da546Spatrick return value; 62061da546Spatrick } 63061da546Spatrick return NULL; 64061da546Spatrick } 65061da546Spatrick 66061da546Spatrick void CFCMutableSet::RemoveValue(const void *value) { 67061da546Spatrick CFMutableSetRef set = get(); 68061da546Spatrick if (set) 69061da546Spatrick ::CFSetRemoveValue(set, value); 70061da546Spatrick } 71061da546Spatrick 72061da546Spatrick void CFCMutableSet::RemoveAllValues() { 73061da546Spatrick CFMutableSetRef set = get(); 74061da546Spatrick if (set) 75061da546Spatrick ::CFSetRemoveAllValues(set); 76061da546Spatrick } 77