Home | History | Annotate | Download | only in cfcpp
      1 //===-- CFCMutableSet.cpp ---------------------------------------*- C++ -*-===//
      2 //
      3 //                     The LLVM Compiler Infrastructure
      4 //
      5 // This file is distributed under the University of Illinois Open Source
      6 // License. See LICENSE.TXT for details.
      7 //
      8 //===----------------------------------------------------------------------===//
      9 
     10 #include "CFCMutableSet.h"
     11 
     12 // C Includes
     13 // C++ Includes
     14 // Other libraries and framework includes
     15 // Project includes
     16 
     17 //----------------------------------------------------------------------
     18 // CFCString constructor
     19 //----------------------------------------------------------------------
     20 CFCMutableSet::CFCMutableSet(CFMutableSetRef s) :
     21     CFCReleaser<CFMutableSetRef> (s)
     22 {
     23 }
     24 
     25 //----------------------------------------------------------------------
     26 // CFCMutableSet copy constructor
     27 //----------------------------------------------------------------------
     28 CFCMutableSet::CFCMutableSet(const CFCMutableSet& rhs) :
     29     CFCReleaser<CFMutableSetRef> (rhs)
     30 {
     31 }
     32 
     33 //----------------------------------------------------------------------
     34 // CFCMutableSet copy constructor
     35 //----------------------------------------------------------------------
     36 const CFCMutableSet&
     37 CFCMutableSet::operator=(const CFCMutableSet& rhs)
     38 {
     39     if (this != &rhs)
     40         *this = rhs;
     41     return *this;
     42 }
     43 
     44 //----------------------------------------------------------------------
     45 // Destructor
     46 //----------------------------------------------------------------------
     47 CFCMutableSet::~CFCMutableSet()
     48 {
     49 }
     50 
     51 
     52 CFIndex
     53 CFCMutableSet::GetCount() const
     54 {
     55     CFMutableSetRef set = get();
     56     if (set)
     57         return ::CFSetGetCount (set);
     58     return 0;
     59 }
     60 
     61 CFIndex
     62 CFCMutableSet::GetCountOfValue(const void *value) const
     63 {
     64     CFMutableSetRef set = get();
     65     if (set)
     66         return ::CFSetGetCountOfValue (set, value);
     67     return 0;
     68 }
     69 
     70 const void *
     71 CFCMutableSet::GetValue(const void *value) const
     72 {
     73     CFMutableSetRef set = get();
     74     if (set)
     75         return ::CFSetGetValue(set, value);
     76     return NULL;
     77 }
     78 
     79 
     80 const void *
     81 CFCMutableSet::AddValue(const void *value, bool can_create)
     82 {
     83     CFMutableSetRef set = get();
     84     if (set == NULL)
     85     {
     86         if (can_create == false)
     87             return NULL;
     88         set = ::CFSetCreateMutable(kCFAllocatorDefault, 0, &kCFTypeSetCallBacks);
     89         reset ( set );
     90     }
     91     if (set != NULL)
     92     {
     93         ::CFSetAddValue(set, value);
     94         return value;
     95     }
     96     return NULL;
     97 }
     98 
     99 void
    100 CFCMutableSet::RemoveValue(const void *value)
    101 {
    102     CFMutableSetRef set = get();
    103     if (set)
    104         ::CFSetRemoveValue(set, value);
    105 }
    106 
    107 void
    108 CFCMutableSet::RemoveAllValues()
    109 {
    110     CFMutableSetRef set = get();
    111     if (set)
    112         ::CFSetRemoveAllValues(set);
    113 }
    114 
    115