xref: /openbsd-src/gnu/llvm/lldb/source/Host/macosx/cfcpp/CFCMutableSet.cpp (revision be691f3bb6417f04a68938fadbcaee2d5795e764)
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