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 // C Includes 1330fdc8d8SChris Lattner // C++ Includes 1430fdc8d8SChris Lattner // Other libraries and framework includes 1530fdc8d8SChris Lattner // Project includes 1630fdc8d8SChris Lattner 1730fdc8d8SChris Lattner //---------------------------------------------------------------------- 1830fdc8d8SChris Lattner // CFCString constructor 1930fdc8d8SChris Lattner //---------------------------------------------------------------------- 2030fdc8d8SChris Lattner CFCMutableSet::CFCMutableSet(CFMutableSetRef s) : 2130fdc8d8SChris Lattner CFCReleaser<CFMutableSetRef> (s) 2230fdc8d8SChris Lattner { 2330fdc8d8SChris Lattner } 2430fdc8d8SChris Lattner 2530fdc8d8SChris Lattner //---------------------------------------------------------------------- 2630fdc8d8SChris Lattner // CFCMutableSet copy constructor 2730fdc8d8SChris Lattner //---------------------------------------------------------------------- 2830fdc8d8SChris Lattner CFCMutableSet::CFCMutableSet(const CFCMutableSet& rhs) : 2930fdc8d8SChris Lattner CFCReleaser<CFMutableSetRef> (rhs) 3030fdc8d8SChris Lattner { 3130fdc8d8SChris Lattner } 3230fdc8d8SChris Lattner 3330fdc8d8SChris Lattner //---------------------------------------------------------------------- 3430fdc8d8SChris Lattner // CFCMutableSet copy constructor 3530fdc8d8SChris Lattner //---------------------------------------------------------------------- 3630fdc8d8SChris Lattner const CFCMutableSet& 3730fdc8d8SChris Lattner CFCMutableSet::operator=(const CFCMutableSet& rhs) 3830fdc8d8SChris Lattner { 3930fdc8d8SChris Lattner if (this != &rhs) 4030fdc8d8SChris Lattner *this = rhs; 4130fdc8d8SChris Lattner return *this; 4230fdc8d8SChris Lattner } 4330fdc8d8SChris Lattner 4430fdc8d8SChris Lattner //---------------------------------------------------------------------- 4530fdc8d8SChris Lattner // Destructor 4630fdc8d8SChris Lattner //---------------------------------------------------------------------- 4730fdc8d8SChris Lattner CFCMutableSet::~CFCMutableSet() 4830fdc8d8SChris Lattner { 4930fdc8d8SChris Lattner } 5030fdc8d8SChris Lattner 5130fdc8d8SChris Lattner 5230fdc8d8SChris Lattner CFIndex 5330fdc8d8SChris Lattner CFCMutableSet::GetCount() const 5430fdc8d8SChris Lattner { 5530fdc8d8SChris Lattner CFMutableSetRef set = get(); 5630fdc8d8SChris Lattner if (set) 5730fdc8d8SChris Lattner return ::CFSetGetCount (set); 5830fdc8d8SChris Lattner return 0; 5930fdc8d8SChris Lattner } 6030fdc8d8SChris Lattner 6130fdc8d8SChris Lattner CFIndex 6230fdc8d8SChris Lattner CFCMutableSet::GetCountOfValue(const void *value) const 6330fdc8d8SChris Lattner { 6430fdc8d8SChris Lattner CFMutableSetRef set = get(); 6530fdc8d8SChris Lattner if (set) 6630fdc8d8SChris Lattner return ::CFSetGetCountOfValue (set, value); 6730fdc8d8SChris Lattner return 0; 6830fdc8d8SChris Lattner } 6930fdc8d8SChris Lattner 7030fdc8d8SChris Lattner const void * 7130fdc8d8SChris Lattner CFCMutableSet::GetValue(const void *value) const 7230fdc8d8SChris Lattner { 7330fdc8d8SChris Lattner CFMutableSetRef set = get(); 7430fdc8d8SChris Lattner if (set) 7530fdc8d8SChris Lattner return ::CFSetGetValue(set, value); 7630fdc8d8SChris Lattner return NULL; 7730fdc8d8SChris Lattner } 7830fdc8d8SChris Lattner 7930fdc8d8SChris Lattner 8030fdc8d8SChris Lattner const void * 8130fdc8d8SChris Lattner CFCMutableSet::AddValue(const void *value, bool can_create) 8230fdc8d8SChris Lattner { 8330fdc8d8SChris Lattner CFMutableSetRef set = get(); 8430fdc8d8SChris Lattner if (set == NULL) 8530fdc8d8SChris Lattner { 8630fdc8d8SChris Lattner if (can_create == false) 87*19503a2aSGreg Clayton return NULL; 8830fdc8d8SChris Lattner set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks); 8930fdc8d8SChris Lattner reset ( set ); 9030fdc8d8SChris Lattner } 9130fdc8d8SChris Lattner if (set != NULL) 9230fdc8d8SChris Lattner { 9330fdc8d8SChris Lattner ::CFSetAddValue(set, value); 9430fdc8d8SChris Lattner return value; 9530fdc8d8SChris Lattner } 9630fdc8d8SChris Lattner return NULL; 9730fdc8d8SChris Lattner } 9830fdc8d8SChris Lattner 9930fdc8d8SChris Lattner void 10030fdc8d8SChris Lattner CFCMutableSet::RemoveValue(const void *value) 10130fdc8d8SChris Lattner { 10230fdc8d8SChris Lattner CFMutableSetRef set = get(); 10330fdc8d8SChris Lattner if (set) 10430fdc8d8SChris Lattner ::CFSetRemoveValue(set, value); 10530fdc8d8SChris Lattner } 10630fdc8d8SChris Lattner 10730fdc8d8SChris Lattner void 10830fdc8d8SChris Lattner CFCMutableSet::RemoveAllValues() 10930fdc8d8SChris Lattner { 11030fdc8d8SChris Lattner CFMutableSetRef set = get(); 11130fdc8d8SChris Lattner if (set) 11230fdc8d8SChris Lattner ::CFSetRemoveAllValues(set); 11330fdc8d8SChris Lattner } 11430fdc8d8SChris Lattner 115