Adding wrapper for CFArray, updating other wrappers
This commit is contained in:
parent
a02efd1fc7
commit
4bda27c96c
22
Makefile.in
22
Makefile.in
@ -2441,6 +2441,8 @@ COND_TOOLKIT_OSX_COCOA_BASE_OSX_HDR = \
|
|||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h \
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
wx/unix/apptbase.h \
|
wx/unix/apptbase.h \
|
||||||
wx/unix/apptrait.h \
|
wx/unix/apptrait.h \
|
||||||
@ -2474,7 +2476,9 @@ COND_TOOLKIT_COCOA_BASE_OSX_HDR = \
|
|||||||
wx/osx/core/private.h \
|
wx/osx/core/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h
|
||||||
@COND_TOOLKIT_COCOA@BASE_OSX_HDR = $(COND_TOOLKIT_COCOA_BASE_OSX_HDR)
|
@COND_TOOLKIT_COCOA@BASE_OSX_HDR = $(COND_TOOLKIT_COCOA_BASE_OSX_HDR)
|
||||||
COND_TOOLKIT_GTK_BASE_OSX_HDR = \
|
COND_TOOLKIT_GTK_BASE_OSX_HDR = \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
@ -2497,7 +2501,9 @@ COND_TOOLKIT_GTK_BASE_OSX_HDR = \
|
|||||||
wx/osx/core/private.h \
|
wx/osx/core/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h
|
||||||
@COND_TOOLKIT_GTK@BASE_OSX_HDR = $(COND_TOOLKIT_GTK_BASE_OSX_HDR)
|
@COND_TOOLKIT_GTK@BASE_OSX_HDR = $(COND_TOOLKIT_GTK_BASE_OSX_HDR)
|
||||||
COND_TOOLKIT_X11_BASE_OSX_HDR = \
|
COND_TOOLKIT_X11_BASE_OSX_HDR = \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
@ -2520,7 +2526,9 @@ COND_TOOLKIT_X11_BASE_OSX_HDR = \
|
|||||||
wx/osx/core/private.h \
|
wx/osx/core/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h
|
||||||
@COND_TOOLKIT_X11@BASE_OSX_HDR = $(COND_TOOLKIT_X11_BASE_OSX_HDR)
|
@COND_TOOLKIT_X11@BASE_OSX_HDR = $(COND_TOOLKIT_X11_BASE_OSX_HDR)
|
||||||
COND_TOOLKIT_MOTIF_BASE_OSX_HDR = \
|
COND_TOOLKIT_MOTIF_BASE_OSX_HDR = \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
@ -2543,7 +2551,9 @@ COND_TOOLKIT_MOTIF_BASE_OSX_HDR = \
|
|||||||
wx/osx/core/private.h \
|
wx/osx/core/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h
|
||||||
@COND_TOOLKIT_MOTIF@BASE_OSX_HDR = $(COND_TOOLKIT_MOTIF_BASE_OSX_HDR)
|
@COND_TOOLKIT_MOTIF@BASE_OSX_HDR = $(COND_TOOLKIT_MOTIF_BASE_OSX_HDR)
|
||||||
COND_TOOLKIT__BASE_OSX_HDR = \
|
COND_TOOLKIT__BASE_OSX_HDR = \
|
||||||
wx/unix/app.h \
|
wx/unix/app.h \
|
||||||
@ -2566,7 +2576,9 @@ COND_TOOLKIT__BASE_OSX_HDR = \
|
|||||||
wx/osx/core/private.h \
|
wx/osx/core/private.h \
|
||||||
wx/osx/core/colour.h \
|
wx/osx/core/colour.h \
|
||||||
wx/osx/carbon/region.h \
|
wx/osx/carbon/region.h \
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h \
|
||||||
|
wx/osx/core/cfarray.h \
|
||||||
|
wx/osx/core/cftype.h
|
||||||
@COND_TOOLKIT_@BASE_OSX_HDR = $(COND_TOOLKIT__BASE_OSX_HDR)
|
@COND_TOOLKIT_@BASE_OSX_HDR = $(COND_TOOLKIT__BASE_OSX_HDR)
|
||||||
@COND_PLATFORM_MACOSX_1@BASE_PLATFORM_HDR = $(BASE_OSX_HDR)
|
@COND_PLATFORM_MACOSX_1@BASE_PLATFORM_HDR = $(BASE_OSX_HDR)
|
||||||
COND_PLATFORM_UNIX_1_BASE_PLATFORM_HDR = \
|
COND_PLATFORM_UNIX_1_BASE_PLATFORM_HDR = \
|
||||||
|
@ -200,6 +200,8 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
|
|||||||
wx/osx/core/colour.h
|
wx/osx/core/colour.h
|
||||||
wx/osx/carbon/region.h
|
wx/osx/carbon/region.h
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h
|
||||||
|
wx/osx/core/cfarray.h
|
||||||
|
wx/osx/core/cftype.h
|
||||||
</set>
|
</set>
|
||||||
|
|
||||||
<!-- Base files used by OS X ports (not Carbon) -->
|
<!-- Base files used by OS X ports (not Carbon) -->
|
||||||
|
@ -128,6 +128,8 @@ set(BASE_COREFOUNDATION_HDR
|
|||||||
wx/osx/core/objcid.h
|
wx/osx/core/objcid.h
|
||||||
wx/osx/core/private.h
|
wx/osx/core/private.h
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h
|
||||||
|
wx/osx/core/cfarray.h
|
||||||
|
wx/osx/core/cftype.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(BASE_OSX_SHARED_SRC
|
set(BASE_OSX_SHARED_SRC
|
||||||
|
@ -145,7 +145,9 @@ BASE_COREFOUNDATION_SRC =
|
|||||||
BASE_COREFOUNDATION_HDR =
|
BASE_COREFOUNDATION_HDR =
|
||||||
wx/osx/carbon/region.h
|
wx/osx/carbon/region.h
|
||||||
wx/osx/core/cfdataref.h
|
wx/osx/core/cfdataref.h
|
||||||
|
wx/osx/core/cfarray.h
|
||||||
wx/osx/core/cfdictionary.h
|
wx/osx/core/cfdictionary.h
|
||||||
|
wx/osx/core/cftype.h
|
||||||
wx/osx/core/cfref.h
|
wx/osx/core/cfref.h
|
||||||
wx/osx/core/cfstring.h
|
wx/osx/core/cfstring.h
|
||||||
wx/osx/core/colour.h
|
wx/osx/core/colour.h
|
||||||
|
110
include/wx/osx/core/cfarray.h
Normal file
110
include/wx/osx/core/cfarray.h
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/osx/core/cfarrayref.h
|
||||||
|
// Purpose: wxCFArrayRef class
|
||||||
|
// Author: Stefan Csomor
|
||||||
|
// Modified by:
|
||||||
|
// Created: 2018/07/27
|
||||||
|
// Copyright: (c) 2018 Stefan Csomor
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
/*! @header wx/osx/core/cfarrayref.h
|
||||||
|
@abstract wxCFArrayRef class
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WX_OSX_COREFOUNDATION_CFARRAYREF_H__
|
||||||
|
#define _WX_OSX_COREFOUNDATION_CFARRAYREF_H__
|
||||||
|
|
||||||
|
#include "wx/osx/core/cfref.h"
|
||||||
|
#include "wx/osx/core/cftype.h"
|
||||||
|
|
||||||
|
#include <CoreFoundation/CFArray.h>
|
||||||
|
|
||||||
|
template <typename T, typename E>
|
||||||
|
class wxCFArrayRefCommon : public wxCFRef<T>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef wxCFRef<T> super_type;
|
||||||
|
typedef size_t size_type;
|
||||||
|
|
||||||
|
wxCFArrayRefCommon(T r)
|
||||||
|
: super_type(r)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFArrayRefCommon(const wxCFArrayRefCommon& otherRef)
|
||||||
|
: super_type(otherRef)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
size_type size() const
|
||||||
|
{
|
||||||
|
return (size_type)CFArrayGetCount(this->m_ptr);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool empty() const
|
||||||
|
{
|
||||||
|
return size() == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFRef<E> at(size_type idx)
|
||||||
|
{
|
||||||
|
wxASSERT(idx < size());
|
||||||
|
|
||||||
|
CFTypeRef val = CFArrayGetValueAtIndex(this->m_ptr, idx);
|
||||||
|
if (val)
|
||||||
|
::CFRetain(val);
|
||||||
|
return wxCFRefFromGet<E>(val);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFRef<E> operator[](size_type idx) { return at(idx); }
|
||||||
|
wxCFRef<E> front() { return at(0); }
|
||||||
|
wxCFRef<E> back() { return at(size() - 1); }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
template <typename E>
|
||||||
|
class wxCFArrayRef : public wxCFArrayRefCommon<CFArrayRef, E>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCFArrayRef(CFArrayRef r)
|
||||||
|
: wxCFArrayRefCommon<CFArrayRef, E>(r)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFArrayRef(const wxCFArrayRef& otherRef)
|
||||||
|
: wxCFArrayRefCommon<CFArrayRef, E>(otherRef)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
template <typename E>
|
||||||
|
class wxCFMutableArrayRef : public wxCFArrayRefCommon<CFMutableArrayRef, E>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCFMutableArrayRef()
|
||||||
|
: wxCFArrayRefCommon<CFMutableArrayRef, E>(CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFMutableArrayRef(CFMutableArrayRef r)
|
||||||
|
: wxCFArrayRefCommon<CFMutableArrayRef, E>(r)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFMutableArrayRef(const wxCFMutableArrayRef& otherRef)
|
||||||
|
: wxCFArrayRefCommon<CFMutableArrayRef, E>(otherRef)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void push_back(E v)
|
||||||
|
{
|
||||||
|
CFArrayAppendValue(this->m_ptr, v);
|
||||||
|
}
|
||||||
|
|
||||||
|
void clear()
|
||||||
|
{
|
||||||
|
CFArrayRemoveAllValues(this->m_ptr);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //ifndef _WX_OSX_COREFOUNDATION_CFARRAYREF_H__
|
@ -11,134 +11,29 @@
|
|||||||
@abstract wxCFDictionaryRef class
|
@abstract wxCFDictionaryRef class
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _WX_OSX_COREFOUNDATION_CFICTIONARYREF_H__
|
#ifndef _WX_OSX_COREFOUNDATION_CFDICTIONARYREF_H__
|
||||||
#define _WX_OSX_COREFOUNDATION_CFICTIONARYREF_H__
|
#define _WX_OSX_COREFOUNDATION_CFDICTIONARYREF_H__
|
||||||
|
|
||||||
#include "wx/osx/core/cfref.h"
|
#include "wx/osx/core/cfref.h"
|
||||||
#include "wx/osx/core/cfstring.h"
|
#include "wx/osx/core/cfstring.h"
|
||||||
|
#include "wx/osx/core/cftype.h"
|
||||||
|
|
||||||
#include <CoreFoundation/CFDictionary.h>
|
#include <CoreFoundation/CFDictionary.h>
|
||||||
|
|
||||||
#ifndef WX_PRECOMP
|
|
||||||
#include "wx/string.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class wxCFTypeRef : public wxCFRef<CFTypeRef>
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
typedef wxCFRef<CFTypeRef> super_type;
|
|
||||||
|
|
||||||
wxCFTypeRef(CFTypeRef d)
|
|
||||||
: super_type(d)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename V>
|
|
||||||
bool GetValue(V* ptr) const;
|
|
||||||
|
|
||||||
template <typename V>
|
|
||||||
bool GetValue(V* ptr, V defaultValue) const
|
|
||||||
{
|
|
||||||
bool hasKey = GetValue(ptr);
|
|
||||||
|
|
||||||
if (!hasKey)
|
|
||||||
*ptr = defaultValue;
|
|
||||||
|
|
||||||
return hasKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename V>
|
|
||||||
bool GetValue(V& ref) const
|
|
||||||
{
|
|
||||||
return GetValue(&ref);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename V>
|
|
||||||
bool GetValue(V& ref, V defaultValue) const
|
|
||||||
{
|
|
||||||
bool hasKey = GetValue(ref);
|
|
||||||
|
|
||||||
if (!hasKey)
|
|
||||||
ref = defaultValue;
|
|
||||||
|
|
||||||
return hasKey;
|
|
||||||
}
|
|
||||||
|
|
||||||
// spezialization through overload
|
|
||||||
|
|
||||||
bool GetValue(CGFloat* ptr) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberCGFloatType, ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue(int32_t* ptr) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt32Type, ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue(uint32_t* ptr) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt32Type, ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue(int64_t* ptr) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt64Type, ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue(uint64_t* ptr) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt64Type, ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool GetValue(wxString *s) const
|
|
||||||
{
|
|
||||||
if ( m_ptr )
|
|
||||||
*s = wxCFStringRef::AsString((CFStringRef)m_ptr);
|
|
||||||
|
|
||||||
return m_ptr;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
class wxCFNumberRef : public wxCFTypeRef
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
wxCFNumberRef(CGFloat v)
|
|
||||||
: wxCFTypeRef(CFNumberCreate( NULL, kCFNumberCGFloatType, &v))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
wxCFNumberRef(int v)
|
|
||||||
: wxCFTypeRef(CFNumberCreate( NULL, kCFNumberIntType, &v))
|
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*! @class wxCFDictionaryRef
|
/*! @class wxCFDictionaryRef
|
||||||
@discussion Properly retains/releases reference to CoreFoundation data objects
|
@discussion Properly retains/releases reference to CoreFoundation data objects
|
||||||
*/
|
*/
|
||||||
template<typename T> class wxCFDictionaryRefCommon : public wxCFRef< T >
|
template <typename T>
|
||||||
|
class wxCFDictionaryRefCommon : public wxCFRef<T>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
typedef wxCFRef<T> super_type;
|
typedef wxCFRef<T> super_type;
|
||||||
|
|
||||||
|
explicit wxCFDictionaryRefCommon()
|
||||||
|
: super_type()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/*! @method wxCFDictionaryRef
|
/*! @method wxCFDictionaryRef
|
||||||
@abstract Assumes ownership of r and creates a reference to it.
|
@abstract Assumes ownership of r and creates a reference to it.
|
||||||
@param r The dictionary reference to assume ownership of. May be NULL.
|
@param r The dictionary reference to assume ownership of. May be NULL.
|
||||||
@ -152,7 +47,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
explicit wxCFDictionaryRefCommon(T r)
|
explicit wxCFDictionaryRefCommon(T r)
|
||||||
: super_type(r)
|
: super_type(r)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/*! @method wxCFDictionaryRef
|
/*! @method wxCFDictionaryRef
|
||||||
@abstract Copies a ref holder of the same type
|
@abstract Copies a ref holder of the same type
|
||||||
@ -162,7 +58,8 @@ public:
|
|||||||
*/
|
*/
|
||||||
wxCFDictionaryRefCommon(const wxCFDictionaryRefCommon& otherRef)
|
wxCFDictionaryRefCommon(const wxCFDictionaryRefCommon& otherRef)
|
||||||
: super_type(otherRef)
|
: super_type(otherRef)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
wxCFTypeRef GetValue(const void* key)
|
wxCFTypeRef GetValue(const void* key)
|
||||||
{
|
{
|
||||||
@ -173,24 +70,35 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class wxCFMutableDictionaryRef;
|
||||||
|
|
||||||
class wxCFDictionaryRef : public wxCFDictionaryRefCommon<CFDictionaryRef>
|
class wxCFDictionaryRef : public wxCFDictionaryRefCommon<CFDictionaryRef>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
wxCFDictionaryRef()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
explicit wxCFDictionaryRef(CFDictionaryRef r)
|
explicit wxCFDictionaryRef(CFDictionaryRef r)
|
||||||
: wxCFDictionaryRefCommon(r)
|
: wxCFDictionaryRefCommon(r)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFDictionaryRef& operator=(const wxCFMutableDictionaryRef& other);
|
||||||
};
|
};
|
||||||
|
|
||||||
class wxCFMutableDictionaryRef : public wxCFDictionaryRefCommon<CFMutableDictionaryRef>
|
class wxCFMutableDictionaryRef : public wxCFDictionaryRefCommon<CFMutableDictionaryRef>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxCFMutableDictionaryRef() : wxCFDictionaryRefCommon(CFDictionaryCreateMutable(kCFAllocatorDefault, 0,&kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks))
|
wxCFMutableDictionaryRef()
|
||||||
|
: wxCFDictionaryRefCommon(CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks))
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
explicit wxCFMutableDictionaryRef(CFMutableDictionaryRef r)
|
explicit wxCFMutableDictionaryRef(CFMutableDictionaryRef r)
|
||||||
: wxCFDictionaryRefCommon(r)
|
: wxCFDictionaryRefCommon(r)
|
||||||
{}
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void SetValue(const void* key, const void* data)
|
void SetValue(const void* key, const void* data)
|
||||||
{
|
{
|
||||||
@ -201,7 +109,17 @@ public:
|
|||||||
{
|
{
|
||||||
SetValue(key, wxCFNumberRef(v));
|
SetValue(key, wxCFNumberRef(v));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
friend class wxCFDictionaryRef;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif //ifndef _WX_OSX_COREFOUNDATION_CFICTIONARYREF_H__
|
inline wxCFDictionaryRef& wxCFDictionaryRef::operator=(const wxCFMutableDictionaryRef& otherRef)
|
||||||
|
{
|
||||||
|
wxCFRetain(otherRef.m_ptr);
|
||||||
|
wxCFRelease(m_ptr);
|
||||||
|
m_ptr = (CFDictionaryRef)otherRef.m_ptr;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif //ifndef _WX_OSX_COREFOUNDATION_CFDICTIONARYREF_H__
|
||||||
|
@ -165,6 +165,19 @@ public:
|
|||||||
: m_ptr(NULL)
|
: m_ptr(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
/*! @method wxCFRef
|
||||||
|
@abstract Assumes ownership of p and creates a reference to it.
|
||||||
|
@param p The raw core foundation reference to assume ownership of. May be NULL.
|
||||||
|
@discussion Like shared_ptr, it is assumed that the caller has a strong reference to p and intends
|
||||||
|
to transfer ownership of that reference to this ref holder. If the object comes from
|
||||||
|
a Create or Copy method then this is the correct behaviour. If the object comes from
|
||||||
|
a Get method then you must CFRetain it yourself before passing it to this constructor.
|
||||||
|
A handy way to do this is to use the non-member wxCFRefFromGet factory funcion.
|
||||||
|
*/
|
||||||
|
wxCFRef(refType p) : m_ptr(p)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
/*! @method wxCFRef
|
/*! @method wxCFRef
|
||||||
@abstract Assumes ownership of p and creates a reference to it.
|
@abstract Assumes ownership of p and creates a reference to it.
|
||||||
@templatefield otherType Any type.
|
@templatefield otherType Any type.
|
||||||
@ -177,6 +190,7 @@ public:
|
|||||||
This method is templated and takes an otherType *p. This prevents implicit conversion
|
This method is templated and takes an otherType *p. This prevents implicit conversion
|
||||||
using an operator refType() in a different ref-holding class type.
|
using an operator refType() in a different ref-holding class type.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
template <class otherType>
|
template <class otherType>
|
||||||
explicit wxCFRef(otherType *p)
|
explicit wxCFRef(otherType *p)
|
||||||
: m_ptr(p) // Implicit conversion from otherType* to refType should occur.
|
: m_ptr(p) // Implicit conversion from otherType* to refType should occur.
|
||||||
|
130
include/wx/osx/core/cftype.h
Normal file
130
include/wx/osx/core/cftype.h
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: wx/osx/core/cftype.h
|
||||||
|
// Purpose: wxCFDictionaryRef class
|
||||||
|
// Author: Stefan Csomor
|
||||||
|
// Modified by:
|
||||||
|
// Created: 2018/07/27
|
||||||
|
// Copyright: (c) 2018 Stefan Csomor
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
/*! @header wx/osx/core/cftype.h
|
||||||
|
@abstract wxCFTypeRef class and derived classes
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _WX_OSX_COREFOUNDATION_CFTYPEREF_H__
|
||||||
|
#define _WX_OSX_COREFOUNDATION_CFTYPEREF_H__
|
||||||
|
|
||||||
|
#include "wx/osx/core/cfref.h"
|
||||||
|
#include "wx/osx/core/cfstring.h"
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/string.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class wxCFTypeRef : public wxCFRef<CFTypeRef>
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
typedef wxCFRef<CFTypeRef> super_type;
|
||||||
|
|
||||||
|
wxCFTypeRef(CFTypeRef d)
|
||||||
|
: super_type(d)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
bool GetValue(V* ptr) const;
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
bool GetValue(V* ptr, V defaultValue) const
|
||||||
|
{
|
||||||
|
bool hasKey = GetValue(ptr);
|
||||||
|
|
||||||
|
if (!hasKey)
|
||||||
|
*ptr = defaultValue;
|
||||||
|
|
||||||
|
return hasKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
bool GetValue(V& ref) const
|
||||||
|
{
|
||||||
|
return GetValue(&ref);
|
||||||
|
}
|
||||||
|
|
||||||
|
template <typename V>
|
||||||
|
bool GetValue(V& ref, V defaultValue) const
|
||||||
|
{
|
||||||
|
bool hasKey = GetValue(ref);
|
||||||
|
|
||||||
|
if (!hasKey)
|
||||||
|
ref = defaultValue;
|
||||||
|
|
||||||
|
return hasKey;
|
||||||
|
}
|
||||||
|
|
||||||
|
// spezialization through overload
|
||||||
|
|
||||||
|
bool GetValue(CGFloat* ptr) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberCGFloatType, ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue(int32_t* ptr) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt32Type, ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue(uint32_t* ptr) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt32Type, ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue(int64_t* ptr) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt64Type, ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue(uint64_t* ptr) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
CFNumberGetValue((CFNumberRef)m_ptr, kCFNumberSInt64Type, ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool GetValue(wxString* s) const
|
||||||
|
{
|
||||||
|
if (m_ptr)
|
||||||
|
*s = wxCFStringRef::AsString((CFStringRef)m_ptr);
|
||||||
|
|
||||||
|
return m_ptr;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class wxCFNumberRef : public wxCFTypeRef
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCFNumberRef(CGFloat v)
|
||||||
|
: wxCFTypeRef(CFNumberCreate(NULL, kCFNumberCGFloatType, &v))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
wxCFNumberRef(int v)
|
||||||
|
: wxCFTypeRef(CFNumberCreate(NULL, kCFNumberIntType, &v))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif //ifndef _WX_OSX_COREFOUNDATION_CFTYPEREF_H__
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include "wx/osx/core/cfstring.h"
|
#include "wx/osx/core/cfstring.h"
|
||||||
#include "wx/osx/core/cfdataref.h"
|
#include "wx/osx/core/cfdataref.h"
|
||||||
|
#include "wx/osx/core/cfarray.h"
|
||||||
#include "wx/osx/core/cfdictionary.h"
|
#include "wx/osx/core/cfdictionary.h"
|
||||||
|
|
||||||
// platform specific Clang analyzer support
|
// platform specific Clang analyzer support
|
||||||
|
Loading…
Reference in New Issue
Block a user