130fdc8d8SChris Lattner //===-- CFCMutableSet.cpp ---------------------------------------*- C++ -*-===// 230fdc8d8SChris Lattner // 330fdc8d8SChris Lattner // The LLVM Compiler Infrastructure 430fdc8d8SChris Lattner // 530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source 630fdc8d8SChris Lattner // License. See LICENSE.TXT for details. 730fdc8d8SChris Lattner // 830fdc8d8SChris Lattner //===----------------------------------------------------------------------===// 930fdc8d8SChris Lattner 1030fdc8d8SChris Lattner #include "CFCMutableSet.h" 1130fdc8d8SChris Lattner 1230fdc8d8SChris Lattner 1330fdc8d8SChris Lattner //---------------------------------------------------------------------- 1430fdc8d8SChris Lattner // CFCString constructor 1530fdc8d8SChris Lattner //---------------------------------------------------------------------- 16b9c1b51eSKate Stone CFCMutableSet::CFCMutableSet(CFMutableSetRef s) 17b9c1b51eSKate Stone : CFCReleaser<CFMutableSetRef>(s) {} 1830fdc8d8SChris Lattner 1930fdc8d8SChris Lattner //---------------------------------------------------------------------- 2030fdc8d8SChris Lattner // CFCMutableSet copy constructor 2130fdc8d8SChris Lattner //---------------------------------------------------------------------- 22b9c1b51eSKate Stone CFCMutableSet::CFCMutableSet(const CFCMutableSet &rhs) 23b9c1b51eSKate Stone : CFCReleaser<CFMutableSetRef>(rhs) {} 2430fdc8d8SChris Lattner 2530fdc8d8SChris Lattner //---------------------------------------------------------------------- 2630fdc8d8SChris Lattner // CFCMutableSet copy constructor 2730fdc8d8SChris Lattner //---------------------------------------------------------------------- 28b9c1b51eSKate Stone const CFCMutableSet &CFCMutableSet::operator=(const CFCMutableSet &rhs) { 2930fdc8d8SChris Lattner if (this != &rhs) 3030fdc8d8SChris Lattner *this = rhs; 3130fdc8d8SChris Lattner return *this; 3230fdc8d8SChris Lattner } 3330fdc8d8SChris Lattner 3430fdc8d8SChris Lattner //---------------------------------------------------------------------- 3530fdc8d8SChris Lattner // Destructor 3630fdc8d8SChris Lattner //---------------------------------------------------------------------- 37b9c1b51eSKate Stone CFCMutableSet::~CFCMutableSet() {} 3830fdc8d8SChris Lattner 39b9c1b51eSKate Stone CFIndex CFCMutableSet::GetCount() const { 4030fdc8d8SChris Lattner CFMutableSetRef set = get(); 4130fdc8d8SChris Lattner if (set) 4230fdc8d8SChris Lattner return ::CFSetGetCount(set); 4330fdc8d8SChris Lattner return 0; 4430fdc8d8SChris Lattner } 4530fdc8d8SChris Lattner 46b9c1b51eSKate Stone CFIndex CFCMutableSet::GetCountOfValue(const void *value) const { 4730fdc8d8SChris Lattner CFMutableSetRef set = get(); 4830fdc8d8SChris Lattner if (set) 4930fdc8d8SChris Lattner return ::CFSetGetCountOfValue(set, value); 5030fdc8d8SChris Lattner return 0; 5130fdc8d8SChris Lattner } 5230fdc8d8SChris Lattner 53b9c1b51eSKate Stone const void *CFCMutableSet::GetValue(const void *value) const { 5430fdc8d8SChris Lattner CFMutableSetRef set = get(); 5530fdc8d8SChris Lattner if (set) 5630fdc8d8SChris Lattner return ::CFSetGetValue(set, value); 5730fdc8d8SChris Lattner return NULL; 5830fdc8d8SChris Lattner } 5930fdc8d8SChris Lattner 60b9c1b51eSKate Stone const void *CFCMutableSet::AddValue(const void *value, bool can_create) { 6130fdc8d8SChris Lattner CFMutableSetRef set = get(); 62b9c1b51eSKate Stone if (set == NULL) { 63*a6682a41SJonas Devlieghere if (!can_create) 6419503a2aSGreg Clayton return NULL; 6530fdc8d8SChris Lattner set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); 6630fdc8d8SChris Lattner reset(set); 6730fdc8d8SChris Lattner } 68b9c1b51eSKate Stone if (set != NULL) { 6930fdc8d8SChris Lattner ::CFSetAddValue(set, value); 7030fdc8d8SChris Lattner return value; 7130fdc8d8SChris Lattner } 7230fdc8d8SChris Lattner return NULL; 7330fdc8d8SChris Lattner } 7430fdc8d8SChris Lattner 75b9c1b51eSKate Stone void CFCMutableSet::RemoveValue(const void *value) { 7630fdc8d8SChris Lattner CFMutableSetRef set = get(); 7730fdc8d8SChris Lattner if (set) 7830fdc8d8SChris Lattner ::CFSetRemoveValue(set, value); 7930fdc8d8SChris Lattner } 8030fdc8d8SChris Lattner 81b9c1b51eSKate Stone void CFCMutableSet::RemoveAllValues() { 8230fdc8d8SChris Lattner CFMutableSetRef set = get(); 8330fdc8d8SChris Lattner if (set) 8430fdc8d8SChris Lattner ::CFSetRemoveAllValues(set); 8530fdc8d8SChris Lattner } 86