124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- CFCMutableDictionary.h ----------------------------------*- C++ -*-===//
224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//                     The LLVM Compiler Infrastructure
424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source
624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details.
724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//
824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===//
924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#ifndef CoreFoundationCPP_CFMutableDictionary_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define CoreFoundationCPP_CFMutableDictionary_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "CFCReleaser.h"
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerclass CFCMutableDictionary : public CFCReleaser<CFMutableDictionaryRef>
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerpublic:
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Constructors and Destructors
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFCMutableDictionary(CFMutableDictionaryRef s = NULL);
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFCMutableDictionary(const CFCMutableDictionary& rhs);
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    virtual ~CFCMutableDictionary();
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Operators
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const CFCMutableDictionary&
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    operator=(const CFCMutableDictionary& rhs);
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFIndex GetCount() const;
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFIndex GetCountOfKey(const void *value) const;
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFIndex GetCountOfValue(const void *value) const;
3524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void    GetKeysAndValues(const void **keys, const void **values) const;
3624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    const void * GetValue(const void *key) const;
3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    Boolean GetValueIfPresent(const void *key, const void **value_handle) const;
3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValue(CFStringRef key, const void *value, bool can_create = false);
3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValue(CFStringRef key, const void *value, bool can_create = false);
4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueSInt8(CFStringRef key, int8_t value, bool can_create = false);
4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueSInt8(CFStringRef key, int8_t value, bool can_create = false);
4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueSInt16(CFStringRef key, int16_t value, bool can_create = false);
4324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueSInt16(CFStringRef key, int16_t value, bool can_create = false);
4424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueSInt32(CFStringRef key, int32_t value, bool can_create = false);
4524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueSInt32(CFStringRef key, int32_t value, bool can_create = false);
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueSInt64(CFStringRef key, int64_t value, bool can_create = false);
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueSInt64(CFStringRef key, int64_t value, bool can_create = false);
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueUInt8(CFStringRef key, uint8_t value, bool can_create = false);
4924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueUInt8(CFStringRef key, uint8_t value, bool can_create = false);
5024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueUInt16(CFStringRef key, uint16_t value, bool can_create = false);
5124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueUInt16(CFStringRef key, uint16_t value, bool can_create = false);
5224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueUInt32(CFStringRef key, uint32_t value, bool can_create = false);
5324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueUInt32(CFStringRef key, uint32_t value, bool can_create = false);
5424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueUInt64(CFStringRef key, uint64_t value, bool can_create = false);
5524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueUInt64(CFStringRef key, uint64_t value, bool can_create = false);
56f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    bool    AddValueDouble(CFStringRef key, double value, bool can_create = false);
57f5af85a2946ed4e1ff4766829d328cfb4961f259Enrico Granata    bool    SetValueDouble(CFStringRef key, double value, bool can_create = false);
5824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    AddValueCString(CFStringRef key, const char *cstr, bool can_create = false);
5924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    bool    SetValueCString(CFStringRef key, const char *cstr, bool can_create = false);
6024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void    RemoveValue(const void *value);
6124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void    ReplaceValue(const void *key, const void *value);
6224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    void    RemoveAllValues();
6324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    CFMutableDictionaryRef Dictionary(bool can_create);
6424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
6624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprotected:
6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // Classes that inherit from CFCMutableDictionary can see and modify these
6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerprivate:
7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    // For CFCMutableDictionary only
7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner    //------------------------------------------------------------------
7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner};
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // CoreFoundationCPP_CFMutableDictionary_h_
80