mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Make the CoreFoundation object _New and _Convert routines available to other modules. Idea by Donovan Preston, implementaion by me.
This commit is contained in:
parent
80c85d80c4
commit
537a69fe66
4 changed files with 180 additions and 32 deletions
|
@ -15,6 +15,12 @@
|
||||||
#include <Lists.h>
|
#include <Lists.h>
|
||||||
#include <Movies.h>
|
#include <Movies.h>
|
||||||
#include <Errors.h>
|
#include <Errors.h>
|
||||||
|
#include <CFBase.h>
|
||||||
|
#include <CFArray.h>
|
||||||
|
#include <CFData.h>
|
||||||
|
#include <CFDictionary.h>
|
||||||
|
#include <CFString.h>
|
||||||
|
#include <CFURL.h>
|
||||||
#else
|
#else
|
||||||
#include <Carbon/Carbon.h>
|
#include <Carbon/Carbon.h>
|
||||||
#include <QuickTime/QuickTime.h>
|
#include <QuickTime/QuickTime.h>
|
||||||
|
@ -167,6 +173,24 @@ extern PyObject *WinObj_New(WindowPtr);
|
||||||
extern int WinObj_Convert(PyObject *, WindowPtr *);
|
extern int WinObj_Convert(PyObject *, WindowPtr *);
|
||||||
extern PyObject *WinObj_WhichWindow(WindowPtr);
|
extern PyObject *WinObj_WhichWindow(WindowPtr);
|
||||||
|
|
||||||
|
/* CF exports */
|
||||||
|
extern PyObject *CFTypeRefObj_New(CFTypeRef);
|
||||||
|
extern int CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
||||||
|
extern PyObject *CFStringRefObj_New(CFStringRef);
|
||||||
|
extern int CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
||||||
|
extern PyObject *CFMutableStringRefObj_New(CFMutableStringRef);
|
||||||
|
extern int CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
|
||||||
|
extern PyObject *CFArrayRefObj_New(CFArrayRef);
|
||||||
|
extern int CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
|
||||||
|
extern PyObject *CFMutableArrayRefObj_New(CFMutableArrayRef);
|
||||||
|
extern int CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
|
||||||
|
extern PyObject *CFDictionaryRefObj_New(CFDictionaryRef);
|
||||||
|
extern int CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
|
||||||
|
extern PyObject *CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
|
||||||
|
extern int CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
|
||||||
|
extern PyObject *CFURLRefObj_New(CFURLRef);
|
||||||
|
extern int CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
extern int OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,23 +31,58 @@
|
||||||
#include <CoreServices/CoreServices.h>
|
#include <CoreServices/CoreServices.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For now we declare them forward here. They'll go to mactoolbox later */
|
#ifdef USE_TOOLBOX_OBJECT_GLUE
|
||||||
staticforward PyObject *CFTypeRefObj_New(CFTypeRef);
|
extern PyObject *_CFTypeRefObj_New(CFTypeRef);
|
||||||
staticforward int CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
||||||
staticforward PyObject *CFStringRefObj_New(CFStringRef);
|
#define CFTypeRefObj_New _CFTypeRefObj_New
|
||||||
staticforward int CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
#define CFTypeRefObj_Convert _CFTypeRefObj_Convert
|
||||||
staticforward PyObject *CFURLRefObj_New(CFURLRef);
|
|
||||||
staticforward int CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
|
||||||
|
|
||||||
staticforward int CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
extern PyObject *_CFStringRefObj_New(CFStringRef);
|
||||||
|
extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
||||||
|
#define CFStringRefObj_New _CFStringRefObj_New
|
||||||
|
#define CFStringRefObj_Convert _CFStringRefObj_Convert
|
||||||
|
|
||||||
// ADD declarations
|
extern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef);
|
||||||
#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
|
extern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
|
||||||
//extern PyObject *_CFTypeRefObj_New(CFTypeRef);
|
#define CFMutableStringRefObj_New _CFMutableStringRefObj_New
|
||||||
//extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert
|
||||||
|
|
||||||
//#define CFTypeRefObj_New _CFTypeRefObj_New
|
extern PyObject *_CFArrayRefObj_New(CFArrayRef);
|
||||||
//#define CFTypeRefObj_Convert _CFTypeRefObj_Convert
|
extern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
|
||||||
|
#define CFArrayRefObj_New _CFArrayRefObj_New
|
||||||
|
#define CFArrayRefObj_Convert _CFArrayRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef);
|
||||||
|
extern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
|
||||||
|
#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New
|
||||||
|
#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFDataRefObj_New(CFDataRef);
|
||||||
|
extern int _CFDataRefObj_Convert(PyObject *, CFDataRef *);
|
||||||
|
#define CFDataRefObj_New _CFDataRefObj_New
|
||||||
|
#define CFDataRefObj_Convert _CFDataRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef);
|
||||||
|
extern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *);
|
||||||
|
#define CFMutableDataRefObj_New _CFMutableDataRefObj_New
|
||||||
|
#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef);
|
||||||
|
extern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
|
||||||
|
#define CFDictionaryRefObj_New _CFDictionaryRefObj_New
|
||||||
|
#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
|
||||||
|
extern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
|
||||||
|
#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New
|
||||||
|
#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFURLRefObj_New(CFURLRef);
|
||||||
|
extern int _CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
extern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
#define CFURLRefObj_New _CFURLRefObj_New
|
||||||
|
#define CFURLRefObj_Convert _CFURLRefObj_Convert
|
||||||
|
#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3122,8 +3157,24 @@ void init_CF(void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New);
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New);
|
||||||
// PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert);
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert);
|
||||||
|
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);
|
||||||
|
|
||||||
|
|
||||||
m = Py_InitModule("_CF", CF_methods);
|
m = Py_InitModule("_CF", CF_methods);
|
||||||
|
|
|
@ -53,23 +53,58 @@ includestuff = includestuff + """
|
||||||
#include <CoreServices/CoreServices.h>
|
#include <CoreServices/CoreServices.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* For now we declare them forward here. They'll go to mactoolbox later */
|
#ifdef USE_TOOLBOX_OBJECT_GLUE
|
||||||
staticforward PyObject *CFTypeRefObj_New(CFTypeRef);
|
extern PyObject *_CFTypeRefObj_New(CFTypeRef);
|
||||||
staticforward int CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
||||||
staticforward PyObject *CFStringRefObj_New(CFStringRef);
|
#define CFTypeRefObj_New _CFTypeRefObj_New
|
||||||
staticforward int CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
#define CFTypeRefObj_Convert _CFTypeRefObj_Convert
|
||||||
staticforward PyObject *CFURLRefObj_New(CFURLRef);
|
|
||||||
staticforward int CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
|
||||||
|
|
||||||
staticforward int CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
extern PyObject *_CFStringRefObj_New(CFStringRef);
|
||||||
|
extern int _CFStringRefObj_Convert(PyObject *, CFStringRef *);
|
||||||
|
#define CFStringRefObj_New _CFStringRefObj_New
|
||||||
|
#define CFStringRefObj_Convert _CFStringRefObj_Convert
|
||||||
|
|
||||||
// ADD declarations
|
extern PyObject *_CFMutableStringRefObj_New(CFMutableStringRef);
|
||||||
#ifdef NOTYET_USE_TOOLBOX_OBJECT_GLUE
|
extern int _CFMutableStringRefObj_Convert(PyObject *, CFMutableStringRef *);
|
||||||
//extern PyObject *_CFTypeRefObj_New(CFTypeRef);
|
#define CFMutableStringRefObj_New _CFMutableStringRefObj_New
|
||||||
//extern int _CFTypeRefObj_Convert(PyObject *, CFTypeRef *);
|
#define CFMutableStringRefObj_Convert _CFMutableStringRefObj_Convert
|
||||||
|
|
||||||
//#define CFTypeRefObj_New _CFTypeRefObj_New
|
extern PyObject *_CFArrayRefObj_New(CFArrayRef);
|
||||||
//#define CFTypeRefObj_Convert _CFTypeRefObj_Convert
|
extern int _CFArrayRefObj_Convert(PyObject *, CFArrayRef *);
|
||||||
|
#define CFArrayRefObj_New _CFArrayRefObj_New
|
||||||
|
#define CFArrayRefObj_Convert _CFArrayRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableArrayRefObj_New(CFMutableArrayRef);
|
||||||
|
extern int _CFMutableArrayRefObj_Convert(PyObject *, CFMutableArrayRef *);
|
||||||
|
#define CFMutableArrayRefObj_New _CFMutableArrayRefObj_New
|
||||||
|
#define CFMutableArrayRefObj_Convert _CFMutableArrayRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFDataRefObj_New(CFDataRef);
|
||||||
|
extern int _CFDataRefObj_Convert(PyObject *, CFDataRef *);
|
||||||
|
#define CFDataRefObj_New _CFDataRefObj_New
|
||||||
|
#define CFDataRefObj_Convert _CFDataRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableDataRefObj_New(CFMutableDataRef);
|
||||||
|
extern int _CFMutableDataRefObj_Convert(PyObject *, CFMutableDataRef *);
|
||||||
|
#define CFMutableDataRefObj_New _CFMutableDataRefObj_New
|
||||||
|
#define CFMutableDataRefObj_Convert _CFMutableDataRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFDictionaryRefObj_New(CFDictionaryRef);
|
||||||
|
extern int _CFDictionaryRefObj_Convert(PyObject *, CFDictionaryRef *);
|
||||||
|
#define CFDictionaryRefObj_New _CFDictionaryRefObj_New
|
||||||
|
#define CFDictionaryRefObj_Convert _CFDictionaryRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFMutableDictionaryRefObj_New(CFMutableDictionaryRef);
|
||||||
|
extern int _CFMutableDictionaryRefObj_Convert(PyObject *, CFMutableDictionaryRef *);
|
||||||
|
#define CFMutableDictionaryRefObj_New _CFMutableDictionaryRefObj_New
|
||||||
|
#define CFMutableDictionaryRefObj_Convert _CFMutableDictionaryRefObj_Convert
|
||||||
|
|
||||||
|
extern PyObject *_CFURLRefObj_New(CFURLRef);
|
||||||
|
extern int _CFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
extern int _OptionalCFURLRefObj_Convert(PyObject *, CFURLRef *);
|
||||||
|
#define CFURLRefObj_New _CFURLRefObj_New
|
||||||
|
#define CFURLRefObj_Convert _CFURLRefObj_Convert
|
||||||
|
#define OptionalCFURLRefObj_Convert _OptionalCFURLRefObj_Convert
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -107,8 +142,24 @@ OptionalCFURLRefObj_Convert(PyObject *v, CFURLRef *p_itself)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
initstuff = initstuff + """
|
initstuff = initstuff + """
|
||||||
// PyMac_INIT_TOOLBOX_OBJECT_NEW(Track, TrackObj_New);
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFTypeRef, CFTypeRefObj_New);
|
||||||
// PyMac_INIT_TOOLBOX_OBJECT_CONVERT(Track, TrackObj_Convert);
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFTypeRef, CFTypeRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFStringRef, CFStringRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFStringRef, CFStringRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableStringRef, CFMutableStringRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert);
|
||||||
|
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFArrayRef, CFArrayRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFArrayRef, CFArrayRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFDictionaryRef, CFDictionaryRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_NEW(CFURLRef, CFURLRefObj_New);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);
|
||||||
|
PyMac_INIT_TOOLBOX_OBJECT_CONVERT(CFURLRef, CFURLRefObj_Convert);
|
||||||
"""
|
"""
|
||||||
|
|
||||||
Boolean = Type("Boolean", "l")
|
Boolean = Type("Boolean", "l")
|
||||||
|
|
|
@ -459,4 +459,26 @@ GLUE_NEW(WindowPtr, WinObj_New, "Carbon.Win")
|
||||||
GLUE_CONVERT(WindowPtr, WinObj_Convert, "Carbon.Win")
|
GLUE_CONVERT(WindowPtr, WinObj_Convert, "Carbon.Win")
|
||||||
GLUE_NEW(WindowPtr, WinObj_WhichWindow, "Carbon.Win")
|
GLUE_NEW(WindowPtr, WinObj_WhichWindow, "Carbon.Win")
|
||||||
|
|
||||||
|
GLUE_CONVERT(CFTypeRef, CFTypeRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFTypeRef, CFTypeRefObj_New, "Carbon.CF")
|
||||||
|
|
||||||
|
GLUE_CONVERT(CFStringRef, CFStringRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFStringRef, CFStringRefObj_New, "Carbon.CF")
|
||||||
|
GLUE_CONVERT(CFMutableStringRef, CFMutableStringRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFMutableStringRef, CFMutableStringRefObj_New, "Carbon.CF")
|
||||||
|
|
||||||
|
GLUE_CONVERT(CFArrayRef, CFArrayRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFArrayRef, CFArrayRefObj_New, "Carbon.CF")
|
||||||
|
GLUE_CONVERT(CFMutableArrayRef, CFMutableArrayRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFMutableArrayRef, CFMutableArrayRefObj_New, "Carbon.CF")
|
||||||
|
|
||||||
|
GLUE_CONVERT(CFDictionaryRef, CFDictionaryRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFDictionaryRef, CFDictionaryRefObj_New, "Carbon.CF")
|
||||||
|
GLUE_CONVERT(CFMutableDictionaryRef, CFMutableDictionaryRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFMutableDictionaryRef, CFMutableDictionaryRefObj_New, "Carbon.CF")
|
||||||
|
|
||||||
|
GLUE_CONVERT(CFURLRef, CFURLRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_CONVERT(CFURLRef, OptionalCFURLRefObj_Convert, "Carbon.CF")
|
||||||
|
GLUE_NEW(CFURLRef, CFURLRefObj_New, "Carbon.CF")
|
||||||
|
|
||||||
#endif /* USE_TOOLBOX_OBJECT_GLUE */
|
#endif /* USE_TOOLBOX_OBJECT_GLUE */
|
Loading…
Add table
Add a link
Reference in a new issue