76 lines · cpp
1//===-- CFCMutableSet.cpp -------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "CFCMutableSet.h"10 11 12// CFCString constructor13CFCMutableSet::CFCMutableSet(CFMutableSetRef s)14 : CFCReleaser<CFMutableSetRef>(s) {}15 16// CFCMutableSet copy constructor17CFCMutableSet::CFCMutableSet(const CFCMutableSet &rhs) = default;18 19// CFCMutableSet copy constructor20const CFCMutableSet &CFCMutableSet::operator=(const CFCMutableSet &rhs) {21 if (this != &rhs)22 *this = rhs;23 return *this;24}25 26// Destructor27CFCMutableSet::~CFCMutableSet() = default;28 29CFIndex CFCMutableSet::GetCount() const {30 CFMutableSetRef set = get();31 if (set)32 return ::CFSetGetCount(set);33 return 0;34}35 36CFIndex CFCMutableSet::GetCountOfValue(const void *value) const {37 CFMutableSetRef set = get();38 if (set)39 return ::CFSetGetCountOfValue(set, value);40 return 0;41}42 43const void *CFCMutableSet::GetValue(const void *value) const {44 CFMutableSetRef set = get();45 if (set)46 return ::CFSetGetValue(set, value);47 return NULL;48}49 50const void *CFCMutableSet::AddValue(const void *value, bool can_create) {51 CFMutableSetRef set = get();52 if (set == NULL) {53 if (!can_create)54 return NULL;55 set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks);56 reset(set);57 }58 if (set != NULL) {59 ::CFSetAddValue(set, value);60 return value;61 }62 return NULL;63}64 65void CFCMutableSet::RemoveValue(const void *value) {66 CFMutableSetRef set = get();67 if (set)68 ::CFSetRemoveValue(set, value);69}70 71void CFCMutableSet::RemoveAllValues() {72 CFMutableSetRef set = get();73 if (set)74 ::CFSetRemoveAllValues(set);75}76